github.com/anthropics/anthropic-sdk-go@v1.70.1/betaagent.go (about) 1 // File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. 2 3 package anthropic 4 5 import ( 6 "context" 7 "encoding/json" 8 "errors" 9 "fmt" 10 "net/http" 11 "net/url" 12 "slices" 13 "time" 14 15 "github.com/anthropics/anthropic-sdk-go/internal/apijson" 16 "github.com/anthropics/anthropic-sdk-go/internal/apiquery" 17 "github.com/anthropics/anthropic-sdk-go/internal/paramutil" 18 "github.com/anthropics/anthropic-sdk-go/internal/requestconfig" 19 "github.com/anthropics/anthropic-sdk-go/option" 20 "github.com/anthropics/anthropic-sdk-go/packages/pagination" 21 "github.com/anthropics/anthropic-sdk-go/packages/param" 22 "github.com/anthropics/anthropic-sdk-go/packages/respjson" 23 "github.com/anthropics/anthropic-sdk-go/shared/constant" 24 ) 25 26 // BetaAgentService contains methods and other services that help with interacting 27 // with the anthropic API. 28 // 29 // Note, unlike clients, this service does not read variables from the environment 30 // automatically. You should not instantiate this service directly, and instead use 31 // the [NewBetaAgentService] method instead. 32 type BetaAgentService struct { 33 Options []option.RequestOption 34 Versions BetaAgentVersionService 35 } 36 37 // NewBetaAgentService generates a new service that applies the given options to 38 // each request. These options are applied after the parent client's options (if 39 // there is one), and before any request-specific options. 40 func NewBetaAgentService(opts ...option.RequestOption) (r BetaAgentService) { 41 r = BetaAgentService{} 42 r.Options = opts 43 r.Versions = NewBetaAgentVersionService(opts...) 44 return 45 } 46 47 // Create Agent 48 func (r *BetaAgentService) New(ctx context.Context, params BetaAgentNewParams, opts ...option.RequestOption) (res *BetaManagedAgentsAgent, err error) { 49 for _, v := range params.Betas { 50 opts = append(opts, option.WithHeaderAdd("anthropic-beta", fmt.Sprintf("%v", v))) 51 } 52 if !param.IsOmitted(params.WorkspaceID) { 53 opts = append(opts, option.WithHeader("anthropic-workspace-id", fmt.Sprintf("%v", params.WorkspaceID.Value))) 54 } 55 opts = slices.Concat(r.Options, opts) 56 opts = append([]option.RequestOption{option.WithHeader("anthropic-beta", "managed-agents-2026-04-01")}, opts...) 57 path := "v1/agents?beta=true" 58 err = requestconfig.ExecuteNewRequest(ctx, http.MethodPost, path, params, &res, opts...) 59 return res, err 60 } 61 62 // Get Agent 63 func (r *BetaAgentService) Get(ctx context.Context, agentID string, params BetaAgentGetParams, opts ...option.RequestOption) (res *BetaManagedAgentsAgent, err error) { 64 for _, v := range params.Betas { 65 opts = append(opts, option.WithHeaderAdd("anthropic-beta", fmt.Sprintf("%v", v))) 66 } 67 if !param.IsOmitted(params.WorkspaceID) { 68 opts = append(opts, option.WithHeader("anthropic-workspace-id", fmt.Sprintf("%v", params.WorkspaceID.Value))) 69 } 70 opts = slices.Concat(r.Options, opts) 71 opts = append([]option.RequestOption{option.WithHeader("anthropic-beta", "managed-agents-2026-04-01")}, opts...) 72 if agentID == "" { 73 err = errors.New("missing required agent_id parameter") 74 return nil, err 75 } 76 path := fmt.Sprintf("v1/agents/%s?beta=true", agentID) 77 err = requestconfig.ExecuteNewRequest(ctx, http.MethodGet, path, params, &res, opts...) 78 return res, err 79 } 80 81 // Update Agent 82 func (r *BetaAgentService) Update(ctx context.Context, agentID string, params BetaAgentUpdateParams, opts ...option.RequestOption) (res *BetaManagedAgentsAgent, err error) { 83 for _, v := range params.Betas { 84 opts = append(opts, option.WithHeaderAdd("anthropic-beta", fmt.Sprintf("%v", v))) 85 } 86 if !param.IsOmitted(params.WorkspaceID) { 87 opts = append(opts, option.WithHeader("anthropic-workspace-id", fmt.Sprintf("%v", params.WorkspaceID.Value))) 88 } 89 opts = slices.Concat(r.Options, opts) 90 opts = append([]option.RequestOption{option.WithHeader("anthropic-beta", "managed-agents-2026-04-01")}, opts...) 91 if agentID == "" { 92 err = errors.New("missing required agent_id parameter") 93 return nil, err 94 } 95 path := fmt.Sprintf("v1/agents/%s?beta=true", agentID) 96 err = requestconfig.ExecuteNewRequest(ctx, http.MethodPost, path, params, &res, opts...) 97 return res, err 98 } 99 100 // List Agents 101 func (r *BetaAgentService) List(ctx context.Context, params BetaAgentListParams, opts ...option.RequestOption) (res *pagination.PageCursor[BetaManagedAgentsAgent], err error) { 102 var raw *http.Response 103 for _, v := range params.Betas { 104 opts = append(opts, option.WithHeaderAdd("anthropic-beta", fmt.Sprintf("%v", v))) 105 } 106 if !param.IsOmitted(params.WorkspaceID) { 107 opts = append(opts, option.WithHeader("anthropic-workspace-id", fmt.Sprintf("%v", params.WorkspaceID.Value))) 108 } 109 opts = slices.Concat(r.Options, opts) 110 opts = append([]option.RequestOption{option.WithHeader("anthropic-beta", "managed-agents-2026-04-01"), option.WithResponseInto(&raw)}, opts...) 111 path := "v1/agents?beta=true" 112 cfg, err := requestconfig.NewRequestConfig(ctx, http.MethodGet, path, params, &res, opts...) 113 if err != nil { 114 return nil, err 115 } 116 err = cfg.Execute() 117 if err != nil { 118 return nil, err 119 } 120 res.SetPageConfig(cfg, raw) 121 return res, nil 122 } 123 124 // List Agents 125 func (r *BetaAgentService) ListAutoPaging(ctx context.Context, params BetaAgentListParams, opts ...option.RequestOption) *pagination.PageCursorAutoPager[BetaManagedAgentsAgent] { 126 return pagination.NewPageCursorAutoPager(r.List(ctx, params, opts...)) 127 } 128 129 // Archive Agent 130 func (r *BetaAgentService) Archive(ctx context.Context, agentID string, body BetaAgentArchiveParams, opts ...option.RequestOption) (res *BetaManagedAgentsAgent, err error) { 131 for _, v := range body.Betas { 132 opts = append(opts, option.WithHeaderAdd("anthropic-beta", fmt.Sprintf("%v", v))) 133 } 134 if !param.IsOmitted(body.WorkspaceID) { 135 opts = append(opts, option.WithHeader("anthropic-workspace-id", fmt.Sprintf("%v", body.WorkspaceID.Value))) 136 } 137 opts = slices.Concat(r.Options, opts) 138 opts = append([]option.RequestOption{option.WithHeader("anthropic-beta", "managed-agents-2026-04-01")}, opts...) 139 if agentID == "" { 140 err = errors.New("missing required agent_id parameter") 141 return nil, err 142 } 143 path := fmt.Sprintf("v1/agents/%s/archive?beta=true", agentID) 144 err = requestconfig.ExecuteNewRequest(ctx, http.MethodPost, path, nil, &res, opts...) 145 return res, err 146 } 147 148 // Platform advisor roster entry: a model the session's primary thread may consult 149 // mid-turn. 150 type BetaManagedAgentsAdvisor struct { 151 // The advisor model id. 152 Model string `json:"model" api:"required"` 153 // Any of "advisor". 154 Type BetaManagedAgentsAdvisorType `json:"type" api:"required"` 155 // JSON contains metadata for fields, check presence with [respjson.Field.Valid]. 156 JSON struct { 157 Model respjson.Field 158 Type respjson.Field 159 ExtraFields map[string]respjson.Field 160 raw string 161 } `json:"-"` 162 } 163 164 // Returns the unmodified JSON received from the API 165 func (r BetaManagedAgentsAdvisor) RawJSON() string { return r.JSON.raw } 166 func (r *BetaManagedAgentsAdvisor) UnmarshalJSON(data []byte) error { 167 return apijson.UnmarshalRoot(data, r) 168 } 169 170 type BetaManagedAgentsAdvisorType string 171 172 const ( 173 BetaManagedAgentsAdvisorTypeAdvisor BetaManagedAgentsAdvisorType = "advisor" 174 ) 175 176 // A Managed Agents `agent`. 177 type BetaManagedAgentsAgent struct { 178 ID string `json:"id" api:"required"` 179 // A timestamp in RFC 3339 format 180 ArchivedAt time.Time `json:"archived_at" api:"required" format:"date-time"` 181 // A timestamp in RFC 3339 format 182 CreatedAt time.Time `json:"created_at" api:"required" format:"date-time"` 183 Description string `json:"description" api:"required"` 184 MCPServers []BetaManagedAgentsMCPServerURLDefinition `json:"mcp_servers" api:"required"` 185 Metadata map[string]string `json:"metadata" api:"required"` 186 // Model identifier and configuration. 187 Model BetaManagedAgentsModelConfig `json:"model" api:"required"` 188 // Resolved coordinator topology with a concrete agent roster. 189 Multiagent BetaManagedAgentsMultiagent `json:"multiagent" api:"required"` 190 Name string `json:"name" api:"required"` 191 Skills []BetaManagedAgentsAgentSkillUnion `json:"skills" api:"required"` 192 System string `json:"system" api:"required"` 193 Tools []BetaManagedAgentsAgentToolUnion `json:"tools" api:"required"` 194 // Any of "agent". 195 Type BetaManagedAgentsAgentType `json:"type" api:"required"` 196 // A timestamp in RFC 3339 format 197 UpdatedAt time.Time `json:"updated_at" api:"required" format:"date-time"` 198 // The agent's current version. Starts at 1 and increments when the agent is 199 // modified. 200 Version int64 `json:"version" api:"required"` 201 // JSON contains metadata for fields, check presence with [respjson.Field.Valid]. 202 JSON struct { 203 ID respjson.Field 204 ArchivedAt respjson.Field 205 CreatedAt respjson.Field 206 Description respjson.Field 207 MCPServers respjson.Field 208 Metadata respjson.Field 209 Model respjson.Field 210 Multiagent respjson.Field 211 Name respjson.Field 212 Skills respjson.Field 213 System respjson.Field 214 Tools respjson.Field 215 Type respjson.Field 216 UpdatedAt respjson.Field 217 Version respjson.Field 218 ExtraFields map[string]respjson.Field 219 raw string 220 } `json:"-"` 221 } 222 223 // Returns the unmodified JSON received from the API 224 func (r BetaManagedAgentsAgent) RawJSON() string { return r.JSON.raw } 225 func (r *BetaManagedAgentsAgent) UnmarshalJSON(data []byte) error { 226 return apijson.UnmarshalRoot(data, r) 227 } 228 229 // BetaManagedAgentsAgentSkillUnion contains all possible properties and values 230 // from [BetaManagedAgentsAnthropicSkill], [BetaManagedAgentsCustomSkill]. 231 // 232 // Use the [BetaManagedAgentsAgentSkillUnion.AsAny] method to switch on the 233 // variant. 234 // 235 // Use the methods beginning with 'As' to cast the union to one of its variants. 236 type BetaManagedAgentsAgentSkillUnion struct { 237 SkillID string `json:"skill_id"` 238 // Any of "anthropic", "custom". 239 Type string `json:"type"` 240 Version string `json:"version"` 241 JSON struct { 242 SkillID respjson.Field 243 Type respjson.Field 244 Version respjson.Field 245 raw string 246 } `json:"-"` 247 } 248 249 // anyBetaManagedAgentsAgentSkill is implemented by each variant of 250 // [BetaManagedAgentsAgentSkillUnion] to add type safety for the return type of 251 // [BetaManagedAgentsAgentSkillUnion.AsAny] 252 type anyBetaManagedAgentsAgentSkill interface { 253 implBetaManagedAgentsAgentSkillUnion() 254 } 255 256 func (BetaManagedAgentsAnthropicSkill) implBetaManagedAgentsAgentSkillUnion() {} 257 func (BetaManagedAgentsCustomSkill) implBetaManagedAgentsAgentSkillUnion() {} 258 259 // Use the following switch statement to find the correct variant 260 // 261 // switch variant := BetaManagedAgentsAgentSkillUnion.AsAny().(type) { 262 // case anthropic.BetaManagedAgentsAnthropicSkill: 263 // case anthropic.BetaManagedAgentsCustomSkill: 264 // default: 265 // fmt.Errorf("no variant present") 266 // } 267 func (u BetaManagedAgentsAgentSkillUnion) AsAny() anyBetaManagedAgentsAgentSkill { 268 switch u.Type { 269 case "anthropic": 270 return u.AsAnthropic() 271 case "custom": 272 return u.AsCustom() 273 } 274 return nil 275 } 276 277 func (u BetaManagedAgentsAgentSkillUnion) AsAnthropic() (v BetaManagedAgentsAnthropicSkill) { 278 apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v) 279 return 280 } 281 282 func (u BetaManagedAgentsAgentSkillUnion) AsCustom() (v BetaManagedAgentsCustomSkill) { 283 apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v) 284 return 285 } 286 287 // Returns the unmodified JSON received from the API 288 func (u BetaManagedAgentsAgentSkillUnion) RawJSON() string { return u.JSON.raw } 289 290 func (r *BetaManagedAgentsAgentSkillUnion) UnmarshalJSON(data []byte) error { 291 return apijson.UnmarshalRoot(data, r) 292 } 293 294 // BetaManagedAgentsAgentToolUnion contains all possible properties and values from 295 // [BetaManagedAgentsAgentToolset20260401], [BetaManagedAgentsMCPToolset], 296 // [BetaManagedAgentsCustomTool]. 297 // 298 // Use the [BetaManagedAgentsAgentToolUnion.AsAny] method to switch on the variant. 299 // 300 // Use the methods beginning with 'As' to cast the union to one of its variants. 301 type BetaManagedAgentsAgentToolUnion struct { 302 // This field is a union of [[]BetaManagedAgentsAgentToolConfigUnion], 303 // [[]BetaManagedAgentsMCPToolConfig] 304 Configs BetaManagedAgentsAgentToolUnionConfigs `json:"configs"` 305 // This field is a union of [BetaManagedAgentsAgentToolsetDefaultConfig], 306 // [BetaManagedAgentsMCPToolsetDefaultConfig] 307 DefaultConfig BetaManagedAgentsAgentToolUnionDefaultConfig `json:"default_config"` 308 // Any of "agent_toolset_20260401", "mcp_toolset", "custom". 309 Type string `json:"type"` 310 // This field is from variant [BetaManagedAgentsMCPToolset]. 311 MCPServerName string `json:"mcp_server_name"` 312 // This field is from variant [BetaManagedAgentsCustomTool]. 313 Description string `json:"description"` 314 // This field is from variant [BetaManagedAgentsCustomTool]. 315 InputSchema BetaManagedAgentsCustomToolInputSchema `json:"input_schema"` 316 // This field is from variant [BetaManagedAgentsCustomTool]. 317 Name string `json:"name"` 318 JSON struct { 319 Configs respjson.Field 320 DefaultConfig respjson.Field 321 Type respjson.Field 322 MCPServerName respjson.Field 323 Description respjson.Field 324 InputSchema respjson.Field 325 Name respjson.Field 326 raw string 327 } `json:"-"` 328 } 329 330 // anyBetaManagedAgentsAgentTool is implemented by each variant of 331 // [BetaManagedAgentsAgentToolUnion] to add type safety for the return type of 332 // [BetaManagedAgentsAgentToolUnion.AsAny] 333 type anyBetaManagedAgentsAgentTool interface { 334 implBetaManagedAgentsAgentToolUnion() 335 } 336 337 func (BetaManagedAgentsAgentToolset20260401) implBetaManagedAgentsAgentToolUnion() {} 338 func (BetaManagedAgentsMCPToolset) implBetaManagedAgentsAgentToolUnion() {} 339 func (BetaManagedAgentsCustomTool) implBetaManagedAgentsAgentToolUnion() {} 340 341 // Use the following switch statement to find the correct variant 342 // 343 // switch variant := BetaManagedAgentsAgentToolUnion.AsAny().(type) { 344 // case anthropic.BetaManagedAgentsAgentToolset20260401: 345 // case anthropic.BetaManagedAgentsMCPToolset: 346 // case anthropic.BetaManagedAgentsCustomTool: 347 // default: 348 // fmt.Errorf("no variant present") 349 // } 350 func (u BetaManagedAgentsAgentToolUnion) AsAny() anyBetaManagedAgentsAgentTool { 351 switch u.Type { 352 case "agent_toolset_20260401": 353 return u.AsAgentToolset20260401() 354 case "mcp_toolset": 355 return u.AsMCPToolset() 356 case "custom": 357 return u.AsCustom() 358 } 359 return nil 360 } 361 362 func (u BetaManagedAgentsAgentToolUnion) AsAgentToolset20260401() (v BetaManagedAgentsAgentToolset20260401) { 363 apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v) 364 return 365 } 366 367 func (u BetaManagedAgentsAgentToolUnion) AsMCPToolset() (v BetaManagedAgentsMCPToolset) { 368 apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v) 369 return 370 } 371 372 func (u BetaManagedAgentsAgentToolUnion) AsCustom() (v BetaManagedAgentsCustomTool) { 373 apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v) 374 return 375 } 376 377 // Returns the unmodified JSON received from the API 378 func (u BetaManagedAgentsAgentToolUnion) RawJSON() string { return u.JSON.raw } 379 380 func (r *BetaManagedAgentsAgentToolUnion) UnmarshalJSON(data []byte) error { 381 return apijson.UnmarshalRoot(data, r) 382 } 383 384 // BetaManagedAgentsAgentToolUnionConfigs is an implicit subunion of 385 // [BetaManagedAgentsAgentToolUnion]. BetaManagedAgentsAgentToolUnionConfigs 386 // provides convenient access to the sub-properties of the union. 387 // 388 // For type safety it is recommended to directly use a variant of the 389 // [BetaManagedAgentsAgentToolUnion]. 390 // 391 // If the underlying value is not a json object, one of the following properties 392 // will be valid: OfBetaManagedAgentsAgentToolConfigArray 393 // OfBetaManagedAgentsMCPToolConfigArray] 394 type BetaManagedAgentsAgentToolUnionConfigs struct { 395 // This field will be present if the value is a 396 // [[]BetaManagedAgentsAgentToolConfigUnion] instead of an object. 397 OfBetaManagedAgentsAgentToolConfigArray []BetaManagedAgentsAgentToolConfigUnion `json:",inline"` 398 // This field will be present if the value is a [[]BetaManagedAgentsMCPToolConfig] 399 // instead of an object. 400 OfBetaManagedAgentsMCPToolConfigArray []BetaManagedAgentsMCPToolConfig `json:",inline"` 401 JSON struct { 402 OfBetaManagedAgentsAgentToolConfigArray respjson.Field 403 OfBetaManagedAgentsMCPToolConfigArray respjson.Field 404 raw string 405 } `json:"-"` 406 } 407 408 func (r *BetaManagedAgentsAgentToolUnionConfigs) UnmarshalJSON(data []byte) error { 409 return apijson.UnmarshalRoot(data, r) 410 } 411 412 // BetaManagedAgentsAgentToolUnionDefaultConfig is an implicit subunion of 413 // [BetaManagedAgentsAgentToolUnion]. BetaManagedAgentsAgentToolUnionDefaultConfig 414 // provides convenient access to the sub-properties of the union. 415 // 416 // For type safety it is recommended to directly use a variant of the 417 // [BetaManagedAgentsAgentToolUnion]. 418 type BetaManagedAgentsAgentToolUnionDefaultConfig struct { 419 Enabled bool `json:"enabled"` 420 // This field is a union of 421 // [BetaManagedAgentsAgentToolsetDefaultConfigPermissionPolicyUnion], 422 // [BetaManagedAgentsMCPToolsetDefaultConfigPermissionPolicyUnion] 423 PermissionPolicy BetaManagedAgentsAgentToolUnionDefaultConfigPermissionPolicy `json:"permission_policy"` 424 JSON struct { 425 Enabled respjson.Field 426 PermissionPolicy respjson.Field 427 raw string 428 } `json:"-"` 429 } 430 431 func (r *BetaManagedAgentsAgentToolUnionDefaultConfig) UnmarshalJSON(data []byte) error { 432 return apijson.UnmarshalRoot(data, r) 433 } 434 435 // BetaManagedAgentsAgentToolUnionDefaultConfigPermissionPolicy is an implicit 436 // subunion of [BetaManagedAgentsAgentToolUnion]. 437 // BetaManagedAgentsAgentToolUnionDefaultConfigPermissionPolicy provides convenient 438 // access to the sub-properties of the union. 439 // 440 // For type safety it is recommended to directly use a variant of the 441 // [BetaManagedAgentsAgentToolUnion]. 442 type BetaManagedAgentsAgentToolUnionDefaultConfigPermissionPolicy struct { 443 Type string `json:"type"` 444 JSON struct { 445 Type respjson.Field 446 raw string 447 } `json:"-"` 448 } 449 450 func (r *BetaManagedAgentsAgentToolUnionDefaultConfigPermissionPolicy) UnmarshalJSON(data []byte) error { 451 return apijson.UnmarshalRoot(data, r) 452 } 453 454 type BetaManagedAgentsAgentType string 455 456 const ( 457 BetaManagedAgentsAgentTypeAgent BetaManagedAgentsAgentType = "agent" 458 ) 459 460 // A resolved agent reference with a concrete version. 461 type BetaManagedAgentsAgentReference struct { 462 ID string `json:"id" api:"required"` 463 // Any of "agent". 464 Type BetaManagedAgentsAgentReferenceType `json:"type" api:"required"` 465 Version int64 `json:"version" api:"required"` 466 // JSON contains metadata for fields, check presence with [respjson.Field.Valid]. 467 JSON struct { 468 ID respjson.Field 469 Type respjson.Field 470 Version respjson.Field 471 ExtraFields map[string]respjson.Field 472 raw string 473 } `json:"-"` 474 } 475 476 // Returns the unmodified JSON received from the API 477 func (r BetaManagedAgentsAgentReference) RawJSON() string { return r.JSON.raw } 478 func (r *BetaManagedAgentsAgentReference) UnmarshalJSON(data []byte) error { 479 return apijson.UnmarshalRoot(data, r) 480 } 481 482 type BetaManagedAgentsAgentReferenceType string 483 484 const ( 485 BetaManagedAgentsAgentReferenceTypeAgent BetaManagedAgentsAgentReferenceType = "agent" 486 ) 487 488 // BetaManagedAgentsAgentToolConfigUnion contains all possible properties and 489 // values from [BetaManagedAgentsBashToolConfig], 490 // [BetaManagedAgentsEditToolConfig], [BetaManagedAgentsReadToolConfig], 491 // [BetaManagedAgentsWriteToolConfig], [BetaManagedAgentsGlobToolConfig], 492 // [BetaManagedAgentsGrepToolConfig], [BetaManagedAgentsWebFetchToolConfig], 493 // [BetaManagedAgentsWebSearchToolConfig]. 494 // 495 // Use the [BetaManagedAgentsAgentToolConfigUnion.AsAny] method to switch on the 496 // variant. 497 // 498 // Use the methods beginning with 'As' to cast the union to one of its variants. 499 type BetaManagedAgentsAgentToolConfigUnion struct { 500 Enabled bool `json:"enabled"` 501 Name string `json:"name"` 502 // This field is a union of [BetaManagedAgentsBashToolConfigPermissionPolicyUnion], 503 // [BetaManagedAgentsEditToolConfigPermissionPolicyUnion], 504 // [BetaManagedAgentsReadToolConfigPermissionPolicyUnion], 505 // [BetaManagedAgentsWriteToolConfigPermissionPolicyUnion], 506 // [BetaManagedAgentsGlobToolConfigPermissionPolicyUnion], 507 // [BetaManagedAgentsGrepToolConfigPermissionPolicyUnion], 508 // [BetaManagedAgentsWebFetchToolConfigPermissionPolicyUnion], 509 // [BetaManagedAgentsWebSearchToolConfigPermissionPolicyUnion] 510 PermissionPolicy BetaManagedAgentsAgentToolConfigUnionPermissionPolicy `json:"permission_policy"` 511 // Any of "bash", "edit", "read", "write", "glob", "grep", "web_fetch", 512 // "web_search". 513 Type string `json:"type"` 514 AllowedDomains []string `json:"allowed_domains"` 515 BlockedDomains []string `json:"blocked_domains"` 516 // This field is from variant [BetaManagedAgentsWebFetchToolConfig]. 517 MaxContentTokens int64 `json:"max_content_tokens"` 518 // This field is from variant [BetaManagedAgentsWebSearchToolConfig]. 519 UserLocation BetaManagedAgentsUserLocation `json:"user_location"` 520 JSON struct { 521 Enabled respjson.Field 522 Name respjson.Field 523 PermissionPolicy respjson.Field 524 Type respjson.Field 525 AllowedDomains respjson.Field 526 BlockedDomains respjson.Field 527 MaxContentTokens respjson.Field 528 UserLocation respjson.Field 529 raw string 530 } `json:"-"` 531 } 532 533 // anyBetaManagedAgentsAgentToolConfig is implemented by each variant of 534 // [BetaManagedAgentsAgentToolConfigUnion] to add type safety for the return type 535 // of [BetaManagedAgentsAgentToolConfigUnion.AsAny] 536 type anyBetaManagedAgentsAgentToolConfig interface { 537 implBetaManagedAgentsAgentToolConfigUnion() 538 } 539 540 func (BetaManagedAgentsBashToolConfig) implBetaManagedAgentsAgentToolConfigUnion() {} 541 func (BetaManagedAgentsEditToolConfig) implBetaManagedAgentsAgentToolConfigUnion() {} 542 func (BetaManagedAgentsReadToolConfig) implBetaManagedAgentsAgentToolConfigUnion() {} 543 func (BetaManagedAgentsWriteToolConfig) implBetaManagedAgentsAgentToolConfigUnion() {} 544 func (BetaManagedAgentsGlobToolConfig) implBetaManagedAgentsAgentToolConfigUnion() {} 545 func (BetaManagedAgentsGrepToolConfig) implBetaManagedAgentsAgentToolConfigUnion() {} 546 func (BetaManagedAgentsWebFetchToolConfig) implBetaManagedAgentsAgentToolConfigUnion() {} 547 func (BetaManagedAgentsWebSearchToolConfig) implBetaManagedAgentsAgentToolConfigUnion() {} 548 549 // Use the following switch statement to find the correct variant 550 // 551 // switch variant := BetaManagedAgentsAgentToolConfigUnion.AsAny().(type) { 552 // case anthropic.BetaManagedAgentsBashToolConfig: 553 // case anthropic.BetaManagedAgentsEditToolConfig: 554 // case anthropic.BetaManagedAgentsReadToolConfig: 555 // case anthropic.BetaManagedAgentsWriteToolConfig: 556 // case anthropic.BetaManagedAgentsGlobToolConfig: 557 // case anthropic.BetaManagedAgentsGrepToolConfig: 558 // case anthropic.BetaManagedAgentsWebFetchToolConfig: 559 // case anthropic.BetaManagedAgentsWebSearchToolConfig: 560 // default: 561 // fmt.Errorf("no variant present") 562 // } 563 func (u BetaManagedAgentsAgentToolConfigUnion) AsAny() anyBetaManagedAgentsAgentToolConfig { 564 switch u.Type { 565 case "bash": 566 return u.AsBash() 567 case "edit": 568 return u.AsEdit() 569 case "read": 570 return u.AsRead() 571 case "write": 572 return u.AsWrite() 573 case "glob": 574 return u.AsGlob() 575 case "grep": 576 return u.AsGrep() 577 case "web_fetch": 578 return u.AsWebFetch() 579 case "web_search": 580 return u.AsWebSearch() 581 } 582 return nil 583 } 584 585 func (u BetaManagedAgentsAgentToolConfigUnion) AsBash() (v BetaManagedAgentsBashToolConfig) { 586 apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v) 587 return 588 } 589 590 func (u BetaManagedAgentsAgentToolConfigUnion) AsEdit() (v BetaManagedAgentsEditToolConfig) { 591 apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v) 592 return 593 } 594 595 func (u BetaManagedAgentsAgentToolConfigUnion) AsRead() (v BetaManagedAgentsReadToolConfig) { 596 apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v) 597 return 598 } 599 600 func (u BetaManagedAgentsAgentToolConfigUnion) AsWrite() (v BetaManagedAgentsWriteToolConfig) { 601 apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v) 602 return 603 } 604 605 func (u BetaManagedAgentsAgentToolConfigUnion) AsGlob() (v BetaManagedAgentsGlobToolConfig) { 606 apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v) 607 return 608 } 609 610 func (u BetaManagedAgentsAgentToolConfigUnion) AsGrep() (v BetaManagedAgentsGrepToolConfig) { 611 apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v) 612 return 613 } 614 615 func (u BetaManagedAgentsAgentToolConfigUnion) AsWebFetch() (v BetaManagedAgentsWebFetchToolConfig) { 616 apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v) 617 return 618 } 619 620 func (u BetaManagedAgentsAgentToolConfigUnion) AsWebSearch() (v BetaManagedAgentsWebSearchToolConfig) { 621 apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v) 622 return 623 } 624 625 // Returns the unmodified JSON received from the API 626 func (u BetaManagedAgentsAgentToolConfigUnion) RawJSON() string { return u.JSON.raw } 627 628 func (r *BetaManagedAgentsAgentToolConfigUnion) UnmarshalJSON(data []byte) error { 629 return apijson.UnmarshalRoot(data, r) 630 } 631 632 // BetaManagedAgentsAgentToolConfigUnionPermissionPolicy is an implicit subunion of 633 // [BetaManagedAgentsAgentToolConfigUnion]. 634 // BetaManagedAgentsAgentToolConfigUnionPermissionPolicy provides convenient access 635 // to the sub-properties of the union. 636 // 637 // For type safety it is recommended to directly use a variant of the 638 // [BetaManagedAgentsAgentToolConfigUnion]. 639 type BetaManagedAgentsAgentToolConfigUnionPermissionPolicy struct { 640 Type string `json:"type"` 641 JSON struct { 642 Type respjson.Field 643 raw string 644 } `json:"-"` 645 } 646 647 func (r *BetaManagedAgentsAgentToolConfigUnionPermissionPolicy) UnmarshalJSON(data []byte) error { 648 return apijson.UnmarshalRoot(data, r) 649 } 650 651 // Only one field can be non-zero. 652 // 653 // Use [param.IsOmitted] to confirm if a field is set. 654 type BetaManagedAgentsAgentToolConfigParamsUnion struct { 655 OfBash *BetaManagedAgentsBashToolConfigParams `json:",omitzero,inline"` 656 OfEdit *BetaManagedAgentsEditToolConfigParams `json:",omitzero,inline"` 657 OfRead *BetaManagedAgentsReadToolConfigParams `json:",omitzero,inline"` 658 OfWrite *BetaManagedAgentsWriteToolConfigParams `json:",omitzero,inline"` 659 OfGlob *BetaManagedAgentsGlobToolConfigParams `json:",omitzero,inline"` 660 OfGrep *BetaManagedAgentsGrepToolConfigParams `json:",omitzero,inline"` 661 OfWebFetch *BetaManagedAgentsWebFetchToolConfigParams `json:",omitzero,inline"` 662 OfWebSearch *BetaManagedAgentsWebSearchToolConfigParams `json:",omitzero,inline"` 663 paramUnion 664 } 665 666 func (u BetaManagedAgentsAgentToolConfigParamsUnion) MarshalJSON() ([]byte, error) { 667 return param.MarshalUnion(u, u.OfBash, 668 u.OfEdit, 669 u.OfRead, 670 u.OfWrite, 671 u.OfGlob, 672 u.OfGrep, 673 u.OfWebFetch, 674 u.OfWebSearch) 675 } 676 func (u *BetaManagedAgentsAgentToolConfigParamsUnion) UnmarshalJSON(data []byte) error { 677 return apijson.UnmarshalRoot(data, u) 678 } 679 680 func (u *BetaManagedAgentsAgentToolConfigParamsUnion) asAny() any { 681 if !param.IsOmitted(u.OfBash) { 682 return u.OfBash 683 } else if !param.IsOmitted(u.OfEdit) { 684 return u.OfEdit 685 } else if !param.IsOmitted(u.OfRead) { 686 return u.OfRead 687 } else if !param.IsOmitted(u.OfWrite) { 688 return u.OfWrite 689 } else if !param.IsOmitted(u.OfGlob) { 690 return u.OfGlob 691 } else if !param.IsOmitted(u.OfGrep) { 692 return u.OfGrep 693 } else if !param.IsOmitted(u.OfWebFetch) { 694 return u.OfWebFetch 695 } else if !param.IsOmitted(u.OfWebSearch) { 696 return u.OfWebSearch 697 } 698 return nil 699 } 700 701 // Returns a pointer to the underlying variant's property, if present. 702 func (u BetaManagedAgentsAgentToolConfigParamsUnion) GetMaxContentTokens() *int64 { 703 if vt := u.OfWebFetch; vt != nil && vt.MaxContentTokens.Valid() { 704 return &vt.MaxContentTokens.Value 705 } 706 return nil 707 } 708 709 // Returns a pointer to the underlying variant's property, if present. 710 func (u BetaManagedAgentsAgentToolConfigParamsUnion) GetUserLocation() *BetaManagedAgentsUserLocationParam { 711 if vt := u.OfWebSearch; vt != nil { 712 return &vt.UserLocation 713 } 714 return nil 715 } 716 717 // Returns a pointer to the underlying variant's property, if present. 718 func (u BetaManagedAgentsAgentToolConfigParamsUnion) GetName() *string { 719 if vt := u.OfBash; vt != nil { 720 return (*string)(&vt.Name) 721 } else if vt := u.OfEdit; vt != nil { 722 return (*string)(&vt.Name) 723 } else if vt := u.OfRead; vt != nil { 724 return (*string)(&vt.Name) 725 } else if vt := u.OfWrite; vt != nil { 726 return (*string)(&vt.Name) 727 } else if vt := u.OfGlob; vt != nil { 728 return (*string)(&vt.Name) 729 } else if vt := u.OfGrep; vt != nil { 730 return (*string)(&vt.Name) 731 } else if vt := u.OfWebFetch; vt != nil { 732 return (*string)(&vt.Name) 733 } else if vt := u.OfWebSearch; vt != nil { 734 return (*string)(&vt.Name) 735 } 736 return nil 737 } 738 739 // Returns a pointer to the underlying variant's property, if present. 740 func (u BetaManagedAgentsAgentToolConfigParamsUnion) GetEnabled() *bool { 741 if vt := u.OfBash; vt != nil && vt.Enabled.Valid() { 742 return &vt.Enabled.Value 743 } else if vt := u.OfEdit; vt != nil && vt.Enabled.Valid() { 744 return &vt.Enabled.Value 745 } else if vt := u.OfRead; vt != nil && vt.Enabled.Valid() { 746 return &vt.Enabled.Value 747 } else if vt := u.OfWrite; vt != nil && vt.Enabled.Valid() { 748 return &vt.Enabled.Value 749 } else if vt := u.OfGlob; vt != nil && vt.Enabled.Valid() { 750 return &vt.Enabled.Value 751 } else if vt := u.OfGrep; vt != nil && vt.Enabled.Valid() { 752 return &vt.Enabled.Value 753 } else if vt := u.OfWebFetch; vt != nil && vt.Enabled.Valid() { 754 return &vt.Enabled.Value 755 } else if vt := u.OfWebSearch; vt != nil && vt.Enabled.Valid() { 756 return &vt.Enabled.Value 757 } 758 return nil 759 } 760 761 // Returns a pointer to the underlying variant's property, if present. 762 func (u BetaManagedAgentsAgentToolConfigParamsUnion) GetType() *string { 763 if vt := u.OfBash; vt != nil { 764 return (*string)(&vt.Type) 765 } else if vt := u.OfEdit; vt != nil { 766 return (*string)(&vt.Type) 767 } else if vt := u.OfRead; vt != nil { 768 return (*string)(&vt.Type) 769 } else if vt := u.OfWrite; vt != nil { 770 return (*string)(&vt.Type) 771 } else if vt := u.OfGlob; vt != nil { 772 return (*string)(&vt.Type) 773 } else if vt := u.OfGrep; vt != nil { 774 return (*string)(&vt.Type) 775 } else if vt := u.OfWebFetch; vt != nil { 776 return (*string)(&vt.Type) 777 } else if vt := u.OfWebSearch; vt != nil { 778 return (*string)(&vt.Type) 779 } 780 return nil 781 } 782 783 // Returns a subunion which exports methods to access subproperties 784 // 785 // Or use AsAny() to get the underlying value 786 func (u BetaManagedAgentsAgentToolConfigParamsUnion) GetPermissionPolicy() (res betaManagedAgentsAgentToolConfigParamsUnionPermissionPolicy) { 787 if vt := u.OfBash; vt != nil { 788 res.any = vt.PermissionPolicy.asAny() 789 } else if vt := u.OfEdit; vt != nil { 790 res.any = vt.PermissionPolicy.asAny() 791 } else if vt := u.OfRead; vt != nil { 792 res.any = vt.PermissionPolicy.asAny() 793 } else if vt := u.OfWrite; vt != nil { 794 res.any = vt.PermissionPolicy.asAny() 795 } else if vt := u.OfGlob; vt != nil { 796 res.any = vt.PermissionPolicy.asAny() 797 } else if vt := u.OfGrep; vt != nil { 798 res.any = vt.PermissionPolicy.asAny() 799 } else if vt := u.OfWebFetch; vt != nil { 800 res.any = vt.PermissionPolicy.asAny() 801 } else if vt := u.OfWebSearch; vt != nil { 802 res.any = vt.PermissionPolicy.asAny() 803 } 804 return 805 } 806 807 // Can have the runtime types [*BetaManagedAgentsAlwaysAllowPolicyParam], 808 // [*BetaManagedAgentsAlwaysAskPolicyParam] 809 type betaManagedAgentsAgentToolConfigParamsUnionPermissionPolicy struct{ any } 810 811 // Use the following switch statement to get the type of the union: 812 // 813 // switch u.AsAny().(type) { 814 // case *anthropic.BetaManagedAgentsAlwaysAllowPolicyParam: 815 // case *anthropic.BetaManagedAgentsAlwaysAskPolicyParam: 816 // default: 817 // fmt.Errorf("not present") 818 // } 819 func (u betaManagedAgentsAgentToolConfigParamsUnionPermissionPolicy) AsAny() any { return u.any } 820 821 // Returns a pointer to the underlying variant's property, if present. 822 func (u betaManagedAgentsAgentToolConfigParamsUnionPermissionPolicy) GetType() *string { 823 switch vt := u.any.(type) { 824 case *BetaManagedAgentsBashToolConfigParamsPermissionPolicyUnion: 825 return vt.GetType() 826 case *BetaManagedAgentsEditToolConfigParamsPermissionPolicyUnion: 827 return vt.GetType() 828 case *BetaManagedAgentsReadToolConfigParamsPermissionPolicyUnion: 829 return vt.GetType() 830 case *BetaManagedAgentsWriteToolConfigParamsPermissionPolicyUnion: 831 return vt.GetType() 832 case *BetaManagedAgentsGlobToolConfigParamsPermissionPolicyUnion: 833 return vt.GetType() 834 case *BetaManagedAgentsGrepToolConfigParamsPermissionPolicyUnion: 835 return vt.GetType() 836 case *BetaManagedAgentsWebFetchToolConfigParamsPermissionPolicyUnion: 837 return vt.GetType() 838 case *BetaManagedAgentsWebSearchToolConfigParamsPermissionPolicyUnion: 839 return vt.GetType() 840 } 841 return nil 842 } 843 844 // Returns a pointer to the underlying variant's AllowedDomains property, if 845 // present. 846 func (u BetaManagedAgentsAgentToolConfigParamsUnion) GetAllowedDomains() []string { 847 if vt := u.OfWebFetch; vt != nil { 848 return vt.AllowedDomains 849 } else if vt := u.OfWebSearch; vt != nil { 850 return vt.AllowedDomains 851 } 852 return nil 853 } 854 855 // Returns a pointer to the underlying variant's BlockedDomains property, if 856 // present. 857 func (u BetaManagedAgentsAgentToolConfigParamsUnion) GetBlockedDomains() []string { 858 if vt := u.OfWebFetch; vt != nil { 859 return vt.BlockedDomains 860 } else if vt := u.OfWebSearch; vt != nil { 861 return vt.BlockedDomains 862 } 863 return nil 864 } 865 866 func init() { 867 apijson.RegisterUnion[BetaManagedAgentsAgentToolConfigParamsUnion]( 868 "type", 869 apijson.Discriminator[BetaManagedAgentsBashToolConfigParams]("bash"), 870 apijson.Discriminator[BetaManagedAgentsEditToolConfigParams]("edit"), 871 apijson.Discriminator[BetaManagedAgentsReadToolConfigParams]("read"), 872 apijson.Discriminator[BetaManagedAgentsWriteToolConfigParams]("write"), 873 apijson.Discriminator[BetaManagedAgentsGlobToolConfigParams]("glob"), 874 apijson.Discriminator[BetaManagedAgentsGrepToolConfigParams]("grep"), 875 apijson.Discriminator[BetaManagedAgentsWebFetchToolConfigParams]("web_fetch"), 876 apijson.Discriminator[BetaManagedAgentsWebSearchToolConfigParams]("web_search"), 877 ) 878 } 879 880 // Resolved default configuration for agent tools. 881 type BetaManagedAgentsAgentToolsetDefaultConfig struct { 882 Enabled bool `json:"enabled" api:"required"` 883 // Permission policy for tool execution. 884 PermissionPolicy BetaManagedAgentsAgentToolsetDefaultConfigPermissionPolicyUnion `json:"permission_policy" api:"required"` 885 // JSON contains metadata for fields, check presence with [respjson.Field.Valid]. 886 JSON struct { 887 Enabled respjson.Field 888 PermissionPolicy respjson.Field 889 ExtraFields map[string]respjson.Field 890 raw string 891 } `json:"-"` 892 } 893 894 // Returns the unmodified JSON received from the API 895 func (r BetaManagedAgentsAgentToolsetDefaultConfig) RawJSON() string { return r.JSON.raw } 896 func (r *BetaManagedAgentsAgentToolsetDefaultConfig) UnmarshalJSON(data []byte) error { 897 return apijson.UnmarshalRoot(data, r) 898 } 899 900 // BetaManagedAgentsAgentToolsetDefaultConfigPermissionPolicyUnion contains all 901 // possible properties and values from [BetaManagedAgentsAlwaysAllowPolicy], 902 // [BetaManagedAgentsAlwaysAskPolicy]. 903 // 904 // Use the [BetaManagedAgentsAgentToolsetDefaultConfigPermissionPolicyUnion.AsAny] 905 // method to switch on the variant. 906 // 907 // Use the methods beginning with 'As' to cast the union to one of its variants. 908 type BetaManagedAgentsAgentToolsetDefaultConfigPermissionPolicyUnion struct { 909 // Any of "always_allow", "always_ask". 910 Type string `json:"type"` 911 JSON struct { 912 Type respjson.Field 913 raw string 914 } `json:"-"` 915 } 916 917 // anyBetaManagedAgentsAgentToolsetDefaultConfigPermissionPolicy is implemented by 918 // each variant of 919 // [BetaManagedAgentsAgentToolsetDefaultConfigPermissionPolicyUnion] to add type 920 // safety for the return type of 921 // [BetaManagedAgentsAgentToolsetDefaultConfigPermissionPolicyUnion.AsAny] 922 type anyBetaManagedAgentsAgentToolsetDefaultConfigPermissionPolicy interface { 923 implBetaManagedAgentsAgentToolsetDefaultConfigPermissionPolicyUnion() 924 } 925 926 func (BetaManagedAgentsAlwaysAllowPolicy) implBetaManagedAgentsAgentToolsetDefaultConfigPermissionPolicyUnion() { 927 } 928 func (BetaManagedAgentsAlwaysAskPolicy) implBetaManagedAgentsAgentToolsetDefaultConfigPermissionPolicyUnion() { 929 } 930 931 // Use the following switch statement to find the correct variant 932 // 933 // switch variant := BetaManagedAgentsAgentToolsetDefaultConfigPermissionPolicyUnion.AsAny().(type) { 934 // case anthropic.BetaManagedAgentsAlwaysAllowPolicy: 935 // case anthropic.BetaManagedAgentsAlwaysAskPolicy: 936 // default: 937 // fmt.Errorf("no variant present") 938 // } 939 func (u BetaManagedAgentsAgentToolsetDefaultConfigPermissionPolicyUnion) AsAny() anyBetaManagedAgentsAgentToolsetDefaultConfigPermissionPolicy { 940 switch u.Type { 941 case "always_allow": 942 return u.AsAlwaysAllow() 943 case "always_ask": 944 return u.AsAlwaysAsk() 945 } 946 return nil 947 } 948 949 func (u BetaManagedAgentsAgentToolsetDefaultConfigPermissionPolicyUnion) AsAlwaysAllow() (v BetaManagedAgentsAlwaysAllowPolicy) { 950 apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v) 951 return 952 } 953 954 func (u BetaManagedAgentsAgentToolsetDefaultConfigPermissionPolicyUnion) AsAlwaysAsk() (v BetaManagedAgentsAlwaysAskPolicy) { 955 apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v) 956 return 957 } 958 959 // Returns the unmodified JSON received from the API 960 func (u BetaManagedAgentsAgentToolsetDefaultConfigPermissionPolicyUnion) RawJSON() string { 961 return u.JSON.raw 962 } 963 964 func (r *BetaManagedAgentsAgentToolsetDefaultConfigPermissionPolicyUnion) UnmarshalJSON(data []byte) error { 965 return apijson.UnmarshalRoot(data, r) 966 } 967 968 // Default configuration for all tools in a toolset. 969 type BetaManagedAgentsAgentToolsetDefaultConfigParams struct { 970 // Whether tools are enabled and available to Claude by default. Defaults to true 971 // if not specified. 972 Enabled param.Opt[bool] `json:"enabled,omitzero"` 973 // Permission policy for tool execution. 974 PermissionPolicy BetaManagedAgentsAgentToolsetDefaultConfigParamsPermissionPolicyUnion `json:"permission_policy,omitzero"` 975 paramObj 976 } 977 978 func (r BetaManagedAgentsAgentToolsetDefaultConfigParams) MarshalJSON() (data []byte, err error) { 979 type shadow BetaManagedAgentsAgentToolsetDefaultConfigParams 980 return param.MarshalObject(r, (*shadow)(&r)) 981 } 982 func (r *BetaManagedAgentsAgentToolsetDefaultConfigParams) UnmarshalJSON(data []byte) error { 983 return apijson.UnmarshalRoot(data, r) 984 } 985 986 // Only one field can be non-zero. 987 // 988 // Use [param.IsOmitted] to confirm if a field is set. 989 type BetaManagedAgentsAgentToolsetDefaultConfigParamsPermissionPolicyUnion struct { 990 OfAlwaysAllow *BetaManagedAgentsAlwaysAllowPolicyParam `json:",omitzero,inline"` 991 OfAlwaysAsk *BetaManagedAgentsAlwaysAskPolicyParam `json:",omitzero,inline"` 992 paramUnion 993 } 994 995 func (u BetaManagedAgentsAgentToolsetDefaultConfigParamsPermissionPolicyUnion) MarshalJSON() ([]byte, error) { 996 return param.MarshalUnion(u, u.OfAlwaysAllow, u.OfAlwaysAsk) 997 } 998 func (u *BetaManagedAgentsAgentToolsetDefaultConfigParamsPermissionPolicyUnion) UnmarshalJSON(data []byte) error { 999 return apijson.UnmarshalRoot(data, u) 1000 } 1001 1002 func (u *BetaManagedAgentsAgentToolsetDefaultConfigParamsPermissionPolicyUnion) asAny() any { 1003 if !param.IsOmitted(u.OfAlwaysAllow) { 1004 return u.OfAlwaysAllow 1005 } else if !param.IsOmitted(u.OfAlwaysAsk) { 1006 return u.OfAlwaysAsk 1007 } 1008 return nil 1009 } 1010 1011 // Returns a pointer to the underlying variant's property, if present. 1012 func (u BetaManagedAgentsAgentToolsetDefaultConfigParamsPermissionPolicyUnion) GetType() *string { 1013 if vt := u.OfAlwaysAllow; vt != nil { 1014 return (*string)(&vt.Type) 1015 } else if vt := u.OfAlwaysAsk; vt != nil { 1016 return (*string)(&vt.Type) 1017 } 1018 return nil 1019 } 1020 1021 func init() { 1022 apijson.RegisterUnion[BetaManagedAgentsAgentToolsetDefaultConfigParamsPermissionPolicyUnion]( 1023 "type", 1024 apijson.Discriminator[BetaManagedAgentsAlwaysAllowPolicyParam]("always_allow"), 1025 apijson.Discriminator[BetaManagedAgentsAlwaysAskPolicyParam]("always_ask"), 1026 ) 1027 } 1028 1029 type BetaManagedAgentsAgentToolset20260401 struct { 1030 Configs []BetaManagedAgentsAgentToolConfigUnion `json:"configs" api:"required"` 1031 // Resolved default configuration for agent tools. 1032 DefaultConfig BetaManagedAgentsAgentToolsetDefaultConfig `json:"default_config" api:"required"` 1033 // Any of "agent_toolset_20260401". 1034 Type BetaManagedAgentsAgentToolset20260401Type `json:"type" api:"required"` 1035 // JSON contains metadata for fields, check presence with [respjson.Field.Valid]. 1036 JSON struct { 1037 Configs respjson.Field 1038 DefaultConfig respjson.Field 1039 Type respjson.Field 1040 ExtraFields map[string]respjson.Field 1041 raw string 1042 } `json:"-"` 1043 } 1044 1045 // Returns the unmodified JSON received from the API 1046 func (r BetaManagedAgentsAgentToolset20260401) RawJSON() string { return r.JSON.raw } 1047 func (r *BetaManagedAgentsAgentToolset20260401) UnmarshalJSON(data []byte) error { 1048 return apijson.UnmarshalRoot(data, r) 1049 } 1050 1051 type BetaManagedAgentsAgentToolset20260401Type string 1052 1053 const ( 1054 BetaManagedAgentsAgentToolset20260401TypeAgentToolset20260401 BetaManagedAgentsAgentToolset20260401Type = "agent_toolset_20260401" 1055 ) 1056 1057 // Input payload for the `bash` tool of the `agent_toolset_20260401` toolset. All 1058 // fields are optional; a normal invocation supplies `command`, while 1059 // `restart=true` (with no `command`) reboots the runner-side bash session. 1060 type BetaManagedAgentsAgentToolset20260401BashInput struct { 1061 // Shell command to execute. Omit only when `restart` is true. 1062 Command string `json:"command"` 1063 // When true, restart the persistent bash session instead of running a command. 1064 // Subsequent calls without `restart` will run against the fresh session. 1065 Restart bool `json:"restart"` 1066 // Per-call timeout in milliseconds. Defaults to the runner-wide tool timeout when 1067 // omitted or zero. 1068 TimeoutMs int64 `json:"timeout_ms"` 1069 // JSON contains metadata for fields, check presence with [respjson.Field.Valid]. 1070 JSON struct { 1071 Command respjson.Field 1072 Restart respjson.Field 1073 TimeoutMs respjson.Field 1074 ExtraFields map[string]respjson.Field 1075 raw string 1076 } `json:"-"` 1077 } 1078 1079 // Returns the unmodified JSON received from the API 1080 func (r BetaManagedAgentsAgentToolset20260401BashInput) RawJSON() string { return r.JSON.raw } 1081 func (r *BetaManagedAgentsAgentToolset20260401BashInput) UnmarshalJSON(data []byte) error { 1082 return apijson.UnmarshalRoot(data, r) 1083 } 1084 1085 // Input payload for the `edit` tool. Performs a string replacement in the named 1086 // file; by default `old_string` must occur exactly once. 1087 type BetaManagedAgentsAgentToolset20260401EditInput struct { 1088 // Path of the file to edit. 1089 FilePath string `json:"file_path" api:"required"` 1090 // Replacement text. 1091 NewString string `json:"new_string" api:"required"` 1092 // Substring to find and replace. 1093 OldString string `json:"old_string" api:"required"` 1094 // When true, replace every occurrence of `old_string` instead of requiring a 1095 // unique match. 1096 ReplaceAll bool `json:"replace_all"` 1097 // JSON contains metadata for fields, check presence with [respjson.Field.Valid]. 1098 JSON struct { 1099 FilePath respjson.Field 1100 NewString respjson.Field 1101 OldString respjson.Field 1102 ReplaceAll respjson.Field 1103 ExtraFields map[string]respjson.Field 1104 raw string 1105 } `json:"-"` 1106 } 1107 1108 // Returns the unmodified JSON received from the API 1109 func (r BetaManagedAgentsAgentToolset20260401EditInput) RawJSON() string { return r.JSON.raw } 1110 func (r *BetaManagedAgentsAgentToolset20260401EditInput) UnmarshalJSON(data []byte) error { 1111 return apijson.UnmarshalRoot(data, r) 1112 } 1113 1114 // Input payload for the `glob` tool. Returns paths matching a doublestar glob 1115 // pattern, newest first. 1116 type BetaManagedAgentsAgentToolset20260401GlobInput struct { 1117 // Doublestar glob pattern (e.g. `**/*.go`). Absolute patterns are only permitted 1118 // when the runner is configured to allow them. 1119 Pattern string `json:"pattern" api:"required"` 1120 // Optional directory root to search under. Defaults to the runner's working 1121 // directory. 1122 Path string `json:"path"` 1123 // JSON contains metadata for fields, check presence with [respjson.Field.Valid]. 1124 JSON struct { 1125 Pattern respjson.Field 1126 Path respjson.Field 1127 ExtraFields map[string]respjson.Field 1128 raw string 1129 } `json:"-"` 1130 } 1131 1132 // Returns the unmodified JSON received from the API 1133 func (r BetaManagedAgentsAgentToolset20260401GlobInput) RawJSON() string { return r.JSON.raw } 1134 func (r *BetaManagedAgentsAgentToolset20260401GlobInput) UnmarshalJSON(data []byte) error { 1135 return apijson.UnmarshalRoot(data, r) 1136 } 1137 1138 // Input payload for the `grep` tool. Searches file contents for a regular 1139 // expression, returning matching lines. 1140 type BetaManagedAgentsAgentToolset20260401GrepInput struct { 1141 // Regular expression to search for. 1142 Pattern string `json:"pattern" api:"required"` 1143 // Optional directory root to search under. Defaults to the runner's working 1144 // directory. 1145 Path string `json:"path"` 1146 // JSON contains metadata for fields, check presence with [respjson.Field.Valid]. 1147 JSON struct { 1148 Pattern respjson.Field 1149 Path respjson.Field 1150 ExtraFields map[string]respjson.Field 1151 raw string 1152 } `json:"-"` 1153 } 1154 1155 // Returns the unmodified JSON received from the API 1156 func (r BetaManagedAgentsAgentToolset20260401GrepInput) RawJSON() string { return r.JSON.raw } 1157 func (r *BetaManagedAgentsAgentToolset20260401GrepInput) UnmarshalJSON(data []byte) error { 1158 return apijson.UnmarshalRoot(data, r) 1159 } 1160 1161 // Configuration for built-in agent tools. Use this to enable or disable groups of 1162 // tools available to the agent. 1163 // 1164 // The property Type is required. 1165 type BetaManagedAgentsAgentToolset20260401Params struct { 1166 // Any of "agent_toolset_20260401". 1167 Type BetaManagedAgentsAgentToolset20260401ParamsType `json:"type,omitzero" api:"required"` 1168 // Per-tool configuration overrides. 1169 Configs []BetaManagedAgentsAgentToolConfigParamsUnion `json:"configs,omitzero"` 1170 // Default configuration for all tools in a toolset. 1171 DefaultConfig BetaManagedAgentsAgentToolsetDefaultConfigParams `json:"default_config,omitzero"` 1172 paramObj 1173 } 1174 1175 func (r BetaManagedAgentsAgentToolset20260401Params) MarshalJSON() (data []byte, err error) { 1176 type shadow BetaManagedAgentsAgentToolset20260401Params 1177 return param.MarshalObject(r, (*shadow)(&r)) 1178 } 1179 func (r *BetaManagedAgentsAgentToolset20260401Params) UnmarshalJSON(data []byte) error { 1180 return apijson.UnmarshalRoot(data, r) 1181 } 1182 1183 type BetaManagedAgentsAgentToolset20260401ParamsType string 1184 1185 const ( 1186 BetaManagedAgentsAgentToolset20260401ParamsTypeAgentToolset20260401 BetaManagedAgentsAgentToolset20260401ParamsType = "agent_toolset_20260401" 1187 ) 1188 1189 // Input payload for the `read` tool. Reads file contents relative to the runner's 1190 // working directory (or absolute when the runner permits). 1191 type BetaManagedAgentsAgentToolset20260401ReadInput struct { 1192 // Path of the file to read. 1193 FilePath string `json:"file_path" api:"required"` 1194 // Optional `[start_line, end_line]` 1-indexed inclusive range. When omitted the 1195 // entire file is returned. `end_line` of 0 or negative means "to end of file". 1196 ViewRange []int64 `json:"view_range"` 1197 // JSON contains metadata for fields, check presence with [respjson.Field.Valid]. 1198 JSON struct { 1199 FilePath respjson.Field 1200 ViewRange respjson.Field 1201 ExtraFields map[string]respjson.Field 1202 raw string 1203 } `json:"-"` 1204 } 1205 1206 // Returns the unmodified JSON received from the API 1207 func (r BetaManagedAgentsAgentToolset20260401ReadInput) RawJSON() string { return r.JSON.raw } 1208 func (r *BetaManagedAgentsAgentToolset20260401ReadInput) UnmarshalJSON(data []byte) error { 1209 return apijson.UnmarshalRoot(data, r) 1210 } 1211 1212 // Input payload for the `write` tool. Writes (overwriting) the entire file 1213 // contents. 1214 type BetaManagedAgentsAgentToolset20260401WriteInput struct { 1215 // Full file contents to write. 1216 Content string `json:"content" api:"required"` 1217 // Path of the file to write. 1218 FilePath string `json:"file_path" api:"required"` 1219 // JSON contains metadata for fields, check presence with [respjson.Field.Valid]. 1220 JSON struct { 1221 Content respjson.Field 1222 FilePath respjson.Field 1223 ExtraFields map[string]respjson.Field 1224 raw string 1225 } `json:"-"` 1226 } 1227 1228 // Returns the unmodified JSON received from the API 1229 func (r BetaManagedAgentsAgentToolset20260401WriteInput) RawJSON() string { return r.JSON.raw } 1230 func (r *BetaManagedAgentsAgentToolset20260401WriteInput) UnmarshalJSON(data []byte) error { 1231 return apijson.UnmarshalRoot(data, r) 1232 } 1233 1234 // Tool calls are automatically approved without user confirmation. 1235 type BetaManagedAgentsAlwaysAllowPolicy struct { 1236 // Any of "always_allow". 1237 Type BetaManagedAgentsAlwaysAllowPolicyType `json:"type" api:"required"` 1238 // JSON contains metadata for fields, check presence with [respjson.Field.Valid]. 1239 JSON struct { 1240 Type respjson.Field 1241 ExtraFields map[string]respjson.Field 1242 raw string 1243 } `json:"-"` 1244 } 1245 1246 // Returns the unmodified JSON received from the API 1247 func (r BetaManagedAgentsAlwaysAllowPolicy) RawJSON() string { return r.JSON.raw } 1248 func (r *BetaManagedAgentsAlwaysAllowPolicy) UnmarshalJSON(data []byte) error { 1249 return apijson.UnmarshalRoot(data, r) 1250 } 1251 1252 // ToParam converts this BetaManagedAgentsAlwaysAllowPolicy to a 1253 // BetaManagedAgentsAlwaysAllowPolicyParam. 1254 // 1255 // Warning: the fields of the param type will not be present. ToParam should only 1256 // be used at the last possible moment before sending a request. Test for this with 1257 // BetaManagedAgentsAlwaysAllowPolicyParam.Overrides() 1258 func (r BetaManagedAgentsAlwaysAllowPolicy) ToParam() BetaManagedAgentsAlwaysAllowPolicyParam { 1259 return param.Override[BetaManagedAgentsAlwaysAllowPolicyParam](json.RawMessage(r.RawJSON())) 1260 } 1261 1262 type BetaManagedAgentsAlwaysAllowPolicyType string 1263 1264 const ( 1265 BetaManagedAgentsAlwaysAllowPolicyTypeAlwaysAllow BetaManagedAgentsAlwaysAllowPolicyType = "always_allow" 1266 ) 1267 1268 // Tool calls are automatically approved without user confirmation. 1269 // 1270 // The property Type is required. 1271 type BetaManagedAgentsAlwaysAllowPolicyParam struct { 1272 // Any of "always_allow". 1273 Type BetaManagedAgentsAlwaysAllowPolicyType `json:"type,omitzero" api:"required"` 1274 paramObj 1275 } 1276 1277 func (r BetaManagedAgentsAlwaysAllowPolicyParam) MarshalJSON() (data []byte, err error) { 1278 type shadow BetaManagedAgentsAlwaysAllowPolicyParam 1279 return param.MarshalObject(r, (*shadow)(&r)) 1280 } 1281 func (r *BetaManagedAgentsAlwaysAllowPolicyParam) UnmarshalJSON(data []byte) error { 1282 return apijson.UnmarshalRoot(data, r) 1283 } 1284 1285 // Tool calls require user confirmation before execution. 1286 type BetaManagedAgentsAlwaysAskPolicy struct { 1287 // Any of "always_ask". 1288 Type BetaManagedAgentsAlwaysAskPolicyType `json:"type" api:"required"` 1289 // JSON contains metadata for fields, check presence with [respjson.Field.Valid]. 1290 JSON struct { 1291 Type respjson.Field 1292 ExtraFields map[string]respjson.Field 1293 raw string 1294 } `json:"-"` 1295 } 1296 1297 // Returns the unmodified JSON received from the API 1298 func (r BetaManagedAgentsAlwaysAskPolicy) RawJSON() string { return r.JSON.raw } 1299 func (r *BetaManagedAgentsAlwaysAskPolicy) UnmarshalJSON(data []byte) error { 1300 return apijson.UnmarshalRoot(data, r) 1301 } 1302 1303 // ToParam converts this BetaManagedAgentsAlwaysAskPolicy to a 1304 // BetaManagedAgentsAlwaysAskPolicyParam. 1305 // 1306 // Warning: the fields of the param type will not be present. ToParam should only 1307 // be used at the last possible moment before sending a request. Test for this with 1308 // BetaManagedAgentsAlwaysAskPolicyParam.Overrides() 1309 func (r BetaManagedAgentsAlwaysAskPolicy) ToParam() BetaManagedAgentsAlwaysAskPolicyParam { 1310 return param.Override[BetaManagedAgentsAlwaysAskPolicyParam](json.RawMessage(r.RawJSON())) 1311 } 1312 1313 type BetaManagedAgentsAlwaysAskPolicyType string 1314 1315 const ( 1316 BetaManagedAgentsAlwaysAskPolicyTypeAlwaysAsk BetaManagedAgentsAlwaysAskPolicyType = "always_ask" 1317 ) 1318 1319 // Tool calls require user confirmation before execution. 1320 // 1321 // The property Type is required. 1322 type BetaManagedAgentsAlwaysAskPolicyParam struct { 1323 // Any of "always_ask". 1324 Type BetaManagedAgentsAlwaysAskPolicyType `json:"type,omitzero" api:"required"` 1325 paramObj 1326 } 1327 1328 func (r BetaManagedAgentsAlwaysAskPolicyParam) MarshalJSON() (data []byte, err error) { 1329 type shadow BetaManagedAgentsAlwaysAskPolicyParam 1330 return param.MarshalObject(r, (*shadow)(&r)) 1331 } 1332 func (r *BetaManagedAgentsAlwaysAskPolicyParam) UnmarshalJSON(data []byte) error { 1333 return apijson.UnmarshalRoot(data, r) 1334 } 1335 1336 // A resolved Anthropic-managed skill. 1337 type BetaManagedAgentsAnthropicSkill struct { 1338 SkillID string `json:"skill_id" api:"required"` 1339 // Any of "anthropic". 1340 Type BetaManagedAgentsAnthropicSkillType `json:"type" api:"required"` 1341 Version string `json:"version" api:"required"` 1342 // JSON contains metadata for fields, check presence with [respjson.Field.Valid]. 1343 JSON struct { 1344 SkillID respjson.Field 1345 Type respjson.Field 1346 Version respjson.Field 1347 ExtraFields map[string]respjson.Field 1348 raw string 1349 } `json:"-"` 1350 } 1351 1352 // Returns the unmodified JSON received from the API 1353 func (r BetaManagedAgentsAnthropicSkill) RawJSON() string { return r.JSON.raw } 1354 func (r *BetaManagedAgentsAnthropicSkill) UnmarshalJSON(data []byte) error { 1355 return apijson.UnmarshalRoot(data, r) 1356 } 1357 1358 type BetaManagedAgentsAnthropicSkillType string 1359 1360 const ( 1361 BetaManagedAgentsAnthropicSkillTypeAnthropic BetaManagedAgentsAnthropicSkillType = "anthropic" 1362 ) 1363 1364 // An Anthropic-managed skill. 1365 // 1366 // The properties SkillID, Type are required. 1367 type BetaManagedAgentsAnthropicSkillParams struct { 1368 // Identifier of the Anthropic skill (e.g., "xlsx"). 1369 SkillID string `json:"skill_id" api:"required"` 1370 // Any of "anthropic". 1371 Type BetaManagedAgentsAnthropicSkillParamsType `json:"type,omitzero" api:"required"` 1372 // Version to pin. Defaults to latest if omitted. 1373 Version param.Opt[string] `json:"version,omitzero"` 1374 paramObj 1375 } 1376 1377 func (r BetaManagedAgentsAnthropicSkillParams) MarshalJSON() (data []byte, err error) { 1378 type shadow BetaManagedAgentsAnthropicSkillParams 1379 return param.MarshalObject(r, (*shadow)(&r)) 1380 } 1381 func (r *BetaManagedAgentsAnthropicSkillParams) UnmarshalJSON(data []byte) error { 1382 return apijson.UnmarshalRoot(data, r) 1383 } 1384 1385 type BetaManagedAgentsAnthropicSkillParamsType string 1386 1387 const ( 1388 BetaManagedAgentsAnthropicSkillParamsTypeAnthropic BetaManagedAgentsAnthropicSkillParamsType = "anthropic" 1389 ) 1390 1391 // Configuration for the bash tool. 1392 type BetaManagedAgentsBashToolConfig struct { 1393 Enabled bool `json:"enabled" api:"required"` 1394 Name constant.Bash `json:"name" default:"bash"` 1395 // Permission policy for tool execution. 1396 PermissionPolicy BetaManagedAgentsBashToolConfigPermissionPolicyUnion `json:"permission_policy" api:"required"` 1397 Type constant.Bash `json:"type" default:"bash"` 1398 // JSON contains metadata for fields, check presence with [respjson.Field.Valid]. 1399 JSON struct { 1400 Enabled respjson.Field 1401 Name respjson.Field 1402 PermissionPolicy respjson.Field 1403 Type respjson.Field 1404 ExtraFields map[string]respjson.Field 1405 raw string 1406 } `json:"-"` 1407 } 1408 1409 // Returns the unmodified JSON received from the API 1410 func (r BetaManagedAgentsBashToolConfig) RawJSON() string { return r.JSON.raw } 1411 func (r *BetaManagedAgentsBashToolConfig) UnmarshalJSON(data []byte) error { 1412 return apijson.UnmarshalRoot(data, r) 1413 } 1414 1415 // BetaManagedAgentsBashToolConfigPermissionPolicyUnion contains all possible 1416 // properties and values from [BetaManagedAgentsAlwaysAllowPolicy], 1417 // [BetaManagedAgentsAlwaysAskPolicy]. 1418 // 1419 // Use the [BetaManagedAgentsBashToolConfigPermissionPolicyUnion.AsAny] method to 1420 // switch on the variant. 1421 // 1422 // Use the methods beginning with 'As' to cast the union to one of its variants. 1423 type BetaManagedAgentsBashToolConfigPermissionPolicyUnion struct { 1424 // Any of "always_allow", "always_ask". 1425 Type string `json:"type"` 1426 JSON struct { 1427 Type respjson.Field 1428 raw string 1429 } `json:"-"` 1430 } 1431 1432 // anyBetaManagedAgentsBashToolConfigPermissionPolicy is implemented by each 1433 // variant of [BetaManagedAgentsBashToolConfigPermissionPolicyUnion] to add type 1434 // safety for the return type of 1435 // [BetaManagedAgentsBashToolConfigPermissionPolicyUnion.AsAny] 1436 type anyBetaManagedAgentsBashToolConfigPermissionPolicy interface { 1437 implBetaManagedAgentsBashToolConfigPermissionPolicyUnion() 1438 } 1439 1440 func (BetaManagedAgentsAlwaysAllowPolicy) implBetaManagedAgentsBashToolConfigPermissionPolicyUnion() { 1441 } 1442 func (BetaManagedAgentsAlwaysAskPolicy) implBetaManagedAgentsBashToolConfigPermissionPolicyUnion() {} 1443 1444 // Use the following switch statement to find the correct variant 1445 // 1446 // switch variant := BetaManagedAgentsBashToolConfigPermissionPolicyUnion.AsAny().(type) { 1447 // case anthropic.BetaManagedAgentsAlwaysAllowPolicy: 1448 // case anthropic.BetaManagedAgentsAlwaysAskPolicy: 1449 // default: 1450 // fmt.Errorf("no variant present") 1451 // } 1452 func (u BetaManagedAgentsBashToolConfigPermissionPolicyUnion) AsAny() anyBetaManagedAgentsBashToolConfigPermissionPolicy { 1453 switch u.Type { 1454 case "always_allow": 1455 return u.AsAlwaysAllow() 1456 case "always_ask": 1457 return u.AsAlwaysAsk() 1458 } 1459 return nil 1460 } 1461 1462 func (u BetaManagedAgentsBashToolConfigPermissionPolicyUnion) AsAlwaysAllow() (v BetaManagedAgentsAlwaysAllowPolicy) { 1463 apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v) 1464 return 1465 } 1466 1467 func (u BetaManagedAgentsBashToolConfigPermissionPolicyUnion) AsAlwaysAsk() (v BetaManagedAgentsAlwaysAskPolicy) { 1468 apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v) 1469 return 1470 } 1471 1472 // Returns the unmodified JSON received from the API 1473 func (u BetaManagedAgentsBashToolConfigPermissionPolicyUnion) RawJSON() string { return u.JSON.raw } 1474 1475 func (r *BetaManagedAgentsBashToolConfigPermissionPolicyUnion) UnmarshalJSON(data []byte) error { 1476 return apijson.UnmarshalRoot(data, r) 1477 } 1478 1479 // Configuration override for the bash tool. 1480 // 1481 // The property Name is required. 1482 type BetaManagedAgentsBashToolConfigParams struct { 1483 // Whether this tool is enabled and available to Claude. Overrides the 1484 // default_config setting. 1485 Enabled param.Opt[bool] `json:"enabled,omitzero"` 1486 // Permission policy for tool execution. 1487 PermissionPolicy BetaManagedAgentsBashToolConfigParamsPermissionPolicyUnion `json:"permission_policy,omitzero"` 1488 // Any of "bash". 1489 Type BetaManagedAgentsBashToolConfigParamsType `json:"type,omitzero"` 1490 // Must be "bash". 1491 // 1492 // This field can be elided, and will marshal its zero value as "bash". 1493 Name constant.Bash `json:"name" default:"bash"` 1494 paramObj 1495 } 1496 1497 func (r BetaManagedAgentsBashToolConfigParams) MarshalJSON() (data []byte, err error) { 1498 type shadow BetaManagedAgentsBashToolConfigParams 1499 return param.MarshalObject(r, (*shadow)(&r)) 1500 } 1501 func (r *BetaManagedAgentsBashToolConfigParams) UnmarshalJSON(data []byte) error { 1502 return apijson.UnmarshalRoot(data, r) 1503 } 1504 1505 // Only one field can be non-zero. 1506 // 1507 // Use [param.IsOmitted] to confirm if a field is set. 1508 type BetaManagedAgentsBashToolConfigParamsPermissionPolicyUnion struct { 1509 OfAlwaysAllow *BetaManagedAgentsAlwaysAllowPolicyParam `json:",omitzero,inline"` 1510 OfAlwaysAsk *BetaManagedAgentsAlwaysAskPolicyParam `json:",omitzero,inline"` 1511 paramUnion 1512 } 1513 1514 func (u BetaManagedAgentsBashToolConfigParamsPermissionPolicyUnion) MarshalJSON() ([]byte, error) { 1515 return param.MarshalUnion(u, u.OfAlwaysAllow, u.OfAlwaysAsk) 1516 } 1517 func (u *BetaManagedAgentsBashToolConfigParamsPermissionPolicyUnion) UnmarshalJSON(data []byte) error { 1518 return apijson.UnmarshalRoot(data, u) 1519 } 1520 1521 func (u *BetaManagedAgentsBashToolConfigParamsPermissionPolicyUnion) asAny() any { 1522 if !param.IsOmitted(u.OfAlwaysAllow) { 1523 return u.OfAlwaysAllow 1524 } else if !param.IsOmitted(u.OfAlwaysAsk) { 1525 return u.OfAlwaysAsk 1526 } 1527 return nil 1528 } 1529 1530 // Returns a pointer to the underlying variant's property, if present. 1531 func (u BetaManagedAgentsBashToolConfigParamsPermissionPolicyUnion) GetType() *string { 1532 if vt := u.OfAlwaysAllow; vt != nil { 1533 return (*string)(&vt.Type) 1534 } else if vt := u.OfAlwaysAsk; vt != nil { 1535 return (*string)(&vt.Type) 1536 } 1537 return nil 1538 } 1539 1540 func init() { 1541 apijson.RegisterUnion[BetaManagedAgentsBashToolConfigParamsPermissionPolicyUnion]( 1542 "type", 1543 apijson.Discriminator[BetaManagedAgentsAlwaysAllowPolicyParam]("always_allow"), 1544 apijson.Discriminator[BetaManagedAgentsAlwaysAskPolicyParam]("always_ask"), 1545 ) 1546 } 1547 1548 type BetaManagedAgentsBashToolConfigParamsType string 1549 1550 const ( 1551 BetaManagedAgentsBashToolConfigParamsTypeBash BetaManagedAgentsBashToolConfigParamsType = "bash" 1552 ) 1553 1554 // A resolved user-created custom skill. 1555 type BetaManagedAgentsCustomSkill struct { 1556 SkillID string `json:"skill_id" api:"required"` 1557 // Any of "custom". 1558 Type BetaManagedAgentsCustomSkillType `json:"type" api:"required"` 1559 Version string `json:"version" api:"required"` 1560 // JSON contains metadata for fields, check presence with [respjson.Field.Valid]. 1561 JSON struct { 1562 SkillID respjson.Field 1563 Type respjson.Field 1564 Version respjson.Field 1565 ExtraFields map[string]respjson.Field 1566 raw string 1567 } `json:"-"` 1568 } 1569 1570 // Returns the unmodified JSON received from the API 1571 func (r BetaManagedAgentsCustomSkill) RawJSON() string { return r.JSON.raw } 1572 func (r *BetaManagedAgentsCustomSkill) UnmarshalJSON(data []byte) error { 1573 return apijson.UnmarshalRoot(data, r) 1574 } 1575 1576 type BetaManagedAgentsCustomSkillType string 1577 1578 const ( 1579 BetaManagedAgentsCustomSkillTypeCustom BetaManagedAgentsCustomSkillType = "custom" 1580 ) 1581 1582 // A user-created custom skill. 1583 // 1584 // The properties SkillID, Type are required. 1585 type BetaManagedAgentsCustomSkillParams struct { 1586 // Tagged ID of the custom skill (e.g., "skill_01XJ5..."). 1587 SkillID string `json:"skill_id" api:"required"` 1588 // Any of "custom". 1589 Type BetaManagedAgentsCustomSkillParamsType `json:"type,omitzero" api:"required"` 1590 // Version to pin. Defaults to latest if omitted. 1591 Version param.Opt[string] `json:"version,omitzero"` 1592 paramObj 1593 } 1594 1595 func (r BetaManagedAgentsCustomSkillParams) MarshalJSON() (data []byte, err error) { 1596 type shadow BetaManagedAgentsCustomSkillParams 1597 return param.MarshalObject(r, (*shadow)(&r)) 1598 } 1599 func (r *BetaManagedAgentsCustomSkillParams) UnmarshalJSON(data []byte) error { 1600 return apijson.UnmarshalRoot(data, r) 1601 } 1602 1603 type BetaManagedAgentsCustomSkillParamsType string 1604 1605 const ( 1606 BetaManagedAgentsCustomSkillParamsTypeCustom BetaManagedAgentsCustomSkillParamsType = "custom" 1607 ) 1608 1609 // A custom tool as returned in API responses. 1610 type BetaManagedAgentsCustomTool struct { 1611 Description string `json:"description" api:"required"` 1612 // JSON Schema for custom tool input parameters. 1613 InputSchema BetaManagedAgentsCustomToolInputSchema `json:"input_schema" api:"required"` 1614 Name string `json:"name" api:"required"` 1615 // Any of "custom". 1616 Type BetaManagedAgentsCustomToolType `json:"type" api:"required"` 1617 // JSON contains metadata for fields, check presence with [respjson.Field.Valid]. 1618 JSON struct { 1619 Description respjson.Field 1620 InputSchema respjson.Field 1621 Name respjson.Field 1622 Type respjson.Field 1623 ExtraFields map[string]respjson.Field 1624 raw string 1625 } `json:"-"` 1626 } 1627 1628 // Returns the unmodified JSON received from the API 1629 func (r BetaManagedAgentsCustomTool) RawJSON() string { return r.JSON.raw } 1630 func (r *BetaManagedAgentsCustomTool) UnmarshalJSON(data []byte) error { 1631 return apijson.UnmarshalRoot(data, r) 1632 } 1633 1634 type BetaManagedAgentsCustomToolType string 1635 1636 const ( 1637 BetaManagedAgentsCustomToolTypeCustom BetaManagedAgentsCustomToolType = "custom" 1638 ) 1639 1640 // JSON Schema for custom tool input parameters. 1641 type BetaManagedAgentsCustomToolInputSchema struct { 1642 Type constant.Object `json:"type" default:"object"` 1643 Properties map[string]any `json:"properties" api:"nullable"` 1644 Required []string `json:"required" api:"nullable"` 1645 ExtraFields map[string]any `json:"" api:"extrafields"` 1646 // JSON contains metadata for fields, check presence with [respjson.Field.Valid]. 1647 JSON struct { 1648 Type respjson.Field 1649 Properties respjson.Field 1650 Required respjson.Field 1651 ExtraFields map[string]respjson.Field 1652 raw string 1653 } `json:"-"` 1654 } 1655 1656 // Returns the unmodified JSON received from the API 1657 func (r BetaManagedAgentsCustomToolInputSchema) RawJSON() string { return r.JSON.raw } 1658 func (r *BetaManagedAgentsCustomToolInputSchema) UnmarshalJSON(data []byte) error { 1659 return apijson.UnmarshalRoot(data, r) 1660 } 1661 1662 // ToParam converts this BetaManagedAgentsCustomToolInputSchema to a 1663 // BetaManagedAgentsCustomToolInputSchemaParam. 1664 // 1665 // Warning: the fields of the param type will not be present. ToParam should only 1666 // be used at the last possible moment before sending a request. Test for this with 1667 // BetaManagedAgentsCustomToolInputSchemaParam.Overrides() 1668 func (r BetaManagedAgentsCustomToolInputSchema) ToParam() BetaManagedAgentsCustomToolInputSchemaParam { 1669 return param.Override[BetaManagedAgentsCustomToolInputSchemaParam](json.RawMessage(r.RawJSON())) 1670 } 1671 1672 // JSON Schema for custom tool input parameters. 1673 // 1674 // The property Type is required. 1675 type BetaManagedAgentsCustomToolInputSchemaParam struct { 1676 Properties map[string]any `json:"properties,omitzero"` 1677 Required []string `json:"required,omitzero"` 1678 // This field can be elided, and will marshal its zero value as "object". 1679 Type constant.Object `json:"type" default:"object"` 1680 ExtraFields map[string]any `json:"-"` 1681 paramObj 1682 } 1683 1684 func (r BetaManagedAgentsCustomToolInputSchemaParam) MarshalJSON() (data []byte, err error) { 1685 type shadow BetaManagedAgentsCustomToolInputSchemaParam 1686 return param.MarshalWithExtras(r, (*shadow)(&r), r.ExtraFields) 1687 } 1688 func (r *BetaManagedAgentsCustomToolInputSchemaParam) UnmarshalJSON(data []byte) error { 1689 return apijson.UnmarshalRoot(data, r) 1690 } 1691 1692 // A custom tool that is executed by the API client rather than the agent. When the 1693 // agent calls this tool, an `agent.custom_tool_use` event is emitted and the 1694 // session goes idle, waiting for the client to provide the result via a 1695 // `user.custom_tool_result` event. 1696 // 1697 // The properties Description, InputSchema, Name, Type are required. 1698 type BetaManagedAgentsCustomToolParams struct { 1699 // Description of what the tool does, shown to the agent to help it decide when to 1700 // use the tool. 1701 Description string `json:"description" api:"required"` 1702 // JSON Schema for custom tool input parameters. 1703 InputSchema BetaManagedAgentsCustomToolInputSchemaParam `json:"input_schema,omitzero" api:"required"` 1704 // Unique name for the tool. 1-128 characters; letters, digits, underscores, and 1705 // hyphens. 1706 Name string `json:"name" api:"required"` 1707 // Any of "custom". 1708 Type BetaManagedAgentsCustomToolParamsType `json:"type,omitzero" api:"required"` 1709 paramObj 1710 } 1711 1712 func (r BetaManagedAgentsCustomToolParams) MarshalJSON() (data []byte, err error) { 1713 type shadow BetaManagedAgentsCustomToolParams 1714 return param.MarshalObject(r, (*shadow)(&r)) 1715 } 1716 func (r *BetaManagedAgentsCustomToolParams) UnmarshalJSON(data []byte) error { 1717 return apijson.UnmarshalRoot(data, r) 1718 } 1719 1720 type BetaManagedAgentsCustomToolParamsType string 1721 1722 const ( 1723 BetaManagedAgentsCustomToolParamsTypeCustom BetaManagedAgentsCustomToolParamsType = "custom" 1724 ) 1725 1726 // Configuration for the edit tool. 1727 type BetaManagedAgentsEditToolConfig struct { 1728 Enabled bool `json:"enabled" api:"required"` 1729 Name constant.Edit `json:"name" default:"edit"` 1730 // Permission policy for tool execution. 1731 PermissionPolicy BetaManagedAgentsEditToolConfigPermissionPolicyUnion `json:"permission_policy" api:"required"` 1732 Type constant.Edit `json:"type" default:"edit"` 1733 // JSON contains metadata for fields, check presence with [respjson.Field.Valid]. 1734 JSON struct { 1735 Enabled respjson.Field 1736 Name respjson.Field 1737 PermissionPolicy respjson.Field 1738 Type respjson.Field 1739 ExtraFields map[string]respjson.Field 1740 raw string 1741 } `json:"-"` 1742 } 1743 1744 // Returns the unmodified JSON received from the API 1745 func (r BetaManagedAgentsEditToolConfig) RawJSON() string { return r.JSON.raw } 1746 func (r *BetaManagedAgentsEditToolConfig) UnmarshalJSON(data []byte) error { 1747 return apijson.UnmarshalRoot(data, r) 1748 } 1749 1750 // BetaManagedAgentsEditToolConfigPermissionPolicyUnion contains all possible 1751 // properties and values from [BetaManagedAgentsAlwaysAllowPolicy], 1752 // [BetaManagedAgentsAlwaysAskPolicy]. 1753 // 1754 // Use the [BetaManagedAgentsEditToolConfigPermissionPolicyUnion.AsAny] method to 1755 // switch on the variant. 1756 // 1757 // Use the methods beginning with 'As' to cast the union to one of its variants. 1758 type BetaManagedAgentsEditToolConfigPermissionPolicyUnion struct { 1759 // Any of "always_allow", "always_ask". 1760 Type string `json:"type"` 1761 JSON struct { 1762 Type respjson.Field 1763 raw string 1764 } `json:"-"` 1765 } 1766 1767 // anyBetaManagedAgentsEditToolConfigPermissionPolicy is implemented by each 1768 // variant of [BetaManagedAgentsEditToolConfigPermissionPolicyUnion] to add type 1769 // safety for the return type of 1770 // [BetaManagedAgentsEditToolConfigPermissionPolicyUnion.AsAny] 1771 type anyBetaManagedAgentsEditToolConfigPermissionPolicy interface { 1772 implBetaManagedAgentsEditToolConfigPermissionPolicyUnion() 1773 } 1774 1775 func (BetaManagedAgentsAlwaysAllowPolicy) implBetaManagedAgentsEditToolConfigPermissionPolicyUnion() { 1776 } 1777 func (BetaManagedAgentsAlwaysAskPolicy) implBetaManagedAgentsEditToolConfigPermissionPolicyUnion() {} 1778 1779 // Use the following switch statement to find the correct variant 1780 // 1781 // switch variant := BetaManagedAgentsEditToolConfigPermissionPolicyUnion.AsAny().(type) { 1782 // case anthropic.BetaManagedAgentsAlwaysAllowPolicy: 1783 // case anthropic.BetaManagedAgentsAlwaysAskPolicy: 1784 // default: 1785 // fmt.Errorf("no variant present") 1786 // } 1787 func (u BetaManagedAgentsEditToolConfigPermissionPolicyUnion) AsAny() anyBetaManagedAgentsEditToolConfigPermissionPolicy { 1788 switch u.Type { 1789 case "always_allow": 1790 return u.AsAlwaysAllow() 1791 case "always_ask": 1792 return u.AsAlwaysAsk() 1793 } 1794 return nil 1795 } 1796 1797 func (u BetaManagedAgentsEditToolConfigPermissionPolicyUnion) AsAlwaysAllow() (v BetaManagedAgentsAlwaysAllowPolicy) { 1798 apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v) 1799 return 1800 } 1801 1802 func (u BetaManagedAgentsEditToolConfigPermissionPolicyUnion) AsAlwaysAsk() (v BetaManagedAgentsAlwaysAskPolicy) { 1803 apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v) 1804 return 1805 } 1806 1807 // Returns the unmodified JSON received from the API 1808 func (u BetaManagedAgentsEditToolConfigPermissionPolicyUnion) RawJSON() string { return u.JSON.raw } 1809 1810 func (r *BetaManagedAgentsEditToolConfigPermissionPolicyUnion) UnmarshalJSON(data []byte) error { 1811 return apijson.UnmarshalRoot(data, r) 1812 } 1813 1814 // Configuration override for the edit tool. 1815 // 1816 // The property Name is required. 1817 type BetaManagedAgentsEditToolConfigParams struct { 1818 // Whether this tool is enabled and available to Claude. Overrides the 1819 // default_config setting. 1820 Enabled param.Opt[bool] `json:"enabled,omitzero"` 1821 // Permission policy for tool execution. 1822 PermissionPolicy BetaManagedAgentsEditToolConfigParamsPermissionPolicyUnion `json:"permission_policy,omitzero"` 1823 // Any of "edit". 1824 Type BetaManagedAgentsEditToolConfigParamsType `json:"type,omitzero"` 1825 // Must be "edit". 1826 // 1827 // This field can be elided, and will marshal its zero value as "edit". 1828 Name constant.Edit `json:"name" default:"edit"` 1829 paramObj 1830 } 1831 1832 func (r BetaManagedAgentsEditToolConfigParams) MarshalJSON() (data []byte, err error) { 1833 type shadow BetaManagedAgentsEditToolConfigParams 1834 return param.MarshalObject(r, (*shadow)(&r)) 1835 } 1836 func (r *BetaManagedAgentsEditToolConfigParams) UnmarshalJSON(data []byte) error { 1837 return apijson.UnmarshalRoot(data, r) 1838 } 1839 1840 // Only one field can be non-zero. 1841 // 1842 // Use [param.IsOmitted] to confirm if a field is set. 1843 type BetaManagedAgentsEditToolConfigParamsPermissionPolicyUnion struct { 1844 OfAlwaysAllow *BetaManagedAgentsAlwaysAllowPolicyParam `json:",omitzero,inline"` 1845 OfAlwaysAsk *BetaManagedAgentsAlwaysAskPolicyParam `json:",omitzero,inline"` 1846 paramUnion 1847 } 1848 1849 func (u BetaManagedAgentsEditToolConfigParamsPermissionPolicyUnion) MarshalJSON() ([]byte, error) { 1850 return param.MarshalUnion(u, u.OfAlwaysAllow, u.OfAlwaysAsk) 1851 } 1852 func (u *BetaManagedAgentsEditToolConfigParamsPermissionPolicyUnion) UnmarshalJSON(data []byte) error { 1853 return apijson.UnmarshalRoot(data, u) 1854 } 1855 1856 func (u *BetaManagedAgentsEditToolConfigParamsPermissionPolicyUnion) asAny() any { 1857 if !param.IsOmitted(u.OfAlwaysAllow) { 1858 return u.OfAlwaysAllow 1859 } else if !param.IsOmitted(u.OfAlwaysAsk) { 1860 return u.OfAlwaysAsk 1861 } 1862 return nil 1863 } 1864 1865 // Returns a pointer to the underlying variant's property, if present. 1866 func (u BetaManagedAgentsEditToolConfigParamsPermissionPolicyUnion) GetType() *string { 1867 if vt := u.OfAlwaysAllow; vt != nil { 1868 return (*string)(&vt.Type) 1869 } else if vt := u.OfAlwaysAsk; vt != nil { 1870 return (*string)(&vt.Type) 1871 } 1872 return nil 1873 } 1874 1875 func init() { 1876 apijson.RegisterUnion[BetaManagedAgentsEditToolConfigParamsPermissionPolicyUnion]( 1877 "type", 1878 apijson.Discriminator[BetaManagedAgentsAlwaysAllowPolicyParam]("always_allow"), 1879 apijson.Discriminator[BetaManagedAgentsAlwaysAskPolicyParam]("always_ask"), 1880 ) 1881 } 1882 1883 type BetaManagedAgentsEditToolConfigParamsType string 1884 1885 const ( 1886 BetaManagedAgentsEditToolConfigParamsTypeEdit BetaManagedAgentsEditToolConfigParamsType = "edit" 1887 ) 1888 1889 // High effort. Favors reasoning depth. 1890 type BetaManagedAgentsEffortHigh struct { 1891 // Any of "high". 1892 Type BetaManagedAgentsEffortHighType `json:"type" api:"required"` 1893 // JSON contains metadata for fields, check presence with [respjson.Field.Valid]. 1894 JSON struct { 1895 Type respjson.Field 1896 ExtraFields map[string]respjson.Field 1897 raw string 1898 } `json:"-"` 1899 } 1900 1901 // Returns the unmodified JSON received from the API 1902 func (r BetaManagedAgentsEffortHigh) RawJSON() string { return r.JSON.raw } 1903 func (r *BetaManagedAgentsEffortHigh) UnmarshalJSON(data []byte) error { 1904 return apijson.UnmarshalRoot(data, r) 1905 } 1906 1907 // ToParam converts this BetaManagedAgentsEffortHigh to a 1908 // BetaManagedAgentsEffortHighParam. 1909 // 1910 // Warning: the fields of the param type will not be present. ToParam should only 1911 // be used at the last possible moment before sending a request. Test for this with 1912 // BetaManagedAgentsEffortHighParam.Overrides() 1913 func (r BetaManagedAgentsEffortHigh) ToParam() BetaManagedAgentsEffortHighParam { 1914 return param.Override[BetaManagedAgentsEffortHighParam](json.RawMessage(r.RawJSON())) 1915 } 1916 1917 type BetaManagedAgentsEffortHighType string 1918 1919 const ( 1920 BetaManagedAgentsEffortHighTypeHigh BetaManagedAgentsEffortHighType = "high" 1921 ) 1922 1923 // High effort. Favors reasoning depth. 1924 // 1925 // The property Type is required. 1926 type BetaManagedAgentsEffortHighParam struct { 1927 // Any of "high". 1928 Type BetaManagedAgentsEffortHighType `json:"type,omitzero" api:"required"` 1929 paramObj 1930 } 1931 1932 func (r BetaManagedAgentsEffortHighParam) MarshalJSON() (data []byte, err error) { 1933 type shadow BetaManagedAgentsEffortHighParam 1934 return param.MarshalObject(r, (*shadow)(&r)) 1935 } 1936 func (r *BetaManagedAgentsEffortHighParam) UnmarshalJSON(data []byte) error { 1937 return apijson.UnmarshalRoot(data, r) 1938 } 1939 1940 // Low effort. Favors latency over reasoning depth. 1941 type BetaManagedAgentsEffortLow struct { 1942 // Any of "low". 1943 Type BetaManagedAgentsEffortLowType `json:"type" api:"required"` 1944 // JSON contains metadata for fields, check presence with [respjson.Field.Valid]. 1945 JSON struct { 1946 Type respjson.Field 1947 ExtraFields map[string]respjson.Field 1948 raw string 1949 } `json:"-"` 1950 } 1951 1952 // Returns the unmodified JSON received from the API 1953 func (r BetaManagedAgentsEffortLow) RawJSON() string { return r.JSON.raw } 1954 func (r *BetaManagedAgentsEffortLow) UnmarshalJSON(data []byte) error { 1955 return apijson.UnmarshalRoot(data, r) 1956 } 1957 1958 // ToParam converts this BetaManagedAgentsEffortLow to a 1959 // BetaManagedAgentsEffortLowParam. 1960 // 1961 // Warning: the fields of the param type will not be present. ToParam should only 1962 // be used at the last possible moment before sending a request. Test for this with 1963 // BetaManagedAgentsEffortLowParam.Overrides() 1964 func (r BetaManagedAgentsEffortLow) ToParam() BetaManagedAgentsEffortLowParam { 1965 return param.Override[BetaManagedAgentsEffortLowParam](json.RawMessage(r.RawJSON())) 1966 } 1967 1968 type BetaManagedAgentsEffortLowType string 1969 1970 const ( 1971 BetaManagedAgentsEffortLowTypeLow BetaManagedAgentsEffortLowType = "low" 1972 ) 1973 1974 // Low effort. Favors latency over reasoning depth. 1975 // 1976 // The property Type is required. 1977 type BetaManagedAgentsEffortLowParam struct { 1978 // Any of "low". 1979 Type BetaManagedAgentsEffortLowType `json:"type,omitzero" api:"required"` 1980 paramObj 1981 } 1982 1983 func (r BetaManagedAgentsEffortLowParam) MarshalJSON() (data []byte, err error) { 1984 type shadow BetaManagedAgentsEffortLowParam 1985 return param.MarshalObject(r, (*shadow)(&r)) 1986 } 1987 func (r *BetaManagedAgentsEffortLowParam) UnmarshalJSON(data []byte) error { 1988 return apijson.UnmarshalRoot(data, r) 1989 } 1990 1991 // Maximum effort. Favors reasoning depth over latency. 1992 type BetaManagedAgentsEffortMax struct { 1993 // Any of "max". 1994 Type BetaManagedAgentsEffortMaxType `json:"type" api:"required"` 1995 // JSON contains metadata for fields, check presence with [respjson.Field.Valid]. 1996 JSON struct { 1997 Type respjson.Field 1998 ExtraFields map[string]respjson.Field 1999 raw string 2000 } `json:"-"` 2001 } 2002 2003 // Returns the unmodified JSON received from the API 2004 func (r BetaManagedAgentsEffortMax) RawJSON() string { return r.JSON.raw } 2005 func (r *BetaManagedAgentsEffortMax) UnmarshalJSON(data []byte) error { 2006 return apijson.UnmarshalRoot(data, r) 2007 } 2008 2009 // ToParam converts this BetaManagedAgentsEffortMax to a 2010 // BetaManagedAgentsEffortMaxParam. 2011 // 2012 // Warning: the fields of the param type will not be present. ToParam should only 2013 // be used at the last possible moment before sending a request. Test for this with 2014 // BetaManagedAgentsEffortMaxParam.Overrides() 2015 func (r BetaManagedAgentsEffortMax) ToParam() BetaManagedAgentsEffortMaxParam { 2016 return param.Override[BetaManagedAgentsEffortMaxParam](json.RawMessage(r.RawJSON())) 2017 } 2018 2019 type BetaManagedAgentsEffortMaxType string 2020 2021 const ( 2022 BetaManagedAgentsEffortMaxTypeMax BetaManagedAgentsEffortMaxType = "max" 2023 ) 2024 2025 // Maximum effort. Favors reasoning depth over latency. 2026 // 2027 // The property Type is required. 2028 type BetaManagedAgentsEffortMaxParam struct { 2029 // Any of "max". 2030 Type BetaManagedAgentsEffortMaxType `json:"type,omitzero" api:"required"` 2031 paramObj 2032 } 2033 2034 func (r BetaManagedAgentsEffortMaxParam) MarshalJSON() (data []byte, err error) { 2035 type shadow BetaManagedAgentsEffortMaxParam 2036 return param.MarshalObject(r, (*shadow)(&r)) 2037 } 2038 func (r *BetaManagedAgentsEffortMaxParam) UnmarshalJSON(data []byte) error { 2039 return apijson.UnmarshalRoot(data, r) 2040 } 2041 2042 // Medium effort. Balances latency and reasoning depth. 2043 type BetaManagedAgentsEffortMedium struct { 2044 // Any of "medium". 2045 Type BetaManagedAgentsEffortMediumType `json:"type" api:"required"` 2046 // JSON contains metadata for fields, check presence with [respjson.Field.Valid]. 2047 JSON struct { 2048 Type respjson.Field 2049 ExtraFields map[string]respjson.Field 2050 raw string 2051 } `json:"-"` 2052 } 2053 2054 // Returns the unmodified JSON received from the API 2055 func (r BetaManagedAgentsEffortMedium) RawJSON() string { return r.JSON.raw } 2056 func (r *BetaManagedAgentsEffortMedium) UnmarshalJSON(data []byte) error { 2057 return apijson.UnmarshalRoot(data, r) 2058 } 2059 2060 // ToParam converts this BetaManagedAgentsEffortMedium to a 2061 // BetaManagedAgentsEffortMediumParam. 2062 // 2063 // Warning: the fields of the param type will not be present. ToParam should only 2064 // be used at the last possible moment before sending a request. Test for this with 2065 // BetaManagedAgentsEffortMediumParam.Overrides() 2066 func (r BetaManagedAgentsEffortMedium) ToParam() BetaManagedAgentsEffortMediumParam { 2067 return param.Override[BetaManagedAgentsEffortMediumParam](json.RawMessage(r.RawJSON())) 2068 } 2069 2070 type BetaManagedAgentsEffortMediumType string 2071 2072 const ( 2073 BetaManagedAgentsEffortMediumTypeMedium BetaManagedAgentsEffortMediumType = "medium" 2074 ) 2075 2076 // Medium effort. Balances latency and reasoning depth. 2077 // 2078 // The property Type is required. 2079 type BetaManagedAgentsEffortMediumParam struct { 2080 // Any of "medium". 2081 Type BetaManagedAgentsEffortMediumType `json:"type,omitzero" api:"required"` 2082 paramObj 2083 } 2084 2085 func (r BetaManagedAgentsEffortMediumParam) MarshalJSON() (data []byte, err error) { 2086 type shadow BetaManagedAgentsEffortMediumParam 2087 return param.MarshalObject(r, (*shadow)(&r)) 2088 } 2089 func (r *BetaManagedAgentsEffortMediumParam) UnmarshalJSON(data []byte) error { 2090 return apijson.UnmarshalRoot(data, r) 2091 } 2092 2093 // Extra-high effort. Not all models accept this level. 2094 type BetaManagedAgentsEffortXhigh struct { 2095 // Any of "xhigh". 2096 Type BetaManagedAgentsEffortXhighType `json:"type" api:"required"` 2097 // JSON contains metadata for fields, check presence with [respjson.Field.Valid]. 2098 JSON struct { 2099 Type respjson.Field 2100 ExtraFields map[string]respjson.Field 2101 raw string 2102 } `json:"-"` 2103 } 2104 2105 // Returns the unmodified JSON received from the API 2106 func (r BetaManagedAgentsEffortXhigh) RawJSON() string { return r.JSON.raw } 2107 func (r *BetaManagedAgentsEffortXhigh) UnmarshalJSON(data []byte) error { 2108 return apijson.UnmarshalRoot(data, r) 2109 } 2110 2111 // ToParam converts this BetaManagedAgentsEffortXhigh to a 2112 // BetaManagedAgentsEffortXhighParam. 2113 // 2114 // Warning: the fields of the param type will not be present. ToParam should only 2115 // be used at the last possible moment before sending a request. Test for this with 2116 // BetaManagedAgentsEffortXhighParam.Overrides() 2117 func (r BetaManagedAgentsEffortXhigh) ToParam() BetaManagedAgentsEffortXhighParam { 2118 return param.Override[BetaManagedAgentsEffortXhighParam](json.RawMessage(r.RawJSON())) 2119 } 2120 2121 type BetaManagedAgentsEffortXhighType string 2122 2123 const ( 2124 BetaManagedAgentsEffortXhighTypeXhigh BetaManagedAgentsEffortXhighType = "xhigh" 2125 ) 2126 2127 // Extra-high effort. Not all models accept this level. 2128 // 2129 // The property Type is required. 2130 type BetaManagedAgentsEffortXhighParam struct { 2131 // Any of "xhigh". 2132 Type BetaManagedAgentsEffortXhighType `json:"type,omitzero" api:"required"` 2133 paramObj 2134 } 2135 2136 func (r BetaManagedAgentsEffortXhighParam) MarshalJSON() (data []byte, err error) { 2137 type shadow BetaManagedAgentsEffortXhighParam 2138 return param.MarshalObject(r, (*shadow)(&r)) 2139 } 2140 func (r *BetaManagedAgentsEffortXhighParam) UnmarshalJSON(data []byte) error { 2141 return apijson.UnmarshalRoot(data, r) 2142 } 2143 2144 // Configuration for the glob tool. 2145 type BetaManagedAgentsGlobToolConfig struct { 2146 Enabled bool `json:"enabled" api:"required"` 2147 Name constant.Glob `json:"name" default:"glob"` 2148 // Permission policy for tool execution. 2149 PermissionPolicy BetaManagedAgentsGlobToolConfigPermissionPolicyUnion `json:"permission_policy" api:"required"` 2150 Type constant.Glob `json:"type" default:"glob"` 2151 // JSON contains metadata for fields, check presence with [respjson.Field.Valid]. 2152 JSON struct { 2153 Enabled respjson.Field 2154 Name respjson.Field 2155 PermissionPolicy respjson.Field 2156 Type respjson.Field 2157 ExtraFields map[string]respjson.Field 2158 raw string 2159 } `json:"-"` 2160 } 2161 2162 // Returns the unmodified JSON received from the API 2163 func (r BetaManagedAgentsGlobToolConfig) RawJSON() string { return r.JSON.raw } 2164 func (r *BetaManagedAgentsGlobToolConfig) UnmarshalJSON(data []byte) error { 2165 return apijson.UnmarshalRoot(data, r) 2166 } 2167 2168 // BetaManagedAgentsGlobToolConfigPermissionPolicyUnion contains all possible 2169 // properties and values from [BetaManagedAgentsAlwaysAllowPolicy], 2170 // [BetaManagedAgentsAlwaysAskPolicy]. 2171 // 2172 // Use the [BetaManagedAgentsGlobToolConfigPermissionPolicyUnion.AsAny] method to 2173 // switch on the variant. 2174 // 2175 // Use the methods beginning with 'As' to cast the union to one of its variants. 2176 type BetaManagedAgentsGlobToolConfigPermissionPolicyUnion struct { 2177 // Any of "always_allow", "always_ask". 2178 Type string `json:"type"` 2179 JSON struct { 2180 Type respjson.Field 2181 raw string 2182 } `json:"-"` 2183 } 2184 2185 // anyBetaManagedAgentsGlobToolConfigPermissionPolicy is implemented by each 2186 // variant of [BetaManagedAgentsGlobToolConfigPermissionPolicyUnion] to add type 2187 // safety for the return type of 2188 // [BetaManagedAgentsGlobToolConfigPermissionPolicyUnion.AsAny] 2189 type anyBetaManagedAgentsGlobToolConfigPermissionPolicy interface { 2190 implBetaManagedAgentsGlobToolConfigPermissionPolicyUnion() 2191 } 2192 2193 func (BetaManagedAgentsAlwaysAllowPolicy) implBetaManagedAgentsGlobToolConfigPermissionPolicyUnion() { 2194 } 2195 func (BetaManagedAgentsAlwaysAskPolicy) implBetaManagedAgentsGlobToolConfigPermissionPolicyUnion() {} 2196 2197 // Use the following switch statement to find the correct variant 2198 // 2199 // switch variant := BetaManagedAgentsGlobToolConfigPermissionPolicyUnion.AsAny().(type) { 2200 // case anthropic.BetaManagedAgentsAlwaysAllowPolicy: 2201 // case anthropic.BetaManagedAgentsAlwaysAskPolicy: 2202 // default: 2203 // fmt.Errorf("no variant present") 2204 // } 2205 func (u BetaManagedAgentsGlobToolConfigPermissionPolicyUnion) AsAny() anyBetaManagedAgentsGlobToolConfigPermissionPolicy { 2206 switch u.Type { 2207 case "always_allow": 2208 return u.AsAlwaysAllow() 2209 case "always_ask": 2210 return u.AsAlwaysAsk() 2211 } 2212 return nil 2213 } 2214 2215 func (u BetaManagedAgentsGlobToolConfigPermissionPolicyUnion) AsAlwaysAllow() (v BetaManagedAgentsAlwaysAllowPolicy) { 2216 apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v) 2217 return 2218 } 2219 2220 func (u BetaManagedAgentsGlobToolConfigPermissionPolicyUnion) AsAlwaysAsk() (v BetaManagedAgentsAlwaysAskPolicy) { 2221 apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v) 2222 return 2223 } 2224 2225 // Returns the unmodified JSON received from the API 2226 func (u BetaManagedAgentsGlobToolConfigPermissionPolicyUnion) RawJSON() string { return u.JSON.raw } 2227 2228 func (r *BetaManagedAgentsGlobToolConfigPermissionPolicyUnion) UnmarshalJSON(data []byte) error { 2229 return apijson.UnmarshalRoot(data, r) 2230 } 2231 2232 // Configuration override for the glob tool. 2233 // 2234 // The property Name is required. 2235 type BetaManagedAgentsGlobToolConfigParams struct { 2236 // Whether this tool is enabled and available to Claude. Overrides the 2237 // default_config setting. 2238 Enabled param.Opt[bool] `json:"enabled,omitzero"` 2239 // Permission policy for tool execution. 2240 PermissionPolicy BetaManagedAgentsGlobToolConfigParamsPermissionPolicyUnion `json:"permission_policy,omitzero"` 2241 // Any of "glob". 2242 Type BetaManagedAgentsGlobToolConfigParamsType `json:"type,omitzero"` 2243 // Must be "glob". 2244 // 2245 // This field can be elided, and will marshal its zero value as "glob". 2246 Name constant.Glob `json:"name" default:"glob"` 2247 paramObj 2248 } 2249 2250 func (r BetaManagedAgentsGlobToolConfigParams) MarshalJSON() (data []byte, err error) { 2251 type shadow BetaManagedAgentsGlobToolConfigParams 2252 return param.MarshalObject(r, (*shadow)(&r)) 2253 } 2254 func (r *BetaManagedAgentsGlobToolConfigParams) UnmarshalJSON(data []byte) error { 2255 return apijson.UnmarshalRoot(data, r) 2256 } 2257 2258 // Only one field can be non-zero. 2259 // 2260 // Use [param.IsOmitted] to confirm if a field is set. 2261 type BetaManagedAgentsGlobToolConfigParamsPermissionPolicyUnion struct { 2262 OfAlwaysAllow *BetaManagedAgentsAlwaysAllowPolicyParam `json:",omitzero,inline"` 2263 OfAlwaysAsk *BetaManagedAgentsAlwaysAskPolicyParam `json:",omitzero,inline"` 2264 paramUnion 2265 } 2266 2267 func (u BetaManagedAgentsGlobToolConfigParamsPermissionPolicyUnion) MarshalJSON() ([]byte, error) { 2268 return param.MarshalUnion(u, u.OfAlwaysAllow, u.OfAlwaysAsk) 2269 } 2270 func (u *BetaManagedAgentsGlobToolConfigParamsPermissionPolicyUnion) UnmarshalJSON(data []byte) error { 2271 return apijson.UnmarshalRoot(data, u) 2272 } 2273 2274 func (u *BetaManagedAgentsGlobToolConfigParamsPermissionPolicyUnion) asAny() any { 2275 if !param.IsOmitted(u.OfAlwaysAllow) { 2276 return u.OfAlwaysAllow 2277 } else if !param.IsOmitted(u.OfAlwaysAsk) { 2278 return u.OfAlwaysAsk 2279 } 2280 return nil 2281 } 2282 2283 // Returns a pointer to the underlying variant's property, if present. 2284 func (u BetaManagedAgentsGlobToolConfigParamsPermissionPolicyUnion) GetType() *string { 2285 if vt := u.OfAlwaysAllow; vt != nil { 2286 return (*string)(&vt.Type) 2287 } else if vt := u.OfAlwaysAsk; vt != nil { 2288 return (*string)(&vt.Type) 2289 } 2290 return nil 2291 } 2292 2293 func init() { 2294 apijson.RegisterUnion[BetaManagedAgentsGlobToolConfigParamsPermissionPolicyUnion]( 2295 "type", 2296 apijson.Discriminator[BetaManagedAgentsAlwaysAllowPolicyParam]("always_allow"), 2297 apijson.Discriminator[BetaManagedAgentsAlwaysAskPolicyParam]("always_ask"), 2298 ) 2299 } 2300 2301 type BetaManagedAgentsGlobToolConfigParamsType string 2302 2303 const ( 2304 BetaManagedAgentsGlobToolConfigParamsTypeGlob BetaManagedAgentsGlobToolConfigParamsType = "glob" 2305 ) 2306 2307 // Configuration for the grep tool. 2308 type BetaManagedAgentsGrepToolConfig struct { 2309 Enabled bool `json:"enabled" api:"required"` 2310 Name constant.Grep `json:"name" default:"grep"` 2311 // Permission policy for tool execution. 2312 PermissionPolicy BetaManagedAgentsGrepToolConfigPermissionPolicyUnion `json:"permission_policy" api:"required"` 2313 Type constant.Grep `json:"type" default:"grep"` 2314 // JSON contains metadata for fields, check presence with [respjson.Field.Valid]. 2315 JSON struct { 2316 Enabled respjson.Field 2317 Name respjson.Field 2318 PermissionPolicy respjson.Field 2319 Type respjson.Field 2320 ExtraFields map[string]respjson.Field 2321 raw string 2322 } `json:"-"` 2323 } 2324 2325 // Returns the unmodified JSON received from the API 2326 func (r BetaManagedAgentsGrepToolConfig) RawJSON() string { return r.JSON.raw } 2327 func (r *BetaManagedAgentsGrepToolConfig) UnmarshalJSON(data []byte) error { 2328 return apijson.UnmarshalRoot(data, r) 2329 } 2330 2331 // BetaManagedAgentsGrepToolConfigPermissionPolicyUnion contains all possible 2332 // properties and values from [BetaManagedAgentsAlwaysAllowPolicy], 2333 // [BetaManagedAgentsAlwaysAskPolicy]. 2334 // 2335 // Use the [BetaManagedAgentsGrepToolConfigPermissionPolicyUnion.AsAny] method to 2336 // switch on the variant. 2337 // 2338 // Use the methods beginning with 'As' to cast the union to one of its variants. 2339 type BetaManagedAgentsGrepToolConfigPermissionPolicyUnion struct { 2340 // Any of "always_allow", "always_ask". 2341 Type string `json:"type"` 2342 JSON struct { 2343 Type respjson.Field 2344 raw string 2345 } `json:"-"` 2346 } 2347 2348 // anyBetaManagedAgentsGrepToolConfigPermissionPolicy is implemented by each 2349 // variant of [BetaManagedAgentsGrepToolConfigPermissionPolicyUnion] to add type 2350 // safety for the return type of 2351 // [BetaManagedAgentsGrepToolConfigPermissionPolicyUnion.AsAny] 2352 type anyBetaManagedAgentsGrepToolConfigPermissionPolicy interface { 2353 implBetaManagedAgentsGrepToolConfigPermissionPolicyUnion() 2354 } 2355 2356 func (BetaManagedAgentsAlwaysAllowPolicy) implBetaManagedAgentsGrepToolConfigPermissionPolicyUnion() { 2357 } 2358 func (BetaManagedAgentsAlwaysAskPolicy) implBetaManagedAgentsGrepToolConfigPermissionPolicyUnion() {} 2359 2360 // Use the following switch statement to find the correct variant 2361 // 2362 // switch variant := BetaManagedAgentsGrepToolConfigPermissionPolicyUnion.AsAny().(type) { 2363 // case anthropic.BetaManagedAgentsAlwaysAllowPolicy: 2364 // case anthropic.BetaManagedAgentsAlwaysAskPolicy: 2365 // default: 2366 // fmt.Errorf("no variant present") 2367 // } 2368 func (u BetaManagedAgentsGrepToolConfigPermissionPolicyUnion) AsAny() anyBetaManagedAgentsGrepToolConfigPermissionPolicy { 2369 switch u.Type { 2370 case "always_allow": 2371 return u.AsAlwaysAllow() 2372 case "always_ask": 2373 return u.AsAlwaysAsk() 2374 } 2375 return nil 2376 } 2377 2378 func (u BetaManagedAgentsGrepToolConfigPermissionPolicyUnion) AsAlwaysAllow() (v BetaManagedAgentsAlwaysAllowPolicy) { 2379 apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v) 2380 return 2381 } 2382 2383 func (u BetaManagedAgentsGrepToolConfigPermissionPolicyUnion) AsAlwaysAsk() (v BetaManagedAgentsAlwaysAskPolicy) { 2384 apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v) 2385 return 2386 } 2387 2388 // Returns the unmodified JSON received from the API 2389 func (u BetaManagedAgentsGrepToolConfigPermissionPolicyUnion) RawJSON() string { return u.JSON.raw } 2390 2391 func (r *BetaManagedAgentsGrepToolConfigPermissionPolicyUnion) UnmarshalJSON(data []byte) error { 2392 return apijson.UnmarshalRoot(data, r) 2393 } 2394 2395 // Configuration override for the grep tool. 2396 // 2397 // The property Name is required. 2398 type BetaManagedAgentsGrepToolConfigParams struct { 2399 // Whether this tool is enabled and available to Claude. Overrides the 2400 // default_config setting. 2401 Enabled param.Opt[bool] `json:"enabled,omitzero"` 2402 // Permission policy for tool execution. 2403 PermissionPolicy BetaManagedAgentsGrepToolConfigParamsPermissionPolicyUnion `json:"permission_policy,omitzero"` 2404 // Any of "grep". 2405 Type BetaManagedAgentsGrepToolConfigParamsType `json:"type,omitzero"` 2406 // Must be "grep". 2407 // 2408 // This field can be elided, and will marshal its zero value as "grep". 2409 Name constant.Grep `json:"name" default:"grep"` 2410 paramObj 2411 } 2412 2413 func (r BetaManagedAgentsGrepToolConfigParams) MarshalJSON() (data []byte, err error) { 2414 type shadow BetaManagedAgentsGrepToolConfigParams 2415 return param.MarshalObject(r, (*shadow)(&r)) 2416 } 2417 func (r *BetaManagedAgentsGrepToolConfigParams) UnmarshalJSON(data []byte) error { 2418 return apijson.UnmarshalRoot(data, r) 2419 } 2420 2421 // Only one field can be non-zero. 2422 // 2423 // Use [param.IsOmitted] to confirm if a field is set. 2424 type BetaManagedAgentsGrepToolConfigParamsPermissionPolicyUnion struct { 2425 OfAlwaysAllow *BetaManagedAgentsAlwaysAllowPolicyParam `json:",omitzero,inline"` 2426 OfAlwaysAsk *BetaManagedAgentsAlwaysAskPolicyParam `json:",omitzero,inline"` 2427 paramUnion 2428 } 2429 2430 func (u BetaManagedAgentsGrepToolConfigParamsPermissionPolicyUnion) MarshalJSON() ([]byte, error) { 2431 return param.MarshalUnion(u, u.OfAlwaysAllow, u.OfAlwaysAsk) 2432 } 2433 func (u *BetaManagedAgentsGrepToolConfigParamsPermissionPolicyUnion) UnmarshalJSON(data []byte) error { 2434 return apijson.UnmarshalRoot(data, u) 2435 } 2436 2437 func (u *BetaManagedAgentsGrepToolConfigParamsPermissionPolicyUnion) asAny() any { 2438 if !param.IsOmitted(u.OfAlwaysAllow) { 2439 return u.OfAlwaysAllow 2440 } else if !param.IsOmitted(u.OfAlwaysAsk) { 2441 return u.OfAlwaysAsk 2442 } 2443 return nil 2444 } 2445 2446 // Returns a pointer to the underlying variant's property, if present. 2447 func (u BetaManagedAgentsGrepToolConfigParamsPermissionPolicyUnion) GetType() *string { 2448 if vt := u.OfAlwaysAllow; vt != nil { 2449 return (*string)(&vt.Type) 2450 } else if vt := u.OfAlwaysAsk; vt != nil { 2451 return (*string)(&vt.Type) 2452 } 2453 return nil 2454 } 2455 2456 func init() { 2457 apijson.RegisterUnion[BetaManagedAgentsGrepToolConfigParamsPermissionPolicyUnion]( 2458 "type", 2459 apijson.Discriminator[BetaManagedAgentsAlwaysAllowPolicyParam]("always_allow"), 2460 apijson.Discriminator[BetaManagedAgentsAlwaysAskPolicyParam]("always_ask"), 2461 ) 2462 } 2463 2464 type BetaManagedAgentsGrepToolConfigParamsType string 2465 2466 const ( 2467 BetaManagedAgentsGrepToolConfigParamsTypeGrep BetaManagedAgentsGrepToolConfigParamsType = "grep" 2468 ) 2469 2470 // URL-based MCP server connection as returned in API responses. 2471 type BetaManagedAgentsMCPServerURLDefinition struct { 2472 Name string `json:"name" api:"required"` 2473 // Any of "url". 2474 Type BetaManagedAgentsMCPServerURLDefinitionType `json:"type" api:"required"` 2475 URL string `json:"url" api:"required"` 2476 // JSON contains metadata for fields, check presence with [respjson.Field.Valid]. 2477 JSON struct { 2478 Name respjson.Field 2479 Type respjson.Field 2480 URL respjson.Field 2481 ExtraFields map[string]respjson.Field 2482 raw string 2483 } `json:"-"` 2484 } 2485 2486 // Returns the unmodified JSON received from the API 2487 func (r BetaManagedAgentsMCPServerURLDefinition) RawJSON() string { return r.JSON.raw } 2488 func (r *BetaManagedAgentsMCPServerURLDefinition) UnmarshalJSON(data []byte) error { 2489 return apijson.UnmarshalRoot(data, r) 2490 } 2491 2492 type BetaManagedAgentsMCPServerURLDefinitionType string 2493 2494 const ( 2495 BetaManagedAgentsMCPServerURLDefinitionTypeURL BetaManagedAgentsMCPServerURLDefinitionType = "url" 2496 ) 2497 2498 // Resolved configuration for a specific MCP tool. 2499 type BetaManagedAgentsMCPToolConfig struct { 2500 Enabled bool `json:"enabled" api:"required"` 2501 Name string `json:"name" api:"required"` 2502 // Permission policy for tool execution. 2503 PermissionPolicy BetaManagedAgentsMCPToolConfigPermissionPolicyUnion `json:"permission_policy" api:"required"` 2504 // JSON contains metadata for fields, check presence with [respjson.Field.Valid]. 2505 JSON struct { 2506 Enabled respjson.Field 2507 Name respjson.Field 2508 PermissionPolicy respjson.Field 2509 ExtraFields map[string]respjson.Field 2510 raw string 2511 } `json:"-"` 2512 } 2513 2514 // Returns the unmodified JSON received from the API 2515 func (r BetaManagedAgentsMCPToolConfig) RawJSON() string { return r.JSON.raw } 2516 func (r *BetaManagedAgentsMCPToolConfig) UnmarshalJSON(data []byte) error { 2517 return apijson.UnmarshalRoot(data, r) 2518 } 2519 2520 // BetaManagedAgentsMCPToolConfigPermissionPolicyUnion contains all possible 2521 // properties and values from [BetaManagedAgentsAlwaysAllowPolicy], 2522 // [BetaManagedAgentsAlwaysAskPolicy]. 2523 // 2524 // Use the [BetaManagedAgentsMCPToolConfigPermissionPolicyUnion.AsAny] method to 2525 // switch on the variant. 2526 // 2527 // Use the methods beginning with 'As' to cast the union to one of its variants. 2528 type BetaManagedAgentsMCPToolConfigPermissionPolicyUnion struct { 2529 // Any of "always_allow", "always_ask". 2530 Type string `json:"type"` 2531 JSON struct { 2532 Type respjson.Field 2533 raw string 2534 } `json:"-"` 2535 } 2536 2537 // anyBetaManagedAgentsMCPToolConfigPermissionPolicy is implemented by each variant 2538 // of [BetaManagedAgentsMCPToolConfigPermissionPolicyUnion] to add type safety for 2539 // the return type of [BetaManagedAgentsMCPToolConfigPermissionPolicyUnion.AsAny] 2540 type anyBetaManagedAgentsMCPToolConfigPermissionPolicy interface { 2541 implBetaManagedAgentsMCPToolConfigPermissionPolicyUnion() 2542 } 2543 2544 func (BetaManagedAgentsAlwaysAllowPolicy) implBetaManagedAgentsMCPToolConfigPermissionPolicyUnion() {} 2545 func (BetaManagedAgentsAlwaysAskPolicy) implBetaManagedAgentsMCPToolConfigPermissionPolicyUnion() {} 2546 2547 // Use the following switch statement to find the correct variant 2548 // 2549 // switch variant := BetaManagedAgentsMCPToolConfigPermissionPolicyUnion.AsAny().(type) { 2550 // case anthropic.BetaManagedAgentsAlwaysAllowPolicy: 2551 // case anthropic.BetaManagedAgentsAlwaysAskPolicy: 2552 // default: 2553 // fmt.Errorf("no variant present") 2554 // } 2555 func (u BetaManagedAgentsMCPToolConfigPermissionPolicyUnion) AsAny() anyBetaManagedAgentsMCPToolConfigPermissionPolicy { 2556 switch u.Type { 2557 case "always_allow": 2558 return u.AsAlwaysAllow() 2559 case "always_ask": 2560 return u.AsAlwaysAsk() 2561 } 2562 return nil 2563 } 2564 2565 func (u BetaManagedAgentsMCPToolConfigPermissionPolicyUnion) AsAlwaysAllow() (v BetaManagedAgentsAlwaysAllowPolicy) { 2566 apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v) 2567 return 2568 } 2569 2570 func (u BetaManagedAgentsMCPToolConfigPermissionPolicyUnion) AsAlwaysAsk() (v BetaManagedAgentsAlwaysAskPolicy) { 2571 apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v) 2572 return 2573 } 2574 2575 // Returns the unmodified JSON received from the API 2576 func (u BetaManagedAgentsMCPToolConfigPermissionPolicyUnion) RawJSON() string { return u.JSON.raw } 2577 2578 func (r *BetaManagedAgentsMCPToolConfigPermissionPolicyUnion) UnmarshalJSON(data []byte) error { 2579 return apijson.UnmarshalRoot(data, r) 2580 } 2581 2582 // Configuration override for a specific MCP tool. 2583 // 2584 // The property Name is required. 2585 type BetaManagedAgentsMCPToolConfigParams struct { 2586 // Name of the MCP tool to configure. 1-128 characters. 2587 Name string `json:"name" api:"required"` 2588 // Whether this tool is enabled. Overrides the `default_config` setting. 2589 Enabled param.Opt[bool] `json:"enabled,omitzero"` 2590 // Permission policy for tool execution. 2591 PermissionPolicy BetaManagedAgentsMCPToolConfigParamsPermissionPolicyUnion `json:"permission_policy,omitzero"` 2592 paramObj 2593 } 2594 2595 func (r BetaManagedAgentsMCPToolConfigParams) MarshalJSON() (data []byte, err error) { 2596 type shadow BetaManagedAgentsMCPToolConfigParams 2597 return param.MarshalObject(r, (*shadow)(&r)) 2598 } 2599 func (r *BetaManagedAgentsMCPToolConfigParams) UnmarshalJSON(data []byte) error { 2600 return apijson.UnmarshalRoot(data, r) 2601 } 2602 2603 // Only one field can be non-zero. 2604 // 2605 // Use [param.IsOmitted] to confirm if a field is set. 2606 type BetaManagedAgentsMCPToolConfigParamsPermissionPolicyUnion struct { 2607 OfAlwaysAllow *BetaManagedAgentsAlwaysAllowPolicyParam `json:",omitzero,inline"` 2608 OfAlwaysAsk *BetaManagedAgentsAlwaysAskPolicyParam `json:",omitzero,inline"` 2609 paramUnion 2610 } 2611 2612 func (u BetaManagedAgentsMCPToolConfigParamsPermissionPolicyUnion) MarshalJSON() ([]byte, error) { 2613 return param.MarshalUnion(u, u.OfAlwaysAllow, u.OfAlwaysAsk) 2614 } 2615 func (u *BetaManagedAgentsMCPToolConfigParamsPermissionPolicyUnion) UnmarshalJSON(data []byte) error { 2616 return apijson.UnmarshalRoot(data, u) 2617 } 2618 2619 func (u *BetaManagedAgentsMCPToolConfigParamsPermissionPolicyUnion) asAny() any { 2620 if !param.IsOmitted(u.OfAlwaysAllow) { 2621 return u.OfAlwaysAllow 2622 } else if !param.IsOmitted(u.OfAlwaysAsk) { 2623 return u.OfAlwaysAsk 2624 } 2625 return nil 2626 } 2627 2628 // Returns a pointer to the underlying variant's property, if present. 2629 func (u BetaManagedAgentsMCPToolConfigParamsPermissionPolicyUnion) GetType() *string { 2630 if vt := u.OfAlwaysAllow; vt != nil { 2631 return (*string)(&vt.Type) 2632 } else if vt := u.OfAlwaysAsk; vt != nil { 2633 return (*string)(&vt.Type) 2634 } 2635 return nil 2636 } 2637 2638 func init() { 2639 apijson.RegisterUnion[BetaManagedAgentsMCPToolConfigParamsPermissionPolicyUnion]( 2640 "type", 2641 apijson.Discriminator[BetaManagedAgentsAlwaysAllowPolicyParam]("always_allow"), 2642 apijson.Discriminator[BetaManagedAgentsAlwaysAskPolicyParam]("always_ask"), 2643 ) 2644 } 2645 2646 type BetaManagedAgentsMCPToolset struct { 2647 Configs []BetaManagedAgentsMCPToolConfig `json:"configs" api:"required"` 2648 // Resolved default configuration for all tools from an MCP server. 2649 DefaultConfig BetaManagedAgentsMCPToolsetDefaultConfig `json:"default_config" api:"required"` 2650 MCPServerName string `json:"mcp_server_name" api:"required"` 2651 // Any of "mcp_toolset". 2652 Type BetaManagedAgentsMCPToolsetType `json:"type" api:"required"` 2653 // JSON contains metadata for fields, check presence with [respjson.Field.Valid]. 2654 JSON struct { 2655 Configs respjson.Field 2656 DefaultConfig respjson.Field 2657 MCPServerName respjson.Field 2658 Type respjson.Field 2659 ExtraFields map[string]respjson.Field 2660 raw string 2661 } `json:"-"` 2662 } 2663 2664 // Returns the unmodified JSON received from the API 2665 func (r BetaManagedAgentsMCPToolset) RawJSON() string { return r.JSON.raw } 2666 func (r *BetaManagedAgentsMCPToolset) UnmarshalJSON(data []byte) error { 2667 return apijson.UnmarshalRoot(data, r) 2668 } 2669 2670 type BetaManagedAgentsMCPToolsetType string 2671 2672 const ( 2673 BetaManagedAgentsMCPToolsetTypeMCPToolset BetaManagedAgentsMCPToolsetType = "mcp_toolset" 2674 ) 2675 2676 // Resolved default configuration for all tools from an MCP server. 2677 type BetaManagedAgentsMCPToolsetDefaultConfig struct { 2678 Enabled bool `json:"enabled" api:"required"` 2679 // Permission policy for tool execution. 2680 PermissionPolicy BetaManagedAgentsMCPToolsetDefaultConfigPermissionPolicyUnion `json:"permission_policy" api:"required"` 2681 // JSON contains metadata for fields, check presence with [respjson.Field.Valid]. 2682 JSON struct { 2683 Enabled respjson.Field 2684 PermissionPolicy respjson.Field 2685 ExtraFields map[string]respjson.Field 2686 raw string 2687 } `json:"-"` 2688 } 2689 2690 // Returns the unmodified JSON received from the API 2691 func (r BetaManagedAgentsMCPToolsetDefaultConfig) RawJSON() string { return r.JSON.raw } 2692 func (r *BetaManagedAgentsMCPToolsetDefaultConfig) UnmarshalJSON(data []byte) error { 2693 return apijson.UnmarshalRoot(data, r) 2694 } 2695 2696 // BetaManagedAgentsMCPToolsetDefaultConfigPermissionPolicyUnion contains all 2697 // possible properties and values from [BetaManagedAgentsAlwaysAllowPolicy], 2698 // [BetaManagedAgentsAlwaysAskPolicy]. 2699 // 2700 // Use the [BetaManagedAgentsMCPToolsetDefaultConfigPermissionPolicyUnion.AsAny] 2701 // method to switch on the variant. 2702 // 2703 // Use the methods beginning with 'As' to cast the union to one of its variants. 2704 type BetaManagedAgentsMCPToolsetDefaultConfigPermissionPolicyUnion struct { 2705 // Any of "always_allow", "always_ask". 2706 Type string `json:"type"` 2707 JSON struct { 2708 Type respjson.Field 2709 raw string 2710 } `json:"-"` 2711 } 2712 2713 // anyBetaManagedAgentsMCPToolsetDefaultConfigPermissionPolicy is implemented by 2714 // each variant of [BetaManagedAgentsMCPToolsetDefaultConfigPermissionPolicyUnion] 2715 // to add type safety for the return type of 2716 // [BetaManagedAgentsMCPToolsetDefaultConfigPermissionPolicyUnion.AsAny] 2717 type anyBetaManagedAgentsMCPToolsetDefaultConfigPermissionPolicy interface { 2718 implBetaManagedAgentsMCPToolsetDefaultConfigPermissionPolicyUnion() 2719 } 2720 2721 func (BetaManagedAgentsAlwaysAllowPolicy) implBetaManagedAgentsMCPToolsetDefaultConfigPermissionPolicyUnion() { 2722 } 2723 func (BetaManagedAgentsAlwaysAskPolicy) implBetaManagedAgentsMCPToolsetDefaultConfigPermissionPolicyUnion() { 2724 } 2725 2726 // Use the following switch statement to find the correct variant 2727 // 2728 // switch variant := BetaManagedAgentsMCPToolsetDefaultConfigPermissionPolicyUnion.AsAny().(type) { 2729 // case anthropic.BetaManagedAgentsAlwaysAllowPolicy: 2730 // case anthropic.BetaManagedAgentsAlwaysAskPolicy: 2731 // default: 2732 // fmt.Errorf("no variant present") 2733 // } 2734 func (u BetaManagedAgentsMCPToolsetDefaultConfigPermissionPolicyUnion) AsAny() anyBetaManagedAgentsMCPToolsetDefaultConfigPermissionPolicy { 2735 switch u.Type { 2736 case "always_allow": 2737 return u.AsAlwaysAllow() 2738 case "always_ask": 2739 return u.AsAlwaysAsk() 2740 } 2741 return nil 2742 } 2743 2744 func (u BetaManagedAgentsMCPToolsetDefaultConfigPermissionPolicyUnion) AsAlwaysAllow() (v BetaManagedAgentsAlwaysAllowPolicy) { 2745 apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v) 2746 return 2747 } 2748 2749 func (u BetaManagedAgentsMCPToolsetDefaultConfigPermissionPolicyUnion) AsAlwaysAsk() (v BetaManagedAgentsAlwaysAskPolicy) { 2750 apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v) 2751 return 2752 } 2753 2754 // Returns the unmodified JSON received from the API 2755 func (u BetaManagedAgentsMCPToolsetDefaultConfigPermissionPolicyUnion) RawJSON() string { 2756 return u.JSON.raw 2757 } 2758 2759 func (r *BetaManagedAgentsMCPToolsetDefaultConfigPermissionPolicyUnion) UnmarshalJSON(data []byte) error { 2760 return apijson.UnmarshalRoot(data, r) 2761 } 2762 2763 // Default configuration for all tools from an MCP server. 2764 type BetaManagedAgentsMCPToolsetDefaultConfigParams struct { 2765 // Whether tools are enabled by default. Defaults to true if not specified. 2766 Enabled param.Opt[bool] `json:"enabled,omitzero"` 2767 // Permission policy for tool execution. 2768 PermissionPolicy BetaManagedAgentsMCPToolsetDefaultConfigParamsPermissionPolicyUnion `json:"permission_policy,omitzero"` 2769 paramObj 2770 } 2771 2772 func (r BetaManagedAgentsMCPToolsetDefaultConfigParams) MarshalJSON() (data []byte, err error) { 2773 type shadow BetaManagedAgentsMCPToolsetDefaultConfigParams 2774 return param.MarshalObject(r, (*shadow)(&r)) 2775 } 2776 func (r *BetaManagedAgentsMCPToolsetDefaultConfigParams) UnmarshalJSON(data []byte) error { 2777 return apijson.UnmarshalRoot(data, r) 2778 } 2779 2780 // Only one field can be non-zero. 2781 // 2782 // Use [param.IsOmitted] to confirm if a field is set. 2783 type BetaManagedAgentsMCPToolsetDefaultConfigParamsPermissionPolicyUnion struct { 2784 OfAlwaysAllow *BetaManagedAgentsAlwaysAllowPolicyParam `json:",omitzero,inline"` 2785 OfAlwaysAsk *BetaManagedAgentsAlwaysAskPolicyParam `json:",omitzero,inline"` 2786 paramUnion 2787 } 2788 2789 func (u BetaManagedAgentsMCPToolsetDefaultConfigParamsPermissionPolicyUnion) MarshalJSON() ([]byte, error) { 2790 return param.MarshalUnion(u, u.OfAlwaysAllow, u.OfAlwaysAsk) 2791 } 2792 func (u *BetaManagedAgentsMCPToolsetDefaultConfigParamsPermissionPolicyUnion) UnmarshalJSON(data []byte) error { 2793 return apijson.UnmarshalRoot(data, u) 2794 } 2795 2796 func (u *BetaManagedAgentsMCPToolsetDefaultConfigParamsPermissionPolicyUnion) asAny() any { 2797 if !param.IsOmitted(u.OfAlwaysAllow) { 2798 return u.OfAlwaysAllow 2799 } else if !param.IsOmitted(u.OfAlwaysAsk) { 2800 return u.OfAlwaysAsk 2801 } 2802 return nil 2803 } 2804 2805 // Returns a pointer to the underlying variant's property, if present. 2806 func (u BetaManagedAgentsMCPToolsetDefaultConfigParamsPermissionPolicyUnion) GetType() *string { 2807 if vt := u.OfAlwaysAllow; vt != nil { 2808 return (*string)(&vt.Type) 2809 } else if vt := u.OfAlwaysAsk; vt != nil { 2810 return (*string)(&vt.Type) 2811 } 2812 return nil 2813 } 2814 2815 func init() { 2816 apijson.RegisterUnion[BetaManagedAgentsMCPToolsetDefaultConfigParamsPermissionPolicyUnion]( 2817 "type", 2818 apijson.Discriminator[BetaManagedAgentsAlwaysAllowPolicyParam]("always_allow"), 2819 apijson.Discriminator[BetaManagedAgentsAlwaysAskPolicyParam]("always_ask"), 2820 ) 2821 } 2822 2823 // Configuration for tools from an MCP server defined in `mcp_servers`. 2824 // 2825 // The properties MCPServerName, Type are required. 2826 type BetaManagedAgentsMCPToolsetParams struct { 2827 // Name of the MCP server. Must match a server name from the mcp_servers array. 2828 // 1-255 characters. 2829 MCPServerName string `json:"mcp_server_name" api:"required"` 2830 // Any of "mcp_toolset". 2831 Type BetaManagedAgentsMCPToolsetParamsType `json:"type,omitzero" api:"required"` 2832 // Per-tool configuration overrides. 2833 Configs []BetaManagedAgentsMCPToolConfigParams `json:"configs,omitzero"` 2834 // Default configuration for all tools from an MCP server. 2835 DefaultConfig BetaManagedAgentsMCPToolsetDefaultConfigParams `json:"default_config,omitzero"` 2836 paramObj 2837 } 2838 2839 func (r BetaManagedAgentsMCPToolsetParams) MarshalJSON() (data []byte, err error) { 2840 type shadow BetaManagedAgentsMCPToolsetParams 2841 return param.MarshalObject(r, (*shadow)(&r)) 2842 } 2843 func (r *BetaManagedAgentsMCPToolsetParams) UnmarshalJSON(data []byte) error { 2844 return apijson.UnmarshalRoot(data, r) 2845 } 2846 2847 type BetaManagedAgentsMCPToolsetParamsType string 2848 2849 const ( 2850 BetaManagedAgentsMCPToolsetParamsTypeMCPToolset BetaManagedAgentsMCPToolsetParamsType = "mcp_toolset" 2851 ) 2852 2853 // The model that will power your agent. 2854 // 2855 // See [models](https://docs.anthropic.com/en/docs/models-overview) for additional 2856 // details and options. 2857 type BetaManagedAgentsModel = string 2858 2859 const ( 2860 BetaManagedAgentsModelClaudeFable5_1 BetaManagedAgentsModel = "claude-fable-5-1" 2861 BetaManagedAgentsModelClaudeSonnet5 BetaManagedAgentsModel = "claude-sonnet-5" 2862 BetaManagedAgentsModelClaudeFable5 BetaManagedAgentsModel = "claude-fable-5" 2863 BetaManagedAgentsModelClaudeOpus5 BetaManagedAgentsModel = "claude-opus-5" 2864 BetaManagedAgentsModelClaudeOpus4_8 BetaManagedAgentsModel = "claude-opus-4-8" 2865 BetaManagedAgentsModelClaudeOpus4_7 BetaManagedAgentsModel = "claude-opus-4-7" 2866 BetaManagedAgentsModelClaudeOpus4_6 BetaManagedAgentsModel = "claude-opus-4-6" 2867 BetaManagedAgentsModelClaudeSonnet4_6 BetaManagedAgentsModel = "claude-sonnet-4-6" 2868 BetaManagedAgentsModelClaudeHaiku4_5 BetaManagedAgentsModel = "claude-haiku-4-5" 2869 BetaManagedAgentsModelClaudeHaiku4_5_20251001 BetaManagedAgentsModel = "claude-haiku-4-5-20251001" 2870 BetaManagedAgentsModelClaudeOpus4_5 BetaManagedAgentsModel = "claude-opus-4-5" 2871 BetaManagedAgentsModelClaudeOpus4_5_20251101 BetaManagedAgentsModel = "claude-opus-4-5-20251101" 2872 BetaManagedAgentsModelClaudeSonnet4_5 BetaManagedAgentsModel = "claude-sonnet-4-5" 2873 BetaManagedAgentsModelClaudeSonnet4_5_20250929 BetaManagedAgentsModel = "claude-sonnet-4-5-20250929" 2874 ) 2875 2876 // Model identifier and configuration. 2877 type BetaManagedAgentsModelConfig struct { 2878 // The model that will power your agent. 2879 // 2880 // See [models](https://docs.anthropic.com/en/docs/models-overview) for additional 2881 // details and options. 2882 ID BetaManagedAgentsModel `json:"id" api:"required"` 2883 // How hard Claude works on each turn. Sets `output_config.effort` on every 2884 // Messages call the session makes. 2885 Effort BetaManagedAgentsModelConfigEffortUnion `json:"effort"` 2886 // Geographic region for model inference. When unset, requests fall through to the 2887 // workspace's default_inference_geo. 2888 InferenceGeo string `json:"inference_geo"` 2889 // Inference speed mode. `fast` provides significantly faster output token 2890 // generation at premium pricing. Not all models support `fast`; invalid 2891 // combinations are rejected at create time. 2892 // 2893 // Any of "standard", "fast". 2894 Speed BetaManagedAgentsModelConfigSpeed `json:"speed"` 2895 // JSON contains metadata for fields, check presence with [respjson.Field.Valid]. 2896 JSON struct { 2897 ID respjson.Field 2898 Effort respjson.Field 2899 InferenceGeo respjson.Field 2900 Speed respjson.Field 2901 ExtraFields map[string]respjson.Field 2902 raw string 2903 } `json:"-"` 2904 } 2905 2906 // Returns the unmodified JSON received from the API 2907 func (r BetaManagedAgentsModelConfig) RawJSON() string { return r.JSON.raw } 2908 func (r *BetaManagedAgentsModelConfig) UnmarshalJSON(data []byte) error { 2909 return apijson.UnmarshalRoot(data, r) 2910 } 2911 2912 // BetaManagedAgentsModelConfigEffortUnion contains all possible properties and 2913 // values from [BetaManagedAgentsEffortLow], [BetaManagedAgentsEffortMedium], 2914 // [BetaManagedAgentsEffortHigh], [BetaManagedAgentsEffortXhigh], 2915 // [BetaManagedAgentsEffortMax]. 2916 // 2917 // Use the [BetaManagedAgentsModelConfigEffortUnion.AsAny] method to switch on the 2918 // variant. 2919 // 2920 // Use the methods beginning with 'As' to cast the union to one of its variants. 2921 type BetaManagedAgentsModelConfigEffortUnion struct { 2922 // Any of "low", "medium", "high", "xhigh", "max". 2923 Type string `json:"type"` 2924 JSON struct { 2925 Type respjson.Field 2926 raw string 2927 } `json:"-"` 2928 } 2929 2930 // anyBetaManagedAgentsModelConfigEffort is implemented by each variant of 2931 // [BetaManagedAgentsModelConfigEffortUnion] to add type safety for the return type 2932 // of [BetaManagedAgentsModelConfigEffortUnion.AsAny] 2933 type anyBetaManagedAgentsModelConfigEffort interface { 2934 implBetaManagedAgentsModelConfigEffortUnion() 2935 } 2936 2937 func (BetaManagedAgentsEffortLow) implBetaManagedAgentsModelConfigEffortUnion() {} 2938 func (BetaManagedAgentsEffortMedium) implBetaManagedAgentsModelConfigEffortUnion() {} 2939 func (BetaManagedAgentsEffortHigh) implBetaManagedAgentsModelConfigEffortUnion() {} 2940 func (BetaManagedAgentsEffortXhigh) implBetaManagedAgentsModelConfigEffortUnion() {} 2941 func (BetaManagedAgentsEffortMax) implBetaManagedAgentsModelConfigEffortUnion() {} 2942 2943 // Use the following switch statement to find the correct variant 2944 // 2945 // switch variant := BetaManagedAgentsModelConfigEffortUnion.AsAny().(type) { 2946 // case anthropic.BetaManagedAgentsEffortLow: 2947 // case anthropic.BetaManagedAgentsEffortMedium: 2948 // case anthropic.BetaManagedAgentsEffortHigh: 2949 // case anthropic.BetaManagedAgentsEffortXhigh: 2950 // case anthropic.BetaManagedAgentsEffortMax: 2951 // default: 2952 // fmt.Errorf("no variant present") 2953 // } 2954 func (u BetaManagedAgentsModelConfigEffortUnion) AsAny() anyBetaManagedAgentsModelConfigEffort { 2955 switch u.Type { 2956 case "low": 2957 return u.AsLow() 2958 case "medium": 2959 return u.AsMedium() 2960 case "high": 2961 return u.AsHigh() 2962 case "xhigh": 2963 return u.AsXhigh() 2964 case "max": 2965 return u.AsMax() 2966 } 2967 return nil 2968 } 2969 2970 func (u BetaManagedAgentsModelConfigEffortUnion) AsLow() (v BetaManagedAgentsEffortLow) { 2971 apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v) 2972 return 2973 } 2974 2975 func (u BetaManagedAgentsModelConfigEffortUnion) AsMedium() (v BetaManagedAgentsEffortMedium) { 2976 apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v) 2977 return 2978 } 2979 2980 func (u BetaManagedAgentsModelConfigEffortUnion) AsHigh() (v BetaManagedAgentsEffortHigh) { 2981 apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v) 2982 return 2983 } 2984 2985 func (u BetaManagedAgentsModelConfigEffortUnion) AsXhigh() (v BetaManagedAgentsEffortXhigh) { 2986 apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v) 2987 return 2988 } 2989 2990 func (u BetaManagedAgentsModelConfigEffortUnion) AsMax() (v BetaManagedAgentsEffortMax) { 2991 apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v) 2992 return 2993 } 2994 2995 // Returns the unmodified JSON received from the API 2996 func (u BetaManagedAgentsModelConfigEffortUnion) RawJSON() string { return u.JSON.raw } 2997 2998 func (r *BetaManagedAgentsModelConfigEffortUnion) UnmarshalJSON(data []byte) error { 2999 return apijson.UnmarshalRoot(data, r) 3000 } 3001 3002 // Inference speed mode. `fast` provides significantly faster output token 3003 // generation at premium pricing. Not all models support `fast`; invalid 3004 // combinations are rejected at create time. 3005 type BetaManagedAgentsModelConfigSpeed string 3006 3007 const ( 3008 BetaManagedAgentsModelConfigSpeedStandard BetaManagedAgentsModelConfigSpeed = "standard" 3009 BetaManagedAgentsModelConfigSpeedFast BetaManagedAgentsModelConfigSpeed = "fast" 3010 ) 3011 3012 // An object that defines additional configuration control over model use 3013 // 3014 // The property ID is required. 3015 type BetaManagedAgentsModelConfigParams struct { 3016 // The model that will power your agent. 3017 // 3018 // See [models](https://docs.anthropic.com/en/docs/models-overview) for additional 3019 // details and options. 3020 ID BetaManagedAgentsModel `json:"id,omitzero" api:"required"` 3021 // Geographic region for model inference. When unset, requests fall through to the 3022 // workspace's default_inference_geo. On update, `model` is whole-object 3023 // replacement — omitting inference_geo clears it. 3024 InferenceGeo param.Opt[string] `json:"inference_geo,omitzero"` 3025 // How hard Claude works on each inference call. Accepts a bare level string 3026 // (`"high"`) or `{"type": "high"}`. On create, omitting it resolves the per-model 3027 // default; on update, omitting it leaves the stored value unchanged. 3028 Effort BetaManagedAgentsModelConfigParamsEffortUnion `json:"effort,omitzero"` 3029 // Inference speed mode. `fast` provides significantly faster output token 3030 // generation at premium pricing. Not all models support `fast`; invalid 3031 // combinations are rejected at create time. 3032 // 3033 // Any of "standard", "fast". 3034 Speed BetaManagedAgentsModelConfigParamsSpeed `json:"speed,omitzero"` 3035 paramObj 3036 } 3037 3038 func (r BetaManagedAgentsModelConfigParams) MarshalJSON() (data []byte, err error) { 3039 type shadow BetaManagedAgentsModelConfigParams 3040 return param.MarshalObject(r, (*shadow)(&r)) 3041 } 3042 func (r *BetaManagedAgentsModelConfigParams) UnmarshalJSON(data []byte) error { 3043 return apijson.UnmarshalRoot(data, r) 3044 } 3045 3046 // Only one field can be non-zero. 3047 // 3048 // Use [param.IsOmitted] to confirm if a field is set. 3049 type BetaManagedAgentsModelConfigParamsEffortUnion struct { 3050 // Check if union is this variant with 3051 // !param.IsOmitted(union.OfBetaManagedAgentsModelConfigsEffortBetaManagedAgentsEffortLevel) 3052 OfBetaManagedAgentsModelConfigsEffortBetaManagedAgentsEffortLevel param.Opt[string] `json:",omitzero,inline"` 3053 OfBetaManagedAgentsEffortLow *BetaManagedAgentsEffortLowParam `json:",omitzero,inline"` 3054 OfBetaManagedAgentsEffortMedium *BetaManagedAgentsEffortMediumParam `json:",omitzero,inline"` 3055 OfBetaManagedAgentsEffortHigh *BetaManagedAgentsEffortHighParam `json:",omitzero,inline"` 3056 OfBetaManagedAgentsEffortXhigh *BetaManagedAgentsEffortXhighParam `json:",omitzero,inline"` 3057 OfBetaManagedAgentsEffortMax *BetaManagedAgentsEffortMaxParam `json:",omitzero,inline"` 3058 paramUnion 3059 } 3060 3061 func (u BetaManagedAgentsModelConfigParamsEffortUnion) MarshalJSON() ([]byte, error) { 3062 return param.MarshalUnion(u, u.OfBetaManagedAgentsModelConfigsEffortBetaManagedAgentsEffortLevel, 3063 u.OfBetaManagedAgentsEffortLow, 3064 u.OfBetaManagedAgentsEffortMedium, 3065 u.OfBetaManagedAgentsEffortHigh, 3066 u.OfBetaManagedAgentsEffortXhigh, 3067 u.OfBetaManagedAgentsEffortMax) 3068 } 3069 func (u *BetaManagedAgentsModelConfigParamsEffortUnion) UnmarshalJSON(data []byte) error { 3070 return apijson.UnmarshalRoot(data, u) 3071 } 3072 3073 func (u *BetaManagedAgentsModelConfigParamsEffortUnion) asAny() any { 3074 if !param.IsOmitted(u.OfBetaManagedAgentsModelConfigsEffortBetaManagedAgentsEffortLevel) { 3075 return &u.OfBetaManagedAgentsModelConfigsEffortBetaManagedAgentsEffortLevel 3076 } else if !param.IsOmitted(u.OfBetaManagedAgentsEffortLow) { 3077 return u.OfBetaManagedAgentsEffortLow 3078 } else if !param.IsOmitted(u.OfBetaManagedAgentsEffortMedium) { 3079 return u.OfBetaManagedAgentsEffortMedium 3080 } else if !param.IsOmitted(u.OfBetaManagedAgentsEffortHigh) { 3081 return u.OfBetaManagedAgentsEffortHigh 3082 } else if !param.IsOmitted(u.OfBetaManagedAgentsEffortXhigh) { 3083 return u.OfBetaManagedAgentsEffortXhigh 3084 } else if !param.IsOmitted(u.OfBetaManagedAgentsEffortMax) { 3085 return u.OfBetaManagedAgentsEffortMax 3086 } 3087 return nil 3088 } 3089 3090 // Returns a pointer to the underlying variant's property, if present. 3091 func (u BetaManagedAgentsModelConfigParamsEffortUnion) GetType() *string { 3092 if vt := u.OfBetaManagedAgentsEffortLow; vt != nil { 3093 return (*string)(&vt.Type) 3094 } else if vt := u.OfBetaManagedAgentsEffortMedium; vt != nil { 3095 return (*string)(&vt.Type) 3096 } else if vt := u.OfBetaManagedAgentsEffortHigh; vt != nil { 3097 return (*string)(&vt.Type) 3098 } else if vt := u.OfBetaManagedAgentsEffortXhigh; vt != nil { 3099 return (*string)(&vt.Type) 3100 } else if vt := u.OfBetaManagedAgentsEffortMax; vt != nil { 3101 return (*string)(&vt.Type) 3102 } 3103 return nil 3104 } 3105 3106 // How hard Claude works on each turn. Higher levels favor reasoning depth over 3107 // latency. Not all models accept every level; invalid combinations are rejected at 3108 // create time. 3109 type BetaManagedAgentsModelConfigParamsEffortBetaManagedAgentsEffortLevel string 3110 3111 const ( 3112 BetaManagedAgentsModelConfigParamsEffortBetaManagedAgentsEffortLevelLow BetaManagedAgentsModelConfigParamsEffortBetaManagedAgentsEffortLevel = "low" 3113 BetaManagedAgentsModelConfigParamsEffortBetaManagedAgentsEffortLevelMedium BetaManagedAgentsModelConfigParamsEffortBetaManagedAgentsEffortLevel = "medium" 3114 BetaManagedAgentsModelConfigParamsEffortBetaManagedAgentsEffortLevelHigh BetaManagedAgentsModelConfigParamsEffortBetaManagedAgentsEffortLevel = "high" 3115 BetaManagedAgentsModelConfigParamsEffortBetaManagedAgentsEffortLevelXhigh BetaManagedAgentsModelConfigParamsEffortBetaManagedAgentsEffortLevel = "xhigh" 3116 BetaManagedAgentsModelConfigParamsEffortBetaManagedAgentsEffortLevelMax BetaManagedAgentsModelConfigParamsEffortBetaManagedAgentsEffortLevel = "max" 3117 ) 3118 3119 // Inference speed mode. `fast` provides significantly faster output token 3120 // generation at premium pricing. Not all models support `fast`; invalid 3121 // combinations are rejected at create time. 3122 type BetaManagedAgentsModelConfigParamsSpeed string 3123 3124 const ( 3125 BetaManagedAgentsModelConfigParamsSpeedStandard BetaManagedAgentsModelConfigParamsSpeed = "standard" 3126 BetaManagedAgentsModelConfigParamsSpeedFast BetaManagedAgentsModelConfigParamsSpeed = "fast" 3127 ) 3128 3129 // Sentinel roster entry meaning "the agent that owns this configuration". Resolved 3130 // server-side to a concrete agent reference. 3131 // 3132 // The property Type is required. 3133 type BetaManagedAgentsMultiagentSelfParams struct { 3134 // Any of "self". 3135 Type BetaManagedAgentsMultiagentSelfParamsType `json:"type,omitzero" api:"required"` 3136 paramObj 3137 } 3138 3139 func (r BetaManagedAgentsMultiagentSelfParams) MarshalJSON() (data []byte, err error) { 3140 type shadow BetaManagedAgentsMultiagentSelfParams 3141 return param.MarshalObject(r, (*shadow)(&r)) 3142 } 3143 func (r *BetaManagedAgentsMultiagentSelfParams) UnmarshalJSON(data []byte) error { 3144 return apijson.UnmarshalRoot(data, r) 3145 } 3146 3147 type BetaManagedAgentsMultiagentSelfParamsType string 3148 3149 const ( 3150 BetaManagedAgentsMultiagentSelfParamsTypeSelf BetaManagedAgentsMultiagentSelfParamsType = "self" 3151 ) 3152 3153 // Configuration for the read tool. 3154 type BetaManagedAgentsReadToolConfig struct { 3155 Enabled bool `json:"enabled" api:"required"` 3156 Name constant.Read `json:"name" default:"read"` 3157 // Permission policy for tool execution. 3158 PermissionPolicy BetaManagedAgentsReadToolConfigPermissionPolicyUnion `json:"permission_policy" api:"required"` 3159 Type constant.Read `json:"type" default:"read"` 3160 // JSON contains metadata for fields, check presence with [respjson.Field.Valid]. 3161 JSON struct { 3162 Enabled respjson.Field 3163 Name respjson.Field 3164 PermissionPolicy respjson.Field 3165 Type respjson.Field 3166 ExtraFields map[string]respjson.Field 3167 raw string 3168 } `json:"-"` 3169 } 3170 3171 // Returns the unmodified JSON received from the API 3172 func (r BetaManagedAgentsReadToolConfig) RawJSON() string { return r.JSON.raw } 3173 func (r *BetaManagedAgentsReadToolConfig) UnmarshalJSON(data []byte) error { 3174 return apijson.UnmarshalRoot(data, r) 3175 } 3176 3177 // BetaManagedAgentsReadToolConfigPermissionPolicyUnion contains all possible 3178 // properties and values from [BetaManagedAgentsAlwaysAllowPolicy], 3179 // [BetaManagedAgentsAlwaysAskPolicy]. 3180 // 3181 // Use the [BetaManagedAgentsReadToolConfigPermissionPolicyUnion.AsAny] method to 3182 // switch on the variant. 3183 // 3184 // Use the methods beginning with 'As' to cast the union to one of its variants. 3185 type BetaManagedAgentsReadToolConfigPermissionPolicyUnion struct { 3186 // Any of "always_allow", "always_ask". 3187 Type string `json:"type"` 3188 JSON struct { 3189 Type respjson.Field 3190 raw string 3191 } `json:"-"` 3192 } 3193 3194 // anyBetaManagedAgentsReadToolConfigPermissionPolicy is implemented by each 3195 // variant of [BetaManagedAgentsReadToolConfigPermissionPolicyUnion] to add type 3196 // safety for the return type of 3197 // [BetaManagedAgentsReadToolConfigPermissionPolicyUnion.AsAny] 3198 type anyBetaManagedAgentsReadToolConfigPermissionPolicy interface { 3199 implBetaManagedAgentsReadToolConfigPermissionPolicyUnion() 3200 } 3201 3202 func (BetaManagedAgentsAlwaysAllowPolicy) implBetaManagedAgentsReadToolConfigPermissionPolicyUnion() { 3203 } 3204 func (BetaManagedAgentsAlwaysAskPolicy) implBetaManagedAgentsReadToolConfigPermissionPolicyUnion() {} 3205 3206 // Use the following switch statement to find the correct variant 3207 // 3208 // switch variant := BetaManagedAgentsReadToolConfigPermissionPolicyUnion.AsAny().(type) { 3209 // case anthropic.BetaManagedAgentsAlwaysAllowPolicy: 3210 // case anthropic.BetaManagedAgentsAlwaysAskPolicy: 3211 // default: 3212 // fmt.Errorf("no variant present") 3213 // } 3214 func (u BetaManagedAgentsReadToolConfigPermissionPolicyUnion) AsAny() anyBetaManagedAgentsReadToolConfigPermissionPolicy { 3215 switch u.Type { 3216 case "always_allow": 3217 return u.AsAlwaysAllow() 3218 case "always_ask": 3219 return u.AsAlwaysAsk() 3220 } 3221 return nil 3222 } 3223 3224 func (u BetaManagedAgentsReadToolConfigPermissionPolicyUnion) AsAlwaysAllow() (v BetaManagedAgentsAlwaysAllowPolicy) { 3225 apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v) 3226 return 3227 } 3228 3229 func (u BetaManagedAgentsReadToolConfigPermissionPolicyUnion) AsAlwaysAsk() (v BetaManagedAgentsAlwaysAskPolicy) { 3230 apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v) 3231 return 3232 } 3233 3234 // Returns the unmodified JSON received from the API 3235 func (u BetaManagedAgentsReadToolConfigPermissionPolicyUnion) RawJSON() string { return u.JSON.raw } 3236 3237 func (r *BetaManagedAgentsReadToolConfigPermissionPolicyUnion) UnmarshalJSON(data []byte) error { 3238 return apijson.UnmarshalRoot(data, r) 3239 } 3240 3241 // Configuration override for the read tool. 3242 // 3243 // The property Name is required. 3244 type BetaManagedAgentsReadToolConfigParams struct { 3245 // Whether this tool is enabled and available to Claude. Overrides the 3246 // default_config setting. 3247 Enabled param.Opt[bool] `json:"enabled,omitzero"` 3248 // Permission policy for tool execution. 3249 PermissionPolicy BetaManagedAgentsReadToolConfigParamsPermissionPolicyUnion `json:"permission_policy,omitzero"` 3250 // Any of "read". 3251 Type BetaManagedAgentsReadToolConfigParamsType `json:"type,omitzero"` 3252 // Must be "read". 3253 // 3254 // This field can be elided, and will marshal its zero value as "read". 3255 Name constant.Read `json:"name" default:"read"` 3256 paramObj 3257 } 3258 3259 func (r BetaManagedAgentsReadToolConfigParams) MarshalJSON() (data []byte, err error) { 3260 type shadow BetaManagedAgentsReadToolConfigParams 3261 return param.MarshalObject(r, (*shadow)(&r)) 3262 } 3263 func (r *BetaManagedAgentsReadToolConfigParams) UnmarshalJSON(data []byte) error { 3264 return apijson.UnmarshalRoot(data, r) 3265 } 3266 3267 // Only one field can be non-zero. 3268 // 3269 // Use [param.IsOmitted] to confirm if a field is set. 3270 type BetaManagedAgentsReadToolConfigParamsPermissionPolicyUnion struct { 3271 OfAlwaysAllow *BetaManagedAgentsAlwaysAllowPolicyParam `json:",omitzero,inline"` 3272 OfAlwaysAsk *BetaManagedAgentsAlwaysAskPolicyParam `json:",omitzero,inline"` 3273 paramUnion 3274 } 3275 3276 func (u BetaManagedAgentsReadToolConfigParamsPermissionPolicyUnion) MarshalJSON() ([]byte, error) { 3277 return param.MarshalUnion(u, u.OfAlwaysAllow, u.OfAlwaysAsk) 3278 } 3279 func (u *BetaManagedAgentsReadToolConfigParamsPermissionPolicyUnion) UnmarshalJSON(data []byte) error { 3280 return apijson.UnmarshalRoot(data, u) 3281 } 3282 3283 func (u *BetaManagedAgentsReadToolConfigParamsPermissionPolicyUnion) asAny() any { 3284 if !param.IsOmitted(u.OfAlwaysAllow) { 3285 return u.OfAlwaysAllow 3286 } else if !param.IsOmitted(u.OfAlwaysAsk) { 3287 return u.OfAlwaysAsk 3288 } 3289 return nil 3290 } 3291 3292 // Returns a pointer to the underlying variant's property, if present. 3293 func (u BetaManagedAgentsReadToolConfigParamsPermissionPolicyUnion) GetType() *string { 3294 if vt := u.OfAlwaysAllow; vt != nil { 3295 return (*string)(&vt.Type) 3296 } else if vt := u.OfAlwaysAsk; vt != nil { 3297 return (*string)(&vt.Type) 3298 } 3299 return nil 3300 } 3301 3302 func init() { 3303 apijson.RegisterUnion[BetaManagedAgentsReadToolConfigParamsPermissionPolicyUnion]( 3304 "type", 3305 apijson.Discriminator[BetaManagedAgentsAlwaysAllowPolicyParam]("always_allow"), 3306 apijson.Discriminator[BetaManagedAgentsAlwaysAskPolicyParam]("always_ask"), 3307 ) 3308 } 3309 3310 type BetaManagedAgentsReadToolConfigParamsType string 3311 3312 const ( 3313 BetaManagedAgentsReadToolConfigParamsTypeRead BetaManagedAgentsReadToolConfigParamsType = "read" 3314 ) 3315 3316 // Resolved `agent` definition for a single `session_thread`. Snapshot of the agent 3317 // at thread creation time. The multiagent roster is not repeated here; read it 3318 // from `Session.agent`. 3319 type BetaManagedAgentsSessionThreadAgent struct { 3320 ID string `json:"id" api:"required"` 3321 Description string `json:"description" api:"required"` 3322 MCPServers []BetaManagedAgentsMCPServerURLDefinition `json:"mcp_servers" api:"required"` 3323 // Model identifier and configuration. 3324 Model BetaManagedAgentsModelConfig `json:"model" api:"required"` 3325 Name string `json:"name" api:"required"` 3326 Skills []BetaManagedAgentsSessionThreadAgentSkillUnion `json:"skills" api:"required"` 3327 System string `json:"system" api:"required"` 3328 Tools []BetaManagedAgentsSessionThreadAgentToolUnion `json:"tools" api:"required"` 3329 // Any of "agent". 3330 Type BetaManagedAgentsSessionThreadAgentType `json:"type" api:"required"` 3331 Version int64 `json:"version" api:"required"` 3332 // JSON contains metadata for fields, check presence with [respjson.Field.Valid]. 3333 JSON struct { 3334 ID respjson.Field 3335 Description respjson.Field 3336 MCPServers respjson.Field 3337 Model respjson.Field 3338 Name respjson.Field 3339 Skills respjson.Field 3340 System respjson.Field 3341 Tools respjson.Field 3342 Type respjson.Field 3343 Version respjson.Field 3344 ExtraFields map[string]respjson.Field 3345 raw string 3346 } `json:"-"` 3347 } 3348 3349 // Returns the unmodified JSON received from the API 3350 func (r BetaManagedAgentsSessionThreadAgent) RawJSON() string { return r.JSON.raw } 3351 func (r *BetaManagedAgentsSessionThreadAgent) UnmarshalJSON(data []byte) error { 3352 return apijson.UnmarshalRoot(data, r) 3353 } 3354 3355 // BetaManagedAgentsSessionThreadAgentSkillUnion contains all possible properties 3356 // and values from [BetaManagedAgentsAnthropicSkill], 3357 // [BetaManagedAgentsCustomSkill]. 3358 // 3359 // Use the [BetaManagedAgentsSessionThreadAgentSkillUnion.AsAny] method to switch 3360 // on the variant. 3361 // 3362 // Use the methods beginning with 'As' to cast the union to one of its variants. 3363 type BetaManagedAgentsSessionThreadAgentSkillUnion struct { 3364 SkillID string `json:"skill_id"` 3365 // Any of "anthropic", "custom". 3366 Type string `json:"type"` 3367 Version string `json:"version"` 3368 JSON struct { 3369 SkillID respjson.Field 3370 Type respjson.Field 3371 Version respjson.Field 3372 raw string 3373 } `json:"-"` 3374 } 3375 3376 // anyBetaManagedAgentsSessionThreadAgentSkill is implemented by each variant of 3377 // [BetaManagedAgentsSessionThreadAgentSkillUnion] to add type safety for the 3378 // return type of [BetaManagedAgentsSessionThreadAgentSkillUnion.AsAny] 3379 type anyBetaManagedAgentsSessionThreadAgentSkill interface { 3380 implBetaManagedAgentsSessionThreadAgentSkillUnion() 3381 } 3382 3383 func (BetaManagedAgentsAnthropicSkill) implBetaManagedAgentsSessionThreadAgentSkillUnion() {} 3384 func (BetaManagedAgentsCustomSkill) implBetaManagedAgentsSessionThreadAgentSkillUnion() {} 3385 3386 // Use the following switch statement to find the correct variant 3387 // 3388 // switch variant := BetaManagedAgentsSessionThreadAgentSkillUnion.AsAny().(type) { 3389 // case anthropic.BetaManagedAgentsAnthropicSkill: 3390 // case anthropic.BetaManagedAgentsCustomSkill: 3391 // default: 3392 // fmt.Errorf("no variant present") 3393 // } 3394 func (u BetaManagedAgentsSessionThreadAgentSkillUnion) AsAny() anyBetaManagedAgentsSessionThreadAgentSkill { 3395 switch u.Type { 3396 case "anthropic": 3397 return u.AsAnthropic() 3398 case "custom": 3399 return u.AsCustom() 3400 } 3401 return nil 3402 } 3403 3404 func (u BetaManagedAgentsSessionThreadAgentSkillUnion) AsAnthropic() (v BetaManagedAgentsAnthropicSkill) { 3405 apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v) 3406 return 3407 } 3408 3409 func (u BetaManagedAgentsSessionThreadAgentSkillUnion) AsCustom() (v BetaManagedAgentsCustomSkill) { 3410 apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v) 3411 return 3412 } 3413 3414 // Returns the unmodified JSON received from the API 3415 func (u BetaManagedAgentsSessionThreadAgentSkillUnion) RawJSON() string { return u.JSON.raw } 3416 3417 func (r *BetaManagedAgentsSessionThreadAgentSkillUnion) UnmarshalJSON(data []byte) error { 3418 return apijson.UnmarshalRoot(data, r) 3419 } 3420 3421 // BetaManagedAgentsSessionThreadAgentToolUnion contains all possible properties 3422 // and values from [BetaManagedAgentsAgentToolset20260401], 3423 // [BetaManagedAgentsMCPToolset], [BetaManagedAgentsCustomTool]. 3424 // 3425 // Use the [BetaManagedAgentsSessionThreadAgentToolUnion.AsAny] method to switch on 3426 // the variant. 3427 // 3428 // Use the methods beginning with 'As' to cast the union to one of its variants. 3429 type BetaManagedAgentsSessionThreadAgentToolUnion struct { 3430 // This field is a union of [[]BetaManagedAgentsAgentToolConfigUnion], 3431 // [[]BetaManagedAgentsMCPToolConfig] 3432 Configs BetaManagedAgentsSessionThreadAgentToolUnionConfigs `json:"configs"` 3433 // This field is a union of [BetaManagedAgentsAgentToolsetDefaultConfig], 3434 // [BetaManagedAgentsMCPToolsetDefaultConfig] 3435 DefaultConfig BetaManagedAgentsSessionThreadAgentToolUnionDefaultConfig `json:"default_config"` 3436 // Any of "agent_toolset_20260401", "mcp_toolset", "custom". 3437 Type string `json:"type"` 3438 // This field is from variant [BetaManagedAgentsMCPToolset]. 3439 MCPServerName string `json:"mcp_server_name"` 3440 // This field is from variant [BetaManagedAgentsCustomTool]. 3441 Description string `json:"description"` 3442 // This field is from variant [BetaManagedAgentsCustomTool]. 3443 InputSchema BetaManagedAgentsCustomToolInputSchema `json:"input_schema"` 3444 // This field is from variant [BetaManagedAgentsCustomTool]. 3445 Name string `json:"name"` 3446 JSON struct { 3447 Configs respjson.Field 3448 DefaultConfig respjson.Field 3449 Type respjson.Field 3450 MCPServerName respjson.Field 3451 Description respjson.Field 3452 InputSchema respjson.Field 3453 Name respjson.Field 3454 raw string 3455 } `json:"-"` 3456 } 3457 3458 // anyBetaManagedAgentsSessionThreadAgentTool is implemented by each variant of 3459 // [BetaManagedAgentsSessionThreadAgentToolUnion] to add type safety for the return 3460 // type of [BetaManagedAgentsSessionThreadAgentToolUnion.AsAny] 3461 type anyBetaManagedAgentsSessionThreadAgentTool interface { 3462 implBetaManagedAgentsSessionThreadAgentToolUnion() 3463 } 3464 3465 func (BetaManagedAgentsAgentToolset20260401) implBetaManagedAgentsSessionThreadAgentToolUnion() {} 3466 func (BetaManagedAgentsMCPToolset) implBetaManagedAgentsSessionThreadAgentToolUnion() {} 3467 func (BetaManagedAgentsCustomTool) implBetaManagedAgentsSessionThreadAgentToolUnion() {} 3468 3469 // Use the following switch statement to find the correct variant 3470 // 3471 // switch variant := BetaManagedAgentsSessionThreadAgentToolUnion.AsAny().(type) { 3472 // case anthropic.BetaManagedAgentsAgentToolset20260401: 3473 // case anthropic.BetaManagedAgentsMCPToolset: 3474 // case anthropic.BetaManagedAgentsCustomTool: 3475 // default: 3476 // fmt.Errorf("no variant present") 3477 // } 3478 func (u BetaManagedAgentsSessionThreadAgentToolUnion) AsAny() anyBetaManagedAgentsSessionThreadAgentTool { 3479 switch u.Type { 3480 case "agent_toolset_20260401": 3481 return u.AsAgentToolset20260401() 3482 case "mcp_toolset": 3483 return u.AsMCPToolset() 3484 case "custom": 3485 return u.AsCustom() 3486 } 3487 return nil 3488 } 3489 3490 func (u BetaManagedAgentsSessionThreadAgentToolUnion) AsAgentToolset20260401() (v BetaManagedAgentsAgentToolset20260401) { 3491 apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v) 3492 return 3493 } 3494 3495 func (u BetaManagedAgentsSessionThreadAgentToolUnion) AsMCPToolset() (v BetaManagedAgentsMCPToolset) { 3496 apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v) 3497 return 3498 } 3499 3500 func (u BetaManagedAgentsSessionThreadAgentToolUnion) AsCustom() (v BetaManagedAgentsCustomTool) { 3501 apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v) 3502 return 3503 } 3504 3505 // Returns the unmodified JSON received from the API 3506 func (u BetaManagedAgentsSessionThreadAgentToolUnion) RawJSON() string { return u.JSON.raw } 3507 3508 func (r *BetaManagedAgentsSessionThreadAgentToolUnion) UnmarshalJSON(data []byte) error { 3509 return apijson.UnmarshalRoot(data, r) 3510 } 3511 3512 // BetaManagedAgentsSessionThreadAgentToolUnionConfigs is an implicit subunion of 3513 // [BetaManagedAgentsSessionThreadAgentToolUnion]. 3514 // BetaManagedAgentsSessionThreadAgentToolUnionConfigs provides convenient access 3515 // to the sub-properties of the union. 3516 // 3517 // For type safety it is recommended to directly use a variant of the 3518 // [BetaManagedAgentsSessionThreadAgentToolUnion]. 3519 // 3520 // If the underlying value is not a json object, one of the following properties 3521 // will be valid: OfBetaManagedAgentsAgentToolConfigArray 3522 // OfBetaManagedAgentsMCPToolConfigArray] 3523 type BetaManagedAgentsSessionThreadAgentToolUnionConfigs struct { 3524 // This field will be present if the value is a 3525 // [[]BetaManagedAgentsAgentToolConfigUnion] instead of an object. 3526 OfBetaManagedAgentsAgentToolConfigArray []BetaManagedAgentsAgentToolConfigUnion `json:",inline"` 3527 // This field will be present if the value is a [[]BetaManagedAgentsMCPToolConfig] 3528 // instead of an object. 3529 OfBetaManagedAgentsMCPToolConfigArray []BetaManagedAgentsMCPToolConfig `json:",inline"` 3530 JSON struct { 3531 OfBetaManagedAgentsAgentToolConfigArray respjson.Field 3532 OfBetaManagedAgentsMCPToolConfigArray respjson.Field 3533 raw string 3534 } `json:"-"` 3535 } 3536 3537 func (r *BetaManagedAgentsSessionThreadAgentToolUnionConfigs) UnmarshalJSON(data []byte) error { 3538 return apijson.UnmarshalRoot(data, r) 3539 } 3540 3541 // BetaManagedAgentsSessionThreadAgentToolUnionDefaultConfig is an implicit 3542 // subunion of [BetaManagedAgentsSessionThreadAgentToolUnion]. 3543 // BetaManagedAgentsSessionThreadAgentToolUnionDefaultConfig provides convenient 3544 // access to the sub-properties of the union. 3545 // 3546 // For type safety it is recommended to directly use a variant of the 3547 // [BetaManagedAgentsSessionThreadAgentToolUnion]. 3548 type BetaManagedAgentsSessionThreadAgentToolUnionDefaultConfig struct { 3549 Enabled bool `json:"enabled"` 3550 // This field is a union of 3551 // [BetaManagedAgentsAgentToolsetDefaultConfigPermissionPolicyUnion], 3552 // [BetaManagedAgentsMCPToolsetDefaultConfigPermissionPolicyUnion] 3553 PermissionPolicy BetaManagedAgentsSessionThreadAgentToolUnionDefaultConfigPermissionPolicy `json:"permission_policy"` 3554 JSON struct { 3555 Enabled respjson.Field 3556 PermissionPolicy respjson.Field 3557 raw string 3558 } `json:"-"` 3559 } 3560 3561 func (r *BetaManagedAgentsSessionThreadAgentToolUnionDefaultConfig) UnmarshalJSON(data []byte) error { 3562 return apijson.UnmarshalRoot(data, r) 3563 } 3564 3565 // BetaManagedAgentsSessionThreadAgentToolUnionDefaultConfigPermissionPolicy is an 3566 // implicit subunion of [BetaManagedAgentsSessionThreadAgentToolUnion]. 3567 // BetaManagedAgentsSessionThreadAgentToolUnionDefaultConfigPermissionPolicy 3568 // provides convenient access to the sub-properties of the union. 3569 // 3570 // For type safety it is recommended to directly use a variant of the 3571 // [BetaManagedAgentsSessionThreadAgentToolUnion]. 3572 type BetaManagedAgentsSessionThreadAgentToolUnionDefaultConfigPermissionPolicy struct { 3573 Type string `json:"type"` 3574 JSON struct { 3575 Type respjson.Field 3576 raw string 3577 } `json:"-"` 3578 } 3579 3580 func (r *BetaManagedAgentsSessionThreadAgentToolUnionDefaultConfigPermissionPolicy) UnmarshalJSON(data []byte) error { 3581 return apijson.UnmarshalRoot(data, r) 3582 } 3583 3584 type BetaManagedAgentsSessionThreadAgentType string 3585 3586 const ( 3587 BetaManagedAgentsSessionThreadAgentTypeAgent BetaManagedAgentsSessionThreadAgentType = "agent" 3588 ) 3589 3590 func BetaManagedAgentsSkillParamsOfAnthropic(skillID string) BetaManagedAgentsSkillParamsUnion { 3591 var anthropic BetaManagedAgentsAnthropicSkillParams 3592 anthropic.SkillID = skillID 3593 return BetaManagedAgentsSkillParamsUnion{OfAnthropic: &anthropic} 3594 } 3595 3596 func BetaManagedAgentsSkillParamsOfCustom(skillID string) BetaManagedAgentsSkillParamsUnion { 3597 var custom BetaManagedAgentsCustomSkillParams 3598 custom.SkillID = skillID 3599 return BetaManagedAgentsSkillParamsUnion{OfCustom: &custom} 3600 } 3601 3602 // Only one field can be non-zero. 3603 // 3604 // Use [param.IsOmitted] to confirm if a field is set. 3605 type BetaManagedAgentsSkillParamsUnion struct { 3606 OfAnthropic *BetaManagedAgentsAnthropicSkillParams `json:",omitzero,inline"` 3607 OfCustom *BetaManagedAgentsCustomSkillParams `json:",omitzero,inline"` 3608 paramUnion 3609 } 3610 3611 func (u BetaManagedAgentsSkillParamsUnion) MarshalJSON() ([]byte, error) { 3612 return param.MarshalUnion(u, u.OfAnthropic, u.OfCustom) 3613 } 3614 func (u *BetaManagedAgentsSkillParamsUnion) UnmarshalJSON(data []byte) error { 3615 return apijson.UnmarshalRoot(data, u) 3616 } 3617 3618 func (u *BetaManagedAgentsSkillParamsUnion) asAny() any { 3619 if !param.IsOmitted(u.OfAnthropic) { 3620 return u.OfAnthropic 3621 } else if !param.IsOmitted(u.OfCustom) { 3622 return u.OfCustom 3623 } 3624 return nil 3625 } 3626 3627 // Returns a pointer to the underlying variant's property, if present. 3628 func (u BetaManagedAgentsSkillParamsUnion) GetSkillID() *string { 3629 if vt := u.OfAnthropic; vt != nil { 3630 return (*string)(&vt.SkillID) 3631 } else if vt := u.OfCustom; vt != nil { 3632 return (*string)(&vt.SkillID) 3633 } 3634 return nil 3635 } 3636 3637 // Returns a pointer to the underlying variant's property, if present. 3638 func (u BetaManagedAgentsSkillParamsUnion) GetType() *string { 3639 if vt := u.OfAnthropic; vt != nil { 3640 return (*string)(&vt.Type) 3641 } else if vt := u.OfCustom; vt != nil { 3642 return (*string)(&vt.Type) 3643 } 3644 return nil 3645 } 3646 3647 // Returns a pointer to the underlying variant's property, if present. 3648 func (u BetaManagedAgentsSkillParamsUnion) GetVersion() *string { 3649 if vt := u.OfAnthropic; vt != nil && vt.Version.Valid() { 3650 return &vt.Version.Value 3651 } else if vt := u.OfCustom; vt != nil && vt.Version.Valid() { 3652 return &vt.Version.Value 3653 } 3654 return nil 3655 } 3656 3657 func init() { 3658 apijson.RegisterUnion[BetaManagedAgentsSkillParamsUnion]( 3659 "type", 3660 apijson.Discriminator[BetaManagedAgentsAnthropicSkillParams]("anthropic"), 3661 apijson.Discriminator[BetaManagedAgentsCustomSkillParams]("custom"), 3662 ) 3663 } 3664 3665 // URL-based MCP server connection. 3666 // 3667 // The properties Name, Type, URL are required. 3668 type BetaManagedAgentsURLMCPServerParams struct { 3669 // Unique name for this server, referenced by mcp_toolset configurations. 1-255 3670 // characters. 3671 Name string `json:"name" api:"required"` 3672 // Any of "url". 3673 Type BetaManagedAgentsURLMCPServerParamsType `json:"type,omitzero" api:"required"` 3674 // Endpoint URL for the MCP server. 3675 URL string `json:"url" api:"required"` 3676 paramObj 3677 } 3678 3679 func (r BetaManagedAgentsURLMCPServerParams) MarshalJSON() (data []byte, err error) { 3680 type shadow BetaManagedAgentsURLMCPServerParams 3681 return param.MarshalObject(r, (*shadow)(&r)) 3682 } 3683 func (r *BetaManagedAgentsURLMCPServerParams) UnmarshalJSON(data []byte) error { 3684 return apijson.UnmarshalRoot(data, r) 3685 } 3686 3687 type BetaManagedAgentsURLMCPServerParamsType string 3688 3689 const ( 3690 BetaManagedAgentsURLMCPServerParamsTypeURL BetaManagedAgentsURLMCPServerParamsType = "url" 3691 ) 3692 3693 // Approximate user location for search result localization. 3694 type BetaManagedAgentsUserLocation struct { 3695 // Location precision. Only "approximate" is supported. 3696 Type constant.Approximate `json:"type" default:"approximate"` 3697 // City name. 3698 City string `json:"city" api:"nullable"` 3699 // Two-letter ISO 3166-1 country code, uppercase. 3700 Country string `json:"country" api:"nullable"` 3701 // Region or state name. 3702 Region string `json:"region" api:"nullable"` 3703 // IANA timezone identifier, e.g. "America/Los_Angeles". 3704 Timezone string `json:"timezone" api:"nullable"` 3705 // JSON contains metadata for fields, check presence with [respjson.Field.Valid]. 3706 JSON struct { 3707 Type respjson.Field 3708 City respjson.Field 3709 Country respjson.Field 3710 Region respjson.Field 3711 Timezone respjson.Field 3712 ExtraFields map[string]respjson.Field 3713 raw string 3714 } `json:"-"` 3715 } 3716 3717 // Returns the unmodified JSON received from the API 3718 func (r BetaManagedAgentsUserLocation) RawJSON() string { return r.JSON.raw } 3719 func (r *BetaManagedAgentsUserLocation) UnmarshalJSON(data []byte) error { 3720 return apijson.UnmarshalRoot(data, r) 3721 } 3722 3723 // ToParam converts this BetaManagedAgentsUserLocation to a 3724 // BetaManagedAgentsUserLocationParam. 3725 // 3726 // Warning: the fields of the param type will not be present. ToParam should only 3727 // be used at the last possible moment before sending a request. Test for this with 3728 // BetaManagedAgentsUserLocationParam.Overrides() 3729 func (r BetaManagedAgentsUserLocation) ToParam() BetaManagedAgentsUserLocationParam { 3730 return param.Override[BetaManagedAgentsUserLocationParam](json.RawMessage(r.RawJSON())) 3731 } 3732 3733 // Approximate user location for search result localization. 3734 // 3735 // The property Type is required. 3736 type BetaManagedAgentsUserLocationParam struct { 3737 // City name. 3738 City param.Opt[string] `json:"city,omitzero"` 3739 // Two-letter ISO 3166-1 country code, uppercase. 3740 Country param.Opt[string] `json:"country,omitzero"` 3741 // Region or state name. 3742 Region param.Opt[string] `json:"region,omitzero"` 3743 // IANA timezone identifier, e.g. "America/Los_Angeles". 3744 Timezone param.Opt[string] `json:"timezone,omitzero"` 3745 // Location precision. Only "approximate" is supported. 3746 // 3747 // This field can be elided, and will marshal its zero value as "approximate". 3748 Type constant.Approximate `json:"type" default:"approximate"` 3749 paramObj 3750 } 3751 3752 func (r BetaManagedAgentsUserLocationParam) MarshalJSON() (data []byte, err error) { 3753 type shadow BetaManagedAgentsUserLocationParam 3754 return param.MarshalObject(r, (*shadow)(&r)) 3755 } 3756 func (r *BetaManagedAgentsUserLocationParam) UnmarshalJSON(data []byte) error { 3757 return apijson.UnmarshalRoot(data, r) 3758 } 3759 3760 // Configuration for the web_fetch tool. 3761 type BetaManagedAgentsWebFetchToolConfig struct { 3762 Enabled bool `json:"enabled" api:"required"` 3763 Name constant.WebFetch `json:"name" default:"web_fetch"` 3764 // Permission policy for tool execution. 3765 PermissionPolicy BetaManagedAgentsWebFetchToolConfigPermissionPolicyUnion `json:"permission_policy" api:"required"` 3766 Type constant.WebFetch `json:"type" default:"web_fetch"` 3767 AllowedDomains []string `json:"allowed_domains"` 3768 BlockedDomains []string `json:"blocked_domains"` 3769 MaxContentTokens int64 `json:"max_content_tokens" api:"nullable"` 3770 // JSON contains metadata for fields, check presence with [respjson.Field.Valid]. 3771 JSON struct { 3772 Enabled respjson.Field 3773 Name respjson.Field 3774 PermissionPolicy respjson.Field 3775 Type respjson.Field 3776 AllowedDomains respjson.Field 3777 BlockedDomains respjson.Field 3778 MaxContentTokens respjson.Field 3779 ExtraFields map[string]respjson.Field 3780 raw string 3781 } `json:"-"` 3782 } 3783 3784 // Returns the unmodified JSON received from the API 3785 func (r BetaManagedAgentsWebFetchToolConfig) RawJSON() string { return r.JSON.raw } 3786 func (r *BetaManagedAgentsWebFetchToolConfig) UnmarshalJSON(data []byte) error { 3787 return apijson.UnmarshalRoot(data, r) 3788 } 3789 3790 // BetaManagedAgentsWebFetchToolConfigPermissionPolicyUnion contains all possible 3791 // properties and values from [BetaManagedAgentsAlwaysAllowPolicy], 3792 // [BetaManagedAgentsAlwaysAskPolicy]. 3793 // 3794 // Use the [BetaManagedAgentsWebFetchToolConfigPermissionPolicyUnion.AsAny] method 3795 // to switch on the variant. 3796 // 3797 // Use the methods beginning with 'As' to cast the union to one of its variants. 3798 type BetaManagedAgentsWebFetchToolConfigPermissionPolicyUnion struct { 3799 // Any of "always_allow", "always_ask". 3800 Type string `json:"type"` 3801 JSON struct { 3802 Type respjson.Field 3803 raw string 3804 } `json:"-"` 3805 } 3806 3807 // anyBetaManagedAgentsWebFetchToolConfigPermissionPolicy is implemented by each 3808 // variant of [BetaManagedAgentsWebFetchToolConfigPermissionPolicyUnion] to add 3809 // type safety for the return type of 3810 // [BetaManagedAgentsWebFetchToolConfigPermissionPolicyUnion.AsAny] 3811 type anyBetaManagedAgentsWebFetchToolConfigPermissionPolicy interface { 3812 implBetaManagedAgentsWebFetchToolConfigPermissionPolicyUnion() 3813 } 3814 3815 func (BetaManagedAgentsAlwaysAllowPolicy) implBetaManagedAgentsWebFetchToolConfigPermissionPolicyUnion() { 3816 } 3817 func (BetaManagedAgentsAlwaysAskPolicy) implBetaManagedAgentsWebFetchToolConfigPermissionPolicyUnion() { 3818 } 3819 3820 // Use the following switch statement to find the correct variant 3821 // 3822 // switch variant := BetaManagedAgentsWebFetchToolConfigPermissionPolicyUnion.AsAny().(type) { 3823 // case anthropic.BetaManagedAgentsAlwaysAllowPolicy: 3824 // case anthropic.BetaManagedAgentsAlwaysAskPolicy: 3825 // default: 3826 // fmt.Errorf("no variant present") 3827 // } 3828 func (u BetaManagedAgentsWebFetchToolConfigPermissionPolicyUnion) AsAny() anyBetaManagedAgentsWebFetchToolConfigPermissionPolicy { 3829 switch u.Type { 3830 case "always_allow": 3831 return u.AsAlwaysAllow() 3832 case "always_ask": 3833 return u.AsAlwaysAsk() 3834 } 3835 return nil 3836 } 3837 3838 func (u BetaManagedAgentsWebFetchToolConfigPermissionPolicyUnion) AsAlwaysAllow() (v BetaManagedAgentsAlwaysAllowPolicy) { 3839 apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v) 3840 return 3841 } 3842 3843 func (u BetaManagedAgentsWebFetchToolConfigPermissionPolicyUnion) AsAlwaysAsk() (v BetaManagedAgentsAlwaysAskPolicy) { 3844 apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v) 3845 return 3846 } 3847 3848 // Returns the unmodified JSON received from the API 3849 func (u BetaManagedAgentsWebFetchToolConfigPermissionPolicyUnion) RawJSON() string { return u.JSON.raw } 3850 3851 func (r *BetaManagedAgentsWebFetchToolConfigPermissionPolicyUnion) UnmarshalJSON(data []byte) error { 3852 return apijson.UnmarshalRoot(data, r) 3853 } 3854 3855 // Configuration override for the web_fetch tool. 3856 // 3857 // The property Name is required. 3858 type BetaManagedAgentsWebFetchToolConfigParams struct { 3859 // Whether this tool is enabled and available to Claude. Overrides the 3860 // default_config setting. 3861 Enabled param.Opt[bool] `json:"enabled,omitzero"` 3862 // Maximum number of tokens of fetched text content to include in context per call. 3863 // Does not apply to binary content such as PDFs. 3864 MaxContentTokens param.Opt[int64] `json:"max_content_tokens,omitzero"` 3865 // Permission policy for tool execution. 3866 PermissionPolicy BetaManagedAgentsWebFetchToolConfigParamsPermissionPolicyUnion `json:"permission_policy,omitzero"` 3867 // Only fetch URLs whose host is one of these domains or a subdomain of one. Each 3868 // entry is a plain hostname like "docs.example.com" (no scheme, port, or path). At 3869 // most 64 entries; an empty list is rejected (omit the field instead). Cannot be 3870 // combined with blocked_domains. 3871 AllowedDomains []string `json:"allowed_domains,omitzero"` 3872 // Never fetch URLs whose host is one of these domains or a subdomain of one. Each 3873 // entry is a plain hostname like "ads.example.com" (no scheme, port, or path). At 3874 // most 64 entries; an empty list is rejected (omit the field instead). Cannot be 3875 // combined with allowed_domains. 3876 BlockedDomains []string `json:"blocked_domains,omitzero"` 3877 // Any of "web_fetch". 3878 Type BetaManagedAgentsWebFetchToolConfigParamsType `json:"type,omitzero"` 3879 // Must be "web_fetch". 3880 // 3881 // This field can be elided, and will marshal its zero value as "web_fetch". 3882 Name constant.WebFetch `json:"name" default:"web_fetch"` 3883 paramObj 3884 } 3885 3886 func (r BetaManagedAgentsWebFetchToolConfigParams) MarshalJSON() (data []byte, err error) { 3887 type shadow BetaManagedAgentsWebFetchToolConfigParams 3888 return param.MarshalObject(r, (*shadow)(&r)) 3889 } 3890 func (r *BetaManagedAgentsWebFetchToolConfigParams) UnmarshalJSON(data []byte) error { 3891 return apijson.UnmarshalRoot(data, r) 3892 } 3893 3894 // Only one field can be non-zero. 3895 // 3896 // Use [param.IsOmitted] to confirm if a field is set. 3897 type BetaManagedAgentsWebFetchToolConfigParamsPermissionPolicyUnion struct { 3898 OfAlwaysAllow *BetaManagedAgentsAlwaysAllowPolicyParam `json:",omitzero,inline"` 3899 OfAlwaysAsk *BetaManagedAgentsAlwaysAskPolicyParam `json:",omitzero,inline"` 3900 paramUnion 3901 } 3902 3903 func (u BetaManagedAgentsWebFetchToolConfigParamsPermissionPolicyUnion) MarshalJSON() ([]byte, error) { 3904 return param.MarshalUnion(u, u.OfAlwaysAllow, u.OfAlwaysAsk) 3905 } 3906 func (u *BetaManagedAgentsWebFetchToolConfigParamsPermissionPolicyUnion) UnmarshalJSON(data []byte) error { 3907 return apijson.UnmarshalRoot(data, u) 3908 } 3909 3910 func (u *BetaManagedAgentsWebFetchToolConfigParamsPermissionPolicyUnion) asAny() any { 3911 if !param.IsOmitted(u.OfAlwaysAllow) { 3912 return u.OfAlwaysAllow 3913 } else if !param.IsOmitted(u.OfAlwaysAsk) { 3914 return u.OfAlwaysAsk 3915 } 3916 return nil 3917 } 3918 3919 // Returns a pointer to the underlying variant's property, if present. 3920 func (u BetaManagedAgentsWebFetchToolConfigParamsPermissionPolicyUnion) GetType() *string { 3921 if vt := u.OfAlwaysAllow; vt != nil { 3922 return (*string)(&vt.Type) 3923 } else if vt := u.OfAlwaysAsk; vt != nil { 3924 return (*string)(&vt.Type) 3925 } 3926 return nil 3927 } 3928 3929 func init() { 3930 apijson.RegisterUnion[BetaManagedAgentsWebFetchToolConfigParamsPermissionPolicyUnion]( 3931 "type", 3932 apijson.Discriminator[BetaManagedAgentsAlwaysAllowPolicyParam]("always_allow"), 3933 apijson.Discriminator[BetaManagedAgentsAlwaysAskPolicyParam]("always_ask"), 3934 ) 3935 } 3936 3937 type BetaManagedAgentsWebFetchToolConfigParamsType string 3938 3939 const ( 3940 BetaManagedAgentsWebFetchToolConfigParamsTypeWebFetch BetaManagedAgentsWebFetchToolConfigParamsType = "web_fetch" 3941 ) 3942 3943 // Configuration for the web_search tool. 3944 type BetaManagedAgentsWebSearchToolConfig struct { 3945 Enabled bool `json:"enabled" api:"required"` 3946 Name constant.WebSearch `json:"name" default:"web_search"` 3947 // Permission policy for tool execution. 3948 PermissionPolicy BetaManagedAgentsWebSearchToolConfigPermissionPolicyUnion `json:"permission_policy" api:"required"` 3949 Type constant.WebSearch `json:"type" default:"web_search"` 3950 AllowedDomains []string `json:"allowed_domains"` 3951 BlockedDomains []string `json:"blocked_domains"` 3952 // Approximate user location for search result localization. 3953 UserLocation BetaManagedAgentsUserLocation `json:"user_location" api:"nullable"` 3954 // JSON contains metadata for fields, check presence with [respjson.Field.Valid]. 3955 JSON struct { 3956 Enabled respjson.Field 3957 Name respjson.Field 3958 PermissionPolicy respjson.Field 3959 Type respjson.Field 3960 AllowedDomains respjson.Field 3961 BlockedDomains respjson.Field 3962 UserLocation respjson.Field 3963 ExtraFields map[string]respjson.Field 3964 raw string 3965 } `json:"-"` 3966 } 3967 3968 // Returns the unmodified JSON received from the API 3969 func (r BetaManagedAgentsWebSearchToolConfig) RawJSON() string { return r.JSON.raw } 3970 func (r *BetaManagedAgentsWebSearchToolConfig) UnmarshalJSON(data []byte) error { 3971 return apijson.UnmarshalRoot(data, r) 3972 } 3973 3974 // BetaManagedAgentsWebSearchToolConfigPermissionPolicyUnion contains all possible 3975 // properties and values from [BetaManagedAgentsAlwaysAllowPolicy], 3976 // [BetaManagedAgentsAlwaysAskPolicy]. 3977 // 3978 // Use the [BetaManagedAgentsWebSearchToolConfigPermissionPolicyUnion.AsAny] method 3979 // to switch on the variant. 3980 // 3981 // Use the methods beginning with 'As' to cast the union to one of its variants. 3982 type BetaManagedAgentsWebSearchToolConfigPermissionPolicyUnion struct { 3983 // Any of "always_allow", "always_ask". 3984 Type string `json:"type"` 3985 JSON struct { 3986 Type respjson.Field 3987 raw string 3988 } `json:"-"` 3989 } 3990 3991 // anyBetaManagedAgentsWebSearchToolConfigPermissionPolicy is implemented by each 3992 // variant of [BetaManagedAgentsWebSearchToolConfigPermissionPolicyUnion] to add 3993 // type safety for the return type of 3994 // [BetaManagedAgentsWebSearchToolConfigPermissionPolicyUnion.AsAny] 3995 type anyBetaManagedAgentsWebSearchToolConfigPermissionPolicy interface { 3996 implBetaManagedAgentsWebSearchToolConfigPermissionPolicyUnion() 3997 } 3998 3999 func (BetaManagedAgentsAlwaysAllowPolicy) implBetaManagedAgentsWebSearchToolConfigPermissionPolicyUnion() { 4000 } 4001 func (BetaManagedAgentsAlwaysAskPolicy) implBetaManagedAgentsWebSearchToolConfigPermissionPolicyUnion() { 4002 } 4003 4004 // Use the following switch statement to find the correct variant 4005 // 4006 // switch variant := BetaManagedAgentsWebSearchToolConfigPermissionPolicyUnion.AsAny().(type) { 4007 // case anthropic.BetaManagedAgentsAlwaysAllowPolicy: 4008 // case anthropic.BetaManagedAgentsAlwaysAskPolicy: 4009 // default: 4010 // fmt.Errorf("no variant present") 4011 // } 4012 func (u BetaManagedAgentsWebSearchToolConfigPermissionPolicyUnion) AsAny() anyBetaManagedAgentsWebSearchToolConfigPermissionPolicy { 4013 switch u.Type { 4014 case "always_allow": 4015 return u.AsAlwaysAllow() 4016 case "always_ask": 4017 return u.AsAlwaysAsk() 4018 } 4019 return nil 4020 } 4021 4022 func (u BetaManagedAgentsWebSearchToolConfigPermissionPolicyUnion) AsAlwaysAllow() (v BetaManagedAgentsAlwaysAllowPolicy) { 4023 apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v) 4024 return 4025 } 4026 4027 func (u BetaManagedAgentsWebSearchToolConfigPermissionPolicyUnion) AsAlwaysAsk() (v BetaManagedAgentsAlwaysAskPolicy) { 4028 apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v) 4029 return 4030 } 4031 4032 // Returns the unmodified JSON received from the API 4033 func (u BetaManagedAgentsWebSearchToolConfigPermissionPolicyUnion) RawJSON() string { 4034 return u.JSON.raw 4035 } 4036 4037 func (r *BetaManagedAgentsWebSearchToolConfigPermissionPolicyUnion) UnmarshalJSON(data []byte) error { 4038 return apijson.UnmarshalRoot(data, r) 4039 } 4040 4041 // Configuration override for the web_search tool. 4042 // 4043 // The property Name is required. 4044 type BetaManagedAgentsWebSearchToolConfigParams struct { 4045 // Whether this tool is enabled and available to Claude. Overrides the 4046 // default_config setting. 4047 Enabled param.Opt[bool] `json:"enabled,omitzero"` 4048 // Permission policy for tool execution. 4049 PermissionPolicy BetaManagedAgentsWebSearchToolConfigParamsPermissionPolicyUnion `json:"permission_policy,omitzero"` 4050 // Only return search results whose host is one of these domains or a subdomain of 4051 // one. Each entry is a plain hostname like "docs.example.com" (no scheme or port; 4052 // an optional path suffix is accepted). At most 64 entries; an empty list is 4053 // rejected (omit the field instead). Cannot be combined with blocked_domains. 4054 AllowedDomains []string `json:"allowed_domains,omitzero"` 4055 // Never return search results whose host is one of these domains or a subdomain of 4056 // one. Each entry is a plain hostname like "ads.example.com" (no scheme or port; 4057 // an optional path suffix is accepted). At most 64 entries; an empty list is 4058 // rejected (omit the field instead). Cannot be combined with allowed_domains. 4059 BlockedDomains []string `json:"blocked_domains,omitzero"` 4060 // Any of "web_search". 4061 Type BetaManagedAgentsWebSearchToolConfigParamsType `json:"type,omitzero"` 4062 // Approximate user location for search result localization. 4063 UserLocation BetaManagedAgentsUserLocationParam `json:"user_location,omitzero"` 4064 // Must be "web_search". 4065 // 4066 // This field can be elided, and will marshal its zero value as "web_search". 4067 Name constant.WebSearch `json:"name" default:"web_search"` 4068 paramObj 4069 } 4070 4071 func (r BetaManagedAgentsWebSearchToolConfigParams) MarshalJSON() (data []byte, err error) { 4072 type shadow BetaManagedAgentsWebSearchToolConfigParams 4073 return param.MarshalObject(r, (*shadow)(&r)) 4074 } 4075 func (r *BetaManagedAgentsWebSearchToolConfigParams) UnmarshalJSON(data []byte) error { 4076 return apijson.UnmarshalRoot(data, r) 4077 } 4078 4079 // Only one field can be non-zero. 4080 // 4081 // Use [param.IsOmitted] to confirm if a field is set. 4082 type BetaManagedAgentsWebSearchToolConfigParamsPermissionPolicyUnion struct { 4083 OfAlwaysAllow *BetaManagedAgentsAlwaysAllowPolicyParam `json:",omitzero,inline"` 4084 OfAlwaysAsk *BetaManagedAgentsAlwaysAskPolicyParam `json:",omitzero,inline"` 4085 paramUnion 4086 } 4087 4088 func (u BetaManagedAgentsWebSearchToolConfigParamsPermissionPolicyUnion) MarshalJSON() ([]byte, error) { 4089 return param.MarshalUnion(u, u.OfAlwaysAllow, u.OfAlwaysAsk) 4090 } 4091 func (u *BetaManagedAgentsWebSearchToolConfigParamsPermissionPolicyUnion) UnmarshalJSON(data []byte) error { 4092 return apijson.UnmarshalRoot(data, u) 4093 } 4094 4095 func (u *BetaManagedAgentsWebSearchToolConfigParamsPermissionPolicyUnion) asAny() any { 4096 if !param.IsOmitted(u.OfAlwaysAllow) { 4097 return u.OfAlwaysAllow 4098 } else if !param.IsOmitted(u.OfAlwaysAsk) { 4099 return u.OfAlwaysAsk 4100 } 4101 return nil 4102 } 4103 4104 // Returns a pointer to the underlying variant's property, if present. 4105 func (u BetaManagedAgentsWebSearchToolConfigParamsPermissionPolicyUnion) GetType() *string { 4106 if vt := u.OfAlwaysAllow; vt != nil { 4107 return (*string)(&vt.Type) 4108 } else if vt := u.OfAlwaysAsk; vt != nil { 4109 return (*string)(&vt.Type) 4110 } 4111 return nil 4112 } 4113 4114 func init() { 4115 apijson.RegisterUnion[BetaManagedAgentsWebSearchToolConfigParamsPermissionPolicyUnion]( 4116 "type", 4117 apijson.Discriminator[BetaManagedAgentsAlwaysAllowPolicyParam]("always_allow"), 4118 apijson.Discriminator[BetaManagedAgentsAlwaysAskPolicyParam]("always_ask"), 4119 ) 4120 } 4121 4122 type BetaManagedAgentsWebSearchToolConfigParamsType string 4123 4124 const ( 4125 BetaManagedAgentsWebSearchToolConfigParamsTypeWebSearch BetaManagedAgentsWebSearchToolConfigParamsType = "web_search" 4126 ) 4127 4128 // Configuration for the write tool. 4129 type BetaManagedAgentsWriteToolConfig struct { 4130 Enabled bool `json:"enabled" api:"required"` 4131 Name constant.Write `json:"name" default:"write"` 4132 // Permission policy for tool execution. 4133 PermissionPolicy BetaManagedAgentsWriteToolConfigPermissionPolicyUnion `json:"permission_policy" api:"required"` 4134 Type constant.Write `json:"type" default:"write"` 4135 // JSON contains metadata for fields, check presence with [respjson.Field.Valid]. 4136 JSON struct { 4137 Enabled respjson.Field 4138 Name respjson.Field 4139 PermissionPolicy respjson.Field 4140 Type respjson.Field 4141 ExtraFields map[string]respjson.Field 4142 raw string 4143 } `json:"-"` 4144 } 4145 4146 // Returns the unmodified JSON received from the API 4147 func (r BetaManagedAgentsWriteToolConfig) RawJSON() string { return r.JSON.raw } 4148 func (r *BetaManagedAgentsWriteToolConfig) UnmarshalJSON(data []byte) error { 4149 return apijson.UnmarshalRoot(data, r) 4150 } 4151 4152 // BetaManagedAgentsWriteToolConfigPermissionPolicyUnion contains all possible 4153 // properties and values from [BetaManagedAgentsAlwaysAllowPolicy], 4154 // [BetaManagedAgentsAlwaysAskPolicy]. 4155 // 4156 // Use the [BetaManagedAgentsWriteToolConfigPermissionPolicyUnion.AsAny] method to 4157 // switch on the variant. 4158 // 4159 // Use the methods beginning with 'As' to cast the union to one of its variants. 4160 type BetaManagedAgentsWriteToolConfigPermissionPolicyUnion struct { 4161 // Any of "always_allow", "always_ask". 4162 Type string `json:"type"` 4163 JSON struct { 4164 Type respjson.Field 4165 raw string 4166 } `json:"-"` 4167 } 4168 4169 // anyBetaManagedAgentsWriteToolConfigPermissionPolicy is implemented by each 4170 // variant of [BetaManagedAgentsWriteToolConfigPermissionPolicyUnion] to add type 4171 // safety for the return type of 4172 // [BetaManagedAgentsWriteToolConfigPermissionPolicyUnion.AsAny] 4173 type anyBetaManagedAgentsWriteToolConfigPermissionPolicy interface { 4174 implBetaManagedAgentsWriteToolConfigPermissionPolicyUnion() 4175 } 4176 4177 func (BetaManagedAgentsAlwaysAllowPolicy) implBetaManagedAgentsWriteToolConfigPermissionPolicyUnion() { 4178 } 4179 func (BetaManagedAgentsAlwaysAskPolicy) implBetaManagedAgentsWriteToolConfigPermissionPolicyUnion() {} 4180 4181 // Use the following switch statement to find the correct variant 4182 // 4183 // switch variant := BetaManagedAgentsWriteToolConfigPermissionPolicyUnion.AsAny().(type) { 4184 // case anthropic.BetaManagedAgentsAlwaysAllowPolicy: 4185 // case anthropic.BetaManagedAgentsAlwaysAskPolicy: 4186 // default: 4187 // fmt.Errorf("no variant present") 4188 // } 4189 func (u BetaManagedAgentsWriteToolConfigPermissionPolicyUnion) AsAny() anyBetaManagedAgentsWriteToolConfigPermissionPolicy { 4190 switch u.Type { 4191 case "always_allow": 4192 return u.AsAlwaysAllow() 4193 case "always_ask": 4194 return u.AsAlwaysAsk() 4195 } 4196 return nil 4197 } 4198 4199 func (u BetaManagedAgentsWriteToolConfigPermissionPolicyUnion) AsAlwaysAllow() (v BetaManagedAgentsAlwaysAllowPolicy) { 4200 apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v) 4201 return 4202 } 4203 4204 func (u BetaManagedAgentsWriteToolConfigPermissionPolicyUnion) AsAlwaysAsk() (v BetaManagedAgentsAlwaysAskPolicy) { 4205 apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v) 4206 return 4207 } 4208 4209 // Returns the unmodified JSON received from the API 4210 func (u BetaManagedAgentsWriteToolConfigPermissionPolicyUnion) RawJSON() string { return u.JSON.raw } 4211 4212 func (r *BetaManagedAgentsWriteToolConfigPermissionPolicyUnion) UnmarshalJSON(data []byte) error { 4213 return apijson.UnmarshalRoot(data, r) 4214 } 4215 4216 // Configuration override for the write tool. 4217 // 4218 // The property Name is required. 4219 type BetaManagedAgentsWriteToolConfigParams struct { 4220 // Whether this tool is enabled and available to Claude. Overrides the 4221 // default_config setting. 4222 Enabled param.Opt[bool] `json:"enabled,omitzero"` 4223 // Permission policy for tool execution. 4224 PermissionPolicy BetaManagedAgentsWriteToolConfigParamsPermissionPolicyUnion `json:"permission_policy,omitzero"` 4225 // Any of "write". 4226 Type BetaManagedAgentsWriteToolConfigParamsType `json:"type,omitzero"` 4227 // Must be "write". 4228 // 4229 // This field can be elided, and will marshal its zero value as "write". 4230 Name constant.Write `json:"name" default:"write"` 4231 paramObj 4232 } 4233 4234 func (r BetaManagedAgentsWriteToolConfigParams) MarshalJSON() (data []byte, err error) { 4235 type shadow BetaManagedAgentsWriteToolConfigParams 4236 return param.MarshalObject(r, (*shadow)(&r)) 4237 } 4238 func (r *BetaManagedAgentsWriteToolConfigParams) UnmarshalJSON(data []byte) error { 4239 return apijson.UnmarshalRoot(data, r) 4240 } 4241 4242 // Only one field can be non-zero. 4243 // 4244 // Use [param.IsOmitted] to confirm if a field is set. 4245 type BetaManagedAgentsWriteToolConfigParamsPermissionPolicyUnion struct { 4246 OfAlwaysAllow *BetaManagedAgentsAlwaysAllowPolicyParam `json:",omitzero,inline"` 4247 OfAlwaysAsk *BetaManagedAgentsAlwaysAskPolicyParam `json:",omitzero,inline"` 4248 paramUnion 4249 } 4250 4251 func (u BetaManagedAgentsWriteToolConfigParamsPermissionPolicyUnion) MarshalJSON() ([]byte, error) { 4252 return param.MarshalUnion(u, u.OfAlwaysAllow, u.OfAlwaysAsk) 4253 } 4254 func (u *BetaManagedAgentsWriteToolConfigParamsPermissionPolicyUnion) UnmarshalJSON(data []byte) error { 4255 return apijson.UnmarshalRoot(data, u) 4256 } 4257 4258 func (u *BetaManagedAgentsWriteToolConfigParamsPermissionPolicyUnion) asAny() any { 4259 if !param.IsOmitted(u.OfAlwaysAllow) { 4260 return u.OfAlwaysAllow 4261 } else if !param.IsOmitted(u.OfAlwaysAsk) { 4262 return u.OfAlwaysAsk 4263 } 4264 return nil 4265 } 4266 4267 // Returns a pointer to the underlying variant's property, if present. 4268 func (u BetaManagedAgentsWriteToolConfigParamsPermissionPolicyUnion) GetType() *string { 4269 if vt := u.OfAlwaysAllow; vt != nil { 4270 return (*string)(&vt.Type) 4271 } else if vt := u.OfAlwaysAsk; vt != nil { 4272 return (*string)(&vt.Type) 4273 } 4274 return nil 4275 } 4276 4277 func init() { 4278 apijson.RegisterUnion[BetaManagedAgentsWriteToolConfigParamsPermissionPolicyUnion]( 4279 "type", 4280 apijson.Discriminator[BetaManagedAgentsAlwaysAllowPolicyParam]("always_allow"), 4281 apijson.Discriminator[BetaManagedAgentsAlwaysAskPolicyParam]("always_ask"), 4282 ) 4283 } 4284 4285 type BetaManagedAgentsWriteToolConfigParamsType string 4286 4287 const ( 4288 BetaManagedAgentsWriteToolConfigParamsTypeWrite BetaManagedAgentsWriteToolConfigParamsType = "write" 4289 ) 4290 4291 type BetaAgentNewParams struct { 4292 // Model identifier. Accepts the 4293 // [model string](https://platform.claude.com/docs/en/about-claude/models/overview#latest-models-comparison), 4294 // e.g. `claude-opus-5`, or a `model_config` object for additional configuration 4295 // control 4296 Model BetaManagedAgentsModelConfigParams `json:"model,omitzero" api:"required"` 4297 // Human-readable name for the agent. 4298 Name string `json:"name" api:"required"` 4299 // Description of what the agent does. 4300 Description param.Opt[string] `json:"description,omitzero"` 4301 // System prompt for the agent. 4302 System param.Opt[string] `json:"system,omitzero"` 4303 WorkspaceID param.Opt[string] `header:"anthropic-workspace-id,omitzero" json:"-"` 4304 // MCP servers this agent connects to. Maximum 20. Names must be unique within the 4305 // array. Every server must be referenced by an `mcp_toolset` in `tools`; 4306 // unreferenced servers are rejected. See the 4307 // [MCP connector guide](https://platform.claude.com/docs/en/managed-agents/mcp-connector). 4308 MCPServers []BetaManagedAgentsURLMCPServerParams `json:"mcp_servers,omitzero"` 4309 // Arbitrary key-value metadata. Maximum 16 pairs, keys up to 64 chars, values up 4310 // to 512 chars. 4311 Metadata map[string]string `json:"metadata,omitzero"` 4312 // A coordinator topology: the session's primary thread orchestrates work by 4313 // spawning session threads, each running an agent drawn from the `agents` roster. 4314 Multiagent BetaManagedAgentsMultiagentParams `json:"multiagent,omitzero"` 4315 // Skills available to the agent. 4316 Skills []BetaManagedAgentsSkillParamsUnion `json:"skills,omitzero"` 4317 // Tool configurations available to the agent. Maximum of 128 tools across all 4318 // toolsets allowed. 4319 Tools []BetaAgentNewParamsToolUnion `json:"tools,omitzero"` 4320 // Optional header to specify the beta version(s) you want to use. 4321 Betas []AnthropicBeta `header:"anthropic-beta,omitzero" json:"-"` 4322 paramObj 4323 } 4324 4325 func (r BetaAgentNewParams) MarshalJSON() (data []byte, err error) { 4326 type shadow BetaAgentNewParams 4327 return param.MarshalObject(r, (*shadow)(&r)) 4328 } 4329 func (r *BetaAgentNewParams) UnmarshalJSON(data []byte) error { 4330 return apijson.UnmarshalRoot(data, r) 4331 } 4332 4333 // Only one field can be non-zero. 4334 // 4335 // Use [param.IsOmitted] to confirm if a field is set. 4336 type BetaAgentNewParamsToolUnion struct { 4337 OfAgentToolset20260401 *BetaManagedAgentsAgentToolset20260401Params `json:",omitzero,inline"` 4338 OfMCPToolset *BetaManagedAgentsMCPToolsetParams `json:",omitzero,inline"` 4339 OfCustom *BetaManagedAgentsCustomToolParams `json:",omitzero,inline"` 4340 paramUnion 4341 } 4342 4343 func (u BetaAgentNewParamsToolUnion) MarshalJSON() ([]byte, error) { 4344 return param.MarshalUnion(u, u.OfAgentToolset20260401, u.OfMCPToolset, u.OfCustom) 4345 } 4346 func (u *BetaAgentNewParamsToolUnion) UnmarshalJSON(data []byte) error { 4347 return apijson.UnmarshalRoot(data, u) 4348 } 4349 4350 func (u *BetaAgentNewParamsToolUnion) asAny() any { 4351 if !param.IsOmitted(u.OfAgentToolset20260401) { 4352 return u.OfAgentToolset20260401 4353 } else if !param.IsOmitted(u.OfMCPToolset) { 4354 return u.OfMCPToolset 4355 } else if !param.IsOmitted(u.OfCustom) { 4356 return u.OfCustom 4357 } 4358 return nil 4359 } 4360 4361 // Returns a pointer to the underlying variant's property, if present. 4362 func (u BetaAgentNewParamsToolUnion) GetMCPServerName() *string { 4363 if vt := u.OfMCPToolset; vt != nil { 4364 return &vt.MCPServerName 4365 } 4366 return nil 4367 } 4368 4369 // Returns a pointer to the underlying variant's property, if present. 4370 func (u BetaAgentNewParamsToolUnion) GetDescription() *string { 4371 if vt := u.OfCustom; vt != nil { 4372 return &vt.Description 4373 } 4374 return nil 4375 } 4376 4377 // Returns a pointer to the underlying variant's property, if present. 4378 func (u BetaAgentNewParamsToolUnion) GetInputSchema() *BetaManagedAgentsCustomToolInputSchemaParam { 4379 if vt := u.OfCustom; vt != nil { 4380 return &vt.InputSchema 4381 } 4382 return nil 4383 } 4384 4385 // Returns a pointer to the underlying variant's property, if present. 4386 func (u BetaAgentNewParamsToolUnion) GetName() *string { 4387 if vt := u.OfCustom; vt != nil { 4388 return &vt.Name 4389 } 4390 return nil 4391 } 4392 4393 // Returns a pointer to the underlying variant's property, if present. 4394 func (u BetaAgentNewParamsToolUnion) GetType() *string { 4395 if vt := u.OfAgentToolset20260401; vt != nil { 4396 return (*string)(&vt.Type) 4397 } else if vt := u.OfMCPToolset; vt != nil { 4398 return (*string)(&vt.Type) 4399 } else if vt := u.OfCustom; vt != nil { 4400 return (*string)(&vt.Type) 4401 } 4402 return nil 4403 } 4404 4405 // Returns a subunion which exports methods to access subproperties 4406 // 4407 // Or use AsAny() to get the underlying value 4408 func (u BetaAgentNewParamsToolUnion) GetConfigs() (res betaAgentNewParamsToolUnionConfigs) { 4409 if vt := u.OfAgentToolset20260401; vt != nil { 4410 res.any = &vt.Configs 4411 } else if vt := u.OfMCPToolset; vt != nil { 4412 res.any = &vt.Configs 4413 } 4414 return 4415 } 4416 4417 // Can have the runtime types [_[]BetaManagedAgentsAgentToolConfigParamsUnion], 4418 // [_[]BetaManagedAgentsMCPToolConfigParams] 4419 type betaAgentNewParamsToolUnionConfigs struct{ any } 4420 4421 // Use the following switch statement to get the type of the union: 4422 // 4423 // switch u.AsAny().(type) { 4424 // case *[]anthropic.BetaManagedAgentsAgentToolConfigParamsUnion: 4425 // case *[]anthropic.BetaManagedAgentsMCPToolConfigParams: 4426 // default: 4427 // fmt.Errorf("not present") 4428 // } 4429 func (u betaAgentNewParamsToolUnionConfigs) AsAny() any { return u.any } 4430 4431 // Returns a subunion which exports methods to access subproperties 4432 // 4433 // Or use AsAny() to get the underlying value 4434 func (u BetaAgentNewParamsToolUnion) GetDefaultConfig() (res betaAgentNewParamsToolUnionDefaultConfig) { 4435 if vt := u.OfAgentToolset20260401; vt != nil { 4436 res.any = &vt.DefaultConfig 4437 } else if vt := u.OfMCPToolset; vt != nil { 4438 res.any = &vt.DefaultConfig 4439 } 4440 return 4441 } 4442 4443 // Can have the runtime types [*BetaManagedAgentsAgentToolsetDefaultConfigParams], 4444 // [*BetaManagedAgentsMCPToolsetDefaultConfigParams] 4445 type betaAgentNewParamsToolUnionDefaultConfig struct{ any } 4446 4447 // Use the following switch statement to get the type of the union: 4448 // 4449 // switch u.AsAny().(type) { 4450 // case *anthropic.BetaManagedAgentsAgentToolsetDefaultConfigParams: 4451 // case *anthropic.BetaManagedAgentsMCPToolsetDefaultConfigParams: 4452 // default: 4453 // fmt.Errorf("not present") 4454 // } 4455 func (u betaAgentNewParamsToolUnionDefaultConfig) AsAny() any { return u.any } 4456 4457 // Returns a pointer to the underlying variant's property, if present. 4458 func (u betaAgentNewParamsToolUnionDefaultConfig) GetEnabled() *bool { 4459 switch vt := u.any.(type) { 4460 case *BetaManagedAgentsAgentToolsetDefaultConfigParams: 4461 return paramutil.AddrIfPresent(vt.Enabled) 4462 case *BetaManagedAgentsMCPToolsetDefaultConfigParams: 4463 return paramutil.AddrIfPresent(vt.Enabled) 4464 } 4465 return nil 4466 } 4467 4468 // Returns a subunion which exports methods to access subproperties 4469 // 4470 // Or use AsAny() to get the underlying value 4471 func (u betaAgentNewParamsToolUnionDefaultConfig) GetPermissionPolicy() (res betaAgentNewParamsToolUnionDefaultConfigPermissionPolicy) { 4472 switch vt := u.any.(type) { 4473 case *BetaManagedAgentsAgentToolsetDefaultConfigParams: 4474 res.any = vt.PermissionPolicy 4475 case *BetaManagedAgentsMCPToolsetDefaultConfigParams: 4476 res.any = vt.PermissionPolicy 4477 } 4478 return res 4479 } 4480 4481 // Can have the runtime types [*BetaManagedAgentsAlwaysAllowPolicyParam], 4482 // [*BetaManagedAgentsAlwaysAskPolicyParam] 4483 type betaAgentNewParamsToolUnionDefaultConfigPermissionPolicy struct{ any } 4484 4485 // Use the following switch statement to get the type of the union: 4486 // 4487 // switch u.AsAny().(type) { 4488 // case *anthropic.BetaManagedAgentsAlwaysAllowPolicyParam: 4489 // case *anthropic.BetaManagedAgentsAlwaysAskPolicyParam: 4490 // default: 4491 // fmt.Errorf("not present") 4492 // } 4493 func (u betaAgentNewParamsToolUnionDefaultConfigPermissionPolicy) AsAny() any { return u.any } 4494 4495 // Returns a pointer to the underlying variant's property, if present. 4496 func (u betaAgentNewParamsToolUnionDefaultConfigPermissionPolicy) GetType() *string { 4497 switch vt := u.any.(type) { 4498 case *BetaManagedAgentsAgentToolsetDefaultConfigParamsPermissionPolicyUnion: 4499 return vt.GetType() 4500 case *BetaManagedAgentsMCPToolsetDefaultConfigParamsPermissionPolicyUnion: 4501 return vt.GetType() 4502 } 4503 return nil 4504 } 4505 4506 func init() { 4507 apijson.RegisterUnion[BetaAgentNewParamsToolUnion]( 4508 "type", 4509 apijson.Discriminator[BetaManagedAgentsAgentToolset20260401Params]("agent_toolset_20260401"), 4510 apijson.Discriminator[BetaManagedAgentsMCPToolsetParams]("mcp_toolset"), 4511 apijson.Discriminator[BetaManagedAgentsCustomToolParams]("custom"), 4512 ) 4513 } 4514 4515 type BetaAgentGetParams struct { 4516 // Agent version. Omit for the most recent version. Must be at least 1 if 4517 // specified. 4518 Version param.Opt[int64] `query:"version,omitzero" json:"-"` 4519 WorkspaceID param.Opt[string] `header:"anthropic-workspace-id,omitzero" json:"-"` 4520 // Optional header to specify the beta version(s) you want to use. 4521 Betas []AnthropicBeta `header:"anthropic-beta,omitzero" json:"-"` 4522 paramObj 4523 } 4524 4525 // URLQuery serializes [BetaAgentGetParams]'s query parameters as `url.Values`. 4526 func (r BetaAgentGetParams) URLQuery() (v url.Values, err error) { 4527 return apiquery.MarshalWithSettings(r, apiquery.QuerySettings{ 4528 ArrayFormat: apiquery.ArrayQueryFormatBrackets, 4529 NestedFormat: apiquery.NestedQueryFormatBrackets, 4530 }) 4531 } 4532 4533 type BetaAgentUpdateParams struct { 4534 // Description. Omit to preserve; send empty string or null to clear. 4535 Description param.Opt[string] `json:"description,omitzero"` 4536 // System prompt. Omit to preserve; send empty string or null to clear. 4537 System param.Opt[string] `json:"system,omitzero"` 4538 // Human-readable name. Must be non-empty. Omit to preserve. Cannot be cleared. 4539 Name param.Opt[string] `json:"name,omitzero"` 4540 // The agent's current version, used to prevent concurrent overwrites. Obtain this 4541 // value from a create or retrieve response. Must be at least 1 if specified. When 4542 // supplied, the request fails if it does not match the server's current version; 4543 // omit to apply the update unconditionally. 4544 Version param.Opt[int64] `json:"version,omitzero"` 4545 WorkspaceID param.Opt[string] `header:"anthropic-workspace-id,omitzero" json:"-"` 4546 // MCP servers. Full replacement. Omit to preserve; send empty array or `null` to 4547 // clear. Names must be unique. Maximum 20. Every server must be referenced by an 4548 // `mcp_toolset` in the agent's resulting `tools`; unreferenced servers are 4549 // rejected. See the 4550 // [MCP connector guide](https://platform.claude.com/docs/en/managed-agents/mcp-connector). 4551 MCPServers []BetaManagedAgentsURLMCPServerParams `json:"mcp_servers,omitzero"` 4552 // Metadata patch. Set a key to a string to upsert it, or to null to delete it. 4553 // Omit the field to preserve. The stored bag is limited to 16 keys (up to 64 chars 4554 // each) with values up to 512 chars. 4555 Metadata map[string]string `json:"metadata,omitzero"` 4556 // Skills. Full replacement. Omit to preserve; send empty array or null to clear. 4557 Skills []BetaManagedAgentsSkillParamsUnion `json:"skills,omitzero"` 4558 // Tool configurations available to the agent. Full replacement. Omit to preserve; 4559 // send empty array or null to clear. Maximum of 128 tools across all toolsets 4560 // allowed. 4561 Tools []BetaAgentUpdateParamsToolUnion `json:"tools,omitzero"` 4562 // Model identifier. Accepts the 4563 // [model string](https://platform.claude.com/docs/en/about-claude/models/overview#latest-models-comparison), 4564 // e.g. `claude-opus-5`, or a `model_config` object for additional configuration 4565 // control. Omit to preserve. Cannot be cleared. 4566 Model BetaManagedAgentsModelConfigParams `json:"model,omitzero"` 4567 // A coordinator topology: the session's primary thread orchestrates work by 4568 // spawning session threads, each running an agent drawn from the `agents` roster. 4569 Multiagent BetaManagedAgentsMultiagentParams `json:"multiagent,omitzero"` 4570 // Optional header to specify the beta version(s) you want to use. 4571 Betas []AnthropicBeta `header:"anthropic-beta,omitzero" json:"-"` 4572 paramObj 4573 } 4574 4575 func (r BetaAgentUpdateParams) MarshalJSON() (data []byte, err error) { 4576 type shadow BetaAgentUpdateParams 4577 return param.MarshalObject(r, (*shadow)(&r)) 4578 } 4579 func (r *BetaAgentUpdateParams) UnmarshalJSON(data []byte) error { 4580 return apijson.UnmarshalRoot(data, r) 4581 } 4582 4583 // Only one field can be non-zero. 4584 // 4585 // Use [param.IsOmitted] to confirm if a field is set. 4586 type BetaAgentUpdateParamsToolUnion struct { 4587 OfAgentToolset20260401 *BetaManagedAgentsAgentToolset20260401Params `json:",omitzero,inline"` 4588 OfMCPToolset *BetaManagedAgentsMCPToolsetParams `json:",omitzero,inline"` 4589 OfCustom *BetaManagedAgentsCustomToolParams `json:",omitzero,inline"` 4590 paramUnion 4591 } 4592 4593 func (u BetaAgentUpdateParamsToolUnion) MarshalJSON() ([]byte, error) { 4594 return param.MarshalUnion(u, u.OfAgentToolset20260401, u.OfMCPToolset, u.OfCustom) 4595 } 4596 func (u *BetaAgentUpdateParamsToolUnion) UnmarshalJSON(data []byte) error { 4597 return apijson.UnmarshalRoot(data, u) 4598 } 4599 4600 func (u *BetaAgentUpdateParamsToolUnion) asAny() any { 4601 if !param.IsOmitted(u.OfAgentToolset20260401) { 4602 return u.OfAgentToolset20260401 4603 } else if !param.IsOmitted(u.OfMCPToolset) { 4604 return u.OfMCPToolset 4605 } else if !param.IsOmitted(u.OfCustom) { 4606 return u.OfCustom 4607 } 4608 return nil 4609 } 4610 4611 // Returns a pointer to the underlying variant's property, if present. 4612 func (u BetaAgentUpdateParamsToolUnion) GetMCPServerName() *string { 4613 if vt := u.OfMCPToolset; vt != nil { 4614 return &vt.MCPServerName 4615 } 4616 return nil 4617 } 4618 4619 // Returns a pointer to the underlying variant's property, if present. 4620 func (u BetaAgentUpdateParamsToolUnion) GetDescription() *string { 4621 if vt := u.OfCustom; vt != nil { 4622 return &vt.Description 4623 } 4624 return nil 4625 } 4626 4627 // Returns a pointer to the underlying variant's property, if present. 4628 func (u BetaAgentUpdateParamsToolUnion) GetInputSchema() *BetaManagedAgentsCustomToolInputSchemaParam { 4629 if vt := u.OfCustom; vt != nil { 4630 return &vt.InputSchema 4631 } 4632 return nil 4633 } 4634 4635 // Returns a pointer to the underlying variant's property, if present. 4636 func (u BetaAgentUpdateParamsToolUnion) GetName() *string { 4637 if vt := u.OfCustom; vt != nil { 4638 return &vt.Name 4639 } 4640 return nil 4641 } 4642 4643 // Returns a pointer to the underlying variant's property, if present. 4644 func (u BetaAgentUpdateParamsToolUnion) GetType() *string { 4645 if vt := u.OfAgentToolset20260401; vt != nil { 4646 return (*string)(&vt.Type) 4647 } else if vt := u.OfMCPToolset; vt != nil { 4648 return (*string)(&vt.Type) 4649 } else if vt := u.OfCustom; vt != nil { 4650 return (*string)(&vt.Type) 4651 } 4652 return nil 4653 } 4654 4655 // Returns a subunion which exports methods to access subproperties 4656 // 4657 // Or use AsAny() to get the underlying value 4658 func (u BetaAgentUpdateParamsToolUnion) GetConfigs() (res betaAgentUpdateParamsToolUnionConfigs) { 4659 if vt := u.OfAgentToolset20260401; vt != nil { 4660 res.any = &vt.Configs 4661 } else if vt := u.OfMCPToolset; vt != nil { 4662 res.any = &vt.Configs 4663 } 4664 return 4665 } 4666 4667 // Can have the runtime types [_[]BetaManagedAgentsAgentToolConfigParamsUnion], 4668 // [_[]BetaManagedAgentsMCPToolConfigParams] 4669 type betaAgentUpdateParamsToolUnionConfigs struct{ any } 4670 4671 // Use the following switch statement to get the type of the union: 4672 // 4673 // switch u.AsAny().(type) { 4674 // case *[]anthropic.BetaManagedAgentsAgentToolConfigParamsUnion: 4675 // case *[]anthropic.BetaManagedAgentsMCPToolConfigParams: 4676 // default: 4677 // fmt.Errorf("not present") 4678 // } 4679 func (u betaAgentUpdateParamsToolUnionConfigs) AsAny() any { return u.any } 4680 4681 // Returns a subunion which exports methods to access subproperties 4682 // 4683 // Or use AsAny() to get the underlying value 4684 func (u BetaAgentUpdateParamsToolUnion) GetDefaultConfig() (res betaAgentUpdateParamsToolUnionDefaultConfig) { 4685 if vt := u.OfAgentToolset20260401; vt != nil { 4686 res.any = &vt.DefaultConfig 4687 } else if vt := u.OfMCPToolset; vt != nil { 4688 res.any = &vt.DefaultConfig 4689 } 4690 return 4691 } 4692 4693 // Can have the runtime types [*BetaManagedAgentsAgentToolsetDefaultConfigParams], 4694 // [*BetaManagedAgentsMCPToolsetDefaultConfigParams] 4695 type betaAgentUpdateParamsToolUnionDefaultConfig struct{ any } 4696 4697 // Use the following switch statement to get the type of the union: 4698 // 4699 // switch u.AsAny().(type) { 4700 // case *anthropic.BetaManagedAgentsAgentToolsetDefaultConfigParams: 4701 // case *anthropic.BetaManagedAgentsMCPToolsetDefaultConfigParams: 4702 // default: 4703 // fmt.Errorf("not present") 4704 // } 4705 func (u betaAgentUpdateParamsToolUnionDefaultConfig) AsAny() any { return u.any } 4706 4707 // Returns a pointer to the underlying variant's property, if present. 4708 func (u betaAgentUpdateParamsToolUnionDefaultConfig) GetEnabled() *bool { 4709 switch vt := u.any.(type) { 4710 case *BetaManagedAgentsAgentToolsetDefaultConfigParams: 4711 return paramutil.AddrIfPresent(vt.Enabled) 4712 case *BetaManagedAgentsMCPToolsetDefaultConfigParams: 4713 return paramutil.AddrIfPresent(vt.Enabled) 4714 } 4715 return nil 4716 } 4717 4718 // Returns a subunion which exports methods to access subproperties 4719 // 4720 // Or use AsAny() to get the underlying value 4721 func (u betaAgentUpdateParamsToolUnionDefaultConfig) GetPermissionPolicy() (res betaAgentUpdateParamsToolUnionDefaultConfigPermissionPolicy) { 4722 switch vt := u.any.(type) { 4723 case *BetaManagedAgentsAgentToolsetDefaultConfigParams: 4724 res.any = vt.PermissionPolicy 4725 case *BetaManagedAgentsMCPToolsetDefaultConfigParams: 4726 res.any = vt.PermissionPolicy 4727 } 4728 return res 4729 } 4730 4731 // Can have the runtime types [*BetaManagedAgentsAlwaysAllowPolicyParam], 4732 // [*BetaManagedAgentsAlwaysAskPolicyParam] 4733 type betaAgentUpdateParamsToolUnionDefaultConfigPermissionPolicy struct{ any } 4734 4735 // Use the following switch statement to get the type of the union: 4736 // 4737 // switch u.AsAny().(type) { 4738 // case *anthropic.BetaManagedAgentsAlwaysAllowPolicyParam: 4739 // case *anthropic.BetaManagedAgentsAlwaysAskPolicyParam: 4740 // default: 4741 // fmt.Errorf("not present") 4742 // } 4743 func (u betaAgentUpdateParamsToolUnionDefaultConfigPermissionPolicy) AsAny() any { return u.any } 4744 4745 // Returns a pointer to the underlying variant's property, if present. 4746 func (u betaAgentUpdateParamsToolUnionDefaultConfigPermissionPolicy) GetType() *string { 4747 switch vt := u.any.(type) { 4748 case *BetaManagedAgentsAgentToolsetDefaultConfigParamsPermissionPolicyUnion: 4749 return vt.GetType() 4750 case *BetaManagedAgentsMCPToolsetDefaultConfigParamsPermissionPolicyUnion: 4751 return vt.GetType() 4752 } 4753 return nil 4754 } 4755 4756 func init() { 4757 apijson.RegisterUnion[BetaAgentUpdateParamsToolUnion]( 4758 "type", 4759 apijson.Discriminator[BetaManagedAgentsAgentToolset20260401Params]("agent_toolset_20260401"), 4760 apijson.Discriminator[BetaManagedAgentsMCPToolsetParams]("mcp_toolset"), 4761 apijson.Discriminator[BetaManagedAgentsCustomToolParams]("custom"), 4762 ) 4763 } 4764 4765 type BetaAgentListParams struct { 4766 // Return agents created at or after this time (inclusive). 4767 CreatedAtGte param.Opt[time.Time] `query:"created_at[gte],omitzero" format:"date-time" json:"-"` 4768 // Return agents created at or before this time (inclusive). 4769 CreatedAtLte param.Opt[time.Time] `query:"created_at[lte],omitzero" format:"date-time" json:"-"` 4770 // Include archived agents in results. Defaults to false. 4771 IncludeArchived param.Opt[bool] `query:"include_archived,omitzero" json:"-"` 4772 // Maximum results per page. Default 20, maximum 100. 4773 Limit param.Opt[int64] `query:"limit,omitzero" json:"-"` 4774 // Opaque pagination cursor from a previous response. 4775 Page param.Opt[string] `query:"page,omitzero" json:"-"` 4776 WorkspaceID param.Opt[string] `header:"anthropic-workspace-id,omitzero" json:"-"` 4777 // Optional header to specify the beta version(s) you want to use. 4778 Betas []AnthropicBeta `header:"anthropic-beta,omitzero" json:"-"` 4779 paramObj 4780 } 4781 4782 // URLQuery serializes [BetaAgentListParams]'s query parameters as `url.Values`. 4783 func (r BetaAgentListParams) URLQuery() (v url.Values, err error) { 4784 return apiquery.MarshalWithSettings(r, apiquery.QuerySettings{ 4785 ArrayFormat: apiquery.ArrayQueryFormatBrackets, 4786 NestedFormat: apiquery.NestedQueryFormatBrackets, 4787 }) 4788 } 4789 4790 type BetaAgentArchiveParams struct { 4791 WorkspaceID param.Opt[string] `header:"anthropic-workspace-id,omitzero" json:"-"` 4792 // Optional header to specify the beta version(s) you want to use. 4793 Betas []AnthropicBeta `header:"anthropic-beta,omitzero" json:"-"` 4794 paramObj 4795 }