github.com/anthropics/anthropic-sdk-go@v1.70.1/betasessionevent.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/requestconfig"
    18  	"github.com/anthropics/anthropic-sdk-go/option"
    19  	"github.com/anthropics/anthropic-sdk-go/packages/pagination"
    20  	"github.com/anthropics/anthropic-sdk-go/packages/param"
    21  	"github.com/anthropics/anthropic-sdk-go/packages/respjson"
    22  	"github.com/anthropics/anthropic-sdk-go/packages/ssestream"
    23  )
    24  
    25  // BetaSessionEventService contains methods and other services that help with
    26  // interacting with the anthropic API.
    27  //
    28  // Note, unlike clients, this service does not read variables from the environment
    29  // automatically. You should not instantiate this service directly, and instead use
    30  // the [NewBetaSessionEventService] method instead.
    31  type BetaSessionEventService struct {
    32  	Options []option.RequestOption
    33  }
    34  
    35  // NewBetaSessionEventService generates a new service that applies the given
    36  // options to each request. These options are applied after the parent client's
    37  // options (if there is one), and before any request-specific options.
    38  func NewBetaSessionEventService(opts ...option.RequestOption) (r BetaSessionEventService) {
    39  	r = BetaSessionEventService{}
    40  	r.Options = opts
    41  	return
    42  }
    43  
    44  // List Events
    45  func (r *BetaSessionEventService) List(ctx context.Context, sessionID string, params BetaSessionEventListParams, opts ...option.RequestOption) (res *pagination.PageCursor[BetaManagedAgentsSessionEventUnion], err error) {
    46  	var raw *http.Response
    47  	for _, v := range params.Betas {
    48  		opts = append(opts, option.WithHeaderAdd("anthropic-beta", fmt.Sprintf("%v", v)))
    49  	}
    50  	if !param.IsOmitted(params.WorkspaceID) {
    51  		opts = append(opts, option.WithHeader("anthropic-workspace-id", fmt.Sprintf("%v", params.WorkspaceID.Value)))
    52  	}
    53  	opts = slices.Concat(r.Options, opts)
    54  	opts = append([]option.RequestOption{option.WithHeader("anthropic-beta", "managed-agents-2026-04-01"), option.WithResponseInto(&raw)}, opts...)
    55  	if sessionID == "" {
    56  		err = errors.New("missing required session_id parameter")
    57  		return nil, err
    58  	}
    59  	path := fmt.Sprintf("v1/sessions/%s/events?beta=true", sessionID)
    60  	cfg, err := requestconfig.NewRequestConfig(ctx, http.MethodGet, path, params, &res, opts...)
    61  	if err != nil {
    62  		return nil, err
    63  	}
    64  	err = cfg.Execute()
    65  	if err != nil {
    66  		return nil, err
    67  	}
    68  	res.SetPageConfig(cfg, raw)
    69  	return res, nil
    70  }
    71  
    72  // List Events
    73  func (r *BetaSessionEventService) ListAutoPaging(ctx context.Context, sessionID string, params BetaSessionEventListParams, opts ...option.RequestOption) *pagination.PageCursorAutoPager[BetaManagedAgentsSessionEventUnion] {
    74  	return pagination.NewPageCursorAutoPager(r.List(ctx, sessionID, params, opts...))
    75  }
    76  
    77  // Send Events
    78  func (r *BetaSessionEventService) Send(ctx context.Context, sessionID string, params BetaSessionEventSendParams, opts ...option.RequestOption) (res *BetaManagedAgentsSendSessionEvents, err error) {
    79  	for _, v := range params.Betas {
    80  		opts = append(opts, option.WithHeaderAdd("anthropic-beta", fmt.Sprintf("%v", v)))
    81  	}
    82  	if !param.IsOmitted(params.WorkspaceID) {
    83  		opts = append(opts, option.WithHeader("anthropic-workspace-id", fmt.Sprintf("%v", params.WorkspaceID.Value)))
    84  	}
    85  	opts = slices.Concat(r.Options, opts)
    86  	opts = append([]option.RequestOption{option.WithHeader("anthropic-beta", "managed-agents-2026-04-01")}, opts...)
    87  	if sessionID == "" {
    88  		err = errors.New("missing required session_id parameter")
    89  		return nil, err
    90  	}
    91  	path := fmt.Sprintf("v1/sessions/%s/events?beta=true", sessionID)
    92  	err = requestconfig.ExecuteNewRequest(ctx, http.MethodPost, path, params, &res, opts...)
    93  	return res, err
    94  }
    95  
    96  // Stream Events
    97  func (r *BetaSessionEventService) StreamEvents(ctx context.Context, sessionID string, params BetaSessionEventStreamParams, opts ...option.RequestOption) (stream *ssestream.Stream[BetaManagedAgentsStreamSessionEventsUnion]) {
    98  	var (
    99  		raw *http.Response
   100  		err error
   101  	)
   102  	for _, v := range params.Betas {
   103  		opts = append(opts, option.WithHeaderAdd("anthropic-beta", fmt.Sprintf("%v", v)))
   104  	}
   105  	if !param.IsOmitted(params.WorkspaceID) {
   106  		opts = append(opts, option.WithHeader("anthropic-workspace-id", fmt.Sprintf("%v", params.WorkspaceID.Value)))
   107  	}
   108  	opts = slices.Concat(r.Options, opts)
   109  	opts = append([]option.RequestOption{option.WithHeader("anthropic-beta", "managed-agents-2026-04-01")}, opts...)
   110  	if sessionID == "" {
   111  		err = errors.New("missing required session_id parameter")
   112  		return ssestream.NewStream[BetaManagedAgentsStreamSessionEventsUnion](nil, err)
   113  	}
   114  	path := fmt.Sprintf("v1/sessions/%s/events/stream?beta=true", sessionID)
   115  	err = requestconfig.ExecuteNewRequest(ctx, http.MethodGet, path, params, &raw, opts...)
   116  	return ssestream.NewStream[BetaManagedAgentsStreamSessionEventsUnion](ssestream.NewDecoder(raw), err)
   117  }
   118  
   119  // Event emitted when the agent calls a custom tool. The session goes idle until
   120  // the client sends a `user.custom_tool_result` event with the result.
   121  type BetaManagedAgentsAgentCustomToolUseEvent struct {
   122  	// Unique identifier for this event.
   123  	ID string `json:"id" api:"required"`
   124  	// Input parameters for the tool call.
   125  	Input map[string]any `json:"input" api:"required"`
   126  	// Name of the custom tool being called.
   127  	Name string `json:"name" api:"required"`
   128  	// A timestamp in RFC 3339 format
   129  	ProcessedAt time.Time `json:"processed_at" api:"required" format:"date-time"`
   130  	// Any of "agent.custom_tool_use".
   131  	Type BetaManagedAgentsAgentCustomToolUseEventType `json:"type" api:"required"`
   132  	// When set, this event was cross-posted from a subagent's thread to surface its
   133  	// custom tool use on the primary thread's stream. Empty on the thread's own
   134  	// events. Echo this on a `user.custom_tool_result` event to route the result back.
   135  	SessionThreadID string `json:"session_thread_id" api:"nullable"`
   136  	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
   137  	JSON struct {
   138  		ID              respjson.Field
   139  		Input           respjson.Field
   140  		Name            respjson.Field
   141  		ProcessedAt     respjson.Field
   142  		Type            respjson.Field
   143  		SessionThreadID respjson.Field
   144  		ExtraFields     map[string]respjson.Field
   145  		raw             string
   146  	} `json:"-"`
   147  }
   148  
   149  // Returns the unmodified JSON received from the API
   150  func (r BetaManagedAgentsAgentCustomToolUseEvent) RawJSON() string { return r.JSON.raw }
   151  func (r *BetaManagedAgentsAgentCustomToolUseEvent) UnmarshalJSON(data []byte) error {
   152  	return apijson.UnmarshalRoot(data, r)
   153  }
   154  
   155  type BetaManagedAgentsAgentCustomToolUseEventType string
   156  
   157  const (
   158  	BetaManagedAgentsAgentCustomToolUseEventTypeAgentCustomToolUse BetaManagedAgentsAgentCustomToolUseEventType = "agent.custom_tool_use"
   159  )
   160  
   161  // Event representing the result of an MCP tool execution.
   162  type BetaManagedAgentsAgentMCPToolResultEvent struct {
   163  	// Unique identifier for this event.
   164  	ID string `json:"id" api:"required"`
   165  	// The id of the `agent.mcp_tool_use` event this result corresponds to.
   166  	MCPToolUseID string `json:"mcp_tool_use_id" api:"required"`
   167  	// A timestamp in RFC 3339 format
   168  	ProcessedAt time.Time `json:"processed_at" api:"required" format:"date-time"`
   169  	// Any of "agent.mcp_tool_result".
   170  	Type BetaManagedAgentsAgentMCPToolResultEventType `json:"type" api:"required"`
   171  	// The result content returned by the tool.
   172  	Content []BetaManagedAgentsAgentMCPToolResultEventContentUnion `json:"content"`
   173  	// Whether the tool execution resulted in an error.
   174  	IsError bool `json:"is_error" api:"nullable"`
   175  	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
   176  	JSON struct {
   177  		ID           respjson.Field
   178  		MCPToolUseID respjson.Field
   179  		ProcessedAt  respjson.Field
   180  		Type         respjson.Field
   181  		Content      respjson.Field
   182  		IsError      respjson.Field
   183  		ExtraFields  map[string]respjson.Field
   184  		raw          string
   185  	} `json:"-"`
   186  }
   187  
   188  // Returns the unmodified JSON received from the API
   189  func (r BetaManagedAgentsAgentMCPToolResultEvent) RawJSON() string { return r.JSON.raw }
   190  func (r *BetaManagedAgentsAgentMCPToolResultEvent) UnmarshalJSON(data []byte) error {
   191  	return apijson.UnmarshalRoot(data, r)
   192  }
   193  
   194  type BetaManagedAgentsAgentMCPToolResultEventType string
   195  
   196  const (
   197  	BetaManagedAgentsAgentMCPToolResultEventTypeAgentMCPToolResult BetaManagedAgentsAgentMCPToolResultEventType = "agent.mcp_tool_result"
   198  )
   199  
   200  // BetaManagedAgentsAgentMCPToolResultEventContentUnion contains all possible
   201  // properties and values from [BetaManagedAgentsTextBlock],
   202  // [BetaManagedAgentsImageBlock], [BetaManagedAgentsDocumentBlock],
   203  // [BetaManagedAgentsSearchResultBlock].
   204  //
   205  // Use the [BetaManagedAgentsAgentMCPToolResultEventContentUnion.AsAny] method to
   206  // switch on the variant.
   207  //
   208  // Use the methods beginning with 'As' to cast the union to one of its variants.
   209  type BetaManagedAgentsAgentMCPToolResultEventContentUnion struct {
   210  	// This field is from variant [BetaManagedAgentsTextBlock].
   211  	Text string `json:"text"`
   212  	// Any of "text", "image", "document", "search_result".
   213  	Type string `json:"type"`
   214  	// This field is a union of [BetaManagedAgentsImageBlockSourceUnion],
   215  	// [BetaManagedAgentsDocumentBlockSourceUnion], [string]
   216  	Source BetaManagedAgentsAgentMCPToolResultEventContentUnionSource `json:"source"`
   217  	// This field is from variant [BetaManagedAgentsDocumentBlock].
   218  	Context string `json:"context"`
   219  	Title   string `json:"title"`
   220  	// This field is from variant [BetaManagedAgentsSearchResultBlock].
   221  	Citations BetaManagedAgentsSearchResultCitations `json:"citations"`
   222  	// This field is from variant [BetaManagedAgentsSearchResultBlock].
   223  	Content []BetaManagedAgentsSearchResultContent `json:"content"`
   224  	JSON    struct {
   225  		Text      respjson.Field
   226  		Type      respjson.Field
   227  		Source    respjson.Field
   228  		Context   respjson.Field
   229  		Title     respjson.Field
   230  		Citations respjson.Field
   231  		Content   respjson.Field
   232  		raw       string
   233  	} `json:"-"`
   234  }
   235  
   236  // anyBetaManagedAgentsAgentMCPToolResultEventContent is implemented by each
   237  // variant of [BetaManagedAgentsAgentMCPToolResultEventContentUnion] to add type
   238  // safety for the return type of
   239  // [BetaManagedAgentsAgentMCPToolResultEventContentUnion.AsAny]
   240  type anyBetaManagedAgentsAgentMCPToolResultEventContent interface {
   241  	implBetaManagedAgentsAgentMCPToolResultEventContentUnion()
   242  }
   243  
   244  func (BetaManagedAgentsTextBlock) implBetaManagedAgentsAgentMCPToolResultEventContentUnion()     {}
   245  func (BetaManagedAgentsImageBlock) implBetaManagedAgentsAgentMCPToolResultEventContentUnion()    {}
   246  func (BetaManagedAgentsDocumentBlock) implBetaManagedAgentsAgentMCPToolResultEventContentUnion() {}
   247  func (BetaManagedAgentsSearchResultBlock) implBetaManagedAgentsAgentMCPToolResultEventContentUnion() {
   248  }
   249  
   250  // Use the following switch statement to find the correct variant
   251  //
   252  //	switch variant := BetaManagedAgentsAgentMCPToolResultEventContentUnion.AsAny().(type) {
   253  //	case anthropic.BetaManagedAgentsTextBlock:
   254  //	case anthropic.BetaManagedAgentsImageBlock:
   255  //	case anthropic.BetaManagedAgentsDocumentBlock:
   256  //	case anthropic.BetaManagedAgentsSearchResultBlock:
   257  //	default:
   258  //	  fmt.Errorf("no variant present")
   259  //	}
   260  func (u BetaManagedAgentsAgentMCPToolResultEventContentUnion) AsAny() anyBetaManagedAgentsAgentMCPToolResultEventContent {
   261  	switch u.Type {
   262  	case "text":
   263  		return u.AsText()
   264  	case "image":
   265  		return u.AsImage()
   266  	case "document":
   267  		return u.AsDocument()
   268  	case "search_result":
   269  		return u.AsSearchResult()
   270  	}
   271  	return nil
   272  }
   273  
   274  func (u BetaManagedAgentsAgentMCPToolResultEventContentUnion) AsText() (v BetaManagedAgentsTextBlock) {
   275  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
   276  	return
   277  }
   278  
   279  func (u BetaManagedAgentsAgentMCPToolResultEventContentUnion) AsImage() (v BetaManagedAgentsImageBlock) {
   280  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
   281  	return
   282  }
   283  
   284  func (u BetaManagedAgentsAgentMCPToolResultEventContentUnion) AsDocument() (v BetaManagedAgentsDocumentBlock) {
   285  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
   286  	return
   287  }
   288  
   289  func (u BetaManagedAgentsAgentMCPToolResultEventContentUnion) AsSearchResult() (v BetaManagedAgentsSearchResultBlock) {
   290  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
   291  	return
   292  }
   293  
   294  // Returns the unmodified JSON received from the API
   295  func (u BetaManagedAgentsAgentMCPToolResultEventContentUnion) RawJSON() string { return u.JSON.raw }
   296  
   297  func (r *BetaManagedAgentsAgentMCPToolResultEventContentUnion) UnmarshalJSON(data []byte) error {
   298  	return apijson.UnmarshalRoot(data, r)
   299  }
   300  
   301  // BetaManagedAgentsAgentMCPToolResultEventContentUnionSource is an implicit
   302  // subunion of [BetaManagedAgentsAgentMCPToolResultEventContentUnion].
   303  // BetaManagedAgentsAgentMCPToolResultEventContentUnionSource provides convenient
   304  // access to the sub-properties of the union.
   305  //
   306  // For type safety it is recommended to directly use a variant of the
   307  // [BetaManagedAgentsAgentMCPToolResultEventContentUnion].
   308  //
   309  // If the underlying value is not a json object, one of the following properties
   310  // will be valid: OfString]
   311  type BetaManagedAgentsAgentMCPToolResultEventContentUnionSource struct {
   312  	// This field will be present if the value is a [string] instead of an object.
   313  	OfString  string `json:",inline"`
   314  	Data      string `json:"data"`
   315  	MediaType string `json:"media_type"`
   316  	Type      string `json:"type"`
   317  	URL       string `json:"url"`
   318  	FileID    string `json:"file_id"`
   319  	JSON      struct {
   320  		OfString  respjson.Field
   321  		Data      respjson.Field
   322  		MediaType respjson.Field
   323  		Type      respjson.Field
   324  		URL       respjson.Field
   325  		FileID    respjson.Field
   326  		raw       string
   327  	} `json:"-"`
   328  }
   329  
   330  func (r *BetaManagedAgentsAgentMCPToolResultEventContentUnionSource) UnmarshalJSON(data []byte) error {
   331  	return apijson.UnmarshalRoot(data, r)
   332  }
   333  
   334  // Event emitted when the agent invokes a tool provided by an MCP server.
   335  type BetaManagedAgentsAgentMCPToolUseEvent struct {
   336  	// Unique identifier for this event.
   337  	ID string `json:"id" api:"required"`
   338  	// Input parameters for the tool call.
   339  	Input map[string]any `json:"input" api:"required"`
   340  	// Name of the MCP server providing the tool.
   341  	MCPServerName string `json:"mcp_server_name" api:"required"`
   342  	// Name of the MCP tool being used.
   343  	Name string `json:"name" api:"required"`
   344  	// A timestamp in RFC 3339 format
   345  	ProcessedAt time.Time `json:"processed_at" api:"required" format:"date-time"`
   346  	// Any of "agent.mcp_tool_use".
   347  	Type BetaManagedAgentsAgentMCPToolUseEventType `json:"type" api:"required"`
   348  	// AgentEvaluatedPermission enum
   349  	//
   350  	// Any of "allow", "ask", "deny".
   351  	EvaluatedPermission BetaManagedAgentsAgentMCPToolUseEventEvaluatedPermission `json:"evaluated_permission"`
   352  	// When set, this event was cross-posted from a subagent's thread to surface its
   353  	// permission request on the primary thread's stream. Empty on the thread's own
   354  	// events. Echo this on a `user.tool_confirmation` event to route the approval
   355  	// back.
   356  	SessionThreadID string `json:"session_thread_id" api:"nullable"`
   357  	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
   358  	JSON struct {
   359  		ID                  respjson.Field
   360  		Input               respjson.Field
   361  		MCPServerName       respjson.Field
   362  		Name                respjson.Field
   363  		ProcessedAt         respjson.Field
   364  		Type                respjson.Field
   365  		EvaluatedPermission respjson.Field
   366  		SessionThreadID     respjson.Field
   367  		ExtraFields         map[string]respjson.Field
   368  		raw                 string
   369  	} `json:"-"`
   370  }
   371  
   372  // Returns the unmodified JSON received from the API
   373  func (r BetaManagedAgentsAgentMCPToolUseEvent) RawJSON() string { return r.JSON.raw }
   374  func (r *BetaManagedAgentsAgentMCPToolUseEvent) UnmarshalJSON(data []byte) error {
   375  	return apijson.UnmarshalRoot(data, r)
   376  }
   377  
   378  type BetaManagedAgentsAgentMCPToolUseEventType string
   379  
   380  const (
   381  	BetaManagedAgentsAgentMCPToolUseEventTypeAgentMCPToolUse BetaManagedAgentsAgentMCPToolUseEventType = "agent.mcp_tool_use"
   382  )
   383  
   384  // AgentEvaluatedPermission enum
   385  type BetaManagedAgentsAgentMCPToolUseEventEvaluatedPermission string
   386  
   387  const (
   388  	BetaManagedAgentsAgentMCPToolUseEventEvaluatedPermissionAllow BetaManagedAgentsAgentMCPToolUseEventEvaluatedPermission = "allow"
   389  	BetaManagedAgentsAgentMCPToolUseEventEvaluatedPermissionAsk   BetaManagedAgentsAgentMCPToolUseEventEvaluatedPermission = "ask"
   390  	BetaManagedAgentsAgentMCPToolUseEventEvaluatedPermissionDeny  BetaManagedAgentsAgentMCPToolUseEventEvaluatedPermission = "deny"
   391  )
   392  
   393  // An agent response event in the session conversation.
   394  type BetaManagedAgentsAgentMessageEvent struct {
   395  	// Unique identifier for this event.
   396  	ID string `json:"id" api:"required"`
   397  	// Array of text blocks comprising the agent response.
   398  	Content []BetaManagedAgentsAgentMessageEventContentUnion `json:"content" api:"required"`
   399  	// A timestamp in RFC 3339 format
   400  	ProcessedAt time.Time `json:"processed_at" api:"required" format:"date-time"`
   401  	// Any of "agent.message".
   402  	Type BetaManagedAgentsAgentMessageEventType `json:"type" api:"required"`
   403  	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
   404  	JSON struct {
   405  		ID          respjson.Field
   406  		Content     respjson.Field
   407  		ProcessedAt respjson.Field
   408  		Type        respjson.Field
   409  		ExtraFields map[string]respjson.Field
   410  		raw         string
   411  	} `json:"-"`
   412  }
   413  
   414  // Returns the unmodified JSON received from the API
   415  func (r BetaManagedAgentsAgentMessageEvent) RawJSON() string { return r.JSON.raw }
   416  func (r *BetaManagedAgentsAgentMessageEvent) UnmarshalJSON(data []byte) error {
   417  	return apijson.UnmarshalRoot(data, r)
   418  }
   419  
   420  // BetaManagedAgentsAgentMessageEventContentUnion contains all possible properties
   421  // and values from [BetaManagedAgentsTextBlock], [BetaManagedAgentsRedactedBlock].
   422  //
   423  // Use the [BetaManagedAgentsAgentMessageEventContentUnion.AsAny] method to switch
   424  // on the variant.
   425  //
   426  // Use the methods beginning with 'As' to cast the union to one of its variants.
   427  type BetaManagedAgentsAgentMessageEventContentUnion struct {
   428  	// This field is from variant [BetaManagedAgentsTextBlock].
   429  	Text string `json:"text"`
   430  	// Any of "text", "redacted".
   431  	Type string `json:"type"`
   432  	JSON struct {
   433  		Text respjson.Field
   434  		Type respjson.Field
   435  		raw  string
   436  	} `json:"-"`
   437  }
   438  
   439  // anyBetaManagedAgentsAgentMessageEventContent is implemented by each variant of
   440  // [BetaManagedAgentsAgentMessageEventContentUnion] to add type safety for the
   441  // return type of [BetaManagedAgentsAgentMessageEventContentUnion.AsAny]
   442  type anyBetaManagedAgentsAgentMessageEventContent interface {
   443  	implBetaManagedAgentsAgentMessageEventContentUnion()
   444  }
   445  
   446  func (BetaManagedAgentsTextBlock) implBetaManagedAgentsAgentMessageEventContentUnion()     {}
   447  func (BetaManagedAgentsRedactedBlock) implBetaManagedAgentsAgentMessageEventContentUnion() {}
   448  
   449  // Use the following switch statement to find the correct variant
   450  //
   451  //	switch variant := BetaManagedAgentsAgentMessageEventContentUnion.AsAny().(type) {
   452  //	case anthropic.BetaManagedAgentsTextBlock:
   453  //	case anthropic.BetaManagedAgentsRedactedBlock:
   454  //	default:
   455  //	  fmt.Errorf("no variant present")
   456  //	}
   457  func (u BetaManagedAgentsAgentMessageEventContentUnion) AsAny() anyBetaManagedAgentsAgentMessageEventContent {
   458  	switch u.Type {
   459  	case "text":
   460  		return u.AsText()
   461  	case "redacted":
   462  		return u.AsRedacted()
   463  	}
   464  	return nil
   465  }
   466  
   467  func (u BetaManagedAgentsAgentMessageEventContentUnion) AsText() (v BetaManagedAgentsTextBlock) {
   468  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
   469  	return
   470  }
   471  
   472  func (u BetaManagedAgentsAgentMessageEventContentUnion) AsRedacted() (v BetaManagedAgentsRedactedBlock) {
   473  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
   474  	return
   475  }
   476  
   477  // Returns the unmodified JSON received from the API
   478  func (u BetaManagedAgentsAgentMessageEventContentUnion) RawJSON() string { return u.JSON.raw }
   479  
   480  func (r *BetaManagedAgentsAgentMessageEventContentUnion) UnmarshalJSON(data []byte) error {
   481  	return apijson.UnmarshalRoot(data, r)
   482  }
   483  
   484  type BetaManagedAgentsAgentMessageEventType string
   485  
   486  const (
   487  	BetaManagedAgentsAgentMessageEventTypeAgentMessage BetaManagedAgentsAgentMessageEventType = "agent.message"
   488  )
   489  
   490  // Indicates the agent is making forward progress via extended thinking. A progress
   491  // signal, not a content carrier.
   492  type BetaManagedAgentsAgentThinkingEvent struct {
   493  	// Unique identifier for this event.
   494  	ID string `json:"id" api:"required"`
   495  	// A timestamp in RFC 3339 format
   496  	ProcessedAt time.Time `json:"processed_at" api:"required" format:"date-time"`
   497  	// Any of "agent.thinking".
   498  	Type BetaManagedAgentsAgentThinkingEventType `json:"type" api:"required"`
   499  	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
   500  	JSON struct {
   501  		ID          respjson.Field
   502  		ProcessedAt respjson.Field
   503  		Type        respjson.Field
   504  		ExtraFields map[string]respjson.Field
   505  		raw         string
   506  	} `json:"-"`
   507  }
   508  
   509  // Returns the unmodified JSON received from the API
   510  func (r BetaManagedAgentsAgentThinkingEvent) RawJSON() string { return r.JSON.raw }
   511  func (r *BetaManagedAgentsAgentThinkingEvent) UnmarshalJSON(data []byte) error {
   512  	return apijson.UnmarshalRoot(data, r)
   513  }
   514  
   515  type BetaManagedAgentsAgentThinkingEventType string
   516  
   517  const (
   518  	BetaManagedAgentsAgentThinkingEventTypeAgentThinking BetaManagedAgentsAgentThinkingEventType = "agent.thinking"
   519  )
   520  
   521  // Indicates that context compaction (summarization) occurred during the session.
   522  type BetaManagedAgentsAgentThreadContextCompactedEvent struct {
   523  	// Unique identifier for this event.
   524  	ID string `json:"id" api:"required"`
   525  	// A timestamp in RFC 3339 format
   526  	ProcessedAt time.Time `json:"processed_at" api:"required" format:"date-time"`
   527  	// Any of "agent.thread_context_compacted".
   528  	Type BetaManagedAgentsAgentThreadContextCompactedEventType `json:"type" api:"required"`
   529  	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
   530  	JSON struct {
   531  		ID          respjson.Field
   532  		ProcessedAt respjson.Field
   533  		Type        respjson.Field
   534  		ExtraFields map[string]respjson.Field
   535  		raw         string
   536  	} `json:"-"`
   537  }
   538  
   539  // Returns the unmodified JSON received from the API
   540  func (r BetaManagedAgentsAgentThreadContextCompactedEvent) RawJSON() string { return r.JSON.raw }
   541  func (r *BetaManagedAgentsAgentThreadContextCompactedEvent) UnmarshalJSON(data []byte) error {
   542  	return apijson.UnmarshalRoot(data, r)
   543  }
   544  
   545  type BetaManagedAgentsAgentThreadContextCompactedEventType string
   546  
   547  const (
   548  	BetaManagedAgentsAgentThreadContextCompactedEventTypeAgentThreadContextCompacted BetaManagedAgentsAgentThreadContextCompactedEventType = "agent.thread_context_compacted"
   549  )
   550  
   551  // Delivery event written to the target thread's input stream when an
   552  // agent-to-agent message arrives.
   553  type BetaManagedAgentsAgentThreadMessageReceivedEvent struct {
   554  	// Unique identifier for this event.
   555  	ID string `json:"id" api:"required"`
   556  	// Message content blocks.
   557  	Content []BetaManagedAgentsAgentThreadMessageReceivedEventContentUnion `json:"content" api:"required"`
   558  	// Public `sthr_` ID of the thread that sent the message.
   559  	FromSessionThreadID string `json:"from_session_thread_id" api:"required"`
   560  	// A timestamp in RFC 3339 format
   561  	ProcessedAt time.Time `json:"processed_at" api:"required" format:"date-time"`
   562  	// Any of "agent.thread_message_received".
   563  	Type BetaManagedAgentsAgentThreadMessageReceivedEventType `json:"type" api:"required"`
   564  	// Name of the callable agent this message came from. Absent when received from the
   565  	// primary agent.
   566  	FromAgentName string `json:"from_agent_name" api:"nullable"`
   567  	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
   568  	JSON struct {
   569  		ID                  respjson.Field
   570  		Content             respjson.Field
   571  		FromSessionThreadID respjson.Field
   572  		ProcessedAt         respjson.Field
   573  		Type                respjson.Field
   574  		FromAgentName       respjson.Field
   575  		ExtraFields         map[string]respjson.Field
   576  		raw                 string
   577  	} `json:"-"`
   578  }
   579  
   580  // Returns the unmodified JSON received from the API
   581  func (r BetaManagedAgentsAgentThreadMessageReceivedEvent) RawJSON() string { return r.JSON.raw }
   582  func (r *BetaManagedAgentsAgentThreadMessageReceivedEvent) UnmarshalJSON(data []byte) error {
   583  	return apijson.UnmarshalRoot(data, r)
   584  }
   585  
   586  // BetaManagedAgentsAgentThreadMessageReceivedEventContentUnion contains all
   587  // possible properties and values from [BetaManagedAgentsTextBlock],
   588  // [BetaManagedAgentsImageBlock], [BetaManagedAgentsDocumentBlock],
   589  // [BetaManagedAgentsRedactedBlock].
   590  //
   591  // Use the [BetaManagedAgentsAgentThreadMessageReceivedEventContentUnion.AsAny]
   592  // method to switch on the variant.
   593  //
   594  // Use the methods beginning with 'As' to cast the union to one of its variants.
   595  type BetaManagedAgentsAgentThreadMessageReceivedEventContentUnion struct {
   596  	// This field is from variant [BetaManagedAgentsTextBlock].
   597  	Text string `json:"text"`
   598  	// Any of "text", "image", "document", "redacted".
   599  	Type string `json:"type"`
   600  	// This field is a union of [BetaManagedAgentsImageBlockSourceUnion],
   601  	// [BetaManagedAgentsDocumentBlockSourceUnion]
   602  	Source BetaManagedAgentsAgentThreadMessageReceivedEventContentUnionSource `json:"source"`
   603  	// This field is from variant [BetaManagedAgentsDocumentBlock].
   604  	Context string `json:"context"`
   605  	// This field is from variant [BetaManagedAgentsDocumentBlock].
   606  	Title string `json:"title"`
   607  	JSON  struct {
   608  		Text    respjson.Field
   609  		Type    respjson.Field
   610  		Source  respjson.Field
   611  		Context respjson.Field
   612  		Title   respjson.Field
   613  		raw     string
   614  	} `json:"-"`
   615  }
   616  
   617  // anyBetaManagedAgentsAgentThreadMessageReceivedEventContent is implemented by
   618  // each variant of [BetaManagedAgentsAgentThreadMessageReceivedEventContentUnion]
   619  // to add type safety for the return type of
   620  // [BetaManagedAgentsAgentThreadMessageReceivedEventContentUnion.AsAny]
   621  type anyBetaManagedAgentsAgentThreadMessageReceivedEventContent interface {
   622  	implBetaManagedAgentsAgentThreadMessageReceivedEventContentUnion()
   623  }
   624  
   625  func (BetaManagedAgentsTextBlock) implBetaManagedAgentsAgentThreadMessageReceivedEventContentUnion() {
   626  }
   627  func (BetaManagedAgentsImageBlock) implBetaManagedAgentsAgentThreadMessageReceivedEventContentUnion() {
   628  }
   629  func (BetaManagedAgentsDocumentBlock) implBetaManagedAgentsAgentThreadMessageReceivedEventContentUnion() {
   630  }
   631  func (BetaManagedAgentsRedactedBlock) implBetaManagedAgentsAgentThreadMessageReceivedEventContentUnion() {
   632  }
   633  
   634  // Use the following switch statement to find the correct variant
   635  //
   636  //	switch variant := BetaManagedAgentsAgentThreadMessageReceivedEventContentUnion.AsAny().(type) {
   637  //	case anthropic.BetaManagedAgentsTextBlock:
   638  //	case anthropic.BetaManagedAgentsImageBlock:
   639  //	case anthropic.BetaManagedAgentsDocumentBlock:
   640  //	case anthropic.BetaManagedAgentsRedactedBlock:
   641  //	default:
   642  //	  fmt.Errorf("no variant present")
   643  //	}
   644  func (u BetaManagedAgentsAgentThreadMessageReceivedEventContentUnion) AsAny() anyBetaManagedAgentsAgentThreadMessageReceivedEventContent {
   645  	switch u.Type {
   646  	case "text":
   647  		return u.AsText()
   648  	case "image":
   649  		return u.AsImage()
   650  	case "document":
   651  		return u.AsDocument()
   652  	case "redacted":
   653  		return u.AsRedacted()
   654  	}
   655  	return nil
   656  }
   657  
   658  func (u BetaManagedAgentsAgentThreadMessageReceivedEventContentUnion) AsText() (v BetaManagedAgentsTextBlock) {
   659  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
   660  	return
   661  }
   662  
   663  func (u BetaManagedAgentsAgentThreadMessageReceivedEventContentUnion) AsImage() (v BetaManagedAgentsImageBlock) {
   664  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
   665  	return
   666  }
   667  
   668  func (u BetaManagedAgentsAgentThreadMessageReceivedEventContentUnion) AsDocument() (v BetaManagedAgentsDocumentBlock) {
   669  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
   670  	return
   671  }
   672  
   673  func (u BetaManagedAgentsAgentThreadMessageReceivedEventContentUnion) AsRedacted() (v BetaManagedAgentsRedactedBlock) {
   674  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
   675  	return
   676  }
   677  
   678  // Returns the unmodified JSON received from the API
   679  func (u BetaManagedAgentsAgentThreadMessageReceivedEventContentUnion) RawJSON() string {
   680  	return u.JSON.raw
   681  }
   682  
   683  func (r *BetaManagedAgentsAgentThreadMessageReceivedEventContentUnion) UnmarshalJSON(data []byte) error {
   684  	return apijson.UnmarshalRoot(data, r)
   685  }
   686  
   687  // BetaManagedAgentsAgentThreadMessageReceivedEventContentUnionSource is an
   688  // implicit subunion of
   689  // [BetaManagedAgentsAgentThreadMessageReceivedEventContentUnion].
   690  // BetaManagedAgentsAgentThreadMessageReceivedEventContentUnionSource provides
   691  // convenient access to the sub-properties of the union.
   692  //
   693  // For type safety it is recommended to directly use a variant of the
   694  // [BetaManagedAgentsAgentThreadMessageReceivedEventContentUnion].
   695  type BetaManagedAgentsAgentThreadMessageReceivedEventContentUnionSource struct {
   696  	Data      string `json:"data"`
   697  	MediaType string `json:"media_type"`
   698  	Type      string `json:"type"`
   699  	URL       string `json:"url"`
   700  	FileID    string `json:"file_id"`
   701  	JSON      struct {
   702  		Data      respjson.Field
   703  		MediaType respjson.Field
   704  		Type      respjson.Field
   705  		URL       respjson.Field
   706  		FileID    respjson.Field
   707  		raw       string
   708  	} `json:"-"`
   709  }
   710  
   711  func (r *BetaManagedAgentsAgentThreadMessageReceivedEventContentUnionSource) UnmarshalJSON(data []byte) error {
   712  	return apijson.UnmarshalRoot(data, r)
   713  }
   714  
   715  type BetaManagedAgentsAgentThreadMessageReceivedEventType string
   716  
   717  const (
   718  	BetaManagedAgentsAgentThreadMessageReceivedEventTypeAgentThreadMessageReceived BetaManagedAgentsAgentThreadMessageReceivedEventType = "agent.thread_message_received"
   719  )
   720  
   721  // Observability event emitted to the sender's output stream when an agent-to-agent
   722  // message is sent.
   723  type BetaManagedAgentsAgentThreadMessageSentEvent struct {
   724  	// Unique identifier for this event.
   725  	ID string `json:"id" api:"required"`
   726  	// Message content blocks.
   727  	Content []BetaManagedAgentsAgentThreadMessageSentEventContentUnion `json:"content" api:"required"`
   728  	// A timestamp in RFC 3339 format
   729  	ProcessedAt time.Time `json:"processed_at" api:"required" format:"date-time"`
   730  	// Public `sthr_` ID of the thread the message was sent to.
   731  	ToSessionThreadID string `json:"to_session_thread_id" api:"required"`
   732  	// Any of "agent.thread_message_sent".
   733  	Type BetaManagedAgentsAgentThreadMessageSentEventType `json:"type" api:"required"`
   734  	// Name of the callable agent this message was sent to. Absent when sent to the
   735  	// primary agent.
   736  	ToAgentName string `json:"to_agent_name" api:"nullable"`
   737  	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
   738  	JSON struct {
   739  		ID                respjson.Field
   740  		Content           respjson.Field
   741  		ProcessedAt       respjson.Field
   742  		ToSessionThreadID respjson.Field
   743  		Type              respjson.Field
   744  		ToAgentName       respjson.Field
   745  		ExtraFields       map[string]respjson.Field
   746  		raw               string
   747  	} `json:"-"`
   748  }
   749  
   750  // Returns the unmodified JSON received from the API
   751  func (r BetaManagedAgentsAgentThreadMessageSentEvent) RawJSON() string { return r.JSON.raw }
   752  func (r *BetaManagedAgentsAgentThreadMessageSentEvent) UnmarshalJSON(data []byte) error {
   753  	return apijson.UnmarshalRoot(data, r)
   754  }
   755  
   756  // BetaManagedAgentsAgentThreadMessageSentEventContentUnion contains all possible
   757  // properties and values from [BetaManagedAgentsTextBlock],
   758  // [BetaManagedAgentsImageBlock], [BetaManagedAgentsDocumentBlock],
   759  // [BetaManagedAgentsRedactedBlock].
   760  //
   761  // Use the [BetaManagedAgentsAgentThreadMessageSentEventContentUnion.AsAny] method
   762  // to switch on the variant.
   763  //
   764  // Use the methods beginning with 'As' to cast the union to one of its variants.
   765  type BetaManagedAgentsAgentThreadMessageSentEventContentUnion struct {
   766  	// This field is from variant [BetaManagedAgentsTextBlock].
   767  	Text string `json:"text"`
   768  	// Any of "text", "image", "document", "redacted".
   769  	Type string `json:"type"`
   770  	// This field is a union of [BetaManagedAgentsImageBlockSourceUnion],
   771  	// [BetaManagedAgentsDocumentBlockSourceUnion]
   772  	Source BetaManagedAgentsAgentThreadMessageSentEventContentUnionSource `json:"source"`
   773  	// This field is from variant [BetaManagedAgentsDocumentBlock].
   774  	Context string `json:"context"`
   775  	// This field is from variant [BetaManagedAgentsDocumentBlock].
   776  	Title string `json:"title"`
   777  	JSON  struct {
   778  		Text    respjson.Field
   779  		Type    respjson.Field
   780  		Source  respjson.Field
   781  		Context respjson.Field
   782  		Title   respjson.Field
   783  		raw     string
   784  	} `json:"-"`
   785  }
   786  
   787  // anyBetaManagedAgentsAgentThreadMessageSentEventContent is implemented by each
   788  // variant of [BetaManagedAgentsAgentThreadMessageSentEventContentUnion] to add
   789  // type safety for the return type of
   790  // [BetaManagedAgentsAgentThreadMessageSentEventContentUnion.AsAny]
   791  type anyBetaManagedAgentsAgentThreadMessageSentEventContent interface {
   792  	implBetaManagedAgentsAgentThreadMessageSentEventContentUnion()
   793  }
   794  
   795  func (BetaManagedAgentsTextBlock) implBetaManagedAgentsAgentThreadMessageSentEventContentUnion()  {}
   796  func (BetaManagedAgentsImageBlock) implBetaManagedAgentsAgentThreadMessageSentEventContentUnion() {}
   797  func (BetaManagedAgentsDocumentBlock) implBetaManagedAgentsAgentThreadMessageSentEventContentUnion() {
   798  }
   799  func (BetaManagedAgentsRedactedBlock) implBetaManagedAgentsAgentThreadMessageSentEventContentUnion() {
   800  }
   801  
   802  // Use the following switch statement to find the correct variant
   803  //
   804  //	switch variant := BetaManagedAgentsAgentThreadMessageSentEventContentUnion.AsAny().(type) {
   805  //	case anthropic.BetaManagedAgentsTextBlock:
   806  //	case anthropic.BetaManagedAgentsImageBlock:
   807  //	case anthropic.BetaManagedAgentsDocumentBlock:
   808  //	case anthropic.BetaManagedAgentsRedactedBlock:
   809  //	default:
   810  //	  fmt.Errorf("no variant present")
   811  //	}
   812  func (u BetaManagedAgentsAgentThreadMessageSentEventContentUnion) AsAny() anyBetaManagedAgentsAgentThreadMessageSentEventContent {
   813  	switch u.Type {
   814  	case "text":
   815  		return u.AsText()
   816  	case "image":
   817  		return u.AsImage()
   818  	case "document":
   819  		return u.AsDocument()
   820  	case "redacted":
   821  		return u.AsRedacted()
   822  	}
   823  	return nil
   824  }
   825  
   826  func (u BetaManagedAgentsAgentThreadMessageSentEventContentUnion) AsText() (v BetaManagedAgentsTextBlock) {
   827  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
   828  	return
   829  }
   830  
   831  func (u BetaManagedAgentsAgentThreadMessageSentEventContentUnion) AsImage() (v BetaManagedAgentsImageBlock) {
   832  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
   833  	return
   834  }
   835  
   836  func (u BetaManagedAgentsAgentThreadMessageSentEventContentUnion) AsDocument() (v BetaManagedAgentsDocumentBlock) {
   837  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
   838  	return
   839  }
   840  
   841  func (u BetaManagedAgentsAgentThreadMessageSentEventContentUnion) AsRedacted() (v BetaManagedAgentsRedactedBlock) {
   842  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
   843  	return
   844  }
   845  
   846  // Returns the unmodified JSON received from the API
   847  func (u BetaManagedAgentsAgentThreadMessageSentEventContentUnion) RawJSON() string { return u.JSON.raw }
   848  
   849  func (r *BetaManagedAgentsAgentThreadMessageSentEventContentUnion) UnmarshalJSON(data []byte) error {
   850  	return apijson.UnmarshalRoot(data, r)
   851  }
   852  
   853  // BetaManagedAgentsAgentThreadMessageSentEventContentUnionSource is an implicit
   854  // subunion of [BetaManagedAgentsAgentThreadMessageSentEventContentUnion].
   855  // BetaManagedAgentsAgentThreadMessageSentEventContentUnionSource provides
   856  // convenient access to the sub-properties of the union.
   857  //
   858  // For type safety it is recommended to directly use a variant of the
   859  // [BetaManagedAgentsAgentThreadMessageSentEventContentUnion].
   860  type BetaManagedAgentsAgentThreadMessageSentEventContentUnionSource struct {
   861  	Data      string `json:"data"`
   862  	MediaType string `json:"media_type"`
   863  	Type      string `json:"type"`
   864  	URL       string `json:"url"`
   865  	FileID    string `json:"file_id"`
   866  	JSON      struct {
   867  		Data      respjson.Field
   868  		MediaType respjson.Field
   869  		Type      respjson.Field
   870  		URL       respjson.Field
   871  		FileID    respjson.Field
   872  		raw       string
   873  	} `json:"-"`
   874  }
   875  
   876  func (r *BetaManagedAgentsAgentThreadMessageSentEventContentUnionSource) UnmarshalJSON(data []byte) error {
   877  	return apijson.UnmarshalRoot(data, r)
   878  }
   879  
   880  type BetaManagedAgentsAgentThreadMessageSentEventType string
   881  
   882  const (
   883  	BetaManagedAgentsAgentThreadMessageSentEventTypeAgentThreadMessageSent BetaManagedAgentsAgentThreadMessageSentEventType = "agent.thread_message_sent"
   884  )
   885  
   886  // Event representing the result of an agent tool execution.
   887  type BetaManagedAgentsAgentToolResultEvent struct {
   888  	// Unique identifier for this event.
   889  	ID string `json:"id" api:"required"`
   890  	// A timestamp in RFC 3339 format
   891  	ProcessedAt time.Time `json:"processed_at" api:"required" format:"date-time"`
   892  	// The id of the `agent.tool_use` event this result corresponds to.
   893  	ToolUseID string `json:"tool_use_id" api:"required"`
   894  	// Any of "agent.tool_result".
   895  	Type BetaManagedAgentsAgentToolResultEventType `json:"type" api:"required"`
   896  	// The result content returned by the tool.
   897  	Content []BetaManagedAgentsAgentToolResultEventContentUnion `json:"content"`
   898  	// Whether the tool execution resulted in an error.
   899  	IsError bool `json:"is_error" api:"nullable"`
   900  	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
   901  	JSON struct {
   902  		ID          respjson.Field
   903  		ProcessedAt respjson.Field
   904  		ToolUseID   respjson.Field
   905  		Type        respjson.Field
   906  		Content     respjson.Field
   907  		IsError     respjson.Field
   908  		ExtraFields map[string]respjson.Field
   909  		raw         string
   910  	} `json:"-"`
   911  }
   912  
   913  // Returns the unmodified JSON received from the API
   914  func (r BetaManagedAgentsAgentToolResultEvent) RawJSON() string { return r.JSON.raw }
   915  func (r *BetaManagedAgentsAgentToolResultEvent) UnmarshalJSON(data []byte) error {
   916  	return apijson.UnmarshalRoot(data, r)
   917  }
   918  
   919  type BetaManagedAgentsAgentToolResultEventType string
   920  
   921  const (
   922  	BetaManagedAgentsAgentToolResultEventTypeAgentToolResult BetaManagedAgentsAgentToolResultEventType = "agent.tool_result"
   923  )
   924  
   925  // BetaManagedAgentsAgentToolResultEventContentUnion contains all possible
   926  // properties and values from [BetaManagedAgentsTextBlock],
   927  // [BetaManagedAgentsImageBlock], [BetaManagedAgentsDocumentBlock],
   928  // [BetaManagedAgentsSearchResultBlock].
   929  //
   930  // Use the [BetaManagedAgentsAgentToolResultEventContentUnion.AsAny] method to
   931  // switch on the variant.
   932  //
   933  // Use the methods beginning with 'As' to cast the union to one of its variants.
   934  type BetaManagedAgentsAgentToolResultEventContentUnion struct {
   935  	// This field is from variant [BetaManagedAgentsTextBlock].
   936  	Text string `json:"text"`
   937  	// Any of "text", "image", "document", "search_result".
   938  	Type string `json:"type"`
   939  	// This field is a union of [BetaManagedAgentsImageBlockSourceUnion],
   940  	// [BetaManagedAgentsDocumentBlockSourceUnion], [string]
   941  	Source BetaManagedAgentsAgentToolResultEventContentUnionSource `json:"source"`
   942  	// This field is from variant [BetaManagedAgentsDocumentBlock].
   943  	Context string `json:"context"`
   944  	Title   string `json:"title"`
   945  	// This field is from variant [BetaManagedAgentsSearchResultBlock].
   946  	Citations BetaManagedAgentsSearchResultCitations `json:"citations"`
   947  	// This field is from variant [BetaManagedAgentsSearchResultBlock].
   948  	Content []BetaManagedAgentsSearchResultContent `json:"content"`
   949  	JSON    struct {
   950  		Text      respjson.Field
   951  		Type      respjson.Field
   952  		Source    respjson.Field
   953  		Context   respjson.Field
   954  		Title     respjson.Field
   955  		Citations respjson.Field
   956  		Content   respjson.Field
   957  		raw       string
   958  	} `json:"-"`
   959  }
   960  
   961  // anyBetaManagedAgentsAgentToolResultEventContent is implemented by each variant
   962  // of [BetaManagedAgentsAgentToolResultEventContentUnion] to add type safety for
   963  // the return type of [BetaManagedAgentsAgentToolResultEventContentUnion.AsAny]
   964  type anyBetaManagedAgentsAgentToolResultEventContent interface {
   965  	implBetaManagedAgentsAgentToolResultEventContentUnion()
   966  }
   967  
   968  func (BetaManagedAgentsTextBlock) implBetaManagedAgentsAgentToolResultEventContentUnion()         {}
   969  func (BetaManagedAgentsImageBlock) implBetaManagedAgentsAgentToolResultEventContentUnion()        {}
   970  func (BetaManagedAgentsDocumentBlock) implBetaManagedAgentsAgentToolResultEventContentUnion()     {}
   971  func (BetaManagedAgentsSearchResultBlock) implBetaManagedAgentsAgentToolResultEventContentUnion() {}
   972  
   973  // Use the following switch statement to find the correct variant
   974  //
   975  //	switch variant := BetaManagedAgentsAgentToolResultEventContentUnion.AsAny().(type) {
   976  //	case anthropic.BetaManagedAgentsTextBlock:
   977  //	case anthropic.BetaManagedAgentsImageBlock:
   978  //	case anthropic.BetaManagedAgentsDocumentBlock:
   979  //	case anthropic.BetaManagedAgentsSearchResultBlock:
   980  //	default:
   981  //	  fmt.Errorf("no variant present")
   982  //	}
   983  func (u BetaManagedAgentsAgentToolResultEventContentUnion) AsAny() anyBetaManagedAgentsAgentToolResultEventContent {
   984  	switch u.Type {
   985  	case "text":
   986  		return u.AsText()
   987  	case "image":
   988  		return u.AsImage()
   989  	case "document":
   990  		return u.AsDocument()
   991  	case "search_result":
   992  		return u.AsSearchResult()
   993  	}
   994  	return nil
   995  }
   996  
   997  func (u BetaManagedAgentsAgentToolResultEventContentUnion) AsText() (v BetaManagedAgentsTextBlock) {
   998  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
   999  	return
  1000  }
  1001  
  1002  func (u BetaManagedAgentsAgentToolResultEventContentUnion) AsImage() (v BetaManagedAgentsImageBlock) {
  1003  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  1004  	return
  1005  }
  1006  
  1007  func (u BetaManagedAgentsAgentToolResultEventContentUnion) AsDocument() (v BetaManagedAgentsDocumentBlock) {
  1008  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  1009  	return
  1010  }
  1011  
  1012  func (u BetaManagedAgentsAgentToolResultEventContentUnion) AsSearchResult() (v BetaManagedAgentsSearchResultBlock) {
  1013  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  1014  	return
  1015  }
  1016  
  1017  // Returns the unmodified JSON received from the API
  1018  func (u BetaManagedAgentsAgentToolResultEventContentUnion) RawJSON() string { return u.JSON.raw }
  1019  
  1020  func (r *BetaManagedAgentsAgentToolResultEventContentUnion) UnmarshalJSON(data []byte) error {
  1021  	return apijson.UnmarshalRoot(data, r)
  1022  }
  1023  
  1024  // BetaManagedAgentsAgentToolResultEventContentUnionSource is an implicit subunion
  1025  // of [BetaManagedAgentsAgentToolResultEventContentUnion].
  1026  // BetaManagedAgentsAgentToolResultEventContentUnionSource provides convenient
  1027  // access to the sub-properties of the union.
  1028  //
  1029  // For type safety it is recommended to directly use a variant of the
  1030  // [BetaManagedAgentsAgentToolResultEventContentUnion].
  1031  //
  1032  // If the underlying value is not a json object, one of the following properties
  1033  // will be valid: OfString]
  1034  type BetaManagedAgentsAgentToolResultEventContentUnionSource struct {
  1035  	// This field will be present if the value is a [string] instead of an object.
  1036  	OfString  string `json:",inline"`
  1037  	Data      string `json:"data"`
  1038  	MediaType string `json:"media_type"`
  1039  	Type      string `json:"type"`
  1040  	URL       string `json:"url"`
  1041  	FileID    string `json:"file_id"`
  1042  	JSON      struct {
  1043  		OfString  respjson.Field
  1044  		Data      respjson.Field
  1045  		MediaType respjson.Field
  1046  		Type      respjson.Field
  1047  		URL       respjson.Field
  1048  		FileID    respjson.Field
  1049  		raw       string
  1050  	} `json:"-"`
  1051  }
  1052  
  1053  func (r *BetaManagedAgentsAgentToolResultEventContentUnionSource) UnmarshalJSON(data []byte) error {
  1054  	return apijson.UnmarshalRoot(data, r)
  1055  }
  1056  
  1057  // Event emitted when the agent invokes a built-in agent tool.
  1058  type BetaManagedAgentsAgentToolUseEvent struct {
  1059  	// Unique identifier for this event.
  1060  	ID string `json:"id" api:"required"`
  1061  	// Input parameters for the tool call.
  1062  	Input map[string]any `json:"input" api:"required"`
  1063  	// Name of the agent tool being used.
  1064  	Name string `json:"name" api:"required"`
  1065  	// A timestamp in RFC 3339 format
  1066  	ProcessedAt time.Time `json:"processed_at" api:"required" format:"date-time"`
  1067  	// Any of "agent.tool_use".
  1068  	Type BetaManagedAgentsAgentToolUseEventType `json:"type" api:"required"`
  1069  	// AgentEvaluatedPermission enum
  1070  	//
  1071  	// Any of "allow", "ask", "deny".
  1072  	EvaluatedPermission BetaManagedAgentsAgentToolUseEventEvaluatedPermission `json:"evaluated_permission"`
  1073  	// When set, this event was cross-posted from a subagent's thread to surface its
  1074  	// permission request on the primary thread's stream. Empty on the thread's own
  1075  	// events. Echo this on a `user.tool_confirmation` event to route the approval
  1076  	// back.
  1077  	SessionThreadID string `json:"session_thread_id" api:"nullable"`
  1078  	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
  1079  	JSON struct {
  1080  		ID                  respjson.Field
  1081  		Input               respjson.Field
  1082  		Name                respjson.Field
  1083  		ProcessedAt         respjson.Field
  1084  		Type                respjson.Field
  1085  		EvaluatedPermission respjson.Field
  1086  		SessionThreadID     respjson.Field
  1087  		ExtraFields         map[string]respjson.Field
  1088  		raw                 string
  1089  	} `json:"-"`
  1090  }
  1091  
  1092  // Returns the unmodified JSON received from the API
  1093  func (r BetaManagedAgentsAgentToolUseEvent) RawJSON() string { return r.JSON.raw }
  1094  func (r *BetaManagedAgentsAgentToolUseEvent) UnmarshalJSON(data []byte) error {
  1095  	return apijson.UnmarshalRoot(data, r)
  1096  }
  1097  
  1098  type BetaManagedAgentsAgentToolUseEventType string
  1099  
  1100  const (
  1101  	BetaManagedAgentsAgentToolUseEventTypeAgentToolUse BetaManagedAgentsAgentToolUseEventType = "agent.tool_use"
  1102  )
  1103  
  1104  // AgentEvaluatedPermission enum
  1105  type BetaManagedAgentsAgentToolUseEventEvaluatedPermission string
  1106  
  1107  const (
  1108  	BetaManagedAgentsAgentToolUseEventEvaluatedPermissionAllow BetaManagedAgentsAgentToolUseEventEvaluatedPermission = "allow"
  1109  	BetaManagedAgentsAgentToolUseEventEvaluatedPermissionAsk   BetaManagedAgentsAgentToolUseEventEvaluatedPermission = "ask"
  1110  	BetaManagedAgentsAgentToolUseEventEvaluatedPermissionDeny  BetaManagedAgentsAgentToolUseEventEvaluatedPermission = "deny"
  1111  )
  1112  
  1113  // Base64-encoded document data.
  1114  type BetaManagedAgentsBase64DocumentSource struct {
  1115  	// Base64-encoded document data.
  1116  	Data string `json:"data" api:"required"`
  1117  	// MIME type of the document (e.g., "application/pdf").
  1118  	MediaType string `json:"media_type" api:"required"`
  1119  	// Any of "base64".
  1120  	Type BetaManagedAgentsBase64DocumentSourceType `json:"type" api:"required"`
  1121  	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
  1122  	JSON struct {
  1123  		Data        respjson.Field
  1124  		MediaType   respjson.Field
  1125  		Type        respjson.Field
  1126  		ExtraFields map[string]respjson.Field
  1127  		raw         string
  1128  	} `json:"-"`
  1129  }
  1130  
  1131  // Returns the unmodified JSON received from the API
  1132  func (r BetaManagedAgentsBase64DocumentSource) RawJSON() string { return r.JSON.raw }
  1133  func (r *BetaManagedAgentsBase64DocumentSource) UnmarshalJSON(data []byte) error {
  1134  	return apijson.UnmarshalRoot(data, r)
  1135  }
  1136  
  1137  // ToParam converts this BetaManagedAgentsBase64DocumentSource to a
  1138  // BetaManagedAgentsBase64DocumentSourceParam.
  1139  //
  1140  // Warning: the fields of the param type will not be present. ToParam should only
  1141  // be used at the last possible moment before sending a request. Test for this with
  1142  // BetaManagedAgentsBase64DocumentSourceParam.Overrides()
  1143  func (r BetaManagedAgentsBase64DocumentSource) ToParam() BetaManagedAgentsBase64DocumentSourceParam {
  1144  	return param.Override[BetaManagedAgentsBase64DocumentSourceParam](json.RawMessage(r.RawJSON()))
  1145  }
  1146  
  1147  type BetaManagedAgentsBase64DocumentSourceType string
  1148  
  1149  const (
  1150  	BetaManagedAgentsBase64DocumentSourceTypeBase64 BetaManagedAgentsBase64DocumentSourceType = "base64"
  1151  )
  1152  
  1153  // Base64-encoded document data.
  1154  //
  1155  // The properties Data, MediaType, Type are required.
  1156  type BetaManagedAgentsBase64DocumentSourceParam struct {
  1157  	// Base64-encoded document data.
  1158  	Data string `json:"data" api:"required"`
  1159  	// MIME type of the document (e.g., "application/pdf").
  1160  	MediaType string `json:"media_type" api:"required"`
  1161  	// Any of "base64".
  1162  	Type BetaManagedAgentsBase64DocumentSourceType `json:"type,omitzero" api:"required"`
  1163  	paramObj
  1164  }
  1165  
  1166  func (r BetaManagedAgentsBase64DocumentSourceParam) MarshalJSON() (data []byte, err error) {
  1167  	type shadow BetaManagedAgentsBase64DocumentSourceParam
  1168  	return param.MarshalObject(r, (*shadow)(&r))
  1169  }
  1170  func (r *BetaManagedAgentsBase64DocumentSourceParam) UnmarshalJSON(data []byte) error {
  1171  	return apijson.UnmarshalRoot(data, r)
  1172  }
  1173  
  1174  // Base64-encoded image data.
  1175  type BetaManagedAgentsBase64ImageSource struct {
  1176  	// Base64-encoded image data.
  1177  	Data string `json:"data" api:"required"`
  1178  	// MIME type of the image (e.g., "image/png", "image/jpeg", "image/gif",
  1179  	// "image/webp").
  1180  	MediaType string `json:"media_type" api:"required"`
  1181  	// Any of "base64".
  1182  	Type BetaManagedAgentsBase64ImageSourceType `json:"type" api:"required"`
  1183  	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
  1184  	JSON struct {
  1185  		Data        respjson.Field
  1186  		MediaType   respjson.Field
  1187  		Type        respjson.Field
  1188  		ExtraFields map[string]respjson.Field
  1189  		raw         string
  1190  	} `json:"-"`
  1191  }
  1192  
  1193  // Returns the unmodified JSON received from the API
  1194  func (r BetaManagedAgentsBase64ImageSource) RawJSON() string { return r.JSON.raw }
  1195  func (r *BetaManagedAgentsBase64ImageSource) UnmarshalJSON(data []byte) error {
  1196  	return apijson.UnmarshalRoot(data, r)
  1197  }
  1198  
  1199  // ToParam converts this BetaManagedAgentsBase64ImageSource to a
  1200  // BetaManagedAgentsBase64ImageSourceParam.
  1201  //
  1202  // Warning: the fields of the param type will not be present. ToParam should only
  1203  // be used at the last possible moment before sending a request. Test for this with
  1204  // BetaManagedAgentsBase64ImageSourceParam.Overrides()
  1205  func (r BetaManagedAgentsBase64ImageSource) ToParam() BetaManagedAgentsBase64ImageSourceParam {
  1206  	return param.Override[BetaManagedAgentsBase64ImageSourceParam](json.RawMessage(r.RawJSON()))
  1207  }
  1208  
  1209  type BetaManagedAgentsBase64ImageSourceType string
  1210  
  1211  const (
  1212  	BetaManagedAgentsBase64ImageSourceTypeBase64 BetaManagedAgentsBase64ImageSourceType = "base64"
  1213  )
  1214  
  1215  // Base64-encoded image data.
  1216  //
  1217  // The properties Data, MediaType, Type are required.
  1218  type BetaManagedAgentsBase64ImageSourceParam struct {
  1219  	// Base64-encoded image data.
  1220  	Data string `json:"data" api:"required"`
  1221  	// MIME type of the image (e.g., "image/png", "image/jpeg", "image/gif",
  1222  	// "image/webp").
  1223  	MediaType string `json:"media_type" api:"required"`
  1224  	// Any of "base64".
  1225  	Type BetaManagedAgentsBase64ImageSourceType `json:"type,omitzero" api:"required"`
  1226  	paramObj
  1227  }
  1228  
  1229  func (r BetaManagedAgentsBase64ImageSourceParam) MarshalJSON() (data []byte, err error) {
  1230  	type shadow BetaManagedAgentsBase64ImageSourceParam
  1231  	return param.MarshalObject(r, (*shadow)(&r))
  1232  }
  1233  func (r *BetaManagedAgentsBase64ImageSourceParam) UnmarshalJSON(data []byte) error {
  1234  	return apijson.UnmarshalRoot(data, r)
  1235  }
  1236  
  1237  // The caller's organization or workspace cannot make model requests — out of
  1238  // credits or spend limit reached. Retrying with the same credentials will not
  1239  // succeed; the caller must resolve the billing state.
  1240  type BetaManagedAgentsBillingError struct {
  1241  	// Human-readable error description.
  1242  	Message string `json:"message" api:"required"`
  1243  	// What the client should do next in response to this error.
  1244  	RetryStatus BetaManagedAgentsBillingErrorRetryStatusUnion `json:"retry_status" api:"required"`
  1245  	// Any of "billing_error".
  1246  	Type BetaManagedAgentsBillingErrorType `json:"type" api:"required"`
  1247  	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
  1248  	JSON struct {
  1249  		Message     respjson.Field
  1250  		RetryStatus respjson.Field
  1251  		Type        respjson.Field
  1252  		ExtraFields map[string]respjson.Field
  1253  		raw         string
  1254  	} `json:"-"`
  1255  }
  1256  
  1257  // Returns the unmodified JSON received from the API
  1258  func (r BetaManagedAgentsBillingError) RawJSON() string { return r.JSON.raw }
  1259  func (r *BetaManagedAgentsBillingError) UnmarshalJSON(data []byte) error {
  1260  	return apijson.UnmarshalRoot(data, r)
  1261  }
  1262  
  1263  // BetaManagedAgentsBillingErrorRetryStatusUnion contains all possible properties
  1264  // and values from [BetaManagedAgentsRetryStatusRetrying],
  1265  // [BetaManagedAgentsRetryStatusExhausted], [BetaManagedAgentsRetryStatusTerminal].
  1266  //
  1267  // Use the [BetaManagedAgentsBillingErrorRetryStatusUnion.AsAny] method to switch
  1268  // on the variant.
  1269  //
  1270  // Use the methods beginning with 'As' to cast the union to one of its variants.
  1271  type BetaManagedAgentsBillingErrorRetryStatusUnion struct {
  1272  	// Any of "retrying", "exhausted", "terminal".
  1273  	Type string `json:"type"`
  1274  	JSON struct {
  1275  		Type respjson.Field
  1276  		raw  string
  1277  	} `json:"-"`
  1278  }
  1279  
  1280  // anyBetaManagedAgentsBillingErrorRetryStatus is implemented by each variant of
  1281  // [BetaManagedAgentsBillingErrorRetryStatusUnion] to add type safety for the
  1282  // return type of [BetaManagedAgentsBillingErrorRetryStatusUnion.AsAny]
  1283  type anyBetaManagedAgentsBillingErrorRetryStatus interface {
  1284  	implBetaManagedAgentsBillingErrorRetryStatusUnion()
  1285  }
  1286  
  1287  func (BetaManagedAgentsRetryStatusRetrying) implBetaManagedAgentsBillingErrorRetryStatusUnion()  {}
  1288  func (BetaManagedAgentsRetryStatusExhausted) implBetaManagedAgentsBillingErrorRetryStatusUnion() {}
  1289  func (BetaManagedAgentsRetryStatusTerminal) implBetaManagedAgentsBillingErrorRetryStatusUnion()  {}
  1290  
  1291  // Use the following switch statement to find the correct variant
  1292  //
  1293  //	switch variant := BetaManagedAgentsBillingErrorRetryStatusUnion.AsAny().(type) {
  1294  //	case anthropic.BetaManagedAgentsRetryStatusRetrying:
  1295  //	case anthropic.BetaManagedAgentsRetryStatusExhausted:
  1296  //	case anthropic.BetaManagedAgentsRetryStatusTerminal:
  1297  //	default:
  1298  //	  fmt.Errorf("no variant present")
  1299  //	}
  1300  func (u BetaManagedAgentsBillingErrorRetryStatusUnion) AsAny() anyBetaManagedAgentsBillingErrorRetryStatus {
  1301  	switch u.Type {
  1302  	case "retrying":
  1303  		return u.AsRetrying()
  1304  	case "exhausted":
  1305  		return u.AsExhausted()
  1306  	case "terminal":
  1307  		return u.AsTerminal()
  1308  	}
  1309  	return nil
  1310  }
  1311  
  1312  func (u BetaManagedAgentsBillingErrorRetryStatusUnion) AsRetrying() (v BetaManagedAgentsRetryStatusRetrying) {
  1313  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  1314  	return
  1315  }
  1316  
  1317  func (u BetaManagedAgentsBillingErrorRetryStatusUnion) AsExhausted() (v BetaManagedAgentsRetryStatusExhausted) {
  1318  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  1319  	return
  1320  }
  1321  
  1322  func (u BetaManagedAgentsBillingErrorRetryStatusUnion) AsTerminal() (v BetaManagedAgentsRetryStatusTerminal) {
  1323  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  1324  	return
  1325  }
  1326  
  1327  // Returns the unmodified JSON received from the API
  1328  func (u BetaManagedAgentsBillingErrorRetryStatusUnion) RawJSON() string { return u.JSON.raw }
  1329  
  1330  func (r *BetaManagedAgentsBillingErrorRetryStatusUnion) UnmarshalJSON(data []byte) error {
  1331  	return apijson.UnmarshalRoot(data, r)
  1332  }
  1333  
  1334  type BetaManagedAgentsBillingErrorType string
  1335  
  1336  const (
  1337  	BetaManagedAgentsBillingErrorTypeBillingError BetaManagedAgentsBillingErrorType = "billing_error"
  1338  )
  1339  
  1340  // An `environment_variable` credential's `auth.networking.allowed_hosts` includes
  1341  // a host the environment's network policy does not permit.
  1342  type BetaManagedAgentsCredentialHostUnreachableError struct {
  1343  	// ID of the affected credential.
  1344  	CredentialID string `json:"credential_id" api:"required"`
  1345  	// Human-readable error description.
  1346  	Message string `json:"message" api:"required"`
  1347  	// What the client should do next in response to this error.
  1348  	RetryStatus BetaManagedAgentsCredentialHostUnreachableErrorRetryStatusUnion `json:"retry_status" api:"required"`
  1349  	// Any of "credential_host_unreachable_error".
  1350  	Type BetaManagedAgentsCredentialHostUnreachableErrorType `json:"type" api:"required"`
  1351  	// ID of the vault containing the affected credential.
  1352  	VaultID string `json:"vault_id" api:"required"`
  1353  	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
  1354  	JSON struct {
  1355  		CredentialID respjson.Field
  1356  		Message      respjson.Field
  1357  		RetryStatus  respjson.Field
  1358  		Type         respjson.Field
  1359  		VaultID      respjson.Field
  1360  		ExtraFields  map[string]respjson.Field
  1361  		raw          string
  1362  	} `json:"-"`
  1363  }
  1364  
  1365  // Returns the unmodified JSON received from the API
  1366  func (r BetaManagedAgentsCredentialHostUnreachableError) RawJSON() string { return r.JSON.raw }
  1367  func (r *BetaManagedAgentsCredentialHostUnreachableError) UnmarshalJSON(data []byte) error {
  1368  	return apijson.UnmarshalRoot(data, r)
  1369  }
  1370  
  1371  // BetaManagedAgentsCredentialHostUnreachableErrorRetryStatusUnion contains all
  1372  // possible properties and values from [BetaManagedAgentsRetryStatusRetrying],
  1373  // [BetaManagedAgentsRetryStatusExhausted], [BetaManagedAgentsRetryStatusTerminal].
  1374  //
  1375  // Use the [BetaManagedAgentsCredentialHostUnreachableErrorRetryStatusUnion.AsAny]
  1376  // method to switch on the variant.
  1377  //
  1378  // Use the methods beginning with 'As' to cast the union to one of its variants.
  1379  type BetaManagedAgentsCredentialHostUnreachableErrorRetryStatusUnion struct {
  1380  	// Any of "retrying", "exhausted", "terminal".
  1381  	Type string `json:"type"`
  1382  	JSON struct {
  1383  		Type respjson.Field
  1384  		raw  string
  1385  	} `json:"-"`
  1386  }
  1387  
  1388  // anyBetaManagedAgentsCredentialHostUnreachableErrorRetryStatus is implemented by
  1389  // each variant of
  1390  // [BetaManagedAgentsCredentialHostUnreachableErrorRetryStatusUnion] to add type
  1391  // safety for the return type of
  1392  // [BetaManagedAgentsCredentialHostUnreachableErrorRetryStatusUnion.AsAny]
  1393  type anyBetaManagedAgentsCredentialHostUnreachableErrorRetryStatus interface {
  1394  	implBetaManagedAgentsCredentialHostUnreachableErrorRetryStatusUnion()
  1395  }
  1396  
  1397  func (BetaManagedAgentsRetryStatusRetrying) implBetaManagedAgentsCredentialHostUnreachableErrorRetryStatusUnion() {
  1398  }
  1399  func (BetaManagedAgentsRetryStatusExhausted) implBetaManagedAgentsCredentialHostUnreachableErrorRetryStatusUnion() {
  1400  }
  1401  func (BetaManagedAgentsRetryStatusTerminal) implBetaManagedAgentsCredentialHostUnreachableErrorRetryStatusUnion() {
  1402  }
  1403  
  1404  // Use the following switch statement to find the correct variant
  1405  //
  1406  //	switch variant := BetaManagedAgentsCredentialHostUnreachableErrorRetryStatusUnion.AsAny().(type) {
  1407  //	case anthropic.BetaManagedAgentsRetryStatusRetrying:
  1408  //	case anthropic.BetaManagedAgentsRetryStatusExhausted:
  1409  //	case anthropic.BetaManagedAgentsRetryStatusTerminal:
  1410  //	default:
  1411  //	  fmt.Errorf("no variant present")
  1412  //	}
  1413  func (u BetaManagedAgentsCredentialHostUnreachableErrorRetryStatusUnion) AsAny() anyBetaManagedAgentsCredentialHostUnreachableErrorRetryStatus {
  1414  	switch u.Type {
  1415  	case "retrying":
  1416  		return u.AsRetrying()
  1417  	case "exhausted":
  1418  		return u.AsExhausted()
  1419  	case "terminal":
  1420  		return u.AsTerminal()
  1421  	}
  1422  	return nil
  1423  }
  1424  
  1425  func (u BetaManagedAgentsCredentialHostUnreachableErrorRetryStatusUnion) AsRetrying() (v BetaManagedAgentsRetryStatusRetrying) {
  1426  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  1427  	return
  1428  }
  1429  
  1430  func (u BetaManagedAgentsCredentialHostUnreachableErrorRetryStatusUnion) AsExhausted() (v BetaManagedAgentsRetryStatusExhausted) {
  1431  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  1432  	return
  1433  }
  1434  
  1435  func (u BetaManagedAgentsCredentialHostUnreachableErrorRetryStatusUnion) AsTerminal() (v BetaManagedAgentsRetryStatusTerminal) {
  1436  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  1437  	return
  1438  }
  1439  
  1440  // Returns the unmodified JSON received from the API
  1441  func (u BetaManagedAgentsCredentialHostUnreachableErrorRetryStatusUnion) RawJSON() string {
  1442  	return u.JSON.raw
  1443  }
  1444  
  1445  func (r *BetaManagedAgentsCredentialHostUnreachableErrorRetryStatusUnion) UnmarshalJSON(data []byte) error {
  1446  	return apijson.UnmarshalRoot(data, r)
  1447  }
  1448  
  1449  type BetaManagedAgentsCredentialHostUnreachableErrorType string
  1450  
  1451  const (
  1452  	BetaManagedAgentsCredentialHostUnreachableErrorTypeCredentialHostUnreachableError BetaManagedAgentsCredentialHostUnreachableErrorType = "credential_host_unreachable_error"
  1453  )
  1454  
  1455  // Document content, either specified directly as base64 data, as text, or as a
  1456  // reference via a URL.
  1457  type BetaManagedAgentsDocumentBlock struct {
  1458  	// Union type for document source variants.
  1459  	Source BetaManagedAgentsDocumentBlockSourceUnion `json:"source" api:"required"`
  1460  	// Any of "document".
  1461  	Type BetaManagedAgentsDocumentBlockType `json:"type" api:"required"`
  1462  	// Additional context about the document for the model.
  1463  	Context string `json:"context" api:"nullable"`
  1464  	// The title of the document.
  1465  	Title string `json:"title" api:"nullable"`
  1466  	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
  1467  	JSON struct {
  1468  		Source      respjson.Field
  1469  		Type        respjson.Field
  1470  		Context     respjson.Field
  1471  		Title       respjson.Field
  1472  		ExtraFields map[string]respjson.Field
  1473  		raw         string
  1474  	} `json:"-"`
  1475  }
  1476  
  1477  // Returns the unmodified JSON received from the API
  1478  func (r BetaManagedAgentsDocumentBlock) RawJSON() string { return r.JSON.raw }
  1479  func (r *BetaManagedAgentsDocumentBlock) UnmarshalJSON(data []byte) error {
  1480  	return apijson.UnmarshalRoot(data, r)
  1481  }
  1482  
  1483  // ToParam converts this BetaManagedAgentsDocumentBlock to a
  1484  // BetaManagedAgentsDocumentBlockParam.
  1485  //
  1486  // Warning: the fields of the param type will not be present. ToParam should only
  1487  // be used at the last possible moment before sending a request. Test for this with
  1488  // BetaManagedAgentsDocumentBlockParam.Overrides()
  1489  func (r BetaManagedAgentsDocumentBlock) ToParam() BetaManagedAgentsDocumentBlockParam {
  1490  	return param.Override[BetaManagedAgentsDocumentBlockParam](json.RawMessage(r.RawJSON()))
  1491  }
  1492  
  1493  // BetaManagedAgentsDocumentBlockSourceUnion contains all possible properties and
  1494  // values from [BetaManagedAgentsBase64DocumentSource],
  1495  // [BetaManagedAgentsPlainTextDocumentSource],
  1496  // [BetaManagedAgentsURLDocumentSource], [BetaManagedAgentsFileDocumentSource].
  1497  //
  1498  // Use the [BetaManagedAgentsDocumentBlockSourceUnion.AsAny] method to switch on
  1499  // the variant.
  1500  //
  1501  // Use the methods beginning with 'As' to cast the union to one of its variants.
  1502  type BetaManagedAgentsDocumentBlockSourceUnion struct {
  1503  	Data      string `json:"data"`
  1504  	MediaType string `json:"media_type"`
  1505  	// Any of "base64", "text", "url", "file".
  1506  	Type string `json:"type"`
  1507  	// This field is from variant [BetaManagedAgentsURLDocumentSource].
  1508  	URL string `json:"url"`
  1509  	// This field is from variant [BetaManagedAgentsFileDocumentSource].
  1510  	FileID string `json:"file_id"`
  1511  	JSON   struct {
  1512  		Data      respjson.Field
  1513  		MediaType respjson.Field
  1514  		Type      respjson.Field
  1515  		URL       respjson.Field
  1516  		FileID    respjson.Field
  1517  		raw       string
  1518  	} `json:"-"`
  1519  }
  1520  
  1521  // anyBetaManagedAgentsDocumentBlockSource is implemented by each variant of
  1522  // [BetaManagedAgentsDocumentBlockSourceUnion] to add type safety for the return
  1523  // type of [BetaManagedAgentsDocumentBlockSourceUnion.AsAny]
  1524  type anyBetaManagedAgentsDocumentBlockSource interface {
  1525  	implBetaManagedAgentsDocumentBlockSourceUnion()
  1526  }
  1527  
  1528  func (BetaManagedAgentsBase64DocumentSource) implBetaManagedAgentsDocumentBlockSourceUnion()    {}
  1529  func (BetaManagedAgentsPlainTextDocumentSource) implBetaManagedAgentsDocumentBlockSourceUnion() {}
  1530  func (BetaManagedAgentsURLDocumentSource) implBetaManagedAgentsDocumentBlockSourceUnion()       {}
  1531  func (BetaManagedAgentsFileDocumentSource) implBetaManagedAgentsDocumentBlockSourceUnion()      {}
  1532  
  1533  // Use the following switch statement to find the correct variant
  1534  //
  1535  //	switch variant := BetaManagedAgentsDocumentBlockSourceUnion.AsAny().(type) {
  1536  //	case anthropic.BetaManagedAgentsBase64DocumentSource:
  1537  //	case anthropic.BetaManagedAgentsPlainTextDocumentSource:
  1538  //	case anthropic.BetaManagedAgentsURLDocumentSource:
  1539  //	case anthropic.BetaManagedAgentsFileDocumentSource:
  1540  //	default:
  1541  //	  fmt.Errorf("no variant present")
  1542  //	}
  1543  func (u BetaManagedAgentsDocumentBlockSourceUnion) AsAny() anyBetaManagedAgentsDocumentBlockSource {
  1544  	switch u.Type {
  1545  	case "base64":
  1546  		return u.AsBase64()
  1547  	case "text":
  1548  		return u.AsText()
  1549  	case "url":
  1550  		return u.AsURL()
  1551  	case "file":
  1552  		return u.AsFile()
  1553  	}
  1554  	return nil
  1555  }
  1556  
  1557  func (u BetaManagedAgentsDocumentBlockSourceUnion) AsBase64() (v BetaManagedAgentsBase64DocumentSource) {
  1558  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  1559  	return
  1560  }
  1561  
  1562  func (u BetaManagedAgentsDocumentBlockSourceUnion) AsText() (v BetaManagedAgentsPlainTextDocumentSource) {
  1563  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  1564  	return
  1565  }
  1566  
  1567  func (u BetaManagedAgentsDocumentBlockSourceUnion) AsURL() (v BetaManagedAgentsURLDocumentSource) {
  1568  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  1569  	return
  1570  }
  1571  
  1572  func (u BetaManagedAgentsDocumentBlockSourceUnion) AsFile() (v BetaManagedAgentsFileDocumentSource) {
  1573  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  1574  	return
  1575  }
  1576  
  1577  // Returns the unmodified JSON received from the API
  1578  func (u BetaManagedAgentsDocumentBlockSourceUnion) RawJSON() string { return u.JSON.raw }
  1579  
  1580  func (r *BetaManagedAgentsDocumentBlockSourceUnion) UnmarshalJSON(data []byte) error {
  1581  	return apijson.UnmarshalRoot(data, r)
  1582  }
  1583  
  1584  type BetaManagedAgentsDocumentBlockType string
  1585  
  1586  const (
  1587  	BetaManagedAgentsDocumentBlockTypeDocument BetaManagedAgentsDocumentBlockType = "document"
  1588  )
  1589  
  1590  // Document content, either specified directly as base64 data, as text, or as a
  1591  // reference via a URL.
  1592  //
  1593  // The properties Source, Type are required.
  1594  type BetaManagedAgentsDocumentBlockParam struct {
  1595  	// Union type for document source variants.
  1596  	Source BetaManagedAgentsDocumentBlockSourceUnionParam `json:"source,omitzero" api:"required"`
  1597  	// Any of "document".
  1598  	Type BetaManagedAgentsDocumentBlockType `json:"type,omitzero" api:"required"`
  1599  	// Additional context about the document for the model.
  1600  	Context param.Opt[string] `json:"context,omitzero"`
  1601  	// The title of the document.
  1602  	Title param.Opt[string] `json:"title,omitzero"`
  1603  	paramObj
  1604  }
  1605  
  1606  func (r BetaManagedAgentsDocumentBlockParam) MarshalJSON() (data []byte, err error) {
  1607  	type shadow BetaManagedAgentsDocumentBlockParam
  1608  	return param.MarshalObject(r, (*shadow)(&r))
  1609  }
  1610  func (r *BetaManagedAgentsDocumentBlockParam) UnmarshalJSON(data []byte) error {
  1611  	return apijson.UnmarshalRoot(data, r)
  1612  }
  1613  
  1614  // Only one field can be non-zero.
  1615  //
  1616  // Use [param.IsOmitted] to confirm if a field is set.
  1617  type BetaManagedAgentsDocumentBlockSourceUnionParam struct {
  1618  	OfBase64 *BetaManagedAgentsBase64DocumentSourceParam    `json:",omitzero,inline"`
  1619  	OfText   *BetaManagedAgentsPlainTextDocumentSourceParam `json:",omitzero,inline"`
  1620  	OfURL    *BetaManagedAgentsURLDocumentSourceParam       `json:",omitzero,inline"`
  1621  	OfFile   *BetaManagedAgentsFileDocumentSourceParam      `json:",omitzero,inline"`
  1622  	paramUnion
  1623  }
  1624  
  1625  func (u BetaManagedAgentsDocumentBlockSourceUnionParam) MarshalJSON() ([]byte, error) {
  1626  	return param.MarshalUnion(u, u.OfBase64, u.OfText, u.OfURL, u.OfFile)
  1627  }
  1628  func (u *BetaManagedAgentsDocumentBlockSourceUnionParam) UnmarshalJSON(data []byte) error {
  1629  	return apijson.UnmarshalRoot(data, u)
  1630  }
  1631  
  1632  func (u *BetaManagedAgentsDocumentBlockSourceUnionParam) asAny() any {
  1633  	if !param.IsOmitted(u.OfBase64) {
  1634  		return u.OfBase64
  1635  	} else if !param.IsOmitted(u.OfText) {
  1636  		return u.OfText
  1637  	} else if !param.IsOmitted(u.OfURL) {
  1638  		return u.OfURL
  1639  	} else if !param.IsOmitted(u.OfFile) {
  1640  		return u.OfFile
  1641  	}
  1642  	return nil
  1643  }
  1644  
  1645  // Returns a pointer to the underlying variant's property, if present.
  1646  func (u BetaManagedAgentsDocumentBlockSourceUnionParam) GetURL() *string {
  1647  	if vt := u.OfURL; vt != nil {
  1648  		return &vt.URL
  1649  	}
  1650  	return nil
  1651  }
  1652  
  1653  // Returns a pointer to the underlying variant's property, if present.
  1654  func (u BetaManagedAgentsDocumentBlockSourceUnionParam) GetFileID() *string {
  1655  	if vt := u.OfFile; vt != nil {
  1656  		return &vt.FileID
  1657  	}
  1658  	return nil
  1659  }
  1660  
  1661  // Returns a pointer to the underlying variant's property, if present.
  1662  func (u BetaManagedAgentsDocumentBlockSourceUnionParam) GetData() *string {
  1663  	if vt := u.OfBase64; vt != nil {
  1664  		return (*string)(&vt.Data)
  1665  	} else if vt := u.OfText; vt != nil {
  1666  		return (*string)(&vt.Data)
  1667  	}
  1668  	return nil
  1669  }
  1670  
  1671  // Returns a pointer to the underlying variant's property, if present.
  1672  func (u BetaManagedAgentsDocumentBlockSourceUnionParam) GetMediaType() *string {
  1673  	if vt := u.OfBase64; vt != nil {
  1674  		return (*string)(&vt.MediaType)
  1675  	} else if vt := u.OfText; vt != nil {
  1676  		return (*string)(&vt.MediaType)
  1677  	}
  1678  	return nil
  1679  }
  1680  
  1681  // Returns a pointer to the underlying variant's property, if present.
  1682  func (u BetaManagedAgentsDocumentBlockSourceUnionParam) GetType() *string {
  1683  	if vt := u.OfBase64; vt != nil {
  1684  		return (*string)(&vt.Type)
  1685  	} else if vt := u.OfText; vt != nil {
  1686  		return (*string)(&vt.Type)
  1687  	} else if vt := u.OfURL; vt != nil {
  1688  		return (*string)(&vt.Type)
  1689  	} else if vt := u.OfFile; vt != nil {
  1690  		return (*string)(&vt.Type)
  1691  	}
  1692  	return nil
  1693  }
  1694  
  1695  func init() {
  1696  	apijson.RegisterUnion[BetaManagedAgentsDocumentBlockSourceUnionParam](
  1697  		"type",
  1698  		apijson.Discriminator[BetaManagedAgentsBase64DocumentSourceParam]("base64"),
  1699  		apijson.Discriminator[BetaManagedAgentsPlainTextDocumentSourceParam]("text"),
  1700  		apijson.Discriminator[BetaManagedAgentsURLDocumentSourceParam]("url"),
  1701  		apijson.Discriminator[BetaManagedAgentsFileDocumentSourceParam]("file"),
  1702  	)
  1703  }
  1704  
  1705  func BetaManagedAgentsEventParamsOfUserMessage(content []BetaManagedAgentsUserMessageEventParamsContentUnion) BetaManagedAgentsEventParamsUnion {
  1706  	var userMessage BetaManagedAgentsUserMessageEventParams
  1707  	userMessage.Content = content
  1708  	return BetaManagedAgentsEventParamsUnion{OfUserMessage: &userMessage}
  1709  }
  1710  
  1711  func BetaManagedAgentsEventParamsOfUserInterrupt(type_ BetaManagedAgentsUserInterruptEventParamsType) BetaManagedAgentsEventParamsUnion {
  1712  	var userInterrupt BetaManagedAgentsUserInterruptEventParams
  1713  	userInterrupt.Type = type_
  1714  	return BetaManagedAgentsEventParamsUnion{OfUserInterrupt: &userInterrupt}
  1715  }
  1716  
  1717  func BetaManagedAgentsEventParamsOfUserToolConfirmation(result BetaManagedAgentsUserToolConfirmationEventParamsResult, toolUseID string, type_ BetaManagedAgentsUserToolConfirmationEventParamsType) BetaManagedAgentsEventParamsUnion {
  1718  	var userToolConfirmation BetaManagedAgentsUserToolConfirmationEventParams
  1719  	userToolConfirmation.Result = result
  1720  	userToolConfirmation.ToolUseID = toolUseID
  1721  	userToolConfirmation.Type = type_
  1722  	return BetaManagedAgentsEventParamsUnion{OfUserToolConfirmation: &userToolConfirmation}
  1723  }
  1724  
  1725  func BetaManagedAgentsEventParamsOfUserCustomToolResult(customToolUseID string) BetaManagedAgentsEventParamsUnion {
  1726  	var userCustomToolResult BetaManagedAgentsUserCustomToolResultEventParams
  1727  	userCustomToolResult.CustomToolUseID = customToolUseID
  1728  	return BetaManagedAgentsEventParamsUnion{OfUserCustomToolResult: &userCustomToolResult}
  1729  }
  1730  
  1731  func BetaManagedAgentsEventParamsOfUserDefineOutcome[
  1732  	T BetaManagedAgentsFileRubricParams | BetaManagedAgentsTextRubricParams,
  1733  ](description string, rubric T, type_ BetaManagedAgentsUserDefineOutcomeEventParamsType) BetaManagedAgentsEventParamsUnion {
  1734  	var userDefineOutcome BetaManagedAgentsUserDefineOutcomeEventParams
  1735  	userDefineOutcome.Description = description
  1736  	switch v := any(rubric).(type) {
  1737  	case BetaManagedAgentsFileRubricParams:
  1738  		userDefineOutcome.Rubric.OfFile = &v
  1739  	case BetaManagedAgentsTextRubricParams:
  1740  		userDefineOutcome.Rubric.OfText = &v
  1741  	}
  1742  	userDefineOutcome.Type = type_
  1743  	return BetaManagedAgentsEventParamsUnion{OfUserDefineOutcome: &userDefineOutcome}
  1744  }
  1745  
  1746  func BetaManagedAgentsEventParamsOfUserToolResult(toolUseID string) BetaManagedAgentsEventParamsUnion {
  1747  	var userToolResult BetaManagedAgentsUserToolResultEventParams
  1748  	userToolResult.ToolUseID = toolUseID
  1749  	return BetaManagedAgentsEventParamsUnion{OfUserToolResult: &userToolResult}
  1750  }
  1751  
  1752  func BetaManagedAgentsEventParamsOfSystemMessage(content []BetaManagedAgentsSystemContentBlockParam) BetaManagedAgentsEventParamsUnion {
  1753  	var systemMessage BetaManagedAgentsSystemMessageEventParams
  1754  	systemMessage.Content = content
  1755  	return BetaManagedAgentsEventParamsUnion{OfSystemMessage: &systemMessage}
  1756  }
  1757  
  1758  // Only one field can be non-zero.
  1759  //
  1760  // Use [param.IsOmitted] to confirm if a field is set.
  1761  type BetaManagedAgentsEventParamsUnion struct {
  1762  	OfUserMessage          *BetaManagedAgentsUserMessageEventParams          `json:",omitzero,inline"`
  1763  	OfUserInterrupt        *BetaManagedAgentsUserInterruptEventParams        `json:",omitzero,inline"`
  1764  	OfUserToolConfirmation *BetaManagedAgentsUserToolConfirmationEventParams `json:",omitzero,inline"`
  1765  	OfUserCustomToolResult *BetaManagedAgentsUserCustomToolResultEventParams `json:",omitzero,inline"`
  1766  	OfUserDefineOutcome    *BetaManagedAgentsUserDefineOutcomeEventParams    `json:",omitzero,inline"`
  1767  	OfUserToolResult       *BetaManagedAgentsUserToolResultEventParams       `json:",omitzero,inline"`
  1768  	OfSystemMessage        *BetaManagedAgentsSystemMessageEventParams        `json:",omitzero,inline"`
  1769  	paramUnion
  1770  }
  1771  
  1772  func (u BetaManagedAgentsEventParamsUnion) MarshalJSON() ([]byte, error) {
  1773  	return param.MarshalUnion(u, u.OfUserMessage,
  1774  		u.OfUserInterrupt,
  1775  		u.OfUserToolConfirmation,
  1776  		u.OfUserCustomToolResult,
  1777  		u.OfUserDefineOutcome,
  1778  		u.OfUserToolResult,
  1779  		u.OfSystemMessage)
  1780  }
  1781  func (u *BetaManagedAgentsEventParamsUnion) UnmarshalJSON(data []byte) error {
  1782  	return apijson.UnmarshalRoot(data, u)
  1783  }
  1784  
  1785  func (u *BetaManagedAgentsEventParamsUnion) asAny() any {
  1786  	if !param.IsOmitted(u.OfUserMessage) {
  1787  		return u.OfUserMessage
  1788  	} else if !param.IsOmitted(u.OfUserInterrupt) {
  1789  		return u.OfUserInterrupt
  1790  	} else if !param.IsOmitted(u.OfUserToolConfirmation) {
  1791  		return u.OfUserToolConfirmation
  1792  	} else if !param.IsOmitted(u.OfUserCustomToolResult) {
  1793  		return u.OfUserCustomToolResult
  1794  	} else if !param.IsOmitted(u.OfUserDefineOutcome) {
  1795  		return u.OfUserDefineOutcome
  1796  	} else if !param.IsOmitted(u.OfUserToolResult) {
  1797  		return u.OfUserToolResult
  1798  	} else if !param.IsOmitted(u.OfSystemMessage) {
  1799  		return u.OfSystemMessage
  1800  	}
  1801  	return nil
  1802  }
  1803  
  1804  // Returns a pointer to the underlying variant's property, if present.
  1805  func (u BetaManagedAgentsEventParamsUnion) GetSessionThreadID() *string {
  1806  	if vt := u.OfUserInterrupt; vt != nil && vt.SessionThreadID.Valid() {
  1807  		return &vt.SessionThreadID.Value
  1808  	}
  1809  	return nil
  1810  }
  1811  
  1812  // Returns a pointer to the underlying variant's property, if present.
  1813  func (u BetaManagedAgentsEventParamsUnion) GetResult() *string {
  1814  	if vt := u.OfUserToolConfirmation; vt != nil {
  1815  		return (*string)(&vt.Result)
  1816  	}
  1817  	return nil
  1818  }
  1819  
  1820  // Returns a pointer to the underlying variant's property, if present.
  1821  func (u BetaManagedAgentsEventParamsUnion) GetDenyMessage() *string {
  1822  	if vt := u.OfUserToolConfirmation; vt != nil && vt.DenyMessage.Valid() {
  1823  		return &vt.DenyMessage.Value
  1824  	}
  1825  	return nil
  1826  }
  1827  
  1828  // Returns a pointer to the underlying variant's property, if present.
  1829  func (u BetaManagedAgentsEventParamsUnion) GetCustomToolUseID() *string {
  1830  	if vt := u.OfUserCustomToolResult; vt != nil {
  1831  		return &vt.CustomToolUseID
  1832  	}
  1833  	return nil
  1834  }
  1835  
  1836  // Returns a pointer to the underlying variant's property, if present.
  1837  func (u BetaManagedAgentsEventParamsUnion) GetDescription() *string {
  1838  	if vt := u.OfUserDefineOutcome; vt != nil {
  1839  		return &vt.Description
  1840  	}
  1841  	return nil
  1842  }
  1843  
  1844  // Returns a pointer to the underlying variant's property, if present.
  1845  func (u BetaManagedAgentsEventParamsUnion) GetRubric() *BetaManagedAgentsUserDefineOutcomeEventParamsRubricUnion {
  1846  	if vt := u.OfUserDefineOutcome; vt != nil {
  1847  		return &vt.Rubric
  1848  	}
  1849  	return nil
  1850  }
  1851  
  1852  // Returns a pointer to the underlying variant's property, if present.
  1853  func (u BetaManagedAgentsEventParamsUnion) GetMaxIterations() *int64 {
  1854  	if vt := u.OfUserDefineOutcome; vt != nil && vt.MaxIterations.Valid() {
  1855  		return &vt.MaxIterations.Value
  1856  	}
  1857  	return nil
  1858  }
  1859  
  1860  // Returns a pointer to the underlying variant's property, if present.
  1861  func (u BetaManagedAgentsEventParamsUnion) GetType() *string {
  1862  	if vt := u.OfUserMessage; vt != nil {
  1863  		return (*string)(&vt.Type)
  1864  	} else if vt := u.OfUserInterrupt; vt != nil {
  1865  		return (*string)(&vt.Type)
  1866  	} else if vt := u.OfUserToolConfirmation; vt != nil {
  1867  		return (*string)(&vt.Type)
  1868  	} else if vt := u.OfUserCustomToolResult; vt != nil {
  1869  		return (*string)(&vt.Type)
  1870  	} else if vt := u.OfUserDefineOutcome; vt != nil {
  1871  		return (*string)(&vt.Type)
  1872  	} else if vt := u.OfUserToolResult; vt != nil {
  1873  		return (*string)(&vt.Type)
  1874  	} else if vt := u.OfSystemMessage; vt != nil {
  1875  		return (*string)(&vt.Type)
  1876  	}
  1877  	return nil
  1878  }
  1879  
  1880  // Returns a pointer to the underlying variant's property, if present.
  1881  func (u BetaManagedAgentsEventParamsUnion) GetToolUseID() *string {
  1882  	if vt := u.OfUserToolConfirmation; vt != nil {
  1883  		return (*string)(&vt.ToolUseID)
  1884  	} else if vt := u.OfUserToolResult; vt != nil {
  1885  		return (*string)(&vt.ToolUseID)
  1886  	}
  1887  	return nil
  1888  }
  1889  
  1890  // Returns a pointer to the underlying variant's property, if present.
  1891  func (u BetaManagedAgentsEventParamsUnion) GetIsError() *bool {
  1892  	if vt := u.OfUserCustomToolResult; vt != nil && vt.IsError.Valid() {
  1893  		return &vt.IsError.Value
  1894  	} else if vt := u.OfUserToolResult; vt != nil && vt.IsError.Valid() {
  1895  		return &vt.IsError.Value
  1896  	}
  1897  	return nil
  1898  }
  1899  
  1900  // Returns a subunion which exports methods to access subproperties
  1901  //
  1902  // Or use AsAny() to get the underlying value
  1903  func (u BetaManagedAgentsEventParamsUnion) GetContent() (res betaManagedAgentsEventParamsUnionContent) {
  1904  	if vt := u.OfUserMessage; vt != nil {
  1905  		res.any = &vt.Content
  1906  	} else if vt := u.OfUserCustomToolResult; vt != nil {
  1907  		res.any = &vt.Content
  1908  	} else if vt := u.OfUserToolResult; vt != nil {
  1909  		res.any = &vt.Content
  1910  	} else if vt := u.OfSystemMessage; vt != nil {
  1911  		res.any = &vt.Content
  1912  	}
  1913  	return
  1914  }
  1915  
  1916  // Can have the runtime types
  1917  // [_[]BetaManagedAgentsUserMessageEventParamsContentUnion],
  1918  // [_[]BetaManagedAgentsUserCustomToolResultEventParamsContentUnion],
  1919  // [_[]BetaManagedAgentsUserToolResultEventParamsContentUnion],
  1920  // [_[]BetaManagedAgentsSystemContentBlockParam]
  1921  type betaManagedAgentsEventParamsUnionContent struct{ any }
  1922  
  1923  // Use the following switch statement to get the type of the union:
  1924  //
  1925  //	switch u.AsAny().(type) {
  1926  //	case *[]anthropic.BetaManagedAgentsUserMessageEventParamsContentUnion:
  1927  //	case *[]anthropic.BetaManagedAgentsUserCustomToolResultEventParamsContentUnion:
  1928  //	case *[]anthropic.BetaManagedAgentsUserToolResultEventParamsContentUnion:
  1929  //	case *[]anthropic.BetaManagedAgentsSystemContentBlockParam:
  1930  //	default:
  1931  //	    fmt.Errorf("not present")
  1932  //	}
  1933  func (u betaManagedAgentsEventParamsUnionContent) AsAny() any { return u.any }
  1934  
  1935  func init() {
  1936  	apijson.RegisterUnion[BetaManagedAgentsEventParamsUnion](
  1937  		"type",
  1938  		apijson.Discriminator[BetaManagedAgentsUserMessageEventParams]("user.message"),
  1939  		apijson.Discriminator[BetaManagedAgentsUserInterruptEventParams]("user.interrupt"),
  1940  		apijson.Discriminator[BetaManagedAgentsUserToolConfirmationEventParams]("user.tool_confirmation"),
  1941  		apijson.Discriminator[BetaManagedAgentsUserCustomToolResultEventParams]("user.custom_tool_result"),
  1942  		apijson.Discriminator[BetaManagedAgentsUserDefineOutcomeEventParams]("user.define_outcome"),
  1943  		apijson.Discriminator[BetaManagedAgentsUserToolResultEventParams]("user.tool_result"),
  1944  		apijson.Discriminator[BetaManagedAgentsSystemMessageEventParams]("system.message"),
  1945  	)
  1946  }
  1947  
  1948  // Document referenced by file ID.
  1949  type BetaManagedAgentsFileDocumentSource struct {
  1950  	// ID of a previously uploaded file.
  1951  	FileID string `json:"file_id" api:"required"`
  1952  	// Any of "file".
  1953  	Type BetaManagedAgentsFileDocumentSourceType `json:"type" api:"required"`
  1954  	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
  1955  	JSON struct {
  1956  		FileID      respjson.Field
  1957  		Type        respjson.Field
  1958  		ExtraFields map[string]respjson.Field
  1959  		raw         string
  1960  	} `json:"-"`
  1961  }
  1962  
  1963  // Returns the unmodified JSON received from the API
  1964  func (r BetaManagedAgentsFileDocumentSource) RawJSON() string { return r.JSON.raw }
  1965  func (r *BetaManagedAgentsFileDocumentSource) UnmarshalJSON(data []byte) error {
  1966  	return apijson.UnmarshalRoot(data, r)
  1967  }
  1968  
  1969  // ToParam converts this BetaManagedAgentsFileDocumentSource to a
  1970  // BetaManagedAgentsFileDocumentSourceParam.
  1971  //
  1972  // Warning: the fields of the param type will not be present. ToParam should only
  1973  // be used at the last possible moment before sending a request. Test for this with
  1974  // BetaManagedAgentsFileDocumentSourceParam.Overrides()
  1975  func (r BetaManagedAgentsFileDocumentSource) ToParam() BetaManagedAgentsFileDocumentSourceParam {
  1976  	return param.Override[BetaManagedAgentsFileDocumentSourceParam](json.RawMessage(r.RawJSON()))
  1977  }
  1978  
  1979  type BetaManagedAgentsFileDocumentSourceType string
  1980  
  1981  const (
  1982  	BetaManagedAgentsFileDocumentSourceTypeFile BetaManagedAgentsFileDocumentSourceType = "file"
  1983  )
  1984  
  1985  // Document referenced by file ID.
  1986  //
  1987  // The properties FileID, Type are required.
  1988  type BetaManagedAgentsFileDocumentSourceParam struct {
  1989  	// ID of a previously uploaded file.
  1990  	FileID string `json:"file_id" api:"required"`
  1991  	// Any of "file".
  1992  	Type BetaManagedAgentsFileDocumentSourceType `json:"type,omitzero" api:"required"`
  1993  	paramObj
  1994  }
  1995  
  1996  func (r BetaManagedAgentsFileDocumentSourceParam) MarshalJSON() (data []byte, err error) {
  1997  	type shadow BetaManagedAgentsFileDocumentSourceParam
  1998  	return param.MarshalObject(r, (*shadow)(&r))
  1999  }
  2000  func (r *BetaManagedAgentsFileDocumentSourceParam) UnmarshalJSON(data []byte) error {
  2001  	return apijson.UnmarshalRoot(data, r)
  2002  }
  2003  
  2004  // Image referenced by file ID.
  2005  type BetaManagedAgentsFileImageSource struct {
  2006  	// ID of a previously uploaded file.
  2007  	FileID string `json:"file_id" api:"required"`
  2008  	// Any of "file".
  2009  	Type BetaManagedAgentsFileImageSourceType `json:"type" api:"required"`
  2010  	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
  2011  	JSON struct {
  2012  		FileID      respjson.Field
  2013  		Type        respjson.Field
  2014  		ExtraFields map[string]respjson.Field
  2015  		raw         string
  2016  	} `json:"-"`
  2017  }
  2018  
  2019  // Returns the unmodified JSON received from the API
  2020  func (r BetaManagedAgentsFileImageSource) RawJSON() string { return r.JSON.raw }
  2021  func (r *BetaManagedAgentsFileImageSource) UnmarshalJSON(data []byte) error {
  2022  	return apijson.UnmarshalRoot(data, r)
  2023  }
  2024  
  2025  // ToParam converts this BetaManagedAgentsFileImageSource to a
  2026  // BetaManagedAgentsFileImageSourceParam.
  2027  //
  2028  // Warning: the fields of the param type will not be present. ToParam should only
  2029  // be used at the last possible moment before sending a request. Test for this with
  2030  // BetaManagedAgentsFileImageSourceParam.Overrides()
  2031  func (r BetaManagedAgentsFileImageSource) ToParam() BetaManagedAgentsFileImageSourceParam {
  2032  	return param.Override[BetaManagedAgentsFileImageSourceParam](json.RawMessage(r.RawJSON()))
  2033  }
  2034  
  2035  type BetaManagedAgentsFileImageSourceType string
  2036  
  2037  const (
  2038  	BetaManagedAgentsFileImageSourceTypeFile BetaManagedAgentsFileImageSourceType = "file"
  2039  )
  2040  
  2041  // Image referenced by file ID.
  2042  //
  2043  // The properties FileID, Type are required.
  2044  type BetaManagedAgentsFileImageSourceParam struct {
  2045  	// ID of a previously uploaded file.
  2046  	FileID string `json:"file_id" api:"required"`
  2047  	// Any of "file".
  2048  	Type BetaManagedAgentsFileImageSourceType `json:"type,omitzero" api:"required"`
  2049  	paramObj
  2050  }
  2051  
  2052  func (r BetaManagedAgentsFileImageSourceParam) MarshalJSON() (data []byte, err error) {
  2053  	type shadow BetaManagedAgentsFileImageSourceParam
  2054  	return param.MarshalObject(r, (*shadow)(&r))
  2055  }
  2056  func (r *BetaManagedAgentsFileImageSourceParam) UnmarshalJSON(data []byte) error {
  2057  	return apijson.UnmarshalRoot(data, r)
  2058  }
  2059  
  2060  // Rubric referenced by a file uploaded via the Files API.
  2061  type BetaManagedAgentsFileRubric struct {
  2062  	// ID of the rubric file.
  2063  	FileID string `json:"file_id" api:"required"`
  2064  	// Any of "file".
  2065  	Type BetaManagedAgentsFileRubricType `json:"type" api:"required"`
  2066  	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
  2067  	JSON struct {
  2068  		FileID      respjson.Field
  2069  		Type        respjson.Field
  2070  		ExtraFields map[string]respjson.Field
  2071  		raw         string
  2072  	} `json:"-"`
  2073  }
  2074  
  2075  // Returns the unmodified JSON received from the API
  2076  func (r BetaManagedAgentsFileRubric) RawJSON() string { return r.JSON.raw }
  2077  func (r *BetaManagedAgentsFileRubric) UnmarshalJSON(data []byte) error {
  2078  	return apijson.UnmarshalRoot(data, r)
  2079  }
  2080  
  2081  type BetaManagedAgentsFileRubricType string
  2082  
  2083  const (
  2084  	BetaManagedAgentsFileRubricTypeFile BetaManagedAgentsFileRubricType = "file"
  2085  )
  2086  
  2087  // Rubric referenced by a file uploaded via the Files API.
  2088  //
  2089  // The properties FileID, Type are required.
  2090  type BetaManagedAgentsFileRubricParams struct {
  2091  	// ID of the rubric file.
  2092  	FileID string `json:"file_id" api:"required"`
  2093  	// Any of "file".
  2094  	Type BetaManagedAgentsFileRubricParamsType `json:"type,omitzero" api:"required"`
  2095  	paramObj
  2096  }
  2097  
  2098  func (r BetaManagedAgentsFileRubricParams) MarshalJSON() (data []byte, err error) {
  2099  	type shadow BetaManagedAgentsFileRubricParams
  2100  	return param.MarshalObject(r, (*shadow)(&r))
  2101  }
  2102  func (r *BetaManagedAgentsFileRubricParams) UnmarshalJSON(data []byte) error {
  2103  	return apijson.UnmarshalRoot(data, r)
  2104  }
  2105  
  2106  type BetaManagedAgentsFileRubricParamsType string
  2107  
  2108  const (
  2109  	BetaManagedAgentsFileRubricParamsTypeFile BetaManagedAgentsFileRubricParamsType = "file"
  2110  )
  2111  
  2112  // Image content specified directly as base64 data or as a reference via a URL.
  2113  type BetaManagedAgentsImageBlock struct {
  2114  	// Union type for image source variants.
  2115  	Source BetaManagedAgentsImageBlockSourceUnion `json:"source" api:"required"`
  2116  	// Any of "image".
  2117  	Type BetaManagedAgentsImageBlockType `json:"type" api:"required"`
  2118  	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
  2119  	JSON struct {
  2120  		Source      respjson.Field
  2121  		Type        respjson.Field
  2122  		ExtraFields map[string]respjson.Field
  2123  		raw         string
  2124  	} `json:"-"`
  2125  }
  2126  
  2127  // Returns the unmodified JSON received from the API
  2128  func (r BetaManagedAgentsImageBlock) RawJSON() string { return r.JSON.raw }
  2129  func (r *BetaManagedAgentsImageBlock) UnmarshalJSON(data []byte) error {
  2130  	return apijson.UnmarshalRoot(data, r)
  2131  }
  2132  
  2133  // ToParam converts this BetaManagedAgentsImageBlock to a
  2134  // BetaManagedAgentsImageBlockParam.
  2135  //
  2136  // Warning: the fields of the param type will not be present. ToParam should only
  2137  // be used at the last possible moment before sending a request. Test for this with
  2138  // BetaManagedAgentsImageBlockParam.Overrides()
  2139  func (r BetaManagedAgentsImageBlock) ToParam() BetaManagedAgentsImageBlockParam {
  2140  	return param.Override[BetaManagedAgentsImageBlockParam](json.RawMessage(r.RawJSON()))
  2141  }
  2142  
  2143  // BetaManagedAgentsImageBlockSourceUnion contains all possible properties and
  2144  // values from [BetaManagedAgentsBase64ImageSource],
  2145  // [BetaManagedAgentsURLImageSource], [BetaManagedAgentsFileImageSource].
  2146  //
  2147  // Use the [BetaManagedAgentsImageBlockSourceUnion.AsAny] method to switch on the
  2148  // variant.
  2149  //
  2150  // Use the methods beginning with 'As' to cast the union to one of its variants.
  2151  type BetaManagedAgentsImageBlockSourceUnion struct {
  2152  	// This field is from variant [BetaManagedAgentsBase64ImageSource].
  2153  	Data string `json:"data"`
  2154  	// This field is from variant [BetaManagedAgentsBase64ImageSource].
  2155  	MediaType string `json:"media_type"`
  2156  	// Any of "base64", "url", "file".
  2157  	Type string `json:"type"`
  2158  	// This field is from variant [BetaManagedAgentsURLImageSource].
  2159  	URL string `json:"url"`
  2160  	// This field is from variant [BetaManagedAgentsFileImageSource].
  2161  	FileID string `json:"file_id"`
  2162  	JSON   struct {
  2163  		Data      respjson.Field
  2164  		MediaType respjson.Field
  2165  		Type      respjson.Field
  2166  		URL       respjson.Field
  2167  		FileID    respjson.Field
  2168  		raw       string
  2169  	} `json:"-"`
  2170  }
  2171  
  2172  // anyBetaManagedAgentsImageBlockSource is implemented by each variant of
  2173  // [BetaManagedAgentsImageBlockSourceUnion] to add type safety for the return type
  2174  // of [BetaManagedAgentsImageBlockSourceUnion.AsAny]
  2175  type anyBetaManagedAgentsImageBlockSource interface {
  2176  	implBetaManagedAgentsImageBlockSourceUnion()
  2177  }
  2178  
  2179  func (BetaManagedAgentsBase64ImageSource) implBetaManagedAgentsImageBlockSourceUnion() {}
  2180  func (BetaManagedAgentsURLImageSource) implBetaManagedAgentsImageBlockSourceUnion()    {}
  2181  func (BetaManagedAgentsFileImageSource) implBetaManagedAgentsImageBlockSourceUnion()   {}
  2182  
  2183  // Use the following switch statement to find the correct variant
  2184  //
  2185  //	switch variant := BetaManagedAgentsImageBlockSourceUnion.AsAny().(type) {
  2186  //	case anthropic.BetaManagedAgentsBase64ImageSource:
  2187  //	case anthropic.BetaManagedAgentsURLImageSource:
  2188  //	case anthropic.BetaManagedAgentsFileImageSource:
  2189  //	default:
  2190  //	  fmt.Errorf("no variant present")
  2191  //	}
  2192  func (u BetaManagedAgentsImageBlockSourceUnion) AsAny() anyBetaManagedAgentsImageBlockSource {
  2193  	switch u.Type {
  2194  	case "base64":
  2195  		return u.AsBase64()
  2196  	case "url":
  2197  		return u.AsURL()
  2198  	case "file":
  2199  		return u.AsFile()
  2200  	}
  2201  	return nil
  2202  }
  2203  
  2204  func (u BetaManagedAgentsImageBlockSourceUnion) AsBase64() (v BetaManagedAgentsBase64ImageSource) {
  2205  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  2206  	return
  2207  }
  2208  
  2209  func (u BetaManagedAgentsImageBlockSourceUnion) AsURL() (v BetaManagedAgentsURLImageSource) {
  2210  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  2211  	return
  2212  }
  2213  
  2214  func (u BetaManagedAgentsImageBlockSourceUnion) AsFile() (v BetaManagedAgentsFileImageSource) {
  2215  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  2216  	return
  2217  }
  2218  
  2219  // Returns the unmodified JSON received from the API
  2220  func (u BetaManagedAgentsImageBlockSourceUnion) RawJSON() string { return u.JSON.raw }
  2221  
  2222  func (r *BetaManagedAgentsImageBlockSourceUnion) UnmarshalJSON(data []byte) error {
  2223  	return apijson.UnmarshalRoot(data, r)
  2224  }
  2225  
  2226  type BetaManagedAgentsImageBlockType string
  2227  
  2228  const (
  2229  	BetaManagedAgentsImageBlockTypeImage BetaManagedAgentsImageBlockType = "image"
  2230  )
  2231  
  2232  // Image content specified directly as base64 data or as a reference via a URL.
  2233  //
  2234  // The properties Source, Type are required.
  2235  type BetaManagedAgentsImageBlockParam struct {
  2236  	// Union type for image source variants.
  2237  	Source BetaManagedAgentsImageBlockSourceUnionParam `json:"source,omitzero" api:"required"`
  2238  	// Any of "image".
  2239  	Type BetaManagedAgentsImageBlockType `json:"type,omitzero" api:"required"`
  2240  	paramObj
  2241  }
  2242  
  2243  func (r BetaManagedAgentsImageBlockParam) MarshalJSON() (data []byte, err error) {
  2244  	type shadow BetaManagedAgentsImageBlockParam
  2245  	return param.MarshalObject(r, (*shadow)(&r))
  2246  }
  2247  func (r *BetaManagedAgentsImageBlockParam) UnmarshalJSON(data []byte) error {
  2248  	return apijson.UnmarshalRoot(data, r)
  2249  }
  2250  
  2251  // Only one field can be non-zero.
  2252  //
  2253  // Use [param.IsOmitted] to confirm if a field is set.
  2254  type BetaManagedAgentsImageBlockSourceUnionParam struct {
  2255  	OfBase64 *BetaManagedAgentsBase64ImageSourceParam `json:",omitzero,inline"`
  2256  	OfURL    *BetaManagedAgentsURLImageSourceParam    `json:",omitzero,inline"`
  2257  	OfFile   *BetaManagedAgentsFileImageSourceParam   `json:",omitzero,inline"`
  2258  	paramUnion
  2259  }
  2260  
  2261  func (u BetaManagedAgentsImageBlockSourceUnionParam) MarshalJSON() ([]byte, error) {
  2262  	return param.MarshalUnion(u, u.OfBase64, u.OfURL, u.OfFile)
  2263  }
  2264  func (u *BetaManagedAgentsImageBlockSourceUnionParam) UnmarshalJSON(data []byte) error {
  2265  	return apijson.UnmarshalRoot(data, u)
  2266  }
  2267  
  2268  func (u *BetaManagedAgentsImageBlockSourceUnionParam) asAny() any {
  2269  	if !param.IsOmitted(u.OfBase64) {
  2270  		return u.OfBase64
  2271  	} else if !param.IsOmitted(u.OfURL) {
  2272  		return u.OfURL
  2273  	} else if !param.IsOmitted(u.OfFile) {
  2274  		return u.OfFile
  2275  	}
  2276  	return nil
  2277  }
  2278  
  2279  // Returns a pointer to the underlying variant's property, if present.
  2280  func (u BetaManagedAgentsImageBlockSourceUnionParam) GetData() *string {
  2281  	if vt := u.OfBase64; vt != nil {
  2282  		return &vt.Data
  2283  	}
  2284  	return nil
  2285  }
  2286  
  2287  // Returns a pointer to the underlying variant's property, if present.
  2288  func (u BetaManagedAgentsImageBlockSourceUnionParam) GetMediaType() *string {
  2289  	if vt := u.OfBase64; vt != nil {
  2290  		return &vt.MediaType
  2291  	}
  2292  	return nil
  2293  }
  2294  
  2295  // Returns a pointer to the underlying variant's property, if present.
  2296  func (u BetaManagedAgentsImageBlockSourceUnionParam) GetURL() *string {
  2297  	if vt := u.OfURL; vt != nil {
  2298  		return &vt.URL
  2299  	}
  2300  	return nil
  2301  }
  2302  
  2303  // Returns a pointer to the underlying variant's property, if present.
  2304  func (u BetaManagedAgentsImageBlockSourceUnionParam) GetFileID() *string {
  2305  	if vt := u.OfFile; vt != nil {
  2306  		return &vt.FileID
  2307  	}
  2308  	return nil
  2309  }
  2310  
  2311  // Returns a pointer to the underlying variant's property, if present.
  2312  func (u BetaManagedAgentsImageBlockSourceUnionParam) GetType() *string {
  2313  	if vt := u.OfBase64; vt != nil {
  2314  		return (*string)(&vt.Type)
  2315  	} else if vt := u.OfURL; vt != nil {
  2316  		return (*string)(&vt.Type)
  2317  	} else if vt := u.OfFile; vt != nil {
  2318  		return (*string)(&vt.Type)
  2319  	}
  2320  	return nil
  2321  }
  2322  
  2323  func init() {
  2324  	apijson.RegisterUnion[BetaManagedAgentsImageBlockSourceUnionParam](
  2325  		"type",
  2326  		apijson.Discriminator[BetaManagedAgentsBase64ImageSourceParam]("base64"),
  2327  		apijson.Discriminator[BetaManagedAgentsURLImageSourceParam]("url"),
  2328  		apijson.Discriminator[BetaManagedAgentsFileImageSourceParam]("file"),
  2329  	)
  2330  }
  2331  
  2332  // Authentication to an MCP server failed.
  2333  type BetaManagedAgentsMCPAuthenticationFailedError struct {
  2334  	// Name of the MCP server that failed authentication.
  2335  	MCPServerName string `json:"mcp_server_name" api:"required"`
  2336  	// Human-readable error description.
  2337  	Message string `json:"message" api:"required"`
  2338  	// What the client should do next in response to this error.
  2339  	RetryStatus BetaManagedAgentsMCPAuthenticationFailedErrorRetryStatusUnion `json:"retry_status" api:"required"`
  2340  	// Any of "mcp_authentication_failed_error".
  2341  	Type BetaManagedAgentsMCPAuthenticationFailedErrorType `json:"type" api:"required"`
  2342  	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
  2343  	JSON struct {
  2344  		MCPServerName respjson.Field
  2345  		Message       respjson.Field
  2346  		RetryStatus   respjson.Field
  2347  		Type          respjson.Field
  2348  		ExtraFields   map[string]respjson.Field
  2349  		raw           string
  2350  	} `json:"-"`
  2351  }
  2352  
  2353  // Returns the unmodified JSON received from the API
  2354  func (r BetaManagedAgentsMCPAuthenticationFailedError) RawJSON() string { return r.JSON.raw }
  2355  func (r *BetaManagedAgentsMCPAuthenticationFailedError) UnmarshalJSON(data []byte) error {
  2356  	return apijson.UnmarshalRoot(data, r)
  2357  }
  2358  
  2359  // BetaManagedAgentsMCPAuthenticationFailedErrorRetryStatusUnion contains all
  2360  // possible properties and values from [BetaManagedAgentsRetryStatusRetrying],
  2361  // [BetaManagedAgentsRetryStatusExhausted], [BetaManagedAgentsRetryStatusTerminal].
  2362  //
  2363  // Use the [BetaManagedAgentsMCPAuthenticationFailedErrorRetryStatusUnion.AsAny]
  2364  // method to switch on the variant.
  2365  //
  2366  // Use the methods beginning with 'As' to cast the union to one of its variants.
  2367  type BetaManagedAgentsMCPAuthenticationFailedErrorRetryStatusUnion struct {
  2368  	// Any of "retrying", "exhausted", "terminal".
  2369  	Type string `json:"type"`
  2370  	JSON struct {
  2371  		Type respjson.Field
  2372  		raw  string
  2373  	} `json:"-"`
  2374  }
  2375  
  2376  // anyBetaManagedAgentsMCPAuthenticationFailedErrorRetryStatus is implemented by
  2377  // each variant of [BetaManagedAgentsMCPAuthenticationFailedErrorRetryStatusUnion]
  2378  // to add type safety for the return type of
  2379  // [BetaManagedAgentsMCPAuthenticationFailedErrorRetryStatusUnion.AsAny]
  2380  type anyBetaManagedAgentsMCPAuthenticationFailedErrorRetryStatus interface {
  2381  	implBetaManagedAgentsMCPAuthenticationFailedErrorRetryStatusUnion()
  2382  }
  2383  
  2384  func (BetaManagedAgentsRetryStatusRetrying) implBetaManagedAgentsMCPAuthenticationFailedErrorRetryStatusUnion() {
  2385  }
  2386  func (BetaManagedAgentsRetryStatusExhausted) implBetaManagedAgentsMCPAuthenticationFailedErrorRetryStatusUnion() {
  2387  }
  2388  func (BetaManagedAgentsRetryStatusTerminal) implBetaManagedAgentsMCPAuthenticationFailedErrorRetryStatusUnion() {
  2389  }
  2390  
  2391  // Use the following switch statement to find the correct variant
  2392  //
  2393  //	switch variant := BetaManagedAgentsMCPAuthenticationFailedErrorRetryStatusUnion.AsAny().(type) {
  2394  //	case anthropic.BetaManagedAgentsRetryStatusRetrying:
  2395  //	case anthropic.BetaManagedAgentsRetryStatusExhausted:
  2396  //	case anthropic.BetaManagedAgentsRetryStatusTerminal:
  2397  //	default:
  2398  //	  fmt.Errorf("no variant present")
  2399  //	}
  2400  func (u BetaManagedAgentsMCPAuthenticationFailedErrorRetryStatusUnion) AsAny() anyBetaManagedAgentsMCPAuthenticationFailedErrorRetryStatus {
  2401  	switch u.Type {
  2402  	case "retrying":
  2403  		return u.AsRetrying()
  2404  	case "exhausted":
  2405  		return u.AsExhausted()
  2406  	case "terminal":
  2407  		return u.AsTerminal()
  2408  	}
  2409  	return nil
  2410  }
  2411  
  2412  func (u BetaManagedAgentsMCPAuthenticationFailedErrorRetryStatusUnion) AsRetrying() (v BetaManagedAgentsRetryStatusRetrying) {
  2413  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  2414  	return
  2415  }
  2416  
  2417  func (u BetaManagedAgentsMCPAuthenticationFailedErrorRetryStatusUnion) AsExhausted() (v BetaManagedAgentsRetryStatusExhausted) {
  2418  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  2419  	return
  2420  }
  2421  
  2422  func (u BetaManagedAgentsMCPAuthenticationFailedErrorRetryStatusUnion) AsTerminal() (v BetaManagedAgentsRetryStatusTerminal) {
  2423  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  2424  	return
  2425  }
  2426  
  2427  // Returns the unmodified JSON received from the API
  2428  func (u BetaManagedAgentsMCPAuthenticationFailedErrorRetryStatusUnion) RawJSON() string {
  2429  	return u.JSON.raw
  2430  }
  2431  
  2432  func (r *BetaManagedAgentsMCPAuthenticationFailedErrorRetryStatusUnion) UnmarshalJSON(data []byte) error {
  2433  	return apijson.UnmarshalRoot(data, r)
  2434  }
  2435  
  2436  type BetaManagedAgentsMCPAuthenticationFailedErrorType string
  2437  
  2438  const (
  2439  	BetaManagedAgentsMCPAuthenticationFailedErrorTypeMCPAuthenticationFailedError BetaManagedAgentsMCPAuthenticationFailedErrorType = "mcp_authentication_failed_error"
  2440  )
  2441  
  2442  // Failed to connect to an MCP server.
  2443  type BetaManagedAgentsMCPConnectionFailedError struct {
  2444  	// Name of the MCP server that failed to connect.
  2445  	MCPServerName string `json:"mcp_server_name" api:"required"`
  2446  	// Human-readable error description.
  2447  	Message string `json:"message" api:"required"`
  2448  	// What the client should do next in response to this error.
  2449  	RetryStatus BetaManagedAgentsMCPConnectionFailedErrorRetryStatusUnion `json:"retry_status" api:"required"`
  2450  	// Any of "mcp_connection_failed_error".
  2451  	Type BetaManagedAgentsMCPConnectionFailedErrorType `json:"type" api:"required"`
  2452  	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
  2453  	JSON struct {
  2454  		MCPServerName respjson.Field
  2455  		Message       respjson.Field
  2456  		RetryStatus   respjson.Field
  2457  		Type          respjson.Field
  2458  		ExtraFields   map[string]respjson.Field
  2459  		raw           string
  2460  	} `json:"-"`
  2461  }
  2462  
  2463  // Returns the unmodified JSON received from the API
  2464  func (r BetaManagedAgentsMCPConnectionFailedError) RawJSON() string { return r.JSON.raw }
  2465  func (r *BetaManagedAgentsMCPConnectionFailedError) UnmarshalJSON(data []byte) error {
  2466  	return apijson.UnmarshalRoot(data, r)
  2467  }
  2468  
  2469  // BetaManagedAgentsMCPConnectionFailedErrorRetryStatusUnion contains all possible
  2470  // properties and values from [BetaManagedAgentsRetryStatusRetrying],
  2471  // [BetaManagedAgentsRetryStatusExhausted], [BetaManagedAgentsRetryStatusTerminal].
  2472  //
  2473  // Use the [BetaManagedAgentsMCPConnectionFailedErrorRetryStatusUnion.AsAny] method
  2474  // to switch on the variant.
  2475  //
  2476  // Use the methods beginning with 'As' to cast the union to one of its variants.
  2477  type BetaManagedAgentsMCPConnectionFailedErrorRetryStatusUnion struct {
  2478  	// Any of "retrying", "exhausted", "terminal".
  2479  	Type string `json:"type"`
  2480  	JSON struct {
  2481  		Type respjson.Field
  2482  		raw  string
  2483  	} `json:"-"`
  2484  }
  2485  
  2486  // anyBetaManagedAgentsMCPConnectionFailedErrorRetryStatus is implemented by each
  2487  // variant of [BetaManagedAgentsMCPConnectionFailedErrorRetryStatusUnion] to add
  2488  // type safety for the return type of
  2489  // [BetaManagedAgentsMCPConnectionFailedErrorRetryStatusUnion.AsAny]
  2490  type anyBetaManagedAgentsMCPConnectionFailedErrorRetryStatus interface {
  2491  	implBetaManagedAgentsMCPConnectionFailedErrorRetryStatusUnion()
  2492  }
  2493  
  2494  func (BetaManagedAgentsRetryStatusRetrying) implBetaManagedAgentsMCPConnectionFailedErrorRetryStatusUnion() {
  2495  }
  2496  func (BetaManagedAgentsRetryStatusExhausted) implBetaManagedAgentsMCPConnectionFailedErrorRetryStatusUnion() {
  2497  }
  2498  func (BetaManagedAgentsRetryStatusTerminal) implBetaManagedAgentsMCPConnectionFailedErrorRetryStatusUnion() {
  2499  }
  2500  
  2501  // Use the following switch statement to find the correct variant
  2502  //
  2503  //	switch variant := BetaManagedAgentsMCPConnectionFailedErrorRetryStatusUnion.AsAny().(type) {
  2504  //	case anthropic.BetaManagedAgentsRetryStatusRetrying:
  2505  //	case anthropic.BetaManagedAgentsRetryStatusExhausted:
  2506  //	case anthropic.BetaManagedAgentsRetryStatusTerminal:
  2507  //	default:
  2508  //	  fmt.Errorf("no variant present")
  2509  //	}
  2510  func (u BetaManagedAgentsMCPConnectionFailedErrorRetryStatusUnion) AsAny() anyBetaManagedAgentsMCPConnectionFailedErrorRetryStatus {
  2511  	switch u.Type {
  2512  	case "retrying":
  2513  		return u.AsRetrying()
  2514  	case "exhausted":
  2515  		return u.AsExhausted()
  2516  	case "terminal":
  2517  		return u.AsTerminal()
  2518  	}
  2519  	return nil
  2520  }
  2521  
  2522  func (u BetaManagedAgentsMCPConnectionFailedErrorRetryStatusUnion) AsRetrying() (v BetaManagedAgentsRetryStatusRetrying) {
  2523  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  2524  	return
  2525  }
  2526  
  2527  func (u BetaManagedAgentsMCPConnectionFailedErrorRetryStatusUnion) AsExhausted() (v BetaManagedAgentsRetryStatusExhausted) {
  2528  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  2529  	return
  2530  }
  2531  
  2532  func (u BetaManagedAgentsMCPConnectionFailedErrorRetryStatusUnion) AsTerminal() (v BetaManagedAgentsRetryStatusTerminal) {
  2533  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  2534  	return
  2535  }
  2536  
  2537  // Returns the unmodified JSON received from the API
  2538  func (u BetaManagedAgentsMCPConnectionFailedErrorRetryStatusUnion) RawJSON() string {
  2539  	return u.JSON.raw
  2540  }
  2541  
  2542  func (r *BetaManagedAgentsMCPConnectionFailedErrorRetryStatusUnion) UnmarshalJSON(data []byte) error {
  2543  	return apijson.UnmarshalRoot(data, r)
  2544  }
  2545  
  2546  type BetaManagedAgentsMCPConnectionFailedErrorType string
  2547  
  2548  const (
  2549  	BetaManagedAgentsMCPConnectionFailedErrorTypeMCPConnectionFailedError BetaManagedAgentsMCPConnectionFailedErrorType = "mcp_connection_failed_error"
  2550  )
  2551  
  2552  // The model is currently overloaded. Emitted after automatic retries are
  2553  // exhausted.
  2554  type BetaManagedAgentsModelOverloadedError struct {
  2555  	// Human-readable error description.
  2556  	Message string `json:"message" api:"required"`
  2557  	// What the client should do next in response to this error.
  2558  	RetryStatus BetaManagedAgentsModelOverloadedErrorRetryStatusUnion `json:"retry_status" api:"required"`
  2559  	// Any of "model_overloaded_error".
  2560  	Type BetaManagedAgentsModelOverloadedErrorType `json:"type" api:"required"`
  2561  	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
  2562  	JSON struct {
  2563  		Message     respjson.Field
  2564  		RetryStatus respjson.Field
  2565  		Type        respjson.Field
  2566  		ExtraFields map[string]respjson.Field
  2567  		raw         string
  2568  	} `json:"-"`
  2569  }
  2570  
  2571  // Returns the unmodified JSON received from the API
  2572  func (r BetaManagedAgentsModelOverloadedError) RawJSON() string { return r.JSON.raw }
  2573  func (r *BetaManagedAgentsModelOverloadedError) UnmarshalJSON(data []byte) error {
  2574  	return apijson.UnmarshalRoot(data, r)
  2575  }
  2576  
  2577  // BetaManagedAgentsModelOverloadedErrorRetryStatusUnion contains all possible
  2578  // properties and values from [BetaManagedAgentsRetryStatusRetrying],
  2579  // [BetaManagedAgentsRetryStatusExhausted], [BetaManagedAgentsRetryStatusTerminal].
  2580  //
  2581  // Use the [BetaManagedAgentsModelOverloadedErrorRetryStatusUnion.AsAny] method to
  2582  // switch on the variant.
  2583  //
  2584  // Use the methods beginning with 'As' to cast the union to one of its variants.
  2585  type BetaManagedAgentsModelOverloadedErrorRetryStatusUnion struct {
  2586  	// Any of "retrying", "exhausted", "terminal".
  2587  	Type string `json:"type"`
  2588  	JSON struct {
  2589  		Type respjson.Field
  2590  		raw  string
  2591  	} `json:"-"`
  2592  }
  2593  
  2594  // anyBetaManagedAgentsModelOverloadedErrorRetryStatus is implemented by each
  2595  // variant of [BetaManagedAgentsModelOverloadedErrorRetryStatusUnion] to add type
  2596  // safety for the return type of
  2597  // [BetaManagedAgentsModelOverloadedErrorRetryStatusUnion.AsAny]
  2598  type anyBetaManagedAgentsModelOverloadedErrorRetryStatus interface {
  2599  	implBetaManagedAgentsModelOverloadedErrorRetryStatusUnion()
  2600  }
  2601  
  2602  func (BetaManagedAgentsRetryStatusRetrying) implBetaManagedAgentsModelOverloadedErrorRetryStatusUnion() {
  2603  }
  2604  func (BetaManagedAgentsRetryStatusExhausted) implBetaManagedAgentsModelOverloadedErrorRetryStatusUnion() {
  2605  }
  2606  func (BetaManagedAgentsRetryStatusTerminal) implBetaManagedAgentsModelOverloadedErrorRetryStatusUnion() {
  2607  }
  2608  
  2609  // Use the following switch statement to find the correct variant
  2610  //
  2611  //	switch variant := BetaManagedAgentsModelOverloadedErrorRetryStatusUnion.AsAny().(type) {
  2612  //	case anthropic.BetaManagedAgentsRetryStatusRetrying:
  2613  //	case anthropic.BetaManagedAgentsRetryStatusExhausted:
  2614  //	case anthropic.BetaManagedAgentsRetryStatusTerminal:
  2615  //	default:
  2616  //	  fmt.Errorf("no variant present")
  2617  //	}
  2618  func (u BetaManagedAgentsModelOverloadedErrorRetryStatusUnion) AsAny() anyBetaManagedAgentsModelOverloadedErrorRetryStatus {
  2619  	switch u.Type {
  2620  	case "retrying":
  2621  		return u.AsRetrying()
  2622  	case "exhausted":
  2623  		return u.AsExhausted()
  2624  	case "terminal":
  2625  		return u.AsTerminal()
  2626  	}
  2627  	return nil
  2628  }
  2629  
  2630  func (u BetaManagedAgentsModelOverloadedErrorRetryStatusUnion) AsRetrying() (v BetaManagedAgentsRetryStatusRetrying) {
  2631  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  2632  	return
  2633  }
  2634  
  2635  func (u BetaManagedAgentsModelOverloadedErrorRetryStatusUnion) AsExhausted() (v BetaManagedAgentsRetryStatusExhausted) {
  2636  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  2637  	return
  2638  }
  2639  
  2640  func (u BetaManagedAgentsModelOverloadedErrorRetryStatusUnion) AsTerminal() (v BetaManagedAgentsRetryStatusTerminal) {
  2641  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  2642  	return
  2643  }
  2644  
  2645  // Returns the unmodified JSON received from the API
  2646  func (u BetaManagedAgentsModelOverloadedErrorRetryStatusUnion) RawJSON() string { return u.JSON.raw }
  2647  
  2648  func (r *BetaManagedAgentsModelOverloadedErrorRetryStatusUnion) UnmarshalJSON(data []byte) error {
  2649  	return apijson.UnmarshalRoot(data, r)
  2650  }
  2651  
  2652  type BetaManagedAgentsModelOverloadedErrorType string
  2653  
  2654  const (
  2655  	BetaManagedAgentsModelOverloadedErrorTypeModelOverloadedError BetaManagedAgentsModelOverloadedErrorType = "model_overloaded_error"
  2656  )
  2657  
  2658  // The model request was rate-limited.
  2659  type BetaManagedAgentsModelRateLimitedError struct {
  2660  	// Human-readable error description.
  2661  	Message string `json:"message" api:"required"`
  2662  	// What the client should do next in response to this error.
  2663  	RetryStatus BetaManagedAgentsModelRateLimitedErrorRetryStatusUnion `json:"retry_status" api:"required"`
  2664  	// Any of "model_rate_limited_error".
  2665  	Type BetaManagedAgentsModelRateLimitedErrorType `json:"type" api:"required"`
  2666  	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
  2667  	JSON struct {
  2668  		Message     respjson.Field
  2669  		RetryStatus respjson.Field
  2670  		Type        respjson.Field
  2671  		ExtraFields map[string]respjson.Field
  2672  		raw         string
  2673  	} `json:"-"`
  2674  }
  2675  
  2676  // Returns the unmodified JSON received from the API
  2677  func (r BetaManagedAgentsModelRateLimitedError) RawJSON() string { return r.JSON.raw }
  2678  func (r *BetaManagedAgentsModelRateLimitedError) UnmarshalJSON(data []byte) error {
  2679  	return apijson.UnmarshalRoot(data, r)
  2680  }
  2681  
  2682  // BetaManagedAgentsModelRateLimitedErrorRetryStatusUnion contains all possible
  2683  // properties and values from [BetaManagedAgentsRetryStatusRetrying],
  2684  // [BetaManagedAgentsRetryStatusExhausted], [BetaManagedAgentsRetryStatusTerminal].
  2685  //
  2686  // Use the [BetaManagedAgentsModelRateLimitedErrorRetryStatusUnion.AsAny] method to
  2687  // switch on the variant.
  2688  //
  2689  // Use the methods beginning with 'As' to cast the union to one of its variants.
  2690  type BetaManagedAgentsModelRateLimitedErrorRetryStatusUnion struct {
  2691  	// Any of "retrying", "exhausted", "terminal".
  2692  	Type string `json:"type"`
  2693  	JSON struct {
  2694  		Type respjson.Field
  2695  		raw  string
  2696  	} `json:"-"`
  2697  }
  2698  
  2699  // anyBetaManagedAgentsModelRateLimitedErrorRetryStatus is implemented by each
  2700  // variant of [BetaManagedAgentsModelRateLimitedErrorRetryStatusUnion] to add type
  2701  // safety for the return type of
  2702  // [BetaManagedAgentsModelRateLimitedErrorRetryStatusUnion.AsAny]
  2703  type anyBetaManagedAgentsModelRateLimitedErrorRetryStatus interface {
  2704  	implBetaManagedAgentsModelRateLimitedErrorRetryStatusUnion()
  2705  }
  2706  
  2707  func (BetaManagedAgentsRetryStatusRetrying) implBetaManagedAgentsModelRateLimitedErrorRetryStatusUnion() {
  2708  }
  2709  func (BetaManagedAgentsRetryStatusExhausted) implBetaManagedAgentsModelRateLimitedErrorRetryStatusUnion() {
  2710  }
  2711  func (BetaManagedAgentsRetryStatusTerminal) implBetaManagedAgentsModelRateLimitedErrorRetryStatusUnion() {
  2712  }
  2713  
  2714  // Use the following switch statement to find the correct variant
  2715  //
  2716  //	switch variant := BetaManagedAgentsModelRateLimitedErrorRetryStatusUnion.AsAny().(type) {
  2717  //	case anthropic.BetaManagedAgentsRetryStatusRetrying:
  2718  //	case anthropic.BetaManagedAgentsRetryStatusExhausted:
  2719  //	case anthropic.BetaManagedAgentsRetryStatusTerminal:
  2720  //	default:
  2721  //	  fmt.Errorf("no variant present")
  2722  //	}
  2723  func (u BetaManagedAgentsModelRateLimitedErrorRetryStatusUnion) AsAny() anyBetaManagedAgentsModelRateLimitedErrorRetryStatus {
  2724  	switch u.Type {
  2725  	case "retrying":
  2726  		return u.AsRetrying()
  2727  	case "exhausted":
  2728  		return u.AsExhausted()
  2729  	case "terminal":
  2730  		return u.AsTerminal()
  2731  	}
  2732  	return nil
  2733  }
  2734  
  2735  func (u BetaManagedAgentsModelRateLimitedErrorRetryStatusUnion) AsRetrying() (v BetaManagedAgentsRetryStatusRetrying) {
  2736  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  2737  	return
  2738  }
  2739  
  2740  func (u BetaManagedAgentsModelRateLimitedErrorRetryStatusUnion) AsExhausted() (v BetaManagedAgentsRetryStatusExhausted) {
  2741  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  2742  	return
  2743  }
  2744  
  2745  func (u BetaManagedAgentsModelRateLimitedErrorRetryStatusUnion) AsTerminal() (v BetaManagedAgentsRetryStatusTerminal) {
  2746  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  2747  	return
  2748  }
  2749  
  2750  // Returns the unmodified JSON received from the API
  2751  func (u BetaManagedAgentsModelRateLimitedErrorRetryStatusUnion) RawJSON() string { return u.JSON.raw }
  2752  
  2753  func (r *BetaManagedAgentsModelRateLimitedErrorRetryStatusUnion) UnmarshalJSON(data []byte) error {
  2754  	return apijson.UnmarshalRoot(data, r)
  2755  }
  2756  
  2757  type BetaManagedAgentsModelRateLimitedErrorType string
  2758  
  2759  const (
  2760  	BetaManagedAgentsModelRateLimitedErrorTypeModelRateLimitedError BetaManagedAgentsModelRateLimitedErrorType = "model_rate_limited_error"
  2761  )
  2762  
  2763  // A model request failed for a reason other than overload or rate-limiting.
  2764  type BetaManagedAgentsModelRequestFailedError struct {
  2765  	// Human-readable error description.
  2766  	Message string `json:"message" api:"required"`
  2767  	// What the client should do next in response to this error.
  2768  	RetryStatus BetaManagedAgentsModelRequestFailedErrorRetryStatusUnion `json:"retry_status" api:"required"`
  2769  	// Any of "model_request_failed_error".
  2770  	Type BetaManagedAgentsModelRequestFailedErrorType `json:"type" api:"required"`
  2771  	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
  2772  	JSON struct {
  2773  		Message     respjson.Field
  2774  		RetryStatus respjson.Field
  2775  		Type        respjson.Field
  2776  		ExtraFields map[string]respjson.Field
  2777  		raw         string
  2778  	} `json:"-"`
  2779  }
  2780  
  2781  // Returns the unmodified JSON received from the API
  2782  func (r BetaManagedAgentsModelRequestFailedError) RawJSON() string { return r.JSON.raw }
  2783  func (r *BetaManagedAgentsModelRequestFailedError) UnmarshalJSON(data []byte) error {
  2784  	return apijson.UnmarshalRoot(data, r)
  2785  }
  2786  
  2787  // BetaManagedAgentsModelRequestFailedErrorRetryStatusUnion contains all possible
  2788  // properties and values from [BetaManagedAgentsRetryStatusRetrying],
  2789  // [BetaManagedAgentsRetryStatusExhausted], [BetaManagedAgentsRetryStatusTerminal].
  2790  //
  2791  // Use the [BetaManagedAgentsModelRequestFailedErrorRetryStatusUnion.AsAny] method
  2792  // to switch on the variant.
  2793  //
  2794  // Use the methods beginning with 'As' to cast the union to one of its variants.
  2795  type BetaManagedAgentsModelRequestFailedErrorRetryStatusUnion struct {
  2796  	// Any of "retrying", "exhausted", "terminal".
  2797  	Type string `json:"type"`
  2798  	JSON struct {
  2799  		Type respjson.Field
  2800  		raw  string
  2801  	} `json:"-"`
  2802  }
  2803  
  2804  // anyBetaManagedAgentsModelRequestFailedErrorRetryStatus is implemented by each
  2805  // variant of [BetaManagedAgentsModelRequestFailedErrorRetryStatusUnion] to add
  2806  // type safety for the return type of
  2807  // [BetaManagedAgentsModelRequestFailedErrorRetryStatusUnion.AsAny]
  2808  type anyBetaManagedAgentsModelRequestFailedErrorRetryStatus interface {
  2809  	implBetaManagedAgentsModelRequestFailedErrorRetryStatusUnion()
  2810  }
  2811  
  2812  func (BetaManagedAgentsRetryStatusRetrying) implBetaManagedAgentsModelRequestFailedErrorRetryStatusUnion() {
  2813  }
  2814  func (BetaManagedAgentsRetryStatusExhausted) implBetaManagedAgentsModelRequestFailedErrorRetryStatusUnion() {
  2815  }
  2816  func (BetaManagedAgentsRetryStatusTerminal) implBetaManagedAgentsModelRequestFailedErrorRetryStatusUnion() {
  2817  }
  2818  
  2819  // Use the following switch statement to find the correct variant
  2820  //
  2821  //	switch variant := BetaManagedAgentsModelRequestFailedErrorRetryStatusUnion.AsAny().(type) {
  2822  //	case anthropic.BetaManagedAgentsRetryStatusRetrying:
  2823  //	case anthropic.BetaManagedAgentsRetryStatusExhausted:
  2824  //	case anthropic.BetaManagedAgentsRetryStatusTerminal:
  2825  //	default:
  2826  //	  fmt.Errorf("no variant present")
  2827  //	}
  2828  func (u BetaManagedAgentsModelRequestFailedErrorRetryStatusUnion) AsAny() anyBetaManagedAgentsModelRequestFailedErrorRetryStatus {
  2829  	switch u.Type {
  2830  	case "retrying":
  2831  		return u.AsRetrying()
  2832  	case "exhausted":
  2833  		return u.AsExhausted()
  2834  	case "terminal":
  2835  		return u.AsTerminal()
  2836  	}
  2837  	return nil
  2838  }
  2839  
  2840  func (u BetaManagedAgentsModelRequestFailedErrorRetryStatusUnion) AsRetrying() (v BetaManagedAgentsRetryStatusRetrying) {
  2841  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  2842  	return
  2843  }
  2844  
  2845  func (u BetaManagedAgentsModelRequestFailedErrorRetryStatusUnion) AsExhausted() (v BetaManagedAgentsRetryStatusExhausted) {
  2846  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  2847  	return
  2848  }
  2849  
  2850  func (u BetaManagedAgentsModelRequestFailedErrorRetryStatusUnion) AsTerminal() (v BetaManagedAgentsRetryStatusTerminal) {
  2851  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  2852  	return
  2853  }
  2854  
  2855  // Returns the unmodified JSON received from the API
  2856  func (u BetaManagedAgentsModelRequestFailedErrorRetryStatusUnion) RawJSON() string { return u.JSON.raw }
  2857  
  2858  func (r *BetaManagedAgentsModelRequestFailedErrorRetryStatusUnion) UnmarshalJSON(data []byte) error {
  2859  	return apijson.UnmarshalRoot(data, r)
  2860  }
  2861  
  2862  type BetaManagedAgentsModelRequestFailedErrorType string
  2863  
  2864  const (
  2865  	BetaManagedAgentsModelRequestFailedErrorTypeModelRequestFailedError BetaManagedAgentsModelRequestFailedErrorType = "model_request_failed_error"
  2866  )
  2867  
  2868  // Plain text document content.
  2869  type BetaManagedAgentsPlainTextDocumentSource struct {
  2870  	// The plain text content.
  2871  	Data string `json:"data" api:"required"`
  2872  	// MIME type of the text content. Must be "text/plain".
  2873  	//
  2874  	// Any of "text/plain".
  2875  	MediaType BetaManagedAgentsPlainTextDocumentSourceMediaType `json:"media_type" api:"required"`
  2876  	// Any of "text".
  2877  	Type BetaManagedAgentsPlainTextDocumentSourceType `json:"type" api:"required"`
  2878  	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
  2879  	JSON struct {
  2880  		Data        respjson.Field
  2881  		MediaType   respjson.Field
  2882  		Type        respjson.Field
  2883  		ExtraFields map[string]respjson.Field
  2884  		raw         string
  2885  	} `json:"-"`
  2886  }
  2887  
  2888  // Returns the unmodified JSON received from the API
  2889  func (r BetaManagedAgentsPlainTextDocumentSource) RawJSON() string { return r.JSON.raw }
  2890  func (r *BetaManagedAgentsPlainTextDocumentSource) UnmarshalJSON(data []byte) error {
  2891  	return apijson.UnmarshalRoot(data, r)
  2892  }
  2893  
  2894  // ToParam converts this BetaManagedAgentsPlainTextDocumentSource to a
  2895  // BetaManagedAgentsPlainTextDocumentSourceParam.
  2896  //
  2897  // Warning: the fields of the param type will not be present. ToParam should only
  2898  // be used at the last possible moment before sending a request. Test for this with
  2899  // BetaManagedAgentsPlainTextDocumentSourceParam.Overrides()
  2900  func (r BetaManagedAgentsPlainTextDocumentSource) ToParam() BetaManagedAgentsPlainTextDocumentSourceParam {
  2901  	return param.Override[BetaManagedAgentsPlainTextDocumentSourceParam](json.RawMessage(r.RawJSON()))
  2902  }
  2903  
  2904  // MIME type of the text content. Must be "text/plain".
  2905  type BetaManagedAgentsPlainTextDocumentSourceMediaType string
  2906  
  2907  const (
  2908  	BetaManagedAgentsPlainTextDocumentSourceMediaTypeTextPlain BetaManagedAgentsPlainTextDocumentSourceMediaType = "text/plain"
  2909  )
  2910  
  2911  type BetaManagedAgentsPlainTextDocumentSourceType string
  2912  
  2913  const (
  2914  	BetaManagedAgentsPlainTextDocumentSourceTypeText BetaManagedAgentsPlainTextDocumentSourceType = "text"
  2915  )
  2916  
  2917  // Plain text document content.
  2918  //
  2919  // The properties Data, MediaType, Type are required.
  2920  type BetaManagedAgentsPlainTextDocumentSourceParam struct {
  2921  	// The plain text content.
  2922  	Data string `json:"data" api:"required"`
  2923  	// MIME type of the text content. Must be "text/plain".
  2924  	//
  2925  	// Any of "text/plain".
  2926  	MediaType BetaManagedAgentsPlainTextDocumentSourceMediaType `json:"media_type,omitzero" api:"required"`
  2927  	// Any of "text".
  2928  	Type BetaManagedAgentsPlainTextDocumentSourceType `json:"type,omitzero" api:"required"`
  2929  	paramObj
  2930  }
  2931  
  2932  func (r BetaManagedAgentsPlainTextDocumentSourceParam) MarshalJSON() (data []byte, err error) {
  2933  	type shadow BetaManagedAgentsPlainTextDocumentSourceParam
  2934  	return param.MarshalObject(r, (*shadow)(&r))
  2935  }
  2936  func (r *BetaManagedAgentsPlainTextDocumentSourceParam) UnmarshalJSON(data []byte) error {
  2937  	return apijson.UnmarshalRoot(data, r)
  2938  }
  2939  
  2940  // Placeholder for content withheld by Anthropic model policy.
  2941  type BetaManagedAgentsRedactedBlock struct {
  2942  	// Any of "redacted".
  2943  	Type BetaManagedAgentsRedactedBlockType `json:"type" api:"required"`
  2944  	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
  2945  	JSON struct {
  2946  		Type        respjson.Field
  2947  		ExtraFields map[string]respjson.Field
  2948  		raw         string
  2949  	} `json:"-"`
  2950  }
  2951  
  2952  // Returns the unmodified JSON received from the API
  2953  func (r BetaManagedAgentsRedactedBlock) RawJSON() string { return r.JSON.raw }
  2954  func (r *BetaManagedAgentsRedactedBlock) UnmarshalJSON(data []byte) error {
  2955  	return apijson.UnmarshalRoot(data, r)
  2956  }
  2957  
  2958  // ToParam converts this BetaManagedAgentsRedactedBlock to a
  2959  // BetaManagedAgentsRedactedBlockParam.
  2960  //
  2961  // Warning: the fields of the param type will not be present. ToParam should only
  2962  // be used at the last possible moment before sending a request. Test for this with
  2963  // BetaManagedAgentsRedactedBlockParam.Overrides()
  2964  func (r BetaManagedAgentsRedactedBlock) ToParam() BetaManagedAgentsRedactedBlockParam {
  2965  	return param.Override[BetaManagedAgentsRedactedBlockParam](json.RawMessage(r.RawJSON()))
  2966  }
  2967  
  2968  type BetaManagedAgentsRedactedBlockType string
  2969  
  2970  const (
  2971  	BetaManagedAgentsRedactedBlockTypeRedacted BetaManagedAgentsRedactedBlockType = "redacted"
  2972  )
  2973  
  2974  // Placeholder for content withheld by Anthropic model policy.
  2975  //
  2976  // The property Type is required.
  2977  type BetaManagedAgentsRedactedBlockParam struct {
  2978  	// Any of "redacted".
  2979  	Type BetaManagedAgentsRedactedBlockType `json:"type,omitzero" api:"required"`
  2980  	paramObj
  2981  }
  2982  
  2983  func (r BetaManagedAgentsRedactedBlockParam) MarshalJSON() (data []byte, err error) {
  2984  	type shadow BetaManagedAgentsRedactedBlockParam
  2985  	return param.MarshalObject(r, (*shadow)(&r))
  2986  }
  2987  func (r *BetaManagedAgentsRedactedBlockParam) UnmarshalJSON(data []byte) error {
  2988  	return apijson.UnmarshalRoot(data, r)
  2989  }
  2990  
  2991  // This turn is dead; queued inputs are flushed and the session returns to idle.
  2992  // Client may send a new prompt.
  2993  type BetaManagedAgentsRetryStatusExhausted struct {
  2994  	// Any of "exhausted".
  2995  	Type BetaManagedAgentsRetryStatusExhaustedType `json:"type" api:"required"`
  2996  	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
  2997  	JSON struct {
  2998  		Type        respjson.Field
  2999  		ExtraFields map[string]respjson.Field
  3000  		raw         string
  3001  	} `json:"-"`
  3002  }
  3003  
  3004  // Returns the unmodified JSON received from the API
  3005  func (r BetaManagedAgentsRetryStatusExhausted) RawJSON() string { return r.JSON.raw }
  3006  func (r *BetaManagedAgentsRetryStatusExhausted) UnmarshalJSON(data []byte) error {
  3007  	return apijson.UnmarshalRoot(data, r)
  3008  }
  3009  
  3010  type BetaManagedAgentsRetryStatusExhaustedType string
  3011  
  3012  const (
  3013  	BetaManagedAgentsRetryStatusExhaustedTypeExhausted BetaManagedAgentsRetryStatusExhaustedType = "exhausted"
  3014  )
  3015  
  3016  // The server is retrying automatically. Client should wait; the same error type
  3017  // may fire again as retrying, then once as exhausted when the retry budget runs
  3018  // out.
  3019  type BetaManagedAgentsRetryStatusRetrying struct {
  3020  	// Any of "retrying".
  3021  	Type BetaManagedAgentsRetryStatusRetryingType `json:"type" api:"required"`
  3022  	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
  3023  	JSON struct {
  3024  		Type        respjson.Field
  3025  		ExtraFields map[string]respjson.Field
  3026  		raw         string
  3027  	} `json:"-"`
  3028  }
  3029  
  3030  // Returns the unmodified JSON received from the API
  3031  func (r BetaManagedAgentsRetryStatusRetrying) RawJSON() string { return r.JSON.raw }
  3032  func (r *BetaManagedAgentsRetryStatusRetrying) UnmarshalJSON(data []byte) error {
  3033  	return apijson.UnmarshalRoot(data, r)
  3034  }
  3035  
  3036  type BetaManagedAgentsRetryStatusRetryingType string
  3037  
  3038  const (
  3039  	BetaManagedAgentsRetryStatusRetryingTypeRetrying BetaManagedAgentsRetryStatusRetryingType = "retrying"
  3040  )
  3041  
  3042  // The session encountered a terminal error and will transition to `terminated`
  3043  // state.
  3044  type BetaManagedAgentsRetryStatusTerminal struct {
  3045  	// Any of "terminal".
  3046  	Type BetaManagedAgentsRetryStatusTerminalType `json:"type" api:"required"`
  3047  	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
  3048  	JSON struct {
  3049  		Type        respjson.Field
  3050  		ExtraFields map[string]respjson.Field
  3051  		raw         string
  3052  	} `json:"-"`
  3053  }
  3054  
  3055  // Returns the unmodified JSON received from the API
  3056  func (r BetaManagedAgentsRetryStatusTerminal) RawJSON() string { return r.JSON.raw }
  3057  func (r *BetaManagedAgentsRetryStatusTerminal) UnmarshalJSON(data []byte) error {
  3058  	return apijson.UnmarshalRoot(data, r)
  3059  }
  3060  
  3061  type BetaManagedAgentsRetryStatusTerminalType string
  3062  
  3063  const (
  3064  	BetaManagedAgentsRetryStatusTerminalTypeTerminal BetaManagedAgentsRetryStatusTerminalType = "terminal"
  3065  )
  3066  
  3067  // A block containing a web search result.
  3068  type BetaManagedAgentsSearchResultBlock struct {
  3069  	// Citation settings for a search result.
  3070  	Citations BetaManagedAgentsSearchResultCitations `json:"citations" api:"required"`
  3071  	// Array of text content blocks from the search result.
  3072  	Content []BetaManagedAgentsSearchResultContent `json:"content" api:"required"`
  3073  	// The URL source of the search result.
  3074  	Source string `json:"source" api:"required"`
  3075  	// The title of the search result.
  3076  	Title string `json:"title" api:"required"`
  3077  	// Any of "search_result".
  3078  	Type BetaManagedAgentsSearchResultBlockType `json:"type" api:"required"`
  3079  	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
  3080  	JSON struct {
  3081  		Citations   respjson.Field
  3082  		Content     respjson.Field
  3083  		Source      respjson.Field
  3084  		Title       respjson.Field
  3085  		Type        respjson.Field
  3086  		ExtraFields map[string]respjson.Field
  3087  		raw         string
  3088  	} `json:"-"`
  3089  }
  3090  
  3091  // Returns the unmodified JSON received from the API
  3092  func (r BetaManagedAgentsSearchResultBlock) RawJSON() string { return r.JSON.raw }
  3093  func (r *BetaManagedAgentsSearchResultBlock) UnmarshalJSON(data []byte) error {
  3094  	return apijson.UnmarshalRoot(data, r)
  3095  }
  3096  
  3097  // ToParam converts this BetaManagedAgentsSearchResultBlock to a
  3098  // BetaManagedAgentsSearchResultBlockParam.
  3099  //
  3100  // Warning: the fields of the param type will not be present. ToParam should only
  3101  // be used at the last possible moment before sending a request. Test for this with
  3102  // BetaManagedAgentsSearchResultBlockParam.Overrides()
  3103  func (r BetaManagedAgentsSearchResultBlock) ToParam() BetaManagedAgentsSearchResultBlockParam {
  3104  	return param.Override[BetaManagedAgentsSearchResultBlockParam](json.RawMessage(r.RawJSON()))
  3105  }
  3106  
  3107  type BetaManagedAgentsSearchResultBlockType string
  3108  
  3109  const (
  3110  	BetaManagedAgentsSearchResultBlockTypeSearchResult BetaManagedAgentsSearchResultBlockType = "search_result"
  3111  )
  3112  
  3113  // A block containing a web search result.
  3114  //
  3115  // The properties Citations, Content, Source, Title, Type are required.
  3116  type BetaManagedAgentsSearchResultBlockParam struct {
  3117  	// Citation settings for a search result.
  3118  	Citations BetaManagedAgentsSearchResultCitationsParam `json:"citations,omitzero" api:"required"`
  3119  	// Array of text content blocks from the search result.
  3120  	Content []BetaManagedAgentsSearchResultContentParam `json:"content,omitzero" api:"required"`
  3121  	// The URL source of the search result.
  3122  	Source string `json:"source" api:"required"`
  3123  	// The title of the search result.
  3124  	Title string `json:"title" api:"required"`
  3125  	// Any of "search_result".
  3126  	Type BetaManagedAgentsSearchResultBlockType `json:"type,omitzero" api:"required"`
  3127  	paramObj
  3128  }
  3129  
  3130  func (r BetaManagedAgentsSearchResultBlockParam) MarshalJSON() (data []byte, err error) {
  3131  	type shadow BetaManagedAgentsSearchResultBlockParam
  3132  	return param.MarshalObject(r, (*shadow)(&r))
  3133  }
  3134  func (r *BetaManagedAgentsSearchResultBlockParam) UnmarshalJSON(data []byte) error {
  3135  	return apijson.UnmarshalRoot(data, r)
  3136  }
  3137  
  3138  // Citation settings for a search result.
  3139  type BetaManagedAgentsSearchResultCitations struct {
  3140  	// Whether citations are enabled for this search result.
  3141  	Enabled bool `json:"enabled" api:"required"`
  3142  	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
  3143  	JSON struct {
  3144  		Enabled     respjson.Field
  3145  		ExtraFields map[string]respjson.Field
  3146  		raw         string
  3147  	} `json:"-"`
  3148  }
  3149  
  3150  // Returns the unmodified JSON received from the API
  3151  func (r BetaManagedAgentsSearchResultCitations) RawJSON() string { return r.JSON.raw }
  3152  func (r *BetaManagedAgentsSearchResultCitations) UnmarshalJSON(data []byte) error {
  3153  	return apijson.UnmarshalRoot(data, r)
  3154  }
  3155  
  3156  // ToParam converts this BetaManagedAgentsSearchResultCitations to a
  3157  // BetaManagedAgentsSearchResultCitationsParam.
  3158  //
  3159  // Warning: the fields of the param type will not be present. ToParam should only
  3160  // be used at the last possible moment before sending a request. Test for this with
  3161  // BetaManagedAgentsSearchResultCitationsParam.Overrides()
  3162  func (r BetaManagedAgentsSearchResultCitations) ToParam() BetaManagedAgentsSearchResultCitationsParam {
  3163  	return param.Override[BetaManagedAgentsSearchResultCitationsParam](json.RawMessage(r.RawJSON()))
  3164  }
  3165  
  3166  // Citation settings for a search result.
  3167  //
  3168  // The property Enabled is required.
  3169  type BetaManagedAgentsSearchResultCitationsParam struct {
  3170  	// Whether citations are enabled for this search result.
  3171  	Enabled bool `json:"enabled" api:"required"`
  3172  	paramObj
  3173  }
  3174  
  3175  func (r BetaManagedAgentsSearchResultCitationsParam) MarshalJSON() (data []byte, err error) {
  3176  	type shadow BetaManagedAgentsSearchResultCitationsParam
  3177  	return param.MarshalObject(r, (*shadow)(&r))
  3178  }
  3179  func (r *BetaManagedAgentsSearchResultCitationsParam) UnmarshalJSON(data []byte) error {
  3180  	return apijson.UnmarshalRoot(data, r)
  3181  }
  3182  
  3183  // Text content within a search result.
  3184  type BetaManagedAgentsSearchResultContent struct {
  3185  	// The text content.
  3186  	Text string `json:"text" api:"required"`
  3187  	// Any of "text".
  3188  	Type BetaManagedAgentsSearchResultContentType `json:"type" api:"required"`
  3189  	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
  3190  	JSON struct {
  3191  		Text        respjson.Field
  3192  		Type        respjson.Field
  3193  		ExtraFields map[string]respjson.Field
  3194  		raw         string
  3195  	} `json:"-"`
  3196  }
  3197  
  3198  // Returns the unmodified JSON received from the API
  3199  func (r BetaManagedAgentsSearchResultContent) RawJSON() string { return r.JSON.raw }
  3200  func (r *BetaManagedAgentsSearchResultContent) UnmarshalJSON(data []byte) error {
  3201  	return apijson.UnmarshalRoot(data, r)
  3202  }
  3203  
  3204  // ToParam converts this BetaManagedAgentsSearchResultContent to a
  3205  // BetaManagedAgentsSearchResultContentParam.
  3206  //
  3207  // Warning: the fields of the param type will not be present. ToParam should only
  3208  // be used at the last possible moment before sending a request. Test for this with
  3209  // BetaManagedAgentsSearchResultContentParam.Overrides()
  3210  func (r BetaManagedAgentsSearchResultContent) ToParam() BetaManagedAgentsSearchResultContentParam {
  3211  	return param.Override[BetaManagedAgentsSearchResultContentParam](json.RawMessage(r.RawJSON()))
  3212  }
  3213  
  3214  type BetaManagedAgentsSearchResultContentType string
  3215  
  3216  const (
  3217  	BetaManagedAgentsSearchResultContentTypeText BetaManagedAgentsSearchResultContentType = "text"
  3218  )
  3219  
  3220  // Text content within a search result.
  3221  //
  3222  // The properties Text, Type are required.
  3223  type BetaManagedAgentsSearchResultContentParam struct {
  3224  	// The text content.
  3225  	Text string `json:"text" api:"required"`
  3226  	// Any of "text".
  3227  	Type BetaManagedAgentsSearchResultContentType `json:"type,omitzero" api:"required"`
  3228  	paramObj
  3229  }
  3230  
  3231  func (r BetaManagedAgentsSearchResultContentParam) MarshalJSON() (data []byte, err error) {
  3232  	type shadow BetaManagedAgentsSearchResultContentParam
  3233  	return param.MarshalObject(r, (*shadow)(&r))
  3234  }
  3235  func (r *BetaManagedAgentsSearchResultContentParam) UnmarshalJSON(data []byte) error {
  3236  	return apijson.UnmarshalRoot(data, r)
  3237  }
  3238  
  3239  // Events that were successfully sent to the session.
  3240  type BetaManagedAgentsSendSessionEvents struct {
  3241  	// Sent events
  3242  	Data []BetaManagedAgentsSendSessionEventsDataUnion `json:"data"`
  3243  	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
  3244  	JSON struct {
  3245  		Data        respjson.Field
  3246  		ExtraFields map[string]respjson.Field
  3247  		raw         string
  3248  	} `json:"-"`
  3249  }
  3250  
  3251  // Returns the unmodified JSON received from the API
  3252  func (r BetaManagedAgentsSendSessionEvents) RawJSON() string { return r.JSON.raw }
  3253  func (r *BetaManagedAgentsSendSessionEvents) UnmarshalJSON(data []byte) error {
  3254  	return apijson.UnmarshalRoot(data, r)
  3255  }
  3256  
  3257  // BetaManagedAgentsSendSessionEventsDataUnion contains all possible properties and
  3258  // values from [BetaManagedAgentsUserMessageEvent],
  3259  // [BetaManagedAgentsUserInterruptEvent],
  3260  // [BetaManagedAgentsUserToolConfirmationEvent],
  3261  // [BetaManagedAgentsUserCustomToolResultEvent],
  3262  // [BetaManagedAgentsUserDefineOutcomeEvent],
  3263  // [BetaManagedAgentsUserToolResultEvent], [BetaManagedAgentsSystemMessageEvent].
  3264  //
  3265  // Use the [BetaManagedAgentsSendSessionEventsDataUnion.AsAny] method to switch on
  3266  // the variant.
  3267  //
  3268  // Use the methods beginning with 'As' to cast the union to one of its variants.
  3269  type BetaManagedAgentsSendSessionEventsDataUnion struct {
  3270  	ID string `json:"id"`
  3271  	// This field is a union of [[]BetaManagedAgentsUserMessageEventContentUnion],
  3272  	// [[]BetaManagedAgentsUserCustomToolResultEventContentUnion],
  3273  	// [[]BetaManagedAgentsUserToolResultEventContentUnion],
  3274  	// [[]BetaManagedAgentsSystemContentBlock]
  3275  	Content BetaManagedAgentsSendSessionEventsDataUnionContent `json:"content"`
  3276  	// Any of "user.message", "user.interrupt", "user.tool_confirmation",
  3277  	// "user.custom_tool_result", "user.define_outcome", "user.tool_result",
  3278  	// "system.message".
  3279  	Type            string    `json:"type"`
  3280  	ProcessedAt     time.Time `json:"processed_at"`
  3281  	SessionThreadID string    `json:"session_thread_id"`
  3282  	// This field is from variant [BetaManagedAgentsUserToolConfirmationEvent].
  3283  	Result    BetaManagedAgentsUserToolConfirmationEventResult `json:"result"`
  3284  	ToolUseID string                                           `json:"tool_use_id"`
  3285  	// This field is from variant [BetaManagedAgentsUserToolConfirmationEvent].
  3286  	DenyMessage string `json:"deny_message"`
  3287  	// This field is from variant [BetaManagedAgentsUserCustomToolResultEvent].
  3288  	CustomToolUseID string `json:"custom_tool_use_id"`
  3289  	IsError         bool   `json:"is_error"`
  3290  	// This field is from variant [BetaManagedAgentsUserDefineOutcomeEvent].
  3291  	Description string `json:"description"`
  3292  	// This field is from variant [BetaManagedAgentsUserDefineOutcomeEvent].
  3293  	MaxIterations int64 `json:"max_iterations"`
  3294  	// This field is from variant [BetaManagedAgentsUserDefineOutcomeEvent].
  3295  	OutcomeID string `json:"outcome_id"`
  3296  	// This field is from variant [BetaManagedAgentsUserDefineOutcomeEvent].
  3297  	Rubric BetaManagedAgentsUserDefineOutcomeEventRubricUnion `json:"rubric"`
  3298  	JSON   struct {
  3299  		ID              respjson.Field
  3300  		Content         respjson.Field
  3301  		Type            respjson.Field
  3302  		ProcessedAt     respjson.Field
  3303  		SessionThreadID respjson.Field
  3304  		Result          respjson.Field
  3305  		ToolUseID       respjson.Field
  3306  		DenyMessage     respjson.Field
  3307  		CustomToolUseID respjson.Field
  3308  		IsError         respjson.Field
  3309  		Description     respjson.Field
  3310  		MaxIterations   respjson.Field
  3311  		OutcomeID       respjson.Field
  3312  		Rubric          respjson.Field
  3313  		raw             string
  3314  	} `json:"-"`
  3315  }
  3316  
  3317  // anyBetaManagedAgentsSendSessionEventsData is implemented by each variant of
  3318  // [BetaManagedAgentsSendSessionEventsDataUnion] to add type safety for the return
  3319  // type of [BetaManagedAgentsSendSessionEventsDataUnion.AsAny]
  3320  type anyBetaManagedAgentsSendSessionEventsData interface {
  3321  	implBetaManagedAgentsSendSessionEventsDataUnion()
  3322  }
  3323  
  3324  func (BetaManagedAgentsUserMessageEvent) implBetaManagedAgentsSendSessionEventsDataUnion()          {}
  3325  func (BetaManagedAgentsUserInterruptEvent) implBetaManagedAgentsSendSessionEventsDataUnion()        {}
  3326  func (BetaManagedAgentsUserToolConfirmationEvent) implBetaManagedAgentsSendSessionEventsDataUnion() {}
  3327  func (BetaManagedAgentsUserCustomToolResultEvent) implBetaManagedAgentsSendSessionEventsDataUnion() {}
  3328  func (BetaManagedAgentsUserDefineOutcomeEvent) implBetaManagedAgentsSendSessionEventsDataUnion()    {}
  3329  func (BetaManagedAgentsUserToolResultEvent) implBetaManagedAgentsSendSessionEventsDataUnion()       {}
  3330  func (BetaManagedAgentsSystemMessageEvent) implBetaManagedAgentsSendSessionEventsDataUnion()        {}
  3331  
  3332  // Use the following switch statement to find the correct variant
  3333  //
  3334  //	switch variant := BetaManagedAgentsSendSessionEventsDataUnion.AsAny().(type) {
  3335  //	case anthropic.BetaManagedAgentsUserMessageEvent:
  3336  //	case anthropic.BetaManagedAgentsUserInterruptEvent:
  3337  //	case anthropic.BetaManagedAgentsUserToolConfirmationEvent:
  3338  //	case anthropic.BetaManagedAgentsUserCustomToolResultEvent:
  3339  //	case anthropic.BetaManagedAgentsUserDefineOutcomeEvent:
  3340  //	case anthropic.BetaManagedAgentsUserToolResultEvent:
  3341  //	case anthropic.BetaManagedAgentsSystemMessageEvent:
  3342  //	default:
  3343  //	  fmt.Errorf("no variant present")
  3344  //	}
  3345  func (u BetaManagedAgentsSendSessionEventsDataUnion) AsAny() anyBetaManagedAgentsSendSessionEventsData {
  3346  	switch u.Type {
  3347  	case "user.message":
  3348  		return u.AsUserMessage()
  3349  	case "user.interrupt":
  3350  		return u.AsUserInterrupt()
  3351  	case "user.tool_confirmation":
  3352  		return u.AsUserToolConfirmation()
  3353  	case "user.custom_tool_result":
  3354  		return u.AsUserCustomToolResult()
  3355  	case "user.define_outcome":
  3356  		return u.AsUserDefineOutcome()
  3357  	case "user.tool_result":
  3358  		return u.AsUserToolResult()
  3359  	case "system.message":
  3360  		return u.AsSystemMessage()
  3361  	}
  3362  	return nil
  3363  }
  3364  
  3365  func (u BetaManagedAgentsSendSessionEventsDataUnion) AsUserMessage() (v BetaManagedAgentsUserMessageEvent) {
  3366  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  3367  	return
  3368  }
  3369  
  3370  func (u BetaManagedAgentsSendSessionEventsDataUnion) AsUserInterrupt() (v BetaManagedAgentsUserInterruptEvent) {
  3371  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  3372  	return
  3373  }
  3374  
  3375  func (u BetaManagedAgentsSendSessionEventsDataUnion) AsUserToolConfirmation() (v BetaManagedAgentsUserToolConfirmationEvent) {
  3376  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  3377  	return
  3378  }
  3379  
  3380  func (u BetaManagedAgentsSendSessionEventsDataUnion) AsUserCustomToolResult() (v BetaManagedAgentsUserCustomToolResultEvent) {
  3381  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  3382  	return
  3383  }
  3384  
  3385  func (u BetaManagedAgentsSendSessionEventsDataUnion) AsUserDefineOutcome() (v BetaManagedAgentsUserDefineOutcomeEvent) {
  3386  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  3387  	return
  3388  }
  3389  
  3390  func (u BetaManagedAgentsSendSessionEventsDataUnion) AsUserToolResult() (v BetaManagedAgentsUserToolResultEvent) {
  3391  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  3392  	return
  3393  }
  3394  
  3395  func (u BetaManagedAgentsSendSessionEventsDataUnion) AsSystemMessage() (v BetaManagedAgentsSystemMessageEvent) {
  3396  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  3397  	return
  3398  }
  3399  
  3400  // Returns the unmodified JSON received from the API
  3401  func (u BetaManagedAgentsSendSessionEventsDataUnion) RawJSON() string { return u.JSON.raw }
  3402  
  3403  func (r *BetaManagedAgentsSendSessionEventsDataUnion) UnmarshalJSON(data []byte) error {
  3404  	return apijson.UnmarshalRoot(data, r)
  3405  }
  3406  
  3407  // BetaManagedAgentsSendSessionEventsDataUnionContent is an implicit subunion of
  3408  // [BetaManagedAgentsSendSessionEventsDataUnion].
  3409  // BetaManagedAgentsSendSessionEventsDataUnionContent provides convenient access to
  3410  // the sub-properties of the union.
  3411  //
  3412  // For type safety it is recommended to directly use a variant of the
  3413  // [BetaManagedAgentsSendSessionEventsDataUnion].
  3414  //
  3415  // If the underlying value is not a json object, one of the following properties
  3416  // will be valid: OfBetaManagedAgentsUserMessageEventContentArray
  3417  // OfBetaManagedAgentsUserCustomToolResultEventContentArray
  3418  // OfBetaManagedAgentsUserToolResultEventContentArray
  3419  // OfBetaManagedAgentsSystemContentBlockArray]
  3420  type BetaManagedAgentsSendSessionEventsDataUnionContent struct {
  3421  	// This field will be present if the value is a
  3422  	// [[]BetaManagedAgentsUserMessageEventContentUnion] instead of an object.
  3423  	OfBetaManagedAgentsUserMessageEventContentArray []BetaManagedAgentsUserMessageEventContentUnion `json:",inline"`
  3424  	// This field will be present if the value is a
  3425  	// [[]BetaManagedAgentsUserCustomToolResultEventContentUnion] instead of an object.
  3426  	OfBetaManagedAgentsUserCustomToolResultEventContentArray []BetaManagedAgentsUserCustomToolResultEventContentUnion `json:",inline"`
  3427  	// This field will be present if the value is a
  3428  	// [[]BetaManagedAgentsUserToolResultEventContentUnion] instead of an object.
  3429  	OfBetaManagedAgentsUserToolResultEventContentArray []BetaManagedAgentsUserToolResultEventContentUnion `json:",inline"`
  3430  	// This field will be present if the value is a
  3431  	// [[]BetaManagedAgentsSystemContentBlock] instead of an object.
  3432  	OfBetaManagedAgentsSystemContentBlockArray []BetaManagedAgentsSystemContentBlock `json:",inline"`
  3433  	JSON                                       struct {
  3434  		OfBetaManagedAgentsUserMessageEventContentArray          respjson.Field
  3435  		OfBetaManagedAgentsUserCustomToolResultEventContentArray respjson.Field
  3436  		OfBetaManagedAgentsUserToolResultEventContentArray       respjson.Field
  3437  		OfBetaManagedAgentsSystemContentBlockArray               respjson.Field
  3438  		raw                                                      string
  3439  	} `json:"-"`
  3440  }
  3441  
  3442  func (r *BetaManagedAgentsSendSessionEventsDataUnionContent) UnmarshalJSON(data []byte) error {
  3443  	return apijson.UnmarshalRoot(data, r)
  3444  }
  3445  
  3446  // The agent stopped because the session's tracked list cost reached its budget, or
  3447  // because its usage includes a model with no list price (which the budget cannot
  3448  // measure). Raise the budget to continue — or, if raising is rejected because a
  3449  // model has no list price, remove the budget.
  3450  type BetaManagedAgentsSessionBudgetReached struct {
  3451  	// Any of "budget_reached".
  3452  	Type BetaManagedAgentsSessionBudgetReachedType `json:"type" api:"required"`
  3453  	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
  3454  	JSON struct {
  3455  		Type        respjson.Field
  3456  		ExtraFields map[string]respjson.Field
  3457  		raw         string
  3458  	} `json:"-"`
  3459  }
  3460  
  3461  // Returns the unmodified JSON received from the API
  3462  func (r BetaManagedAgentsSessionBudgetReached) RawJSON() string { return r.JSON.raw }
  3463  func (r *BetaManagedAgentsSessionBudgetReached) UnmarshalJSON(data []byte) error {
  3464  	return apijson.UnmarshalRoot(data, r)
  3465  }
  3466  
  3467  type BetaManagedAgentsSessionBudgetReachedType string
  3468  
  3469  const (
  3470  	BetaManagedAgentsSessionBudgetReachedTypeBudgetReached BetaManagedAgentsSessionBudgetReachedType = "budget_reached"
  3471  )
  3472  
  3473  // Emitted when a session has been deleted. Terminates any active event stream — no
  3474  // further events will be emitted for this session.
  3475  type BetaManagedAgentsSessionDeletedEvent struct {
  3476  	// Unique identifier for this event.
  3477  	ID string `json:"id" api:"required"`
  3478  	// A timestamp in RFC 3339 format
  3479  	ProcessedAt time.Time `json:"processed_at" api:"required" format:"date-time"`
  3480  	// Any of "session.deleted".
  3481  	Type BetaManagedAgentsSessionDeletedEventType `json:"type" api:"required"`
  3482  	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
  3483  	JSON struct {
  3484  		ID          respjson.Field
  3485  		ProcessedAt respjson.Field
  3486  		Type        respjson.Field
  3487  		ExtraFields map[string]respjson.Field
  3488  		raw         string
  3489  	} `json:"-"`
  3490  }
  3491  
  3492  // Returns the unmodified JSON received from the API
  3493  func (r BetaManagedAgentsSessionDeletedEvent) RawJSON() string { return r.JSON.raw }
  3494  func (r *BetaManagedAgentsSessionDeletedEvent) UnmarshalJSON(data []byte) error {
  3495  	return apijson.UnmarshalRoot(data, r)
  3496  }
  3497  
  3498  type BetaManagedAgentsSessionDeletedEventType string
  3499  
  3500  const (
  3501  	BetaManagedAgentsSessionDeletedEventTypeSessionDeleted BetaManagedAgentsSessionDeletedEventType = "session.deleted"
  3502  )
  3503  
  3504  // The agent completed its turn naturally and is ready for the next user message.
  3505  type BetaManagedAgentsSessionEndTurn struct {
  3506  	// Any of "end_turn".
  3507  	Type BetaManagedAgentsSessionEndTurnType `json:"type" api:"required"`
  3508  	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
  3509  	JSON struct {
  3510  		Type        respjson.Field
  3511  		ExtraFields map[string]respjson.Field
  3512  		raw         string
  3513  	} `json:"-"`
  3514  }
  3515  
  3516  // Returns the unmodified JSON received from the API
  3517  func (r BetaManagedAgentsSessionEndTurn) RawJSON() string { return r.JSON.raw }
  3518  func (r *BetaManagedAgentsSessionEndTurn) UnmarshalJSON(data []byte) error {
  3519  	return apijson.UnmarshalRoot(data, r)
  3520  }
  3521  
  3522  type BetaManagedAgentsSessionEndTurnType string
  3523  
  3524  const (
  3525  	BetaManagedAgentsSessionEndTurnTypeEndTurn BetaManagedAgentsSessionEndTurnType = "end_turn"
  3526  )
  3527  
  3528  // An error event indicating a problem occurred during session execution.
  3529  type BetaManagedAgentsSessionErrorEvent struct {
  3530  	// Unique identifier for this event.
  3531  	ID string `json:"id" api:"required"`
  3532  	// An unknown or unexpected error occurred during session execution. A fallback
  3533  	// variant; clients that don't recognize a new error code can match on
  3534  	// `retry_status` and `message` alone.
  3535  	Error BetaManagedAgentsSessionErrorEventErrorUnion `json:"error" api:"required"`
  3536  	// A timestamp in RFC 3339 format
  3537  	ProcessedAt time.Time `json:"processed_at" api:"required" format:"date-time"`
  3538  	// Any of "session.error".
  3539  	Type BetaManagedAgentsSessionErrorEventType `json:"type" api:"required"`
  3540  	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
  3541  	JSON struct {
  3542  		ID          respjson.Field
  3543  		Error       respjson.Field
  3544  		ProcessedAt respjson.Field
  3545  		Type        respjson.Field
  3546  		ExtraFields map[string]respjson.Field
  3547  		raw         string
  3548  	} `json:"-"`
  3549  }
  3550  
  3551  // Returns the unmodified JSON received from the API
  3552  func (r BetaManagedAgentsSessionErrorEvent) RawJSON() string { return r.JSON.raw }
  3553  func (r *BetaManagedAgentsSessionErrorEvent) UnmarshalJSON(data []byte) error {
  3554  	return apijson.UnmarshalRoot(data, r)
  3555  }
  3556  
  3557  // BetaManagedAgentsSessionErrorEventErrorUnion contains all possible properties
  3558  // and values from [BetaManagedAgentsUnknownError],
  3559  // [BetaManagedAgentsModelOverloadedError],
  3560  // [BetaManagedAgentsModelRateLimitedError],
  3561  // [BetaManagedAgentsModelRequestFailedError],
  3562  // [BetaManagedAgentsMCPConnectionFailedError],
  3563  // [BetaManagedAgentsMCPAuthenticationFailedError],
  3564  // [BetaManagedAgentsBillingError],
  3565  // [BetaManagedAgentsCredentialHostUnreachableError].
  3566  //
  3567  // Use the [BetaManagedAgentsSessionErrorEventErrorUnion.AsAny] method to switch on
  3568  // the variant.
  3569  //
  3570  // Use the methods beginning with 'As' to cast the union to one of its variants.
  3571  type BetaManagedAgentsSessionErrorEventErrorUnion struct {
  3572  	Message string `json:"message"`
  3573  	// This field is a union of [BetaManagedAgentsUnknownErrorRetryStatusUnion],
  3574  	// [BetaManagedAgentsModelOverloadedErrorRetryStatusUnion],
  3575  	// [BetaManagedAgentsModelRateLimitedErrorRetryStatusUnion],
  3576  	// [BetaManagedAgentsModelRequestFailedErrorRetryStatusUnion],
  3577  	// [BetaManagedAgentsMCPConnectionFailedErrorRetryStatusUnion],
  3578  	// [BetaManagedAgentsMCPAuthenticationFailedErrorRetryStatusUnion],
  3579  	// [BetaManagedAgentsBillingErrorRetryStatusUnion],
  3580  	// [BetaManagedAgentsCredentialHostUnreachableErrorRetryStatusUnion]
  3581  	RetryStatus BetaManagedAgentsSessionErrorEventErrorUnionRetryStatus `json:"retry_status"`
  3582  	// Any of "unknown_error", "model_overloaded_error", "model_rate_limited_error",
  3583  	// "model_request_failed_error", "mcp_connection_failed_error",
  3584  	// "mcp_authentication_failed_error", "billing_error",
  3585  	// "credential_host_unreachable_error".
  3586  	Type          string `json:"type"`
  3587  	MCPServerName string `json:"mcp_server_name"`
  3588  	// This field is from variant [BetaManagedAgentsCredentialHostUnreachableError].
  3589  	CredentialID string `json:"credential_id"`
  3590  	// This field is from variant [BetaManagedAgentsCredentialHostUnreachableError].
  3591  	VaultID string `json:"vault_id"`
  3592  	JSON    struct {
  3593  		Message       respjson.Field
  3594  		RetryStatus   respjson.Field
  3595  		Type          respjson.Field
  3596  		MCPServerName respjson.Field
  3597  		CredentialID  respjson.Field
  3598  		VaultID       respjson.Field
  3599  		raw           string
  3600  	} `json:"-"`
  3601  }
  3602  
  3603  // anyBetaManagedAgentsSessionErrorEventError is implemented by each variant of
  3604  // [BetaManagedAgentsSessionErrorEventErrorUnion] to add type safety for the return
  3605  // type of [BetaManagedAgentsSessionErrorEventErrorUnion.AsAny]
  3606  type anyBetaManagedAgentsSessionErrorEventError interface {
  3607  	implBetaManagedAgentsSessionErrorEventErrorUnion()
  3608  }
  3609  
  3610  func (BetaManagedAgentsUnknownError) implBetaManagedAgentsSessionErrorEventErrorUnion()             {}
  3611  func (BetaManagedAgentsModelOverloadedError) implBetaManagedAgentsSessionErrorEventErrorUnion()     {}
  3612  func (BetaManagedAgentsModelRateLimitedError) implBetaManagedAgentsSessionErrorEventErrorUnion()    {}
  3613  func (BetaManagedAgentsModelRequestFailedError) implBetaManagedAgentsSessionErrorEventErrorUnion()  {}
  3614  func (BetaManagedAgentsMCPConnectionFailedError) implBetaManagedAgentsSessionErrorEventErrorUnion() {}
  3615  func (BetaManagedAgentsMCPAuthenticationFailedError) implBetaManagedAgentsSessionErrorEventErrorUnion() {
  3616  }
  3617  func (BetaManagedAgentsBillingError) implBetaManagedAgentsSessionErrorEventErrorUnion() {}
  3618  func (BetaManagedAgentsCredentialHostUnreachableError) implBetaManagedAgentsSessionErrorEventErrorUnion() {
  3619  }
  3620  
  3621  // Use the following switch statement to find the correct variant
  3622  //
  3623  //	switch variant := BetaManagedAgentsSessionErrorEventErrorUnion.AsAny().(type) {
  3624  //	case anthropic.BetaManagedAgentsUnknownError:
  3625  //	case anthropic.BetaManagedAgentsModelOverloadedError:
  3626  //	case anthropic.BetaManagedAgentsModelRateLimitedError:
  3627  //	case anthropic.BetaManagedAgentsModelRequestFailedError:
  3628  //	case anthropic.BetaManagedAgentsMCPConnectionFailedError:
  3629  //	case anthropic.BetaManagedAgentsMCPAuthenticationFailedError:
  3630  //	case anthropic.BetaManagedAgentsBillingError:
  3631  //	case anthropic.BetaManagedAgentsCredentialHostUnreachableError:
  3632  //	default:
  3633  //	  fmt.Errorf("no variant present")
  3634  //	}
  3635  func (u BetaManagedAgentsSessionErrorEventErrorUnion) AsAny() anyBetaManagedAgentsSessionErrorEventError {
  3636  	switch u.Type {
  3637  	case "unknown_error":
  3638  		return u.AsUnknownError()
  3639  	case "model_overloaded_error":
  3640  		return u.AsModelOverloadedError()
  3641  	case "model_rate_limited_error":
  3642  		return u.AsModelRateLimitedError()
  3643  	case "model_request_failed_error":
  3644  		return u.AsModelRequestFailedError()
  3645  	case "mcp_connection_failed_error":
  3646  		return u.AsMCPConnectionFailedError()
  3647  	case "mcp_authentication_failed_error":
  3648  		return u.AsMCPAuthenticationFailedError()
  3649  	case "billing_error":
  3650  		return u.AsBillingError()
  3651  	case "credential_host_unreachable_error":
  3652  		return u.AsCredentialHostUnreachableError()
  3653  	}
  3654  	return nil
  3655  }
  3656  
  3657  func (u BetaManagedAgentsSessionErrorEventErrorUnion) AsUnknownError() (v BetaManagedAgentsUnknownError) {
  3658  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  3659  	return
  3660  }
  3661  
  3662  func (u BetaManagedAgentsSessionErrorEventErrorUnion) AsModelOverloadedError() (v BetaManagedAgentsModelOverloadedError) {
  3663  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  3664  	return
  3665  }
  3666  
  3667  func (u BetaManagedAgentsSessionErrorEventErrorUnion) AsModelRateLimitedError() (v BetaManagedAgentsModelRateLimitedError) {
  3668  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  3669  	return
  3670  }
  3671  
  3672  func (u BetaManagedAgentsSessionErrorEventErrorUnion) AsModelRequestFailedError() (v BetaManagedAgentsModelRequestFailedError) {
  3673  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  3674  	return
  3675  }
  3676  
  3677  func (u BetaManagedAgentsSessionErrorEventErrorUnion) AsMCPConnectionFailedError() (v BetaManagedAgentsMCPConnectionFailedError) {
  3678  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  3679  	return
  3680  }
  3681  
  3682  func (u BetaManagedAgentsSessionErrorEventErrorUnion) AsMCPAuthenticationFailedError() (v BetaManagedAgentsMCPAuthenticationFailedError) {
  3683  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  3684  	return
  3685  }
  3686  
  3687  func (u BetaManagedAgentsSessionErrorEventErrorUnion) AsBillingError() (v BetaManagedAgentsBillingError) {
  3688  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  3689  	return
  3690  }
  3691  
  3692  func (u BetaManagedAgentsSessionErrorEventErrorUnion) AsCredentialHostUnreachableError() (v BetaManagedAgentsCredentialHostUnreachableError) {
  3693  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  3694  	return
  3695  }
  3696  
  3697  // Returns the unmodified JSON received from the API
  3698  func (u BetaManagedAgentsSessionErrorEventErrorUnion) RawJSON() string { return u.JSON.raw }
  3699  
  3700  func (r *BetaManagedAgentsSessionErrorEventErrorUnion) UnmarshalJSON(data []byte) error {
  3701  	return apijson.UnmarshalRoot(data, r)
  3702  }
  3703  
  3704  // BetaManagedAgentsSessionErrorEventErrorUnionRetryStatus is an implicit subunion
  3705  // of [BetaManagedAgentsSessionErrorEventErrorUnion].
  3706  // BetaManagedAgentsSessionErrorEventErrorUnionRetryStatus provides convenient
  3707  // access to the sub-properties of the union.
  3708  //
  3709  // For type safety it is recommended to directly use a variant of the
  3710  // [BetaManagedAgentsSessionErrorEventErrorUnion].
  3711  type BetaManagedAgentsSessionErrorEventErrorUnionRetryStatus struct {
  3712  	Type string `json:"type"`
  3713  	JSON struct {
  3714  		Type respjson.Field
  3715  		raw  string
  3716  	} `json:"-"`
  3717  }
  3718  
  3719  func (r *BetaManagedAgentsSessionErrorEventErrorUnionRetryStatus) UnmarshalJSON(data []byte) error {
  3720  	return apijson.UnmarshalRoot(data, r)
  3721  }
  3722  
  3723  type BetaManagedAgentsSessionErrorEventType string
  3724  
  3725  const (
  3726  	BetaManagedAgentsSessionErrorEventTypeSessionError BetaManagedAgentsSessionErrorEventType = "session.error"
  3727  )
  3728  
  3729  // BetaManagedAgentsSessionEventUnion contains all possible properties and values
  3730  // from [BetaManagedAgentsUserMessageEvent], [BetaManagedAgentsUserInterruptEvent],
  3731  // [BetaManagedAgentsUserToolConfirmationEvent],
  3732  // [BetaManagedAgentsUserCustomToolResultEvent],
  3733  // [BetaManagedAgentsAgentCustomToolUseEvent],
  3734  // [BetaManagedAgentsAgentMessageEvent], [BetaManagedAgentsAgentThinkingEvent],
  3735  // [BetaManagedAgentsAgentMCPToolUseEvent],
  3736  // [BetaManagedAgentsAgentMCPToolResultEvent],
  3737  // [BetaManagedAgentsAgentToolUseEvent], [BetaManagedAgentsAgentToolResultEvent],
  3738  // [BetaManagedAgentsAgentThreadMessageReceivedEvent],
  3739  // [BetaManagedAgentsAgentThreadMessageSentEvent],
  3740  // [BetaManagedAgentsAgentThreadContextCompactedEvent],
  3741  // [BetaManagedAgentsSessionErrorEvent],
  3742  // [BetaManagedAgentsSessionStatusRescheduledEvent],
  3743  // [BetaManagedAgentsSessionStatusRunningEvent],
  3744  // [BetaManagedAgentsSessionStatusIdleEvent],
  3745  // [BetaManagedAgentsSessionStatusTerminatedEvent],
  3746  // [BetaManagedAgentsSessionThreadCreatedEvent],
  3747  // [BetaManagedAgentsSpanOutcomeEvaluationStartEvent],
  3748  // [BetaManagedAgentsSpanOutcomeEvaluationEndEvent],
  3749  // [BetaManagedAgentsSpanModelRequestStartEvent],
  3750  // [BetaManagedAgentsSpanModelRequestEndEvent],
  3751  // [BetaManagedAgentsSpanOutcomeEvaluationOngoingEvent],
  3752  // [BetaManagedAgentsUserDefineOutcomeEvent],
  3753  // [BetaManagedAgentsSessionDeletedEvent],
  3754  // [BetaManagedAgentsSessionThreadStatusRunningEvent],
  3755  // [BetaManagedAgentsSessionThreadStatusIdleEvent],
  3756  // [BetaManagedAgentsSessionThreadStatusTerminatedEvent],
  3757  // [BetaManagedAgentsUserToolResultEvent],
  3758  // [BetaManagedAgentsSessionThreadStatusRescheduledEvent],
  3759  // [BetaManagedAgentsSessionUpdatedEvent], [BetaManagedAgentsSystemMessageEvent],
  3760  // [BetaManagedAgentsSessionUsageEvent].
  3761  //
  3762  // Use the [BetaManagedAgentsSessionEventUnion.AsAny] method to switch on the
  3763  // variant.
  3764  //
  3765  // Use the methods beginning with 'As' to cast the union to one of its variants.
  3766  type BetaManagedAgentsSessionEventUnion struct {
  3767  	ID string `json:"id"`
  3768  	// This field is a union of [[]BetaManagedAgentsUserMessageEventContentUnion],
  3769  	// [[]BetaManagedAgentsUserCustomToolResultEventContentUnion],
  3770  	// [[]BetaManagedAgentsAgentMessageEventContentUnion],
  3771  	// [[]BetaManagedAgentsAgentMCPToolResultEventContentUnion],
  3772  	// [[]BetaManagedAgentsAgentToolResultEventContentUnion],
  3773  	// [[]BetaManagedAgentsAgentThreadMessageReceivedEventContentUnion],
  3774  	// [[]BetaManagedAgentsAgentThreadMessageSentEventContentUnion],
  3775  	// [[]BetaManagedAgentsUserToolResultEventContentUnion],
  3776  	// [[]BetaManagedAgentsSystemContentBlock]
  3777  	Content BetaManagedAgentsSessionEventUnionContent `json:"content"`
  3778  	// Any of "user.message", "user.interrupt", "user.tool_confirmation",
  3779  	// "user.custom_tool_result", "agent.custom_tool_use", "agent.message",
  3780  	// "agent.thinking", "agent.mcp_tool_use", "agent.mcp_tool_result",
  3781  	// "agent.tool_use", "agent.tool_result", "agent.thread_message_received",
  3782  	// "agent.thread_message_sent", "agent.thread_context_compacted", "session.error",
  3783  	// "session.status_rescheduled", "session.status_running", "session.status_idle",
  3784  	// "session.status_terminated", "session.thread_created",
  3785  	// "span.outcome_evaluation_start", "span.outcome_evaluation_end",
  3786  	// "span.model_request_start", "span.model_request_end",
  3787  	// "span.outcome_evaluation_ongoing", "user.define_outcome", "session.deleted",
  3788  	// "session.thread_status_running", "session.thread_status_idle",
  3789  	// "session.thread_status_terminated", "user.tool_result",
  3790  	// "session.thread_status_rescheduled", "session.updated", "system.message",
  3791  	// "session.usage".
  3792  	Type            string    `json:"type"`
  3793  	ProcessedAt     time.Time `json:"processed_at"`
  3794  	SessionThreadID string    `json:"session_thread_id"`
  3795  	Result          string    `json:"result"`
  3796  	ToolUseID       string    `json:"tool_use_id"`
  3797  	// This field is from variant [BetaManagedAgentsUserToolConfirmationEvent].
  3798  	DenyMessage string `json:"deny_message"`
  3799  	// This field is from variant [BetaManagedAgentsUserCustomToolResultEvent].
  3800  	CustomToolUseID string `json:"custom_tool_use_id"`
  3801  	IsError         bool   `json:"is_error"`
  3802  	Input           any    `json:"input"`
  3803  	Name            string `json:"name"`
  3804  	// This field is from variant [BetaManagedAgentsAgentMCPToolUseEvent].
  3805  	MCPServerName       string `json:"mcp_server_name"`
  3806  	EvaluatedPermission string `json:"evaluated_permission"`
  3807  	// This field is from variant [BetaManagedAgentsAgentMCPToolResultEvent].
  3808  	MCPToolUseID string `json:"mcp_tool_use_id"`
  3809  	// This field is from variant [BetaManagedAgentsAgentThreadMessageReceivedEvent].
  3810  	FromSessionThreadID string `json:"from_session_thread_id"`
  3811  	// This field is from variant [BetaManagedAgentsAgentThreadMessageReceivedEvent].
  3812  	FromAgentName string `json:"from_agent_name"`
  3813  	// This field is from variant [BetaManagedAgentsAgentThreadMessageSentEvent].
  3814  	ToSessionThreadID string `json:"to_session_thread_id"`
  3815  	// This field is from variant [BetaManagedAgentsAgentThreadMessageSentEvent].
  3816  	ToAgentName string `json:"to_agent_name"`
  3817  	// This field is from variant [BetaManagedAgentsSessionErrorEvent].
  3818  	Error BetaManagedAgentsSessionErrorEventErrorUnion `json:"error"`
  3819  	// This field is a union of
  3820  	// [BetaManagedAgentsSessionStatusIdleEventStopReasonUnion],
  3821  	// [BetaManagedAgentsSessionThreadStatusIdleEventStopReasonUnion]
  3822  	StopReason BetaManagedAgentsSessionEventUnionStopReason `json:"stop_reason"`
  3823  	AgentName  string                                       `json:"agent_name"`
  3824  	Iteration  int64                                        `json:"iteration"`
  3825  	OutcomeID  string                                       `json:"outcome_id"`
  3826  	// This field is from variant [BetaManagedAgentsSpanOutcomeEvaluationEndEvent].
  3827  	Explanation string `json:"explanation"`
  3828  	// This field is from variant [BetaManagedAgentsSpanOutcomeEvaluationEndEvent].
  3829  	OutcomeEvaluationStartID string `json:"outcome_evaluation_start_id"`
  3830  	// This field is a union of [BetaManagedAgentsSpanModelUsage],
  3831  	// [BetaManagedAgentsSessionUsageSnapshot]
  3832  	Usage BetaManagedAgentsSessionEventUnionUsage `json:"usage"`
  3833  	// This field is from variant [BetaManagedAgentsSpanModelRequestEndEvent].
  3834  	ModelRequestStartID string `json:"model_request_start_id"`
  3835  	// This field is from variant [BetaManagedAgentsSpanModelRequestEndEvent].
  3836  	ModelUsage BetaManagedAgentsSpanModelUsage `json:"model_usage"`
  3837  	// This field is from variant [BetaManagedAgentsUserDefineOutcomeEvent].
  3838  	Description string `json:"description"`
  3839  	// This field is from variant [BetaManagedAgentsUserDefineOutcomeEvent].
  3840  	MaxIterations int64 `json:"max_iterations"`
  3841  	// This field is from variant [BetaManagedAgentsUserDefineOutcomeEvent].
  3842  	Rubric BetaManagedAgentsUserDefineOutcomeEventRubricUnion `json:"rubric"`
  3843  	// This field is from variant [BetaManagedAgentsSessionUpdatedEvent].
  3844  	Agent BetaManagedAgentsSessionAgent `json:"agent"`
  3845  	// This field is from variant [BetaManagedAgentsSessionUpdatedEvent].
  3846  	Budget BetaManagedAgentsBudgetLimit `json:"budget"`
  3847  	// This field is from variant [BetaManagedAgentsSessionUpdatedEvent].
  3848  	Metadata map[string]string `json:"metadata"`
  3849  	// This field is from variant [BetaManagedAgentsSessionUpdatedEvent].
  3850  	Title string `json:"title"`
  3851  	JSON  struct {
  3852  		ID                       respjson.Field
  3853  		Content                  respjson.Field
  3854  		Type                     respjson.Field
  3855  		ProcessedAt              respjson.Field
  3856  		SessionThreadID          respjson.Field
  3857  		Result                   respjson.Field
  3858  		ToolUseID                respjson.Field
  3859  		DenyMessage              respjson.Field
  3860  		CustomToolUseID          respjson.Field
  3861  		IsError                  respjson.Field
  3862  		Input                    respjson.Field
  3863  		Name                     respjson.Field
  3864  		MCPServerName            respjson.Field
  3865  		EvaluatedPermission      respjson.Field
  3866  		MCPToolUseID             respjson.Field
  3867  		FromSessionThreadID      respjson.Field
  3868  		FromAgentName            respjson.Field
  3869  		ToSessionThreadID        respjson.Field
  3870  		ToAgentName              respjson.Field
  3871  		Error                    respjson.Field
  3872  		StopReason               respjson.Field
  3873  		AgentName                respjson.Field
  3874  		Iteration                respjson.Field
  3875  		OutcomeID                respjson.Field
  3876  		Explanation              respjson.Field
  3877  		OutcomeEvaluationStartID respjson.Field
  3878  		Usage                    respjson.Field
  3879  		ModelRequestStartID      respjson.Field
  3880  		ModelUsage               respjson.Field
  3881  		Description              respjson.Field
  3882  		MaxIterations            respjson.Field
  3883  		Rubric                   respjson.Field
  3884  		Agent                    respjson.Field
  3885  		Budget                   respjson.Field
  3886  		Metadata                 respjson.Field
  3887  		Title                    respjson.Field
  3888  		raw                      string
  3889  	} `json:"-"`
  3890  }
  3891  
  3892  // anyBetaManagedAgentsSessionEvent is implemented by each variant of
  3893  // [BetaManagedAgentsSessionEventUnion] to add type safety for the return type of
  3894  // [BetaManagedAgentsSessionEventUnion.AsAny]
  3895  type anyBetaManagedAgentsSessionEvent interface {
  3896  	implBetaManagedAgentsSessionEventUnion()
  3897  }
  3898  
  3899  func (BetaManagedAgentsUserMessageEvent) implBetaManagedAgentsSessionEventUnion()                   {}
  3900  func (BetaManagedAgentsUserInterruptEvent) implBetaManagedAgentsSessionEventUnion()                 {}
  3901  func (BetaManagedAgentsUserToolConfirmationEvent) implBetaManagedAgentsSessionEventUnion()          {}
  3902  func (BetaManagedAgentsUserCustomToolResultEvent) implBetaManagedAgentsSessionEventUnion()          {}
  3903  func (BetaManagedAgentsAgentCustomToolUseEvent) implBetaManagedAgentsSessionEventUnion()            {}
  3904  func (BetaManagedAgentsAgentMessageEvent) implBetaManagedAgentsSessionEventUnion()                  {}
  3905  func (BetaManagedAgentsAgentThinkingEvent) implBetaManagedAgentsSessionEventUnion()                 {}
  3906  func (BetaManagedAgentsAgentMCPToolUseEvent) implBetaManagedAgentsSessionEventUnion()               {}
  3907  func (BetaManagedAgentsAgentMCPToolResultEvent) implBetaManagedAgentsSessionEventUnion()            {}
  3908  func (BetaManagedAgentsAgentToolUseEvent) implBetaManagedAgentsSessionEventUnion()                  {}
  3909  func (BetaManagedAgentsAgentToolResultEvent) implBetaManagedAgentsSessionEventUnion()               {}
  3910  func (BetaManagedAgentsAgentThreadMessageReceivedEvent) implBetaManagedAgentsSessionEventUnion()    {}
  3911  func (BetaManagedAgentsAgentThreadMessageSentEvent) implBetaManagedAgentsSessionEventUnion()        {}
  3912  func (BetaManagedAgentsAgentThreadContextCompactedEvent) implBetaManagedAgentsSessionEventUnion()   {}
  3913  func (BetaManagedAgentsSessionErrorEvent) implBetaManagedAgentsSessionEventUnion()                  {}
  3914  func (BetaManagedAgentsSessionStatusRescheduledEvent) implBetaManagedAgentsSessionEventUnion()      {}
  3915  func (BetaManagedAgentsSessionStatusRunningEvent) implBetaManagedAgentsSessionEventUnion()          {}
  3916  func (BetaManagedAgentsSessionStatusIdleEvent) implBetaManagedAgentsSessionEventUnion()             {}
  3917  func (BetaManagedAgentsSessionStatusTerminatedEvent) implBetaManagedAgentsSessionEventUnion()       {}
  3918  func (BetaManagedAgentsSessionThreadCreatedEvent) implBetaManagedAgentsSessionEventUnion()          {}
  3919  func (BetaManagedAgentsSpanOutcomeEvaluationStartEvent) implBetaManagedAgentsSessionEventUnion()    {}
  3920  func (BetaManagedAgentsSpanOutcomeEvaluationEndEvent) implBetaManagedAgentsSessionEventUnion()      {}
  3921  func (BetaManagedAgentsSpanModelRequestStartEvent) implBetaManagedAgentsSessionEventUnion()         {}
  3922  func (BetaManagedAgentsSpanModelRequestEndEvent) implBetaManagedAgentsSessionEventUnion()           {}
  3923  func (BetaManagedAgentsSpanOutcomeEvaluationOngoingEvent) implBetaManagedAgentsSessionEventUnion()  {}
  3924  func (BetaManagedAgentsUserDefineOutcomeEvent) implBetaManagedAgentsSessionEventUnion()             {}
  3925  func (BetaManagedAgentsSessionDeletedEvent) implBetaManagedAgentsSessionEventUnion()                {}
  3926  func (BetaManagedAgentsSessionThreadStatusRunningEvent) implBetaManagedAgentsSessionEventUnion()    {}
  3927  func (BetaManagedAgentsSessionThreadStatusIdleEvent) implBetaManagedAgentsSessionEventUnion()       {}
  3928  func (BetaManagedAgentsSessionThreadStatusTerminatedEvent) implBetaManagedAgentsSessionEventUnion() {}
  3929  func (BetaManagedAgentsUserToolResultEvent) implBetaManagedAgentsSessionEventUnion()                {}
  3930  func (BetaManagedAgentsSessionThreadStatusRescheduledEvent) implBetaManagedAgentsSessionEventUnion() {
  3931  }
  3932  func (BetaManagedAgentsSessionUpdatedEvent) implBetaManagedAgentsSessionEventUnion() {}
  3933  func (BetaManagedAgentsSystemMessageEvent) implBetaManagedAgentsSessionEventUnion()  {}
  3934  func (BetaManagedAgentsSessionUsageEvent) implBetaManagedAgentsSessionEventUnion()   {}
  3935  
  3936  // Use the following switch statement to find the correct variant
  3937  //
  3938  //	switch variant := BetaManagedAgentsSessionEventUnion.AsAny().(type) {
  3939  //	case anthropic.BetaManagedAgentsUserMessageEvent:
  3940  //	case anthropic.BetaManagedAgentsUserInterruptEvent:
  3941  //	case anthropic.BetaManagedAgentsUserToolConfirmationEvent:
  3942  //	case anthropic.BetaManagedAgentsUserCustomToolResultEvent:
  3943  //	case anthropic.BetaManagedAgentsAgentCustomToolUseEvent:
  3944  //	case anthropic.BetaManagedAgentsAgentMessageEvent:
  3945  //	case anthropic.BetaManagedAgentsAgentThinkingEvent:
  3946  //	case anthropic.BetaManagedAgentsAgentMCPToolUseEvent:
  3947  //	case anthropic.BetaManagedAgentsAgentMCPToolResultEvent:
  3948  //	case anthropic.BetaManagedAgentsAgentToolUseEvent:
  3949  //	case anthropic.BetaManagedAgentsAgentToolResultEvent:
  3950  //	case anthropic.BetaManagedAgentsAgentThreadMessageReceivedEvent:
  3951  //	case anthropic.BetaManagedAgentsAgentThreadMessageSentEvent:
  3952  //	case anthropic.BetaManagedAgentsAgentThreadContextCompactedEvent:
  3953  //	case anthropic.BetaManagedAgentsSessionErrorEvent:
  3954  //	case anthropic.BetaManagedAgentsSessionStatusRescheduledEvent:
  3955  //	case anthropic.BetaManagedAgentsSessionStatusRunningEvent:
  3956  //	case anthropic.BetaManagedAgentsSessionStatusIdleEvent:
  3957  //	case anthropic.BetaManagedAgentsSessionStatusTerminatedEvent:
  3958  //	case anthropic.BetaManagedAgentsSessionThreadCreatedEvent:
  3959  //	case anthropic.BetaManagedAgentsSpanOutcomeEvaluationStartEvent:
  3960  //	case anthropic.BetaManagedAgentsSpanOutcomeEvaluationEndEvent:
  3961  //	case anthropic.BetaManagedAgentsSpanModelRequestStartEvent:
  3962  //	case anthropic.BetaManagedAgentsSpanModelRequestEndEvent:
  3963  //	case anthropic.BetaManagedAgentsSpanOutcomeEvaluationOngoingEvent:
  3964  //	case anthropic.BetaManagedAgentsUserDefineOutcomeEvent:
  3965  //	case anthropic.BetaManagedAgentsSessionDeletedEvent:
  3966  //	case anthropic.BetaManagedAgentsSessionThreadStatusRunningEvent:
  3967  //	case anthropic.BetaManagedAgentsSessionThreadStatusIdleEvent:
  3968  //	case anthropic.BetaManagedAgentsSessionThreadStatusTerminatedEvent:
  3969  //	case anthropic.BetaManagedAgentsUserToolResultEvent:
  3970  //	case anthropic.BetaManagedAgentsSessionThreadStatusRescheduledEvent:
  3971  //	case anthropic.BetaManagedAgentsSessionUpdatedEvent:
  3972  //	case anthropic.BetaManagedAgentsSystemMessageEvent:
  3973  //	case anthropic.BetaManagedAgentsSessionUsageEvent:
  3974  //	default:
  3975  //	  fmt.Errorf("no variant present")
  3976  //	}
  3977  func (u BetaManagedAgentsSessionEventUnion) AsAny() anyBetaManagedAgentsSessionEvent {
  3978  	switch u.Type {
  3979  	case "user.message":
  3980  		return u.AsUserMessage()
  3981  	case "user.interrupt":
  3982  		return u.AsUserInterrupt()
  3983  	case "user.tool_confirmation":
  3984  		return u.AsUserToolConfirmation()
  3985  	case "user.custom_tool_result":
  3986  		return u.AsUserCustomToolResult()
  3987  	case "agent.custom_tool_use":
  3988  		return u.AsAgentCustomToolUse()
  3989  	case "agent.message":
  3990  		return u.AsAgentMessage()
  3991  	case "agent.thinking":
  3992  		return u.AsAgentThinking()
  3993  	case "agent.mcp_tool_use":
  3994  		return u.AsAgentMCPToolUse()
  3995  	case "agent.mcp_tool_result":
  3996  		return u.AsAgentMCPToolResult()
  3997  	case "agent.tool_use":
  3998  		return u.AsAgentToolUse()
  3999  	case "agent.tool_result":
  4000  		return u.AsAgentToolResult()
  4001  	case "agent.thread_message_received":
  4002  		return u.AsAgentThreadMessageReceived()
  4003  	case "agent.thread_message_sent":
  4004  		return u.AsAgentThreadMessageSent()
  4005  	case "agent.thread_context_compacted":
  4006  		return u.AsAgentThreadContextCompacted()
  4007  	case "session.error":
  4008  		return u.AsSessionError()
  4009  	case "session.status_rescheduled":
  4010  		return u.AsSessionStatusRescheduled()
  4011  	case "session.status_running":
  4012  		return u.AsSessionStatusRunning()
  4013  	case "session.status_idle":
  4014  		return u.AsSessionStatusIdle()
  4015  	case "session.status_terminated":
  4016  		return u.AsSessionStatusTerminated()
  4017  	case "session.thread_created":
  4018  		return u.AsSessionThreadCreated()
  4019  	case "span.outcome_evaluation_start":
  4020  		return u.AsSpanOutcomeEvaluationStart()
  4021  	case "span.outcome_evaluation_end":
  4022  		return u.AsSpanOutcomeEvaluationEnd()
  4023  	case "span.model_request_start":
  4024  		return u.AsSpanModelRequestStart()
  4025  	case "span.model_request_end":
  4026  		return u.AsSpanModelRequestEnd()
  4027  	case "span.outcome_evaluation_ongoing":
  4028  		return u.AsSpanOutcomeEvaluationOngoing()
  4029  	case "user.define_outcome":
  4030  		return u.AsUserDefineOutcome()
  4031  	case "session.deleted":
  4032  		return u.AsSessionDeleted()
  4033  	case "session.thread_status_running":
  4034  		return u.AsSessionThreadStatusRunning()
  4035  	case "session.thread_status_idle":
  4036  		return u.AsSessionThreadStatusIdle()
  4037  	case "session.thread_status_terminated":
  4038  		return u.AsSessionThreadStatusTerminated()
  4039  	case "user.tool_result":
  4040  		return u.AsUserToolResult()
  4041  	case "session.thread_status_rescheduled":
  4042  		return u.AsSessionThreadStatusRescheduled()
  4043  	case "session.updated":
  4044  		return u.AsSessionUpdated()
  4045  	case "system.message":
  4046  		return u.AsSystemMessage()
  4047  	case "session.usage":
  4048  		return u.AsSessionUsage()
  4049  	}
  4050  	return nil
  4051  }
  4052  
  4053  func (u BetaManagedAgentsSessionEventUnion) AsUserMessage() (v BetaManagedAgentsUserMessageEvent) {
  4054  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  4055  	return
  4056  }
  4057  
  4058  func (u BetaManagedAgentsSessionEventUnion) AsUserInterrupt() (v BetaManagedAgentsUserInterruptEvent) {
  4059  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  4060  	return
  4061  }
  4062  
  4063  func (u BetaManagedAgentsSessionEventUnion) AsUserToolConfirmation() (v BetaManagedAgentsUserToolConfirmationEvent) {
  4064  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  4065  	return
  4066  }
  4067  
  4068  func (u BetaManagedAgentsSessionEventUnion) AsUserCustomToolResult() (v BetaManagedAgentsUserCustomToolResultEvent) {
  4069  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  4070  	return
  4071  }
  4072  
  4073  func (u BetaManagedAgentsSessionEventUnion) AsAgentCustomToolUse() (v BetaManagedAgentsAgentCustomToolUseEvent) {
  4074  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  4075  	return
  4076  }
  4077  
  4078  func (u BetaManagedAgentsSessionEventUnion) AsAgentMessage() (v BetaManagedAgentsAgentMessageEvent) {
  4079  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  4080  	return
  4081  }
  4082  
  4083  func (u BetaManagedAgentsSessionEventUnion) AsAgentThinking() (v BetaManagedAgentsAgentThinkingEvent) {
  4084  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  4085  	return
  4086  }
  4087  
  4088  func (u BetaManagedAgentsSessionEventUnion) AsAgentMCPToolUse() (v BetaManagedAgentsAgentMCPToolUseEvent) {
  4089  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  4090  	return
  4091  }
  4092  
  4093  func (u BetaManagedAgentsSessionEventUnion) AsAgentMCPToolResult() (v BetaManagedAgentsAgentMCPToolResultEvent) {
  4094  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  4095  	return
  4096  }
  4097  
  4098  func (u BetaManagedAgentsSessionEventUnion) AsAgentToolUse() (v BetaManagedAgentsAgentToolUseEvent) {
  4099  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  4100  	return
  4101  }
  4102  
  4103  func (u BetaManagedAgentsSessionEventUnion) AsAgentToolResult() (v BetaManagedAgentsAgentToolResultEvent) {
  4104  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  4105  	return
  4106  }
  4107  
  4108  func (u BetaManagedAgentsSessionEventUnion) AsAgentThreadMessageReceived() (v BetaManagedAgentsAgentThreadMessageReceivedEvent) {
  4109  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  4110  	return
  4111  }
  4112  
  4113  func (u BetaManagedAgentsSessionEventUnion) AsAgentThreadMessageSent() (v BetaManagedAgentsAgentThreadMessageSentEvent) {
  4114  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  4115  	return
  4116  }
  4117  
  4118  func (u BetaManagedAgentsSessionEventUnion) AsAgentThreadContextCompacted() (v BetaManagedAgentsAgentThreadContextCompactedEvent) {
  4119  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  4120  	return
  4121  }
  4122  
  4123  func (u BetaManagedAgentsSessionEventUnion) AsSessionError() (v BetaManagedAgentsSessionErrorEvent) {
  4124  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  4125  	return
  4126  }
  4127  
  4128  func (u BetaManagedAgentsSessionEventUnion) AsSessionStatusRescheduled() (v BetaManagedAgentsSessionStatusRescheduledEvent) {
  4129  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  4130  	return
  4131  }
  4132  
  4133  func (u BetaManagedAgentsSessionEventUnion) AsSessionStatusRunning() (v BetaManagedAgentsSessionStatusRunningEvent) {
  4134  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  4135  	return
  4136  }
  4137  
  4138  func (u BetaManagedAgentsSessionEventUnion) AsSessionStatusIdle() (v BetaManagedAgentsSessionStatusIdleEvent) {
  4139  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  4140  	return
  4141  }
  4142  
  4143  func (u BetaManagedAgentsSessionEventUnion) AsSessionStatusTerminated() (v BetaManagedAgentsSessionStatusTerminatedEvent) {
  4144  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  4145  	return
  4146  }
  4147  
  4148  func (u BetaManagedAgentsSessionEventUnion) AsSessionThreadCreated() (v BetaManagedAgentsSessionThreadCreatedEvent) {
  4149  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  4150  	return
  4151  }
  4152  
  4153  func (u BetaManagedAgentsSessionEventUnion) AsSpanOutcomeEvaluationStart() (v BetaManagedAgentsSpanOutcomeEvaluationStartEvent) {
  4154  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  4155  	return
  4156  }
  4157  
  4158  func (u BetaManagedAgentsSessionEventUnion) AsSpanOutcomeEvaluationEnd() (v BetaManagedAgentsSpanOutcomeEvaluationEndEvent) {
  4159  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  4160  	return
  4161  }
  4162  
  4163  func (u BetaManagedAgentsSessionEventUnion) AsSpanModelRequestStart() (v BetaManagedAgentsSpanModelRequestStartEvent) {
  4164  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  4165  	return
  4166  }
  4167  
  4168  func (u BetaManagedAgentsSessionEventUnion) AsSpanModelRequestEnd() (v BetaManagedAgentsSpanModelRequestEndEvent) {
  4169  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  4170  	return
  4171  }
  4172  
  4173  func (u BetaManagedAgentsSessionEventUnion) AsSpanOutcomeEvaluationOngoing() (v BetaManagedAgentsSpanOutcomeEvaluationOngoingEvent) {
  4174  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  4175  	return
  4176  }
  4177  
  4178  func (u BetaManagedAgentsSessionEventUnion) AsUserDefineOutcome() (v BetaManagedAgentsUserDefineOutcomeEvent) {
  4179  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  4180  	return
  4181  }
  4182  
  4183  func (u BetaManagedAgentsSessionEventUnion) AsSessionDeleted() (v BetaManagedAgentsSessionDeletedEvent) {
  4184  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  4185  	return
  4186  }
  4187  
  4188  func (u BetaManagedAgentsSessionEventUnion) AsSessionThreadStatusRunning() (v BetaManagedAgentsSessionThreadStatusRunningEvent) {
  4189  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  4190  	return
  4191  }
  4192  
  4193  func (u BetaManagedAgentsSessionEventUnion) AsSessionThreadStatusIdle() (v BetaManagedAgentsSessionThreadStatusIdleEvent) {
  4194  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  4195  	return
  4196  }
  4197  
  4198  func (u BetaManagedAgentsSessionEventUnion) AsSessionThreadStatusTerminated() (v BetaManagedAgentsSessionThreadStatusTerminatedEvent) {
  4199  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  4200  	return
  4201  }
  4202  
  4203  func (u BetaManagedAgentsSessionEventUnion) AsUserToolResult() (v BetaManagedAgentsUserToolResultEvent) {
  4204  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  4205  	return
  4206  }
  4207  
  4208  func (u BetaManagedAgentsSessionEventUnion) AsSessionThreadStatusRescheduled() (v BetaManagedAgentsSessionThreadStatusRescheduledEvent) {
  4209  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  4210  	return
  4211  }
  4212  
  4213  func (u BetaManagedAgentsSessionEventUnion) AsSessionUpdated() (v BetaManagedAgentsSessionUpdatedEvent) {
  4214  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  4215  	return
  4216  }
  4217  
  4218  func (u BetaManagedAgentsSessionEventUnion) AsSystemMessage() (v BetaManagedAgentsSystemMessageEvent) {
  4219  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  4220  	return
  4221  }
  4222  
  4223  func (u BetaManagedAgentsSessionEventUnion) AsSessionUsage() (v BetaManagedAgentsSessionUsageEvent) {
  4224  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  4225  	return
  4226  }
  4227  
  4228  // Returns the unmodified JSON received from the API
  4229  func (u BetaManagedAgentsSessionEventUnion) RawJSON() string { return u.JSON.raw }
  4230  
  4231  func (r *BetaManagedAgentsSessionEventUnion) UnmarshalJSON(data []byte) error {
  4232  	return apijson.UnmarshalRoot(data, r)
  4233  }
  4234  
  4235  // BetaManagedAgentsSessionEventUnionContent is an implicit subunion of
  4236  // [BetaManagedAgentsSessionEventUnion]. BetaManagedAgentsSessionEventUnionContent
  4237  // provides convenient access to the sub-properties of the union.
  4238  //
  4239  // For type safety it is recommended to directly use a variant of the
  4240  // [BetaManagedAgentsSessionEventUnion].
  4241  //
  4242  // If the underlying value is not a json object, one of the following properties
  4243  // will be valid: OfBetaManagedAgentsUserMessageEventContentArray
  4244  // OfBetaManagedAgentsUserCustomToolResultEventContentArray
  4245  // OfBetaManagedAgentsAgentMessageEventContentArray
  4246  // OfBetaManagedAgentsAgentMCPToolResultEventContentArray
  4247  // OfBetaManagedAgentsAgentToolResultEventContentArray
  4248  // OfBetaManagedAgentsAgentThreadMessageReceivedEventContentArray
  4249  // OfBetaManagedAgentsAgentThreadMessageSentEventContentArray
  4250  // OfBetaManagedAgentsUserToolResultEventContentArray
  4251  // OfBetaManagedAgentsSystemContentBlockArray]
  4252  type BetaManagedAgentsSessionEventUnionContent struct {
  4253  	// This field will be present if the value is a
  4254  	// [[]BetaManagedAgentsUserMessageEventContentUnion] instead of an object.
  4255  	OfBetaManagedAgentsUserMessageEventContentArray []BetaManagedAgentsUserMessageEventContentUnion `json:",inline"`
  4256  	// This field will be present if the value is a
  4257  	// [[]BetaManagedAgentsUserCustomToolResultEventContentUnion] instead of an object.
  4258  	OfBetaManagedAgentsUserCustomToolResultEventContentArray []BetaManagedAgentsUserCustomToolResultEventContentUnion `json:",inline"`
  4259  	// This field will be present if the value is a
  4260  	// [[]BetaManagedAgentsAgentMessageEventContentUnion] instead of an object.
  4261  	OfBetaManagedAgentsAgentMessageEventContentArray []BetaManagedAgentsAgentMessageEventContentUnion `json:",inline"`
  4262  	// This field will be present if the value is a
  4263  	// [[]BetaManagedAgentsAgentMCPToolResultEventContentUnion] instead of an object.
  4264  	OfBetaManagedAgentsAgentMCPToolResultEventContentArray []BetaManagedAgentsAgentMCPToolResultEventContentUnion `json:",inline"`
  4265  	// This field will be present if the value is a
  4266  	// [[]BetaManagedAgentsAgentToolResultEventContentUnion] instead of an object.
  4267  	OfBetaManagedAgentsAgentToolResultEventContentArray []BetaManagedAgentsAgentToolResultEventContentUnion `json:",inline"`
  4268  	// This field will be present if the value is a
  4269  	// [[]BetaManagedAgentsAgentThreadMessageReceivedEventContentUnion] instead of an
  4270  	// object.
  4271  	OfBetaManagedAgentsAgentThreadMessageReceivedEventContentArray []BetaManagedAgentsAgentThreadMessageReceivedEventContentUnion `json:",inline"`
  4272  	// This field will be present if the value is a
  4273  	// [[]BetaManagedAgentsAgentThreadMessageSentEventContentUnion] instead of an
  4274  	// object.
  4275  	OfBetaManagedAgentsAgentThreadMessageSentEventContentArray []BetaManagedAgentsAgentThreadMessageSentEventContentUnion `json:",inline"`
  4276  	// This field will be present if the value is a
  4277  	// [[]BetaManagedAgentsUserToolResultEventContentUnion] instead of an object.
  4278  	OfBetaManagedAgentsUserToolResultEventContentArray []BetaManagedAgentsUserToolResultEventContentUnion `json:",inline"`
  4279  	// This field will be present if the value is a
  4280  	// [[]BetaManagedAgentsSystemContentBlock] instead of an object.
  4281  	OfBetaManagedAgentsSystemContentBlockArray []BetaManagedAgentsSystemContentBlock `json:",inline"`
  4282  	JSON                                       struct {
  4283  		OfBetaManagedAgentsUserMessageEventContentArray                respjson.Field
  4284  		OfBetaManagedAgentsUserCustomToolResultEventContentArray       respjson.Field
  4285  		OfBetaManagedAgentsAgentMessageEventContentArray               respjson.Field
  4286  		OfBetaManagedAgentsAgentMCPToolResultEventContentArray         respjson.Field
  4287  		OfBetaManagedAgentsAgentToolResultEventContentArray            respjson.Field
  4288  		OfBetaManagedAgentsAgentThreadMessageReceivedEventContentArray respjson.Field
  4289  		OfBetaManagedAgentsAgentThreadMessageSentEventContentArray     respjson.Field
  4290  		OfBetaManagedAgentsUserToolResultEventContentArray             respjson.Field
  4291  		OfBetaManagedAgentsSystemContentBlockArray                     respjson.Field
  4292  		raw                                                            string
  4293  	} `json:"-"`
  4294  }
  4295  
  4296  func (r *BetaManagedAgentsSessionEventUnionContent) UnmarshalJSON(data []byte) error {
  4297  	return apijson.UnmarshalRoot(data, r)
  4298  }
  4299  
  4300  // BetaManagedAgentsSessionEventUnionStopReason is an implicit subunion of
  4301  // [BetaManagedAgentsSessionEventUnion].
  4302  // BetaManagedAgentsSessionEventUnionStopReason provides convenient access to the
  4303  // sub-properties of the union.
  4304  //
  4305  // For type safety it is recommended to directly use a variant of the
  4306  // [BetaManagedAgentsSessionEventUnion].
  4307  type BetaManagedAgentsSessionEventUnionStopReason struct {
  4308  	Type string `json:"type"`
  4309  	// This field is from variant
  4310  	// [BetaManagedAgentsSessionStatusIdleEventStopReasonUnion],
  4311  	// [BetaManagedAgentsSessionThreadStatusIdleEventStopReasonUnion].
  4312  	EventIDs []string `json:"event_ids"`
  4313  	JSON     struct {
  4314  		Type     respjson.Field
  4315  		EventIDs respjson.Field
  4316  		raw      string
  4317  	} `json:"-"`
  4318  }
  4319  
  4320  func (r *BetaManagedAgentsSessionEventUnionStopReason) UnmarshalJSON(data []byte) error {
  4321  	return apijson.UnmarshalRoot(data, r)
  4322  }
  4323  
  4324  // BetaManagedAgentsSessionEventUnionUsage is an implicit subunion of
  4325  // [BetaManagedAgentsSessionEventUnion]. BetaManagedAgentsSessionEventUnionUsage
  4326  // provides convenient access to the sub-properties of the union.
  4327  //
  4328  // For type safety it is recommended to directly use a variant of the
  4329  // [BetaManagedAgentsSessionEventUnion].
  4330  type BetaManagedAgentsSessionEventUnionUsage struct {
  4331  	// This field is from variant [BetaManagedAgentsSpanModelUsage].
  4332  	CacheCreationInputTokens int64 `json:"cache_creation_input_tokens"`
  4333  	CacheReadInputTokens     int64 `json:"cache_read_input_tokens"`
  4334  	InputTokens              int64 `json:"input_tokens"`
  4335  	OutputTokens             int64 `json:"output_tokens"`
  4336  	// This field is from variant [BetaManagedAgentsSpanModelUsage].
  4337  	Speed BetaManagedAgentsSpanModelUsageSpeed `json:"speed"`
  4338  	// This field is from variant [BetaManagedAgentsSessionUsageSnapshot].
  4339  	ActiveSeconds float64 `json:"active_seconds"`
  4340  	// This field is from variant [BetaManagedAgentsSessionUsageSnapshot].
  4341  	CacheCreation BetaManagedAgentsCacheCreationUsage `json:"cache_creation"`
  4342  	// This field is from variant [BetaManagedAgentsSessionUsageSnapshot].
  4343  	ListCost BetaMonetaryAmount `json:"list_cost"`
  4344  	// This field is from variant [BetaManagedAgentsSessionUsageSnapshot].
  4345  	ServerToolUse BetaManagedAgentsServerToolUsage `json:"server_tool_use"`
  4346  	JSON          struct {
  4347  		CacheCreationInputTokens respjson.Field
  4348  		CacheReadInputTokens     respjson.Field
  4349  		InputTokens              respjson.Field
  4350  		OutputTokens             respjson.Field
  4351  		Speed                    respjson.Field
  4352  		ActiveSeconds            respjson.Field
  4353  		CacheCreation            respjson.Field
  4354  		ListCost                 respjson.Field
  4355  		ServerToolUse            respjson.Field
  4356  		raw                      string
  4357  	} `json:"-"`
  4358  }
  4359  
  4360  func (r *BetaManagedAgentsSessionEventUnionUsage) UnmarshalJSON(data []byte) error {
  4361  	return apijson.UnmarshalRoot(data, r)
  4362  }
  4363  
  4364  // The agent is idle waiting on one or more blocking user-input events (tool
  4365  // confirmation, custom tool result, etc.). Resolving all of them transitions the
  4366  // session back to running.
  4367  type BetaManagedAgentsSessionRequiresAction struct {
  4368  	// The ids of events the agent is blocked on. Resolving fewer than all re-emits
  4369  	// `session.status_idle` with the remainder.
  4370  	EventIDs []string `json:"event_ids" api:"required"`
  4371  	// Any of "requires_action".
  4372  	Type BetaManagedAgentsSessionRequiresActionType `json:"type" api:"required"`
  4373  	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
  4374  	JSON struct {
  4375  		EventIDs    respjson.Field
  4376  		Type        respjson.Field
  4377  		ExtraFields map[string]respjson.Field
  4378  		raw         string
  4379  	} `json:"-"`
  4380  }
  4381  
  4382  // Returns the unmodified JSON received from the API
  4383  func (r BetaManagedAgentsSessionRequiresAction) RawJSON() string { return r.JSON.raw }
  4384  func (r *BetaManagedAgentsSessionRequiresAction) UnmarshalJSON(data []byte) error {
  4385  	return apijson.UnmarshalRoot(data, r)
  4386  }
  4387  
  4388  type BetaManagedAgentsSessionRequiresActionType string
  4389  
  4390  const (
  4391  	BetaManagedAgentsSessionRequiresActionTypeRequiresAction BetaManagedAgentsSessionRequiresActionType = "requires_action"
  4392  )
  4393  
  4394  // The turn ended because repeated errors exhausted the retry budget or an error
  4395  // escalated to `retry_status: 'exhausted'`.
  4396  type BetaManagedAgentsSessionRetriesExhausted struct {
  4397  	// Any of "retries_exhausted".
  4398  	Type BetaManagedAgentsSessionRetriesExhaustedType `json:"type" api:"required"`
  4399  	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
  4400  	JSON struct {
  4401  		Type        respjson.Field
  4402  		ExtraFields map[string]respjson.Field
  4403  		raw         string
  4404  	} `json:"-"`
  4405  }
  4406  
  4407  // Returns the unmodified JSON received from the API
  4408  func (r BetaManagedAgentsSessionRetriesExhausted) RawJSON() string { return r.JSON.raw }
  4409  func (r *BetaManagedAgentsSessionRetriesExhausted) UnmarshalJSON(data []byte) error {
  4410  	return apijson.UnmarshalRoot(data, r)
  4411  }
  4412  
  4413  type BetaManagedAgentsSessionRetriesExhaustedType string
  4414  
  4415  const (
  4416  	BetaManagedAgentsSessionRetriesExhaustedTypeRetriesExhausted BetaManagedAgentsSessionRetriesExhaustedType = "retries_exhausted"
  4417  )
  4418  
  4419  // Indicates the agent has paused and is awaiting user input.
  4420  type BetaManagedAgentsSessionStatusIdleEvent struct {
  4421  	// Unique identifier for this event.
  4422  	ID string `json:"id" api:"required"`
  4423  	// A timestamp in RFC 3339 format
  4424  	ProcessedAt time.Time `json:"processed_at" api:"required" format:"date-time"`
  4425  	// The agent completed its turn naturally and is ready for the next user message.
  4426  	StopReason BetaManagedAgentsSessionStatusIdleEventStopReasonUnion `json:"stop_reason" api:"required"`
  4427  	// Any of "session.status_idle".
  4428  	Type BetaManagedAgentsSessionStatusIdleEventType `json:"type" api:"required"`
  4429  	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
  4430  	JSON struct {
  4431  		ID          respjson.Field
  4432  		ProcessedAt respjson.Field
  4433  		StopReason  respjson.Field
  4434  		Type        respjson.Field
  4435  		ExtraFields map[string]respjson.Field
  4436  		raw         string
  4437  	} `json:"-"`
  4438  }
  4439  
  4440  // Returns the unmodified JSON received from the API
  4441  func (r BetaManagedAgentsSessionStatusIdleEvent) RawJSON() string { return r.JSON.raw }
  4442  func (r *BetaManagedAgentsSessionStatusIdleEvent) UnmarshalJSON(data []byte) error {
  4443  	return apijson.UnmarshalRoot(data, r)
  4444  }
  4445  
  4446  // BetaManagedAgentsSessionStatusIdleEventStopReasonUnion contains all possible
  4447  // properties and values from [BetaManagedAgentsSessionEndTurn],
  4448  // [BetaManagedAgentsSessionRequiresAction],
  4449  // [BetaManagedAgentsSessionRetriesExhausted],
  4450  // [BetaManagedAgentsSessionBudgetReached].
  4451  //
  4452  // Use the [BetaManagedAgentsSessionStatusIdleEventStopReasonUnion.AsAny] method to
  4453  // switch on the variant.
  4454  //
  4455  // Use the methods beginning with 'As' to cast the union to one of its variants.
  4456  type BetaManagedAgentsSessionStatusIdleEventStopReasonUnion struct {
  4457  	// Any of "end_turn", "requires_action", "retries_exhausted", "budget_reached".
  4458  	Type string `json:"type"`
  4459  	// This field is from variant [BetaManagedAgentsSessionRequiresAction].
  4460  	EventIDs []string `json:"event_ids"`
  4461  	JSON     struct {
  4462  		Type     respjson.Field
  4463  		EventIDs respjson.Field
  4464  		raw      string
  4465  	} `json:"-"`
  4466  }
  4467  
  4468  // anyBetaManagedAgentsSessionStatusIdleEventStopReason is implemented by each
  4469  // variant of [BetaManagedAgentsSessionStatusIdleEventStopReasonUnion] to add type
  4470  // safety for the return type of
  4471  // [BetaManagedAgentsSessionStatusIdleEventStopReasonUnion.AsAny]
  4472  type anyBetaManagedAgentsSessionStatusIdleEventStopReason interface {
  4473  	implBetaManagedAgentsSessionStatusIdleEventStopReasonUnion()
  4474  }
  4475  
  4476  func (BetaManagedAgentsSessionEndTurn) implBetaManagedAgentsSessionStatusIdleEventStopReasonUnion() {}
  4477  func (BetaManagedAgentsSessionRequiresAction) implBetaManagedAgentsSessionStatusIdleEventStopReasonUnion() {
  4478  }
  4479  func (BetaManagedAgentsSessionRetriesExhausted) implBetaManagedAgentsSessionStatusIdleEventStopReasonUnion() {
  4480  }
  4481  func (BetaManagedAgentsSessionBudgetReached) implBetaManagedAgentsSessionStatusIdleEventStopReasonUnion() {
  4482  }
  4483  
  4484  // Use the following switch statement to find the correct variant
  4485  //
  4486  //	switch variant := BetaManagedAgentsSessionStatusIdleEventStopReasonUnion.AsAny().(type) {
  4487  //	case anthropic.BetaManagedAgentsSessionEndTurn:
  4488  //	case anthropic.BetaManagedAgentsSessionRequiresAction:
  4489  //	case anthropic.BetaManagedAgentsSessionRetriesExhausted:
  4490  //	case anthropic.BetaManagedAgentsSessionBudgetReached:
  4491  //	default:
  4492  //	  fmt.Errorf("no variant present")
  4493  //	}
  4494  func (u BetaManagedAgentsSessionStatusIdleEventStopReasonUnion) AsAny() anyBetaManagedAgentsSessionStatusIdleEventStopReason {
  4495  	switch u.Type {
  4496  	case "end_turn":
  4497  		return u.AsEndTurn()
  4498  	case "requires_action":
  4499  		return u.AsRequiresAction()
  4500  	case "retries_exhausted":
  4501  		return u.AsRetriesExhausted()
  4502  	case "budget_reached":
  4503  		return u.AsBudgetReached()
  4504  	}
  4505  	return nil
  4506  }
  4507  
  4508  func (u BetaManagedAgentsSessionStatusIdleEventStopReasonUnion) AsEndTurn() (v BetaManagedAgentsSessionEndTurn) {
  4509  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  4510  	return
  4511  }
  4512  
  4513  func (u BetaManagedAgentsSessionStatusIdleEventStopReasonUnion) AsRequiresAction() (v BetaManagedAgentsSessionRequiresAction) {
  4514  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  4515  	return
  4516  }
  4517  
  4518  func (u BetaManagedAgentsSessionStatusIdleEventStopReasonUnion) AsRetriesExhausted() (v BetaManagedAgentsSessionRetriesExhausted) {
  4519  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  4520  	return
  4521  }
  4522  
  4523  func (u BetaManagedAgentsSessionStatusIdleEventStopReasonUnion) AsBudgetReached() (v BetaManagedAgentsSessionBudgetReached) {
  4524  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  4525  	return
  4526  }
  4527  
  4528  // Returns the unmodified JSON received from the API
  4529  func (u BetaManagedAgentsSessionStatusIdleEventStopReasonUnion) RawJSON() string { return u.JSON.raw }
  4530  
  4531  func (r *BetaManagedAgentsSessionStatusIdleEventStopReasonUnion) UnmarshalJSON(data []byte) error {
  4532  	return apijson.UnmarshalRoot(data, r)
  4533  }
  4534  
  4535  type BetaManagedAgentsSessionStatusIdleEventType string
  4536  
  4537  const (
  4538  	BetaManagedAgentsSessionStatusIdleEventTypeSessionStatusIdle BetaManagedAgentsSessionStatusIdleEventType = "session.status_idle"
  4539  )
  4540  
  4541  // Indicates the session is recovering from an error state and is rescheduled for
  4542  // execution.
  4543  type BetaManagedAgentsSessionStatusRescheduledEvent struct {
  4544  	// Unique identifier for this event.
  4545  	ID string `json:"id" api:"required"`
  4546  	// A timestamp in RFC 3339 format
  4547  	ProcessedAt time.Time `json:"processed_at" api:"required" format:"date-time"`
  4548  	// Any of "session.status_rescheduled".
  4549  	Type BetaManagedAgentsSessionStatusRescheduledEventType `json:"type" api:"required"`
  4550  	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
  4551  	JSON struct {
  4552  		ID          respjson.Field
  4553  		ProcessedAt respjson.Field
  4554  		Type        respjson.Field
  4555  		ExtraFields map[string]respjson.Field
  4556  		raw         string
  4557  	} `json:"-"`
  4558  }
  4559  
  4560  // Returns the unmodified JSON received from the API
  4561  func (r BetaManagedAgentsSessionStatusRescheduledEvent) RawJSON() string { return r.JSON.raw }
  4562  func (r *BetaManagedAgentsSessionStatusRescheduledEvent) UnmarshalJSON(data []byte) error {
  4563  	return apijson.UnmarshalRoot(data, r)
  4564  }
  4565  
  4566  type BetaManagedAgentsSessionStatusRescheduledEventType string
  4567  
  4568  const (
  4569  	BetaManagedAgentsSessionStatusRescheduledEventTypeSessionStatusRescheduled BetaManagedAgentsSessionStatusRescheduledEventType = "session.status_rescheduled"
  4570  )
  4571  
  4572  // Indicates the session is actively running and the agent is working.
  4573  type BetaManagedAgentsSessionStatusRunningEvent struct {
  4574  	// Unique identifier for this event.
  4575  	ID string `json:"id" api:"required"`
  4576  	// A timestamp in RFC 3339 format
  4577  	ProcessedAt time.Time `json:"processed_at" api:"required" format:"date-time"`
  4578  	// Any of "session.status_running".
  4579  	Type BetaManagedAgentsSessionStatusRunningEventType `json:"type" api:"required"`
  4580  	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
  4581  	JSON struct {
  4582  		ID          respjson.Field
  4583  		ProcessedAt respjson.Field
  4584  		Type        respjson.Field
  4585  		ExtraFields map[string]respjson.Field
  4586  		raw         string
  4587  	} `json:"-"`
  4588  }
  4589  
  4590  // Returns the unmodified JSON received from the API
  4591  func (r BetaManagedAgentsSessionStatusRunningEvent) RawJSON() string { return r.JSON.raw }
  4592  func (r *BetaManagedAgentsSessionStatusRunningEvent) UnmarshalJSON(data []byte) error {
  4593  	return apijson.UnmarshalRoot(data, r)
  4594  }
  4595  
  4596  type BetaManagedAgentsSessionStatusRunningEventType string
  4597  
  4598  const (
  4599  	BetaManagedAgentsSessionStatusRunningEventTypeSessionStatusRunning BetaManagedAgentsSessionStatusRunningEventType = "session.status_running"
  4600  )
  4601  
  4602  // Indicates the session has terminated, either due to an error or completion.
  4603  type BetaManagedAgentsSessionStatusTerminatedEvent struct {
  4604  	// Unique identifier for this event.
  4605  	ID string `json:"id" api:"required"`
  4606  	// A timestamp in RFC 3339 format
  4607  	ProcessedAt time.Time `json:"processed_at" api:"required" format:"date-time"`
  4608  	// Any of "session.status_terminated".
  4609  	Type BetaManagedAgentsSessionStatusTerminatedEventType `json:"type" api:"required"`
  4610  	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
  4611  	JSON struct {
  4612  		ID          respjson.Field
  4613  		ProcessedAt respjson.Field
  4614  		Type        respjson.Field
  4615  		ExtraFields map[string]respjson.Field
  4616  		raw         string
  4617  	} `json:"-"`
  4618  }
  4619  
  4620  // Returns the unmodified JSON received from the API
  4621  func (r BetaManagedAgentsSessionStatusTerminatedEvent) RawJSON() string { return r.JSON.raw }
  4622  func (r *BetaManagedAgentsSessionStatusTerminatedEvent) UnmarshalJSON(data []byte) error {
  4623  	return apijson.UnmarshalRoot(data, r)
  4624  }
  4625  
  4626  type BetaManagedAgentsSessionStatusTerminatedEventType string
  4627  
  4628  const (
  4629  	BetaManagedAgentsSessionStatusTerminatedEventTypeSessionStatusTerminated BetaManagedAgentsSessionStatusTerminatedEventType = "session.status_terminated"
  4630  )
  4631  
  4632  // Emitted when a subagent is spawned as a new thread. Written to the parent
  4633  // thread's output stream so clients observing the session see child creation.
  4634  type BetaManagedAgentsSessionThreadCreatedEvent struct {
  4635  	// Unique identifier for this event.
  4636  	ID string `json:"id" api:"required"`
  4637  	// Name of the callable agent the thread runs.
  4638  	AgentName string `json:"agent_name" api:"required"`
  4639  	// A timestamp in RFC 3339 format
  4640  	ProcessedAt time.Time `json:"processed_at" api:"required" format:"date-time"`
  4641  	// Public `sthr_` ID of the newly created thread.
  4642  	SessionThreadID string `json:"session_thread_id" api:"required"`
  4643  	// Any of "session.thread_created".
  4644  	Type BetaManagedAgentsSessionThreadCreatedEventType `json:"type" api:"required"`
  4645  	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
  4646  	JSON struct {
  4647  		ID              respjson.Field
  4648  		AgentName       respjson.Field
  4649  		ProcessedAt     respjson.Field
  4650  		SessionThreadID respjson.Field
  4651  		Type            respjson.Field
  4652  		ExtraFields     map[string]respjson.Field
  4653  		raw             string
  4654  	} `json:"-"`
  4655  }
  4656  
  4657  // Returns the unmodified JSON received from the API
  4658  func (r BetaManagedAgentsSessionThreadCreatedEvent) RawJSON() string { return r.JSON.raw }
  4659  func (r *BetaManagedAgentsSessionThreadCreatedEvent) UnmarshalJSON(data []byte) error {
  4660  	return apijson.UnmarshalRoot(data, r)
  4661  }
  4662  
  4663  type BetaManagedAgentsSessionThreadCreatedEventType string
  4664  
  4665  const (
  4666  	BetaManagedAgentsSessionThreadCreatedEventTypeSessionThreadCreated BetaManagedAgentsSessionThreadCreatedEventType = "session.thread_created"
  4667  )
  4668  
  4669  // A session thread has yielded and is awaiting input. Emitted on the thread's own
  4670  // stream and cross-posted to the primary stream for child threads.
  4671  type BetaManagedAgentsSessionThreadStatusIdleEvent struct {
  4672  	// Unique identifier for this event.
  4673  	ID string `json:"id" api:"required"`
  4674  	// Name of the agent the thread runs.
  4675  	AgentName string `json:"agent_name" api:"required"`
  4676  	// A timestamp in RFC 3339 format
  4677  	ProcessedAt time.Time `json:"processed_at" api:"required" format:"date-time"`
  4678  	// Public sthr\_ ID of the thread that went idle.
  4679  	SessionThreadID string `json:"session_thread_id" api:"required"`
  4680  	// The agent completed its turn naturally and is ready for the next user message.
  4681  	StopReason BetaManagedAgentsSessionThreadStatusIdleEventStopReasonUnion `json:"stop_reason" api:"required"`
  4682  	// Any of "session.thread_status_idle".
  4683  	Type BetaManagedAgentsSessionThreadStatusIdleEventType `json:"type" api:"required"`
  4684  	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
  4685  	JSON struct {
  4686  		ID              respjson.Field
  4687  		AgentName       respjson.Field
  4688  		ProcessedAt     respjson.Field
  4689  		SessionThreadID respjson.Field
  4690  		StopReason      respjson.Field
  4691  		Type            respjson.Field
  4692  		ExtraFields     map[string]respjson.Field
  4693  		raw             string
  4694  	} `json:"-"`
  4695  }
  4696  
  4697  // Returns the unmodified JSON received from the API
  4698  func (r BetaManagedAgentsSessionThreadStatusIdleEvent) RawJSON() string { return r.JSON.raw }
  4699  func (r *BetaManagedAgentsSessionThreadStatusIdleEvent) UnmarshalJSON(data []byte) error {
  4700  	return apijson.UnmarshalRoot(data, r)
  4701  }
  4702  
  4703  // BetaManagedAgentsSessionThreadStatusIdleEventStopReasonUnion contains all
  4704  // possible properties and values from [BetaManagedAgentsSessionEndTurn],
  4705  // [BetaManagedAgentsSessionRequiresAction],
  4706  // [BetaManagedAgentsSessionRetriesExhausted],
  4707  // [BetaManagedAgentsSessionBudgetReached].
  4708  //
  4709  // Use the [BetaManagedAgentsSessionThreadStatusIdleEventStopReasonUnion.AsAny]
  4710  // method to switch on the variant.
  4711  //
  4712  // Use the methods beginning with 'As' to cast the union to one of its variants.
  4713  type BetaManagedAgentsSessionThreadStatusIdleEventStopReasonUnion struct {
  4714  	// Any of "end_turn", "requires_action", "retries_exhausted", "budget_reached".
  4715  	Type string `json:"type"`
  4716  	// This field is from variant [BetaManagedAgentsSessionRequiresAction].
  4717  	EventIDs []string `json:"event_ids"`
  4718  	JSON     struct {
  4719  		Type     respjson.Field
  4720  		EventIDs respjson.Field
  4721  		raw      string
  4722  	} `json:"-"`
  4723  }
  4724  
  4725  // anyBetaManagedAgentsSessionThreadStatusIdleEventStopReason is implemented by
  4726  // each variant of [BetaManagedAgentsSessionThreadStatusIdleEventStopReasonUnion]
  4727  // to add type safety for the return type of
  4728  // [BetaManagedAgentsSessionThreadStatusIdleEventStopReasonUnion.AsAny]
  4729  type anyBetaManagedAgentsSessionThreadStatusIdleEventStopReason interface {
  4730  	implBetaManagedAgentsSessionThreadStatusIdleEventStopReasonUnion()
  4731  }
  4732  
  4733  func (BetaManagedAgentsSessionEndTurn) implBetaManagedAgentsSessionThreadStatusIdleEventStopReasonUnion() {
  4734  }
  4735  func (BetaManagedAgentsSessionRequiresAction) implBetaManagedAgentsSessionThreadStatusIdleEventStopReasonUnion() {
  4736  }
  4737  func (BetaManagedAgentsSessionRetriesExhausted) implBetaManagedAgentsSessionThreadStatusIdleEventStopReasonUnion() {
  4738  }
  4739  func (BetaManagedAgentsSessionBudgetReached) implBetaManagedAgentsSessionThreadStatusIdleEventStopReasonUnion() {
  4740  }
  4741  
  4742  // Use the following switch statement to find the correct variant
  4743  //
  4744  //	switch variant := BetaManagedAgentsSessionThreadStatusIdleEventStopReasonUnion.AsAny().(type) {
  4745  //	case anthropic.BetaManagedAgentsSessionEndTurn:
  4746  //	case anthropic.BetaManagedAgentsSessionRequiresAction:
  4747  //	case anthropic.BetaManagedAgentsSessionRetriesExhausted:
  4748  //	case anthropic.BetaManagedAgentsSessionBudgetReached:
  4749  //	default:
  4750  //	  fmt.Errorf("no variant present")
  4751  //	}
  4752  func (u BetaManagedAgentsSessionThreadStatusIdleEventStopReasonUnion) AsAny() anyBetaManagedAgentsSessionThreadStatusIdleEventStopReason {
  4753  	switch u.Type {
  4754  	case "end_turn":
  4755  		return u.AsEndTurn()
  4756  	case "requires_action":
  4757  		return u.AsRequiresAction()
  4758  	case "retries_exhausted":
  4759  		return u.AsRetriesExhausted()
  4760  	case "budget_reached":
  4761  		return u.AsBudgetReached()
  4762  	}
  4763  	return nil
  4764  }
  4765  
  4766  func (u BetaManagedAgentsSessionThreadStatusIdleEventStopReasonUnion) AsEndTurn() (v BetaManagedAgentsSessionEndTurn) {
  4767  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  4768  	return
  4769  }
  4770  
  4771  func (u BetaManagedAgentsSessionThreadStatusIdleEventStopReasonUnion) AsRequiresAction() (v BetaManagedAgentsSessionRequiresAction) {
  4772  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  4773  	return
  4774  }
  4775  
  4776  func (u BetaManagedAgentsSessionThreadStatusIdleEventStopReasonUnion) AsRetriesExhausted() (v BetaManagedAgentsSessionRetriesExhausted) {
  4777  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  4778  	return
  4779  }
  4780  
  4781  func (u BetaManagedAgentsSessionThreadStatusIdleEventStopReasonUnion) AsBudgetReached() (v BetaManagedAgentsSessionBudgetReached) {
  4782  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  4783  	return
  4784  }
  4785  
  4786  // Returns the unmodified JSON received from the API
  4787  func (u BetaManagedAgentsSessionThreadStatusIdleEventStopReasonUnion) RawJSON() string {
  4788  	return u.JSON.raw
  4789  }
  4790  
  4791  func (r *BetaManagedAgentsSessionThreadStatusIdleEventStopReasonUnion) UnmarshalJSON(data []byte) error {
  4792  	return apijson.UnmarshalRoot(data, r)
  4793  }
  4794  
  4795  type BetaManagedAgentsSessionThreadStatusIdleEventType string
  4796  
  4797  const (
  4798  	BetaManagedAgentsSessionThreadStatusIdleEventTypeSessionThreadStatusIdle BetaManagedAgentsSessionThreadStatusIdleEventType = "session.thread_status_idle"
  4799  )
  4800  
  4801  // A session thread hit a transient error and is retrying automatically. Emitted on
  4802  // the thread's own stream and cross-posted to the primary stream for child
  4803  // threads.
  4804  type BetaManagedAgentsSessionThreadStatusRescheduledEvent struct {
  4805  	// Unique identifier for this event.
  4806  	ID string `json:"id" api:"required"`
  4807  	// Name of the agent the thread runs.
  4808  	AgentName string `json:"agent_name" api:"required"`
  4809  	// A timestamp in RFC 3339 format
  4810  	ProcessedAt time.Time `json:"processed_at" api:"required" format:"date-time"`
  4811  	// Public sthr\_ ID of the thread that is retrying.
  4812  	SessionThreadID string `json:"session_thread_id" api:"required"`
  4813  	// Any of "session.thread_status_rescheduled".
  4814  	Type BetaManagedAgentsSessionThreadStatusRescheduledEventType `json:"type" api:"required"`
  4815  	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
  4816  	JSON struct {
  4817  		ID              respjson.Field
  4818  		AgentName       respjson.Field
  4819  		ProcessedAt     respjson.Field
  4820  		SessionThreadID respjson.Field
  4821  		Type            respjson.Field
  4822  		ExtraFields     map[string]respjson.Field
  4823  		raw             string
  4824  	} `json:"-"`
  4825  }
  4826  
  4827  // Returns the unmodified JSON received from the API
  4828  func (r BetaManagedAgentsSessionThreadStatusRescheduledEvent) RawJSON() string { return r.JSON.raw }
  4829  func (r *BetaManagedAgentsSessionThreadStatusRescheduledEvent) UnmarshalJSON(data []byte) error {
  4830  	return apijson.UnmarshalRoot(data, r)
  4831  }
  4832  
  4833  type BetaManagedAgentsSessionThreadStatusRescheduledEventType string
  4834  
  4835  const (
  4836  	BetaManagedAgentsSessionThreadStatusRescheduledEventTypeSessionThreadStatusRescheduled BetaManagedAgentsSessionThreadStatusRescheduledEventType = "session.thread_status_rescheduled"
  4837  )
  4838  
  4839  // A session thread has begun executing. Emitted on the thread's own stream and
  4840  // cross-posted to the primary stream for child threads.
  4841  type BetaManagedAgentsSessionThreadStatusRunningEvent struct {
  4842  	// Unique identifier for this event.
  4843  	ID string `json:"id" api:"required"`
  4844  	// Name of the agent the thread runs.
  4845  	AgentName string `json:"agent_name" api:"required"`
  4846  	// A timestamp in RFC 3339 format
  4847  	ProcessedAt time.Time `json:"processed_at" api:"required" format:"date-time"`
  4848  	// Public sthr\_ ID of the thread that started running.
  4849  	SessionThreadID string `json:"session_thread_id" api:"required"`
  4850  	// Any of "session.thread_status_running".
  4851  	Type BetaManagedAgentsSessionThreadStatusRunningEventType `json:"type" api:"required"`
  4852  	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
  4853  	JSON struct {
  4854  		ID              respjson.Field
  4855  		AgentName       respjson.Field
  4856  		ProcessedAt     respjson.Field
  4857  		SessionThreadID respjson.Field
  4858  		Type            respjson.Field
  4859  		ExtraFields     map[string]respjson.Field
  4860  		raw             string
  4861  	} `json:"-"`
  4862  }
  4863  
  4864  // Returns the unmodified JSON received from the API
  4865  func (r BetaManagedAgentsSessionThreadStatusRunningEvent) RawJSON() string { return r.JSON.raw }
  4866  func (r *BetaManagedAgentsSessionThreadStatusRunningEvent) UnmarshalJSON(data []byte) error {
  4867  	return apijson.UnmarshalRoot(data, r)
  4868  }
  4869  
  4870  type BetaManagedAgentsSessionThreadStatusRunningEventType string
  4871  
  4872  const (
  4873  	BetaManagedAgentsSessionThreadStatusRunningEventTypeSessionThreadStatusRunning BetaManagedAgentsSessionThreadStatusRunningEventType = "session.thread_status_running"
  4874  )
  4875  
  4876  // A session thread has terminated and will accept no further input. Emitted on the
  4877  // thread's own stream and cross-posted to the primary stream for child threads.
  4878  type BetaManagedAgentsSessionThreadStatusTerminatedEvent struct {
  4879  	// Unique identifier for this event.
  4880  	ID string `json:"id" api:"required"`
  4881  	// Name of the agent the thread runs.
  4882  	AgentName string `json:"agent_name" api:"required"`
  4883  	// A timestamp in RFC 3339 format
  4884  	ProcessedAt time.Time `json:"processed_at" api:"required" format:"date-time"`
  4885  	// Public sthr\_ ID of the thread that terminated.
  4886  	SessionThreadID string `json:"session_thread_id" api:"required"`
  4887  	// Any of "session.thread_status_terminated".
  4888  	Type BetaManagedAgentsSessionThreadStatusTerminatedEventType `json:"type" api:"required"`
  4889  	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
  4890  	JSON struct {
  4891  		ID              respjson.Field
  4892  		AgentName       respjson.Field
  4893  		ProcessedAt     respjson.Field
  4894  		SessionThreadID respjson.Field
  4895  		Type            respjson.Field
  4896  		ExtraFields     map[string]respjson.Field
  4897  		raw             string
  4898  	} `json:"-"`
  4899  }
  4900  
  4901  // Returns the unmodified JSON received from the API
  4902  func (r BetaManagedAgentsSessionThreadStatusTerminatedEvent) RawJSON() string { return r.JSON.raw }
  4903  func (r *BetaManagedAgentsSessionThreadStatusTerminatedEvent) UnmarshalJSON(data []byte) error {
  4904  	return apijson.UnmarshalRoot(data, r)
  4905  }
  4906  
  4907  type BetaManagedAgentsSessionThreadStatusTerminatedEventType string
  4908  
  4909  const (
  4910  	BetaManagedAgentsSessionThreadStatusTerminatedEventTypeSessionThreadStatusTerminated BetaManagedAgentsSessionThreadStatusTerminatedEventType = "session.thread_status_terminated"
  4911  )
  4912  
  4913  // Point-in-time snapshot of a session's cumulative usage.
  4914  type BetaManagedAgentsSessionUsageSnapshot struct {
  4915  	// Cumulative time in seconds during which the session had at least one thread in
  4916  	// running status. Overlapping activity from concurrent threads is counted once.
  4917  	// This is the duration the session's runtime cost is priced on.
  4918  	ActiveSeconds float64 `json:"active_seconds"`
  4919  	// Prompt-cache creation token usage broken down by cache lifetime.
  4920  	CacheCreation BetaManagedAgentsCacheCreationUsage `json:"cache_creation"`
  4921  	// Total tokens read from prompt cache.
  4922  	CacheReadInputTokens int64 `json:"cache_read_input_tokens"`
  4923  	// Total input tokens consumed across all turns.
  4924  	InputTokens int64 `json:"input_tokens"`
  4925  	// A monetary amount in a specific currency.
  4926  	ListCost BetaMonetaryAmount `json:"list_cost"`
  4927  	// Total output tokens generated across all turns.
  4928  	OutputTokens int64 `json:"output_tokens"`
  4929  	// Cumulative count of server-executed tool invocations, broken down by tool.
  4930  	ServerToolUse BetaManagedAgentsServerToolUsage `json:"server_tool_use"`
  4931  	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
  4932  	JSON struct {
  4933  		ActiveSeconds        respjson.Field
  4934  		CacheCreation        respjson.Field
  4935  		CacheReadInputTokens respjson.Field
  4936  		InputTokens          respjson.Field
  4937  		ListCost             respjson.Field
  4938  		OutputTokens         respjson.Field
  4939  		ServerToolUse        respjson.Field
  4940  		ExtraFields          map[string]respjson.Field
  4941  		raw                  string
  4942  	} `json:"-"`
  4943  }
  4944  
  4945  // Returns the unmodified JSON received from the API
  4946  func (r BetaManagedAgentsSessionUsageSnapshot) RawJSON() string { return r.JSON.raw }
  4947  func (r *BetaManagedAgentsSessionUsageSnapshot) UnmarshalJSON(data []byte) error {
  4948  	return apijson.UnmarshalRoot(data, r)
  4949  }
  4950  
  4951  // Emitted when a model request completes.
  4952  type BetaManagedAgentsSpanModelRequestEndEvent struct {
  4953  	// Unique identifier for this event.
  4954  	ID string `json:"id" api:"required"`
  4955  	// Whether the model request resulted in an error.
  4956  	IsError bool `json:"is_error" api:"required"`
  4957  	// The id of the corresponding `span.model_request_start` event.
  4958  	ModelRequestStartID string `json:"model_request_start_id" api:"required"`
  4959  	// Token usage for a single model request.
  4960  	ModelUsage BetaManagedAgentsSpanModelUsage `json:"model_usage" api:"required"`
  4961  	// A timestamp in RFC 3339 format
  4962  	ProcessedAt time.Time `json:"processed_at" api:"required" format:"date-time"`
  4963  	// Any of "span.model_request_end".
  4964  	Type BetaManagedAgentsSpanModelRequestEndEventType `json:"type" api:"required"`
  4965  	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
  4966  	JSON struct {
  4967  		ID                  respjson.Field
  4968  		IsError             respjson.Field
  4969  		ModelRequestStartID respjson.Field
  4970  		ModelUsage          respjson.Field
  4971  		ProcessedAt         respjson.Field
  4972  		Type                respjson.Field
  4973  		ExtraFields         map[string]respjson.Field
  4974  		raw                 string
  4975  	} `json:"-"`
  4976  }
  4977  
  4978  // Returns the unmodified JSON received from the API
  4979  func (r BetaManagedAgentsSpanModelRequestEndEvent) RawJSON() string { return r.JSON.raw }
  4980  func (r *BetaManagedAgentsSpanModelRequestEndEvent) UnmarshalJSON(data []byte) error {
  4981  	return apijson.UnmarshalRoot(data, r)
  4982  }
  4983  
  4984  type BetaManagedAgentsSpanModelRequestEndEventType string
  4985  
  4986  const (
  4987  	BetaManagedAgentsSpanModelRequestEndEventTypeSpanModelRequestEnd BetaManagedAgentsSpanModelRequestEndEventType = "span.model_request_end"
  4988  )
  4989  
  4990  // Emitted when a model request is initiated by the agent.
  4991  type BetaManagedAgentsSpanModelRequestStartEvent struct {
  4992  	// Unique identifier for this event.
  4993  	ID string `json:"id" api:"required"`
  4994  	// A timestamp in RFC 3339 format
  4995  	ProcessedAt time.Time `json:"processed_at" api:"required" format:"date-time"`
  4996  	// Any of "span.model_request_start".
  4997  	Type BetaManagedAgentsSpanModelRequestStartEventType `json:"type" api:"required"`
  4998  	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
  4999  	JSON struct {
  5000  		ID          respjson.Field
  5001  		ProcessedAt respjson.Field
  5002  		Type        respjson.Field
  5003  		ExtraFields map[string]respjson.Field
  5004  		raw         string
  5005  	} `json:"-"`
  5006  }
  5007  
  5008  // Returns the unmodified JSON received from the API
  5009  func (r BetaManagedAgentsSpanModelRequestStartEvent) RawJSON() string { return r.JSON.raw }
  5010  func (r *BetaManagedAgentsSpanModelRequestStartEvent) UnmarshalJSON(data []byte) error {
  5011  	return apijson.UnmarshalRoot(data, r)
  5012  }
  5013  
  5014  type BetaManagedAgentsSpanModelRequestStartEventType string
  5015  
  5016  const (
  5017  	BetaManagedAgentsSpanModelRequestStartEventTypeSpanModelRequestStart BetaManagedAgentsSpanModelRequestStartEventType = "span.model_request_start"
  5018  )
  5019  
  5020  // Token usage for a single model request.
  5021  type BetaManagedAgentsSpanModelUsage struct {
  5022  	// Tokens used to create prompt cache in this request.
  5023  	CacheCreationInputTokens int64 `json:"cache_creation_input_tokens" api:"required"`
  5024  	// Tokens read from prompt cache in this request.
  5025  	CacheReadInputTokens int64 `json:"cache_read_input_tokens" api:"required"`
  5026  	// Input tokens consumed by this request.
  5027  	InputTokens int64 `json:"input_tokens" api:"required"`
  5028  	// Output tokens generated by this request.
  5029  	OutputTokens int64 `json:"output_tokens" api:"required"`
  5030  	// Inference speed mode. `fast` provides significantly faster output token
  5031  	// generation at premium pricing. Not all models support `fast`; invalid
  5032  	// combinations are rejected at create time.
  5033  	//
  5034  	// Any of "standard", "fast".
  5035  	Speed BetaManagedAgentsSpanModelUsageSpeed `json:"speed" api:"nullable"`
  5036  	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
  5037  	JSON struct {
  5038  		CacheCreationInputTokens respjson.Field
  5039  		CacheReadInputTokens     respjson.Field
  5040  		InputTokens              respjson.Field
  5041  		OutputTokens             respjson.Field
  5042  		Speed                    respjson.Field
  5043  		ExtraFields              map[string]respjson.Field
  5044  		raw                      string
  5045  	} `json:"-"`
  5046  }
  5047  
  5048  // Returns the unmodified JSON received from the API
  5049  func (r BetaManagedAgentsSpanModelUsage) RawJSON() string { return r.JSON.raw }
  5050  func (r *BetaManagedAgentsSpanModelUsage) UnmarshalJSON(data []byte) error {
  5051  	return apijson.UnmarshalRoot(data, r)
  5052  }
  5053  
  5054  // Inference speed mode. `fast` provides significantly faster output token
  5055  // generation at premium pricing. Not all models support `fast`; invalid
  5056  // combinations are rejected at create time.
  5057  type BetaManagedAgentsSpanModelUsageSpeed string
  5058  
  5059  const (
  5060  	BetaManagedAgentsSpanModelUsageSpeedStandard BetaManagedAgentsSpanModelUsageSpeed = "standard"
  5061  	BetaManagedAgentsSpanModelUsageSpeedFast     BetaManagedAgentsSpanModelUsageSpeed = "fast"
  5062  )
  5063  
  5064  // Emitted when an outcome evaluation cycle completes. Carries the verdict and
  5065  // aggregate token usage. A verdict of `needs_revision` means another evaluation
  5066  // cycle follows; `satisfied`, `max_iterations_reached`, `failed`, or `interrupted`
  5067  // are terminal — no further evaluation cycles follow.
  5068  type BetaManagedAgentsSpanOutcomeEvaluationEndEvent struct {
  5069  	// Unique identifier for this event.
  5070  	ID string `json:"id" api:"required"`
  5071  	// Human-readable explanation of the verdict. For `needs_revision`, describes which
  5072  	// criteria failed and why.
  5073  	Explanation string `json:"explanation" api:"required"`
  5074  	// 0-indexed revision cycle, matching the corresponding
  5075  	// `span.outcome_evaluation_start`.
  5076  	Iteration int64 `json:"iteration" api:"required"`
  5077  	// The id of the corresponding `span.outcome_evaluation_start` event.
  5078  	OutcomeEvaluationStartID string `json:"outcome_evaluation_start_id" api:"required"`
  5079  	// The `outc_` ID of the outcome being evaluated.
  5080  	OutcomeID string `json:"outcome_id" api:"required"`
  5081  	// A timestamp in RFC 3339 format
  5082  	ProcessedAt time.Time `json:"processed_at" api:"required" format:"date-time"`
  5083  	// Evaluation verdict. 'satisfied': criteria met, session goes idle.
  5084  	// 'needs_revision': criteria not met, another revision cycle follows.
  5085  	// 'max_iterations_reached': evaluation budget exhausted with criteria still unmet
  5086  	// — one final acknowledgment turn follows before the session goes idle, but no
  5087  	// further evaluation runs. 'failed': grader determined the rubric does not apply
  5088  	// to the deliverables. 'interrupted': user sent an interrupt while evaluation was
  5089  	// in progress.
  5090  	Result string `json:"result" api:"required"`
  5091  	// Any of "span.outcome_evaluation_end".
  5092  	Type BetaManagedAgentsSpanOutcomeEvaluationEndEventType `json:"type" api:"required"`
  5093  	// Token usage for a single model request.
  5094  	Usage BetaManagedAgentsSpanModelUsage `json:"usage" api:"required"`
  5095  	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
  5096  	JSON struct {
  5097  		ID                       respjson.Field
  5098  		Explanation              respjson.Field
  5099  		Iteration                respjson.Field
  5100  		OutcomeEvaluationStartID respjson.Field
  5101  		OutcomeID                respjson.Field
  5102  		ProcessedAt              respjson.Field
  5103  		Result                   respjson.Field
  5104  		Type                     respjson.Field
  5105  		Usage                    respjson.Field
  5106  		ExtraFields              map[string]respjson.Field
  5107  		raw                      string
  5108  	} `json:"-"`
  5109  }
  5110  
  5111  // Returns the unmodified JSON received from the API
  5112  func (r BetaManagedAgentsSpanOutcomeEvaluationEndEvent) RawJSON() string { return r.JSON.raw }
  5113  func (r *BetaManagedAgentsSpanOutcomeEvaluationEndEvent) UnmarshalJSON(data []byte) error {
  5114  	return apijson.UnmarshalRoot(data, r)
  5115  }
  5116  
  5117  type BetaManagedAgentsSpanOutcomeEvaluationEndEventType string
  5118  
  5119  const (
  5120  	BetaManagedAgentsSpanOutcomeEvaluationEndEventTypeSpanOutcomeEvaluationEnd BetaManagedAgentsSpanOutcomeEvaluationEndEventType = "span.outcome_evaluation_end"
  5121  )
  5122  
  5123  // Periodic heartbeat emitted while an outcome evaluation cycle is in progress.
  5124  // Distinguishes 'evaluation is actively running' from 'evaluation is stuck'
  5125  // between the corresponding `span.outcome_evaluation_start` and
  5126  // `span.outcome_evaluation_end` events.
  5127  type BetaManagedAgentsSpanOutcomeEvaluationOngoingEvent struct {
  5128  	// Unique identifier for this event.
  5129  	ID string `json:"id" api:"required"`
  5130  	// 0-indexed revision cycle, matching the corresponding
  5131  	// `span.outcome_evaluation_start`.
  5132  	Iteration int64 `json:"iteration" api:"required"`
  5133  	// The `outc_` ID of the outcome being evaluated.
  5134  	OutcomeID string `json:"outcome_id" api:"required"`
  5135  	// A timestamp in RFC 3339 format
  5136  	ProcessedAt time.Time `json:"processed_at" api:"required" format:"date-time"`
  5137  	// Any of "span.outcome_evaluation_ongoing".
  5138  	Type BetaManagedAgentsSpanOutcomeEvaluationOngoingEventType `json:"type" api:"required"`
  5139  	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
  5140  	JSON struct {
  5141  		ID          respjson.Field
  5142  		Iteration   respjson.Field
  5143  		OutcomeID   respjson.Field
  5144  		ProcessedAt respjson.Field
  5145  		Type        respjson.Field
  5146  		ExtraFields map[string]respjson.Field
  5147  		raw         string
  5148  	} `json:"-"`
  5149  }
  5150  
  5151  // Returns the unmodified JSON received from the API
  5152  func (r BetaManagedAgentsSpanOutcomeEvaluationOngoingEvent) RawJSON() string { return r.JSON.raw }
  5153  func (r *BetaManagedAgentsSpanOutcomeEvaluationOngoingEvent) UnmarshalJSON(data []byte) error {
  5154  	return apijson.UnmarshalRoot(data, r)
  5155  }
  5156  
  5157  type BetaManagedAgentsSpanOutcomeEvaluationOngoingEventType string
  5158  
  5159  const (
  5160  	BetaManagedAgentsSpanOutcomeEvaluationOngoingEventTypeSpanOutcomeEvaluationOngoing BetaManagedAgentsSpanOutcomeEvaluationOngoingEventType = "span.outcome_evaluation_ongoing"
  5161  )
  5162  
  5163  // Emitted when an outcome evaluation cycle begins.
  5164  type BetaManagedAgentsSpanOutcomeEvaluationStartEvent struct {
  5165  	// Unique identifier for this event.
  5166  	ID string `json:"id" api:"required"`
  5167  	// 0-indexed revision cycle. 0 is the first evaluation; 1 is the re-evaluation
  5168  	// after the first revision; etc.
  5169  	Iteration int64 `json:"iteration" api:"required"`
  5170  	// The `outc_` ID of the outcome being evaluated.
  5171  	OutcomeID string `json:"outcome_id" api:"required"`
  5172  	// A timestamp in RFC 3339 format
  5173  	ProcessedAt time.Time `json:"processed_at" api:"required" format:"date-time"`
  5174  	// Any of "span.outcome_evaluation_start".
  5175  	Type BetaManagedAgentsSpanOutcomeEvaluationStartEventType `json:"type" api:"required"`
  5176  	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
  5177  	JSON struct {
  5178  		ID          respjson.Field
  5179  		Iteration   respjson.Field
  5180  		OutcomeID   respjson.Field
  5181  		ProcessedAt respjson.Field
  5182  		Type        respjson.Field
  5183  		ExtraFields map[string]respjson.Field
  5184  		raw         string
  5185  	} `json:"-"`
  5186  }
  5187  
  5188  // Returns the unmodified JSON received from the API
  5189  func (r BetaManagedAgentsSpanOutcomeEvaluationStartEvent) RawJSON() string { return r.JSON.raw }
  5190  func (r *BetaManagedAgentsSpanOutcomeEvaluationStartEvent) UnmarshalJSON(data []byte) error {
  5191  	return apijson.UnmarshalRoot(data, r)
  5192  }
  5193  
  5194  type BetaManagedAgentsSpanOutcomeEvaluationStartEventType string
  5195  
  5196  const (
  5197  	BetaManagedAgentsSpanOutcomeEvaluationStartEventTypeSpanOutcomeEvaluationStart BetaManagedAgentsSpanOutcomeEvaluationStartEventType = "span.outcome_evaluation_start"
  5198  )
  5199  
  5200  // BetaManagedAgentsStreamSessionEventsUnion contains all possible properties and
  5201  // values from [BetaManagedAgentsUserMessageEvent],
  5202  // [BetaManagedAgentsUserInterruptEvent],
  5203  // [BetaManagedAgentsUserToolConfirmationEvent],
  5204  // [BetaManagedAgentsUserCustomToolResultEvent],
  5205  // [BetaManagedAgentsAgentCustomToolUseEvent],
  5206  // [BetaManagedAgentsAgentMessageEvent], [BetaManagedAgentsAgentThinkingEvent],
  5207  // [BetaManagedAgentsAgentMCPToolUseEvent],
  5208  // [BetaManagedAgentsAgentMCPToolResultEvent],
  5209  // [BetaManagedAgentsAgentToolUseEvent], [BetaManagedAgentsAgentToolResultEvent],
  5210  // [BetaManagedAgentsAgentThreadMessageReceivedEvent],
  5211  // [BetaManagedAgentsAgentThreadMessageSentEvent],
  5212  // [BetaManagedAgentsAgentThreadContextCompactedEvent],
  5213  // [BetaManagedAgentsSessionErrorEvent],
  5214  // [BetaManagedAgentsSessionStatusRescheduledEvent],
  5215  // [BetaManagedAgentsSessionStatusRunningEvent],
  5216  // [BetaManagedAgentsSessionStatusIdleEvent],
  5217  // [BetaManagedAgentsSessionStatusTerminatedEvent],
  5218  // [BetaManagedAgentsSessionThreadCreatedEvent],
  5219  // [BetaManagedAgentsSpanOutcomeEvaluationStartEvent],
  5220  // [BetaManagedAgentsSpanOutcomeEvaluationEndEvent],
  5221  // [BetaManagedAgentsSpanModelRequestStartEvent],
  5222  // [BetaManagedAgentsSpanModelRequestEndEvent],
  5223  // [BetaManagedAgentsSpanOutcomeEvaluationOngoingEvent],
  5224  // [BetaManagedAgentsUserDefineOutcomeEvent],
  5225  // [BetaManagedAgentsSessionDeletedEvent],
  5226  // [BetaManagedAgentsSessionThreadStatusRunningEvent],
  5227  // [BetaManagedAgentsSessionThreadStatusIdleEvent],
  5228  // [BetaManagedAgentsSessionThreadStatusTerminatedEvent],
  5229  // [BetaManagedAgentsUserToolResultEvent],
  5230  // [BetaManagedAgentsSessionThreadStatusRescheduledEvent],
  5231  // [BetaManagedAgentsSessionUpdatedEvent], [BetaManagedAgentsStartEvent],
  5232  // [BetaManagedAgentsDeltaEvent], [BetaManagedAgentsSystemMessageEvent],
  5233  // [BetaManagedAgentsSessionUsageEvent].
  5234  //
  5235  // Use the [BetaManagedAgentsStreamSessionEventsUnion.AsAny] method to switch on
  5236  // the variant.
  5237  //
  5238  // Use the methods beginning with 'As' to cast the union to one of its variants.
  5239  type BetaManagedAgentsStreamSessionEventsUnion struct {
  5240  	ID string `json:"id"`
  5241  	// This field is a union of [[]BetaManagedAgentsUserMessageEventContentUnion],
  5242  	// [[]BetaManagedAgentsUserCustomToolResultEventContentUnion],
  5243  	// [[]BetaManagedAgentsAgentMessageEventContentUnion],
  5244  	// [[]BetaManagedAgentsAgentMCPToolResultEventContentUnion],
  5245  	// [[]BetaManagedAgentsAgentToolResultEventContentUnion],
  5246  	// [[]BetaManagedAgentsAgentThreadMessageReceivedEventContentUnion],
  5247  	// [[]BetaManagedAgentsAgentThreadMessageSentEventContentUnion],
  5248  	// [[]BetaManagedAgentsUserToolResultEventContentUnion],
  5249  	// [[]BetaManagedAgentsSystemContentBlock]
  5250  	Content BetaManagedAgentsStreamSessionEventsUnionContent `json:"content"`
  5251  	// Any of "user.message", "user.interrupt", "user.tool_confirmation",
  5252  	// "user.custom_tool_result", "agent.custom_tool_use", "agent.message",
  5253  	// "agent.thinking", "agent.mcp_tool_use", "agent.mcp_tool_result",
  5254  	// "agent.tool_use", "agent.tool_result", "agent.thread_message_received",
  5255  	// "agent.thread_message_sent", "agent.thread_context_compacted", "session.error",
  5256  	// "session.status_rescheduled", "session.status_running", "session.status_idle",
  5257  	// "session.status_terminated", "session.thread_created",
  5258  	// "span.outcome_evaluation_start", "span.outcome_evaluation_end",
  5259  	// "span.model_request_start", "span.model_request_end",
  5260  	// "span.outcome_evaluation_ongoing", "user.define_outcome", "session.deleted",
  5261  	// "session.thread_status_running", "session.thread_status_idle",
  5262  	// "session.thread_status_terminated", "user.tool_result",
  5263  	// "session.thread_status_rescheduled", "session.updated", "event_start",
  5264  	// "event_delta", "system.message", "session.usage".
  5265  	Type            string    `json:"type"`
  5266  	ProcessedAt     time.Time `json:"processed_at"`
  5267  	SessionThreadID string    `json:"session_thread_id"`
  5268  	Result          string    `json:"result"`
  5269  	ToolUseID       string    `json:"tool_use_id"`
  5270  	// This field is from variant [BetaManagedAgentsUserToolConfirmationEvent].
  5271  	DenyMessage string `json:"deny_message"`
  5272  	// This field is from variant [BetaManagedAgentsUserCustomToolResultEvent].
  5273  	CustomToolUseID string `json:"custom_tool_use_id"`
  5274  	IsError         bool   `json:"is_error"`
  5275  	Input           any    `json:"input"`
  5276  	Name            string `json:"name"`
  5277  	// This field is from variant [BetaManagedAgentsAgentMCPToolUseEvent].
  5278  	MCPServerName       string `json:"mcp_server_name"`
  5279  	EvaluatedPermission string `json:"evaluated_permission"`
  5280  	// This field is from variant [BetaManagedAgentsAgentMCPToolResultEvent].
  5281  	MCPToolUseID string `json:"mcp_tool_use_id"`
  5282  	// This field is from variant [BetaManagedAgentsAgentThreadMessageReceivedEvent].
  5283  	FromSessionThreadID string `json:"from_session_thread_id"`
  5284  	// This field is from variant [BetaManagedAgentsAgentThreadMessageReceivedEvent].
  5285  	FromAgentName string `json:"from_agent_name"`
  5286  	// This field is from variant [BetaManagedAgentsAgentThreadMessageSentEvent].
  5287  	ToSessionThreadID string `json:"to_session_thread_id"`
  5288  	// This field is from variant [BetaManagedAgentsAgentThreadMessageSentEvent].
  5289  	ToAgentName string `json:"to_agent_name"`
  5290  	// This field is from variant [BetaManagedAgentsSessionErrorEvent].
  5291  	Error BetaManagedAgentsSessionErrorEventErrorUnion `json:"error"`
  5292  	// This field is a union of
  5293  	// [BetaManagedAgentsSessionStatusIdleEventStopReasonUnion],
  5294  	// [BetaManagedAgentsSessionThreadStatusIdleEventStopReasonUnion]
  5295  	StopReason BetaManagedAgentsStreamSessionEventsUnionStopReason `json:"stop_reason"`
  5296  	AgentName  string                                              `json:"agent_name"`
  5297  	Iteration  int64                                               `json:"iteration"`
  5298  	OutcomeID  string                                              `json:"outcome_id"`
  5299  	// This field is from variant [BetaManagedAgentsSpanOutcomeEvaluationEndEvent].
  5300  	Explanation string `json:"explanation"`
  5301  	// This field is from variant [BetaManagedAgentsSpanOutcomeEvaluationEndEvent].
  5302  	OutcomeEvaluationStartID string `json:"outcome_evaluation_start_id"`
  5303  	// This field is a union of [BetaManagedAgentsSpanModelUsage],
  5304  	// [BetaManagedAgentsSessionUsageSnapshot]
  5305  	Usage BetaManagedAgentsStreamSessionEventsUnionUsage `json:"usage"`
  5306  	// This field is from variant [BetaManagedAgentsSpanModelRequestEndEvent].
  5307  	ModelRequestStartID string `json:"model_request_start_id"`
  5308  	// This field is from variant [BetaManagedAgentsSpanModelRequestEndEvent].
  5309  	ModelUsage BetaManagedAgentsSpanModelUsage `json:"model_usage"`
  5310  	// This field is from variant [BetaManagedAgentsUserDefineOutcomeEvent].
  5311  	Description string `json:"description"`
  5312  	// This field is from variant [BetaManagedAgentsUserDefineOutcomeEvent].
  5313  	MaxIterations int64 `json:"max_iterations"`
  5314  	// This field is from variant [BetaManagedAgentsUserDefineOutcomeEvent].
  5315  	Rubric BetaManagedAgentsUserDefineOutcomeEventRubricUnion `json:"rubric"`
  5316  	// This field is from variant [BetaManagedAgentsSessionUpdatedEvent].
  5317  	Agent BetaManagedAgentsSessionAgent `json:"agent"`
  5318  	// This field is from variant [BetaManagedAgentsSessionUpdatedEvent].
  5319  	Budget BetaManagedAgentsBudgetLimit `json:"budget"`
  5320  	// This field is from variant [BetaManagedAgentsSessionUpdatedEvent].
  5321  	Metadata map[string]string `json:"metadata"`
  5322  	// This field is from variant [BetaManagedAgentsSessionUpdatedEvent].
  5323  	Title string `json:"title"`
  5324  	// This field is from variant [BetaManagedAgentsStartEvent].
  5325  	Event BetaManagedAgentsStartEventPreviewUnion `json:"event"`
  5326  	// This field is from variant [BetaManagedAgentsDeltaEvent].
  5327  	Delta BetaManagedAgentsDeltaContent `json:"delta"`
  5328  	// This field is from variant [BetaManagedAgentsDeltaEvent].
  5329  	EventID string `json:"event_id"`
  5330  	JSON    struct {
  5331  		ID                       respjson.Field
  5332  		Content                  respjson.Field
  5333  		Type                     respjson.Field
  5334  		ProcessedAt              respjson.Field
  5335  		SessionThreadID          respjson.Field
  5336  		Result                   respjson.Field
  5337  		ToolUseID                respjson.Field
  5338  		DenyMessage              respjson.Field
  5339  		CustomToolUseID          respjson.Field
  5340  		IsError                  respjson.Field
  5341  		Input                    respjson.Field
  5342  		Name                     respjson.Field
  5343  		MCPServerName            respjson.Field
  5344  		EvaluatedPermission      respjson.Field
  5345  		MCPToolUseID             respjson.Field
  5346  		FromSessionThreadID      respjson.Field
  5347  		FromAgentName            respjson.Field
  5348  		ToSessionThreadID        respjson.Field
  5349  		ToAgentName              respjson.Field
  5350  		Error                    respjson.Field
  5351  		StopReason               respjson.Field
  5352  		AgentName                respjson.Field
  5353  		Iteration                respjson.Field
  5354  		OutcomeID                respjson.Field
  5355  		Explanation              respjson.Field
  5356  		OutcomeEvaluationStartID respjson.Field
  5357  		Usage                    respjson.Field
  5358  		ModelRequestStartID      respjson.Field
  5359  		ModelUsage               respjson.Field
  5360  		Description              respjson.Field
  5361  		MaxIterations            respjson.Field
  5362  		Rubric                   respjson.Field
  5363  		Agent                    respjson.Field
  5364  		Budget                   respjson.Field
  5365  		Metadata                 respjson.Field
  5366  		Title                    respjson.Field
  5367  		Event                    respjson.Field
  5368  		Delta                    respjson.Field
  5369  		EventID                  respjson.Field
  5370  		raw                      string
  5371  	} `json:"-"`
  5372  }
  5373  
  5374  // anyBetaManagedAgentsStreamSessionEvents is implemented by each variant of
  5375  // [BetaManagedAgentsStreamSessionEventsUnion] to add type safety for the return
  5376  // type of [BetaManagedAgentsStreamSessionEventsUnion.AsAny]
  5377  type anyBetaManagedAgentsStreamSessionEvents interface {
  5378  	implBetaManagedAgentsStreamSessionEventsUnion()
  5379  }
  5380  
  5381  func (BetaManagedAgentsUserMessageEvent) implBetaManagedAgentsStreamSessionEventsUnion()          {}
  5382  func (BetaManagedAgentsUserInterruptEvent) implBetaManagedAgentsStreamSessionEventsUnion()        {}
  5383  func (BetaManagedAgentsUserToolConfirmationEvent) implBetaManagedAgentsStreamSessionEventsUnion() {}
  5384  func (BetaManagedAgentsUserCustomToolResultEvent) implBetaManagedAgentsStreamSessionEventsUnion() {}
  5385  func (BetaManagedAgentsAgentCustomToolUseEvent) implBetaManagedAgentsStreamSessionEventsUnion()   {}
  5386  func (BetaManagedAgentsAgentMessageEvent) implBetaManagedAgentsStreamSessionEventsUnion()         {}
  5387  func (BetaManagedAgentsAgentThinkingEvent) implBetaManagedAgentsStreamSessionEventsUnion()        {}
  5388  func (BetaManagedAgentsAgentMCPToolUseEvent) implBetaManagedAgentsStreamSessionEventsUnion()      {}
  5389  func (BetaManagedAgentsAgentMCPToolResultEvent) implBetaManagedAgentsStreamSessionEventsUnion()   {}
  5390  func (BetaManagedAgentsAgentToolUseEvent) implBetaManagedAgentsStreamSessionEventsUnion()         {}
  5391  func (BetaManagedAgentsAgentToolResultEvent) implBetaManagedAgentsStreamSessionEventsUnion()      {}
  5392  func (BetaManagedAgentsAgentThreadMessageReceivedEvent) implBetaManagedAgentsStreamSessionEventsUnion() {
  5393  }
  5394  func (BetaManagedAgentsAgentThreadMessageSentEvent) implBetaManagedAgentsStreamSessionEventsUnion() {}
  5395  func (BetaManagedAgentsAgentThreadContextCompactedEvent) implBetaManagedAgentsStreamSessionEventsUnion() {
  5396  }
  5397  func (BetaManagedAgentsSessionErrorEvent) implBetaManagedAgentsStreamSessionEventsUnion() {}
  5398  func (BetaManagedAgentsSessionStatusRescheduledEvent) implBetaManagedAgentsStreamSessionEventsUnion() {
  5399  }
  5400  func (BetaManagedAgentsSessionStatusRunningEvent) implBetaManagedAgentsStreamSessionEventsUnion() {}
  5401  func (BetaManagedAgentsSessionStatusIdleEvent) implBetaManagedAgentsStreamSessionEventsUnion()    {}
  5402  func (BetaManagedAgentsSessionStatusTerminatedEvent) implBetaManagedAgentsStreamSessionEventsUnion() {
  5403  }
  5404  func (BetaManagedAgentsSessionThreadCreatedEvent) implBetaManagedAgentsStreamSessionEventsUnion() {}
  5405  func (BetaManagedAgentsSpanOutcomeEvaluationStartEvent) implBetaManagedAgentsStreamSessionEventsUnion() {
  5406  }
  5407  func (BetaManagedAgentsSpanOutcomeEvaluationEndEvent) implBetaManagedAgentsStreamSessionEventsUnion() {
  5408  }
  5409  func (BetaManagedAgentsSpanModelRequestStartEvent) implBetaManagedAgentsStreamSessionEventsUnion() {}
  5410  func (BetaManagedAgentsSpanModelRequestEndEvent) implBetaManagedAgentsStreamSessionEventsUnion()   {}
  5411  func (BetaManagedAgentsSpanOutcomeEvaluationOngoingEvent) implBetaManagedAgentsStreamSessionEventsUnion() {
  5412  }
  5413  func (BetaManagedAgentsUserDefineOutcomeEvent) implBetaManagedAgentsStreamSessionEventsUnion() {}
  5414  func (BetaManagedAgentsSessionDeletedEvent) implBetaManagedAgentsStreamSessionEventsUnion()    {}
  5415  func (BetaManagedAgentsSessionThreadStatusRunningEvent) implBetaManagedAgentsStreamSessionEventsUnion() {
  5416  }
  5417  func (BetaManagedAgentsSessionThreadStatusIdleEvent) implBetaManagedAgentsStreamSessionEventsUnion() {
  5418  }
  5419  func (BetaManagedAgentsSessionThreadStatusTerminatedEvent) implBetaManagedAgentsStreamSessionEventsUnion() {
  5420  }
  5421  func (BetaManagedAgentsUserToolResultEvent) implBetaManagedAgentsStreamSessionEventsUnion() {}
  5422  func (BetaManagedAgentsSessionThreadStatusRescheduledEvent) implBetaManagedAgentsStreamSessionEventsUnion() {
  5423  }
  5424  func (BetaManagedAgentsSessionUpdatedEvent) implBetaManagedAgentsStreamSessionEventsUnion() {}
  5425  func (BetaManagedAgentsStartEvent) implBetaManagedAgentsStreamSessionEventsUnion()          {}
  5426  func (BetaManagedAgentsDeltaEvent) implBetaManagedAgentsStreamSessionEventsUnion()          {}
  5427  func (BetaManagedAgentsSystemMessageEvent) implBetaManagedAgentsStreamSessionEventsUnion()  {}
  5428  func (BetaManagedAgentsSessionUsageEvent) implBetaManagedAgentsStreamSessionEventsUnion()   {}
  5429  
  5430  // Use the following switch statement to find the correct variant
  5431  //
  5432  //	switch variant := BetaManagedAgentsStreamSessionEventsUnion.AsAny().(type) {
  5433  //	case anthropic.BetaManagedAgentsUserMessageEvent:
  5434  //	case anthropic.BetaManagedAgentsUserInterruptEvent:
  5435  //	case anthropic.BetaManagedAgentsUserToolConfirmationEvent:
  5436  //	case anthropic.BetaManagedAgentsUserCustomToolResultEvent:
  5437  //	case anthropic.BetaManagedAgentsAgentCustomToolUseEvent:
  5438  //	case anthropic.BetaManagedAgentsAgentMessageEvent:
  5439  //	case anthropic.BetaManagedAgentsAgentThinkingEvent:
  5440  //	case anthropic.BetaManagedAgentsAgentMCPToolUseEvent:
  5441  //	case anthropic.BetaManagedAgentsAgentMCPToolResultEvent:
  5442  //	case anthropic.BetaManagedAgentsAgentToolUseEvent:
  5443  //	case anthropic.BetaManagedAgentsAgentToolResultEvent:
  5444  //	case anthropic.BetaManagedAgentsAgentThreadMessageReceivedEvent:
  5445  //	case anthropic.BetaManagedAgentsAgentThreadMessageSentEvent:
  5446  //	case anthropic.BetaManagedAgentsAgentThreadContextCompactedEvent:
  5447  //	case anthropic.BetaManagedAgentsSessionErrorEvent:
  5448  //	case anthropic.BetaManagedAgentsSessionStatusRescheduledEvent:
  5449  //	case anthropic.BetaManagedAgentsSessionStatusRunningEvent:
  5450  //	case anthropic.BetaManagedAgentsSessionStatusIdleEvent:
  5451  //	case anthropic.BetaManagedAgentsSessionStatusTerminatedEvent:
  5452  //	case anthropic.BetaManagedAgentsSessionThreadCreatedEvent:
  5453  //	case anthropic.BetaManagedAgentsSpanOutcomeEvaluationStartEvent:
  5454  //	case anthropic.BetaManagedAgentsSpanOutcomeEvaluationEndEvent:
  5455  //	case anthropic.BetaManagedAgentsSpanModelRequestStartEvent:
  5456  //	case anthropic.BetaManagedAgentsSpanModelRequestEndEvent:
  5457  //	case anthropic.BetaManagedAgentsSpanOutcomeEvaluationOngoingEvent:
  5458  //	case anthropic.BetaManagedAgentsUserDefineOutcomeEvent:
  5459  //	case anthropic.BetaManagedAgentsSessionDeletedEvent:
  5460  //	case anthropic.BetaManagedAgentsSessionThreadStatusRunningEvent:
  5461  //	case anthropic.BetaManagedAgentsSessionThreadStatusIdleEvent:
  5462  //	case anthropic.BetaManagedAgentsSessionThreadStatusTerminatedEvent:
  5463  //	case anthropic.BetaManagedAgentsUserToolResultEvent:
  5464  //	case anthropic.BetaManagedAgentsSessionThreadStatusRescheduledEvent:
  5465  //	case anthropic.BetaManagedAgentsSessionUpdatedEvent:
  5466  //	case anthropic.BetaManagedAgentsStartEvent:
  5467  //	case anthropic.BetaManagedAgentsDeltaEvent:
  5468  //	case anthropic.BetaManagedAgentsSystemMessageEvent:
  5469  //	case anthropic.BetaManagedAgentsSessionUsageEvent:
  5470  //	default:
  5471  //	  fmt.Errorf("no variant present")
  5472  //	}
  5473  func (u BetaManagedAgentsStreamSessionEventsUnion) AsAny() anyBetaManagedAgentsStreamSessionEvents {
  5474  	switch u.Type {
  5475  	case "user.message":
  5476  		return u.AsUserMessage()
  5477  	case "user.interrupt":
  5478  		return u.AsUserInterrupt()
  5479  	case "user.tool_confirmation":
  5480  		return u.AsUserToolConfirmation()
  5481  	case "user.custom_tool_result":
  5482  		return u.AsUserCustomToolResult()
  5483  	case "agent.custom_tool_use":
  5484  		return u.AsAgentCustomToolUse()
  5485  	case "agent.message":
  5486  		return u.AsAgentMessage()
  5487  	case "agent.thinking":
  5488  		return u.AsAgentThinking()
  5489  	case "agent.mcp_tool_use":
  5490  		return u.AsAgentMCPToolUse()
  5491  	case "agent.mcp_tool_result":
  5492  		return u.AsAgentMCPToolResult()
  5493  	case "agent.tool_use":
  5494  		return u.AsAgentToolUse()
  5495  	case "agent.tool_result":
  5496  		return u.AsAgentToolResult()
  5497  	case "agent.thread_message_received":
  5498  		return u.AsAgentThreadMessageReceived()
  5499  	case "agent.thread_message_sent":
  5500  		return u.AsAgentThreadMessageSent()
  5501  	case "agent.thread_context_compacted":
  5502  		return u.AsAgentThreadContextCompacted()
  5503  	case "session.error":
  5504  		return u.AsSessionError()
  5505  	case "session.status_rescheduled":
  5506  		return u.AsSessionStatusRescheduled()
  5507  	case "session.status_running":
  5508  		return u.AsSessionStatusRunning()
  5509  	case "session.status_idle":
  5510  		return u.AsSessionStatusIdle()
  5511  	case "session.status_terminated":
  5512  		return u.AsSessionStatusTerminated()
  5513  	case "session.thread_created":
  5514  		return u.AsSessionThreadCreated()
  5515  	case "span.outcome_evaluation_start":
  5516  		return u.AsSpanOutcomeEvaluationStart()
  5517  	case "span.outcome_evaluation_end":
  5518  		return u.AsSpanOutcomeEvaluationEnd()
  5519  	case "span.model_request_start":
  5520  		return u.AsSpanModelRequestStart()
  5521  	case "span.model_request_end":
  5522  		return u.AsSpanModelRequestEnd()
  5523  	case "span.outcome_evaluation_ongoing":
  5524  		return u.AsSpanOutcomeEvaluationOngoing()
  5525  	case "user.define_outcome":
  5526  		return u.AsUserDefineOutcome()
  5527  	case "session.deleted":
  5528  		return u.AsSessionDeleted()
  5529  	case "session.thread_status_running":
  5530  		return u.AsSessionThreadStatusRunning()
  5531  	case "session.thread_status_idle":
  5532  		return u.AsSessionThreadStatusIdle()
  5533  	case "session.thread_status_terminated":
  5534  		return u.AsSessionThreadStatusTerminated()
  5535  	case "user.tool_result":
  5536  		return u.AsUserToolResult()
  5537  	case "session.thread_status_rescheduled":
  5538  		return u.AsSessionThreadStatusRescheduled()
  5539  	case "session.updated":
  5540  		return u.AsSessionUpdated()
  5541  	case "event_start":
  5542  		return u.AsEventStart()
  5543  	case "event_delta":
  5544  		return u.AsEventDelta()
  5545  	case "system.message":
  5546  		return u.AsSystemMessage()
  5547  	case "session.usage":
  5548  		return u.AsSessionUsage()
  5549  	}
  5550  	return nil
  5551  }
  5552  
  5553  func (u BetaManagedAgentsStreamSessionEventsUnion) AsUserMessage() (v BetaManagedAgentsUserMessageEvent) {
  5554  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  5555  	return
  5556  }
  5557  
  5558  func (u BetaManagedAgentsStreamSessionEventsUnion) AsUserInterrupt() (v BetaManagedAgentsUserInterruptEvent) {
  5559  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  5560  	return
  5561  }
  5562  
  5563  func (u BetaManagedAgentsStreamSessionEventsUnion) AsUserToolConfirmation() (v BetaManagedAgentsUserToolConfirmationEvent) {
  5564  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  5565  	return
  5566  }
  5567  
  5568  func (u BetaManagedAgentsStreamSessionEventsUnion) AsUserCustomToolResult() (v BetaManagedAgentsUserCustomToolResultEvent) {
  5569  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  5570  	return
  5571  }
  5572  
  5573  func (u BetaManagedAgentsStreamSessionEventsUnion) AsAgentCustomToolUse() (v BetaManagedAgentsAgentCustomToolUseEvent) {
  5574  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  5575  	return
  5576  }
  5577  
  5578  func (u BetaManagedAgentsStreamSessionEventsUnion) AsAgentMessage() (v BetaManagedAgentsAgentMessageEvent) {
  5579  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  5580  	return
  5581  }
  5582  
  5583  func (u BetaManagedAgentsStreamSessionEventsUnion) AsAgentThinking() (v BetaManagedAgentsAgentThinkingEvent) {
  5584  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  5585  	return
  5586  }
  5587  
  5588  func (u BetaManagedAgentsStreamSessionEventsUnion) AsAgentMCPToolUse() (v BetaManagedAgentsAgentMCPToolUseEvent) {
  5589  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  5590  	return
  5591  }
  5592  
  5593  func (u BetaManagedAgentsStreamSessionEventsUnion) AsAgentMCPToolResult() (v BetaManagedAgentsAgentMCPToolResultEvent) {
  5594  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  5595  	return
  5596  }
  5597  
  5598  func (u BetaManagedAgentsStreamSessionEventsUnion) AsAgentToolUse() (v BetaManagedAgentsAgentToolUseEvent) {
  5599  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  5600  	return
  5601  }
  5602  
  5603  func (u BetaManagedAgentsStreamSessionEventsUnion) AsAgentToolResult() (v BetaManagedAgentsAgentToolResultEvent) {
  5604  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  5605  	return
  5606  }
  5607  
  5608  func (u BetaManagedAgentsStreamSessionEventsUnion) AsAgentThreadMessageReceived() (v BetaManagedAgentsAgentThreadMessageReceivedEvent) {
  5609  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  5610  	return
  5611  }
  5612  
  5613  func (u BetaManagedAgentsStreamSessionEventsUnion) AsAgentThreadMessageSent() (v BetaManagedAgentsAgentThreadMessageSentEvent) {
  5614  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  5615  	return
  5616  }
  5617  
  5618  func (u BetaManagedAgentsStreamSessionEventsUnion) AsAgentThreadContextCompacted() (v BetaManagedAgentsAgentThreadContextCompactedEvent) {
  5619  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  5620  	return
  5621  }
  5622  
  5623  func (u BetaManagedAgentsStreamSessionEventsUnion) AsSessionError() (v BetaManagedAgentsSessionErrorEvent) {
  5624  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  5625  	return
  5626  }
  5627  
  5628  func (u BetaManagedAgentsStreamSessionEventsUnion) AsSessionStatusRescheduled() (v BetaManagedAgentsSessionStatusRescheduledEvent) {
  5629  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  5630  	return
  5631  }
  5632  
  5633  func (u BetaManagedAgentsStreamSessionEventsUnion) AsSessionStatusRunning() (v BetaManagedAgentsSessionStatusRunningEvent) {
  5634  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  5635  	return
  5636  }
  5637  
  5638  func (u BetaManagedAgentsStreamSessionEventsUnion) AsSessionStatusIdle() (v BetaManagedAgentsSessionStatusIdleEvent) {
  5639  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  5640  	return
  5641  }
  5642  
  5643  func (u BetaManagedAgentsStreamSessionEventsUnion) AsSessionStatusTerminated() (v BetaManagedAgentsSessionStatusTerminatedEvent) {
  5644  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  5645  	return
  5646  }
  5647  
  5648  func (u BetaManagedAgentsStreamSessionEventsUnion) AsSessionThreadCreated() (v BetaManagedAgentsSessionThreadCreatedEvent) {
  5649  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  5650  	return
  5651  }
  5652  
  5653  func (u BetaManagedAgentsStreamSessionEventsUnion) AsSpanOutcomeEvaluationStart() (v BetaManagedAgentsSpanOutcomeEvaluationStartEvent) {
  5654  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  5655  	return
  5656  }
  5657  
  5658  func (u BetaManagedAgentsStreamSessionEventsUnion) AsSpanOutcomeEvaluationEnd() (v BetaManagedAgentsSpanOutcomeEvaluationEndEvent) {
  5659  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  5660  	return
  5661  }
  5662  
  5663  func (u BetaManagedAgentsStreamSessionEventsUnion) AsSpanModelRequestStart() (v BetaManagedAgentsSpanModelRequestStartEvent) {
  5664  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  5665  	return
  5666  }
  5667  
  5668  func (u BetaManagedAgentsStreamSessionEventsUnion) AsSpanModelRequestEnd() (v BetaManagedAgentsSpanModelRequestEndEvent) {
  5669  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  5670  	return
  5671  }
  5672  
  5673  func (u BetaManagedAgentsStreamSessionEventsUnion) AsSpanOutcomeEvaluationOngoing() (v BetaManagedAgentsSpanOutcomeEvaluationOngoingEvent) {
  5674  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  5675  	return
  5676  }
  5677  
  5678  func (u BetaManagedAgentsStreamSessionEventsUnion) AsUserDefineOutcome() (v BetaManagedAgentsUserDefineOutcomeEvent) {
  5679  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  5680  	return
  5681  }
  5682  
  5683  func (u BetaManagedAgentsStreamSessionEventsUnion) AsSessionDeleted() (v BetaManagedAgentsSessionDeletedEvent) {
  5684  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  5685  	return
  5686  }
  5687  
  5688  func (u BetaManagedAgentsStreamSessionEventsUnion) AsSessionThreadStatusRunning() (v BetaManagedAgentsSessionThreadStatusRunningEvent) {
  5689  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  5690  	return
  5691  }
  5692  
  5693  func (u BetaManagedAgentsStreamSessionEventsUnion) AsSessionThreadStatusIdle() (v BetaManagedAgentsSessionThreadStatusIdleEvent) {
  5694  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  5695  	return
  5696  }
  5697  
  5698  func (u BetaManagedAgentsStreamSessionEventsUnion) AsSessionThreadStatusTerminated() (v BetaManagedAgentsSessionThreadStatusTerminatedEvent) {
  5699  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  5700  	return
  5701  }
  5702  
  5703  func (u BetaManagedAgentsStreamSessionEventsUnion) AsUserToolResult() (v BetaManagedAgentsUserToolResultEvent) {
  5704  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  5705  	return
  5706  }
  5707  
  5708  func (u BetaManagedAgentsStreamSessionEventsUnion) AsSessionThreadStatusRescheduled() (v BetaManagedAgentsSessionThreadStatusRescheduledEvent) {
  5709  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  5710  	return
  5711  }
  5712  
  5713  func (u BetaManagedAgentsStreamSessionEventsUnion) AsSessionUpdated() (v BetaManagedAgentsSessionUpdatedEvent) {
  5714  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  5715  	return
  5716  }
  5717  
  5718  func (u BetaManagedAgentsStreamSessionEventsUnion) AsEventStart() (v BetaManagedAgentsStartEvent) {
  5719  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  5720  	return
  5721  }
  5722  
  5723  func (u BetaManagedAgentsStreamSessionEventsUnion) AsEventDelta() (v BetaManagedAgentsDeltaEvent) {
  5724  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  5725  	return
  5726  }
  5727  
  5728  func (u BetaManagedAgentsStreamSessionEventsUnion) AsSystemMessage() (v BetaManagedAgentsSystemMessageEvent) {
  5729  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  5730  	return
  5731  }
  5732  
  5733  func (u BetaManagedAgentsStreamSessionEventsUnion) AsSessionUsage() (v BetaManagedAgentsSessionUsageEvent) {
  5734  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  5735  	return
  5736  }
  5737  
  5738  // Returns the unmodified JSON received from the API
  5739  func (u BetaManagedAgentsStreamSessionEventsUnion) RawJSON() string { return u.JSON.raw }
  5740  
  5741  func (r *BetaManagedAgentsStreamSessionEventsUnion) UnmarshalJSON(data []byte) error {
  5742  	return apijson.UnmarshalRoot(data, r)
  5743  }
  5744  
  5745  // BetaManagedAgentsStreamSessionEventsUnionContent is an implicit subunion of
  5746  // [BetaManagedAgentsStreamSessionEventsUnion].
  5747  // BetaManagedAgentsStreamSessionEventsUnionContent provides convenient access to
  5748  // the sub-properties of the union.
  5749  //
  5750  // For type safety it is recommended to directly use a variant of the
  5751  // [BetaManagedAgentsStreamSessionEventsUnion].
  5752  //
  5753  // If the underlying value is not a json object, one of the following properties
  5754  // will be valid: OfBetaManagedAgentsUserMessageEventContentArray
  5755  // OfBetaManagedAgentsUserCustomToolResultEventContentArray
  5756  // OfBetaManagedAgentsAgentMessageEventContentArray
  5757  // OfBetaManagedAgentsAgentMCPToolResultEventContentArray
  5758  // OfBetaManagedAgentsAgentToolResultEventContentArray
  5759  // OfBetaManagedAgentsAgentThreadMessageReceivedEventContentArray
  5760  // OfBetaManagedAgentsAgentThreadMessageSentEventContentArray
  5761  // OfBetaManagedAgentsUserToolResultEventContentArray
  5762  // OfBetaManagedAgentsSystemContentBlockArray]
  5763  type BetaManagedAgentsStreamSessionEventsUnionContent struct {
  5764  	// This field will be present if the value is a
  5765  	// [[]BetaManagedAgentsUserMessageEventContentUnion] instead of an object.
  5766  	OfBetaManagedAgentsUserMessageEventContentArray []BetaManagedAgentsUserMessageEventContentUnion `json:",inline"`
  5767  	// This field will be present if the value is a
  5768  	// [[]BetaManagedAgentsUserCustomToolResultEventContentUnion] instead of an object.
  5769  	OfBetaManagedAgentsUserCustomToolResultEventContentArray []BetaManagedAgentsUserCustomToolResultEventContentUnion `json:",inline"`
  5770  	// This field will be present if the value is a
  5771  	// [[]BetaManagedAgentsAgentMessageEventContentUnion] instead of an object.
  5772  	OfBetaManagedAgentsAgentMessageEventContentArray []BetaManagedAgentsAgentMessageEventContentUnion `json:",inline"`
  5773  	// This field will be present if the value is a
  5774  	// [[]BetaManagedAgentsAgentMCPToolResultEventContentUnion] instead of an object.
  5775  	OfBetaManagedAgentsAgentMCPToolResultEventContentArray []BetaManagedAgentsAgentMCPToolResultEventContentUnion `json:",inline"`
  5776  	// This field will be present if the value is a
  5777  	// [[]BetaManagedAgentsAgentToolResultEventContentUnion] instead of an object.
  5778  	OfBetaManagedAgentsAgentToolResultEventContentArray []BetaManagedAgentsAgentToolResultEventContentUnion `json:",inline"`
  5779  	// This field will be present if the value is a
  5780  	// [[]BetaManagedAgentsAgentThreadMessageReceivedEventContentUnion] instead of an
  5781  	// object.
  5782  	OfBetaManagedAgentsAgentThreadMessageReceivedEventContentArray []BetaManagedAgentsAgentThreadMessageReceivedEventContentUnion `json:",inline"`
  5783  	// This field will be present if the value is a
  5784  	// [[]BetaManagedAgentsAgentThreadMessageSentEventContentUnion] instead of an
  5785  	// object.
  5786  	OfBetaManagedAgentsAgentThreadMessageSentEventContentArray []BetaManagedAgentsAgentThreadMessageSentEventContentUnion `json:",inline"`
  5787  	// This field will be present if the value is a
  5788  	// [[]BetaManagedAgentsUserToolResultEventContentUnion] instead of an object.
  5789  	OfBetaManagedAgentsUserToolResultEventContentArray []BetaManagedAgentsUserToolResultEventContentUnion `json:",inline"`
  5790  	// This field will be present if the value is a
  5791  	// [[]BetaManagedAgentsSystemContentBlock] instead of an object.
  5792  	OfBetaManagedAgentsSystemContentBlockArray []BetaManagedAgentsSystemContentBlock `json:",inline"`
  5793  	JSON                                       struct {
  5794  		OfBetaManagedAgentsUserMessageEventContentArray                respjson.Field
  5795  		OfBetaManagedAgentsUserCustomToolResultEventContentArray       respjson.Field
  5796  		OfBetaManagedAgentsAgentMessageEventContentArray               respjson.Field
  5797  		OfBetaManagedAgentsAgentMCPToolResultEventContentArray         respjson.Field
  5798  		OfBetaManagedAgentsAgentToolResultEventContentArray            respjson.Field
  5799  		OfBetaManagedAgentsAgentThreadMessageReceivedEventContentArray respjson.Field
  5800  		OfBetaManagedAgentsAgentThreadMessageSentEventContentArray     respjson.Field
  5801  		OfBetaManagedAgentsUserToolResultEventContentArray             respjson.Field
  5802  		OfBetaManagedAgentsSystemContentBlockArray                     respjson.Field
  5803  		raw                                                            string
  5804  	} `json:"-"`
  5805  }
  5806  
  5807  func (r *BetaManagedAgentsStreamSessionEventsUnionContent) UnmarshalJSON(data []byte) error {
  5808  	return apijson.UnmarshalRoot(data, r)
  5809  }
  5810  
  5811  // BetaManagedAgentsStreamSessionEventsUnionStopReason is an implicit subunion of
  5812  // [BetaManagedAgentsStreamSessionEventsUnion].
  5813  // BetaManagedAgentsStreamSessionEventsUnionStopReason provides convenient access
  5814  // to the sub-properties of the union.
  5815  //
  5816  // For type safety it is recommended to directly use a variant of the
  5817  // [BetaManagedAgentsStreamSessionEventsUnion].
  5818  type BetaManagedAgentsStreamSessionEventsUnionStopReason struct {
  5819  	Type string `json:"type"`
  5820  	// This field is from variant
  5821  	// [BetaManagedAgentsSessionStatusIdleEventStopReasonUnion],
  5822  	// [BetaManagedAgentsSessionThreadStatusIdleEventStopReasonUnion].
  5823  	EventIDs []string `json:"event_ids"`
  5824  	JSON     struct {
  5825  		Type     respjson.Field
  5826  		EventIDs respjson.Field
  5827  		raw      string
  5828  	} `json:"-"`
  5829  }
  5830  
  5831  func (r *BetaManagedAgentsStreamSessionEventsUnionStopReason) UnmarshalJSON(data []byte) error {
  5832  	return apijson.UnmarshalRoot(data, r)
  5833  }
  5834  
  5835  // BetaManagedAgentsStreamSessionEventsUnionUsage is an implicit subunion of
  5836  // [BetaManagedAgentsStreamSessionEventsUnion].
  5837  // BetaManagedAgentsStreamSessionEventsUnionUsage provides convenient access to the
  5838  // sub-properties of the union.
  5839  //
  5840  // For type safety it is recommended to directly use a variant of the
  5841  // [BetaManagedAgentsStreamSessionEventsUnion].
  5842  type BetaManagedAgentsStreamSessionEventsUnionUsage struct {
  5843  	// This field is from variant [BetaManagedAgentsSpanModelUsage].
  5844  	CacheCreationInputTokens int64 `json:"cache_creation_input_tokens"`
  5845  	CacheReadInputTokens     int64 `json:"cache_read_input_tokens"`
  5846  	InputTokens              int64 `json:"input_tokens"`
  5847  	OutputTokens             int64 `json:"output_tokens"`
  5848  	// This field is from variant [BetaManagedAgentsSpanModelUsage].
  5849  	Speed BetaManagedAgentsSpanModelUsageSpeed `json:"speed"`
  5850  	// This field is from variant [BetaManagedAgentsSessionUsageSnapshot].
  5851  	ActiveSeconds float64 `json:"active_seconds"`
  5852  	// This field is from variant [BetaManagedAgentsSessionUsageSnapshot].
  5853  	CacheCreation BetaManagedAgentsCacheCreationUsage `json:"cache_creation"`
  5854  	// This field is from variant [BetaManagedAgentsSessionUsageSnapshot].
  5855  	ListCost BetaMonetaryAmount `json:"list_cost"`
  5856  	// This field is from variant [BetaManagedAgentsSessionUsageSnapshot].
  5857  	ServerToolUse BetaManagedAgentsServerToolUsage `json:"server_tool_use"`
  5858  	JSON          struct {
  5859  		CacheCreationInputTokens respjson.Field
  5860  		CacheReadInputTokens     respjson.Field
  5861  		InputTokens              respjson.Field
  5862  		OutputTokens             respjson.Field
  5863  		Speed                    respjson.Field
  5864  		ActiveSeconds            respjson.Field
  5865  		CacheCreation            respjson.Field
  5866  		ListCost                 respjson.Field
  5867  		ServerToolUse            respjson.Field
  5868  		raw                      string
  5869  	} `json:"-"`
  5870  }
  5871  
  5872  func (r *BetaManagedAgentsStreamSessionEventsUnionUsage) UnmarshalJSON(data []byte) error {
  5873  	return apijson.UnmarshalRoot(data, r)
  5874  }
  5875  
  5876  // Privileged context for the accompanying turn and all subsequent turns, appended
  5877  // to the session's system context as a `role: "system"` turn rather than replacing
  5878  // the top-level system prompt. At most one per request: it must be the final event
  5879  // and immediately follow the `user.message`, `user.tool_result`, or
  5880  // `user.custom_tool_result` it accompanies. Only supported on models that accept
  5881  // mid-conversation system messages.
  5882  //
  5883  // The properties Content, Type are required.
  5884  type BetaManagedAgentsSystemMessageEventParams struct {
  5885  	// System content blocks to append. Text-only.
  5886  	Content []BetaManagedAgentsSystemContentBlockParam `json:"content,omitzero" api:"required"`
  5887  	// Any of "system.message".
  5888  	Type BetaManagedAgentsSystemMessageEventParamsType `json:"type,omitzero" api:"required"`
  5889  	paramObj
  5890  }
  5891  
  5892  func (r BetaManagedAgentsSystemMessageEventParams) MarshalJSON() (data []byte, err error) {
  5893  	type shadow BetaManagedAgentsSystemMessageEventParams
  5894  	return param.MarshalObject(r, (*shadow)(&r))
  5895  }
  5896  func (r *BetaManagedAgentsSystemMessageEventParams) UnmarshalJSON(data []byte) error {
  5897  	return apijson.UnmarshalRoot(data, r)
  5898  }
  5899  
  5900  type BetaManagedAgentsSystemMessageEventParamsType string
  5901  
  5902  const (
  5903  	BetaManagedAgentsSystemMessageEventParamsTypeSystemMessage BetaManagedAgentsSystemMessageEventParamsType = "system.message"
  5904  )
  5905  
  5906  // Regular text content.
  5907  type BetaManagedAgentsTextBlock struct {
  5908  	// The text content.
  5909  	Text string `json:"text" api:"required"`
  5910  	// Any of "text".
  5911  	Type BetaManagedAgentsTextBlockType `json:"type" api:"required"`
  5912  	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
  5913  	JSON struct {
  5914  		Text        respjson.Field
  5915  		Type        respjson.Field
  5916  		ExtraFields map[string]respjson.Field
  5917  		raw         string
  5918  	} `json:"-"`
  5919  }
  5920  
  5921  // Returns the unmodified JSON received from the API
  5922  func (r BetaManagedAgentsTextBlock) RawJSON() string { return r.JSON.raw }
  5923  func (r *BetaManagedAgentsTextBlock) UnmarshalJSON(data []byte) error {
  5924  	return apijson.UnmarshalRoot(data, r)
  5925  }
  5926  
  5927  // ToParam converts this BetaManagedAgentsTextBlock to a
  5928  // BetaManagedAgentsTextBlockParam.
  5929  //
  5930  // Warning: the fields of the param type will not be present. ToParam should only
  5931  // be used at the last possible moment before sending a request. Test for this with
  5932  // BetaManagedAgentsTextBlockParam.Overrides()
  5933  func (r BetaManagedAgentsTextBlock) ToParam() BetaManagedAgentsTextBlockParam {
  5934  	return param.Override[BetaManagedAgentsTextBlockParam](json.RawMessage(r.RawJSON()))
  5935  }
  5936  
  5937  type BetaManagedAgentsTextBlockType string
  5938  
  5939  const (
  5940  	BetaManagedAgentsTextBlockTypeText BetaManagedAgentsTextBlockType = "text"
  5941  )
  5942  
  5943  // Regular text content.
  5944  //
  5945  // The properties Text, Type are required.
  5946  type BetaManagedAgentsTextBlockParam struct {
  5947  	// The text content.
  5948  	Text string `json:"text" api:"required"`
  5949  	// Any of "text".
  5950  	Type BetaManagedAgentsTextBlockType `json:"type,omitzero" api:"required"`
  5951  	paramObj
  5952  }
  5953  
  5954  func (r BetaManagedAgentsTextBlockParam) MarshalJSON() (data []byte, err error) {
  5955  	type shadow BetaManagedAgentsTextBlockParam
  5956  	return param.MarshalObject(r, (*shadow)(&r))
  5957  }
  5958  func (r *BetaManagedAgentsTextBlockParam) UnmarshalJSON(data []byte) error {
  5959  	return apijson.UnmarshalRoot(data, r)
  5960  }
  5961  
  5962  // Rubric content provided inline as text.
  5963  type BetaManagedAgentsTextRubric struct {
  5964  	// Rubric content. Plain text or markdown — the grader treats it as freeform text.
  5965  	Content string `json:"content" api:"required"`
  5966  	// Any of "text".
  5967  	Type BetaManagedAgentsTextRubricType `json:"type" api:"required"`
  5968  	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
  5969  	JSON struct {
  5970  		Content     respjson.Field
  5971  		Type        respjson.Field
  5972  		ExtraFields map[string]respjson.Field
  5973  		raw         string
  5974  	} `json:"-"`
  5975  }
  5976  
  5977  // Returns the unmodified JSON received from the API
  5978  func (r BetaManagedAgentsTextRubric) RawJSON() string { return r.JSON.raw }
  5979  func (r *BetaManagedAgentsTextRubric) UnmarshalJSON(data []byte) error {
  5980  	return apijson.UnmarshalRoot(data, r)
  5981  }
  5982  
  5983  type BetaManagedAgentsTextRubricType string
  5984  
  5985  const (
  5986  	BetaManagedAgentsTextRubricTypeText BetaManagedAgentsTextRubricType = "text"
  5987  )
  5988  
  5989  // Rubric content provided inline as text.
  5990  //
  5991  // The properties Content, Type are required.
  5992  type BetaManagedAgentsTextRubricParams struct {
  5993  	// Rubric content. Plain text or markdown — the grader treats it as freeform text.
  5994  	// Maximum 262144 characters.
  5995  	Content string `json:"content" api:"required"`
  5996  	// Any of "text".
  5997  	Type BetaManagedAgentsTextRubricParamsType `json:"type,omitzero" api:"required"`
  5998  	paramObj
  5999  }
  6000  
  6001  func (r BetaManagedAgentsTextRubricParams) MarshalJSON() (data []byte, err error) {
  6002  	type shadow BetaManagedAgentsTextRubricParams
  6003  	return param.MarshalObject(r, (*shadow)(&r))
  6004  }
  6005  func (r *BetaManagedAgentsTextRubricParams) UnmarshalJSON(data []byte) error {
  6006  	return apijson.UnmarshalRoot(data, r)
  6007  }
  6008  
  6009  type BetaManagedAgentsTextRubricParamsType string
  6010  
  6011  const (
  6012  	BetaManagedAgentsTextRubricParamsTypeText BetaManagedAgentsTextRubricParamsType = "text"
  6013  )
  6014  
  6015  // An unknown or unexpected error occurred during session execution. A fallback
  6016  // variant; clients that don't recognize a new error code can match on
  6017  // `retry_status` and `message` alone.
  6018  type BetaManagedAgentsUnknownError struct {
  6019  	// Human-readable error description.
  6020  	Message string `json:"message" api:"required"`
  6021  	// What the client should do next in response to this error.
  6022  	RetryStatus BetaManagedAgentsUnknownErrorRetryStatusUnion `json:"retry_status" api:"required"`
  6023  	// Any of "unknown_error".
  6024  	Type BetaManagedAgentsUnknownErrorType `json:"type" api:"required"`
  6025  	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
  6026  	JSON struct {
  6027  		Message     respjson.Field
  6028  		RetryStatus respjson.Field
  6029  		Type        respjson.Field
  6030  		ExtraFields map[string]respjson.Field
  6031  		raw         string
  6032  	} `json:"-"`
  6033  }
  6034  
  6035  // Returns the unmodified JSON received from the API
  6036  func (r BetaManagedAgentsUnknownError) RawJSON() string { return r.JSON.raw }
  6037  func (r *BetaManagedAgentsUnknownError) UnmarshalJSON(data []byte) error {
  6038  	return apijson.UnmarshalRoot(data, r)
  6039  }
  6040  
  6041  // BetaManagedAgentsUnknownErrorRetryStatusUnion contains all possible properties
  6042  // and values from [BetaManagedAgentsRetryStatusRetrying],
  6043  // [BetaManagedAgentsRetryStatusExhausted], [BetaManagedAgentsRetryStatusTerminal].
  6044  //
  6045  // Use the [BetaManagedAgentsUnknownErrorRetryStatusUnion.AsAny] method to switch
  6046  // on the variant.
  6047  //
  6048  // Use the methods beginning with 'As' to cast the union to one of its variants.
  6049  type BetaManagedAgentsUnknownErrorRetryStatusUnion struct {
  6050  	// Any of "retrying", "exhausted", "terminal".
  6051  	Type string `json:"type"`
  6052  	JSON struct {
  6053  		Type respjson.Field
  6054  		raw  string
  6055  	} `json:"-"`
  6056  }
  6057  
  6058  // anyBetaManagedAgentsUnknownErrorRetryStatus is implemented by each variant of
  6059  // [BetaManagedAgentsUnknownErrorRetryStatusUnion] to add type safety for the
  6060  // return type of [BetaManagedAgentsUnknownErrorRetryStatusUnion.AsAny]
  6061  type anyBetaManagedAgentsUnknownErrorRetryStatus interface {
  6062  	implBetaManagedAgentsUnknownErrorRetryStatusUnion()
  6063  }
  6064  
  6065  func (BetaManagedAgentsRetryStatusRetrying) implBetaManagedAgentsUnknownErrorRetryStatusUnion()  {}
  6066  func (BetaManagedAgentsRetryStatusExhausted) implBetaManagedAgentsUnknownErrorRetryStatusUnion() {}
  6067  func (BetaManagedAgentsRetryStatusTerminal) implBetaManagedAgentsUnknownErrorRetryStatusUnion()  {}
  6068  
  6069  // Use the following switch statement to find the correct variant
  6070  //
  6071  //	switch variant := BetaManagedAgentsUnknownErrorRetryStatusUnion.AsAny().(type) {
  6072  //	case anthropic.BetaManagedAgentsRetryStatusRetrying:
  6073  //	case anthropic.BetaManagedAgentsRetryStatusExhausted:
  6074  //	case anthropic.BetaManagedAgentsRetryStatusTerminal:
  6075  //	default:
  6076  //	  fmt.Errorf("no variant present")
  6077  //	}
  6078  func (u BetaManagedAgentsUnknownErrorRetryStatusUnion) AsAny() anyBetaManagedAgentsUnknownErrorRetryStatus {
  6079  	switch u.Type {
  6080  	case "retrying":
  6081  		return u.AsRetrying()
  6082  	case "exhausted":
  6083  		return u.AsExhausted()
  6084  	case "terminal":
  6085  		return u.AsTerminal()
  6086  	}
  6087  	return nil
  6088  }
  6089  
  6090  func (u BetaManagedAgentsUnknownErrorRetryStatusUnion) AsRetrying() (v BetaManagedAgentsRetryStatusRetrying) {
  6091  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  6092  	return
  6093  }
  6094  
  6095  func (u BetaManagedAgentsUnknownErrorRetryStatusUnion) AsExhausted() (v BetaManagedAgentsRetryStatusExhausted) {
  6096  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  6097  	return
  6098  }
  6099  
  6100  func (u BetaManagedAgentsUnknownErrorRetryStatusUnion) AsTerminal() (v BetaManagedAgentsRetryStatusTerminal) {
  6101  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  6102  	return
  6103  }
  6104  
  6105  // Returns the unmodified JSON received from the API
  6106  func (u BetaManagedAgentsUnknownErrorRetryStatusUnion) RawJSON() string { return u.JSON.raw }
  6107  
  6108  func (r *BetaManagedAgentsUnknownErrorRetryStatusUnion) UnmarshalJSON(data []byte) error {
  6109  	return apijson.UnmarshalRoot(data, r)
  6110  }
  6111  
  6112  type BetaManagedAgentsUnknownErrorType string
  6113  
  6114  const (
  6115  	BetaManagedAgentsUnknownErrorTypeUnknownError BetaManagedAgentsUnknownErrorType = "unknown_error"
  6116  )
  6117  
  6118  // Document referenced by URL.
  6119  type BetaManagedAgentsURLDocumentSource struct {
  6120  	// Any of "url".
  6121  	Type BetaManagedAgentsURLDocumentSourceType `json:"type" api:"required"`
  6122  	// URL of the document to fetch.
  6123  	URL string `json:"url" api:"required"`
  6124  	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
  6125  	JSON struct {
  6126  		Type        respjson.Field
  6127  		URL         respjson.Field
  6128  		ExtraFields map[string]respjson.Field
  6129  		raw         string
  6130  	} `json:"-"`
  6131  }
  6132  
  6133  // Returns the unmodified JSON received from the API
  6134  func (r BetaManagedAgentsURLDocumentSource) RawJSON() string { return r.JSON.raw }
  6135  func (r *BetaManagedAgentsURLDocumentSource) UnmarshalJSON(data []byte) error {
  6136  	return apijson.UnmarshalRoot(data, r)
  6137  }
  6138  
  6139  // ToParam converts this BetaManagedAgentsURLDocumentSource to a
  6140  // BetaManagedAgentsURLDocumentSourceParam.
  6141  //
  6142  // Warning: the fields of the param type will not be present. ToParam should only
  6143  // be used at the last possible moment before sending a request. Test for this with
  6144  // BetaManagedAgentsURLDocumentSourceParam.Overrides()
  6145  func (r BetaManagedAgentsURLDocumentSource) ToParam() BetaManagedAgentsURLDocumentSourceParam {
  6146  	return param.Override[BetaManagedAgentsURLDocumentSourceParam](json.RawMessage(r.RawJSON()))
  6147  }
  6148  
  6149  type BetaManagedAgentsURLDocumentSourceType string
  6150  
  6151  const (
  6152  	BetaManagedAgentsURLDocumentSourceTypeURL BetaManagedAgentsURLDocumentSourceType = "url"
  6153  )
  6154  
  6155  // Document referenced by URL.
  6156  //
  6157  // The properties Type, URL are required.
  6158  type BetaManagedAgentsURLDocumentSourceParam struct {
  6159  	// Any of "url".
  6160  	Type BetaManagedAgentsURLDocumentSourceType `json:"type,omitzero" api:"required"`
  6161  	// URL of the document to fetch.
  6162  	URL string `json:"url" api:"required"`
  6163  	paramObj
  6164  }
  6165  
  6166  func (r BetaManagedAgentsURLDocumentSourceParam) MarshalJSON() (data []byte, err error) {
  6167  	type shadow BetaManagedAgentsURLDocumentSourceParam
  6168  	return param.MarshalObject(r, (*shadow)(&r))
  6169  }
  6170  func (r *BetaManagedAgentsURLDocumentSourceParam) UnmarshalJSON(data []byte) error {
  6171  	return apijson.UnmarshalRoot(data, r)
  6172  }
  6173  
  6174  // Image referenced by URL.
  6175  type BetaManagedAgentsURLImageSource struct {
  6176  	// Any of "url".
  6177  	Type BetaManagedAgentsURLImageSourceType `json:"type" api:"required"`
  6178  	// URL of the image to fetch.
  6179  	URL string `json:"url" api:"required"`
  6180  	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
  6181  	JSON struct {
  6182  		Type        respjson.Field
  6183  		URL         respjson.Field
  6184  		ExtraFields map[string]respjson.Field
  6185  		raw         string
  6186  	} `json:"-"`
  6187  }
  6188  
  6189  // Returns the unmodified JSON received from the API
  6190  func (r BetaManagedAgentsURLImageSource) RawJSON() string { return r.JSON.raw }
  6191  func (r *BetaManagedAgentsURLImageSource) UnmarshalJSON(data []byte) error {
  6192  	return apijson.UnmarshalRoot(data, r)
  6193  }
  6194  
  6195  // ToParam converts this BetaManagedAgentsURLImageSource to a
  6196  // BetaManagedAgentsURLImageSourceParam.
  6197  //
  6198  // Warning: the fields of the param type will not be present. ToParam should only
  6199  // be used at the last possible moment before sending a request. Test for this with
  6200  // BetaManagedAgentsURLImageSourceParam.Overrides()
  6201  func (r BetaManagedAgentsURLImageSource) ToParam() BetaManagedAgentsURLImageSourceParam {
  6202  	return param.Override[BetaManagedAgentsURLImageSourceParam](json.RawMessage(r.RawJSON()))
  6203  }
  6204  
  6205  type BetaManagedAgentsURLImageSourceType string
  6206  
  6207  const (
  6208  	BetaManagedAgentsURLImageSourceTypeURL BetaManagedAgentsURLImageSourceType = "url"
  6209  )
  6210  
  6211  // Image referenced by URL.
  6212  //
  6213  // The properties Type, URL are required.
  6214  type BetaManagedAgentsURLImageSourceParam struct {
  6215  	// Any of "url".
  6216  	Type BetaManagedAgentsURLImageSourceType `json:"type,omitzero" api:"required"`
  6217  	// URL of the image to fetch.
  6218  	URL string `json:"url" api:"required"`
  6219  	paramObj
  6220  }
  6221  
  6222  func (r BetaManagedAgentsURLImageSourceParam) MarshalJSON() (data []byte, err error) {
  6223  	type shadow BetaManagedAgentsURLImageSourceParam
  6224  	return param.MarshalObject(r, (*shadow)(&r))
  6225  }
  6226  func (r *BetaManagedAgentsURLImageSourceParam) UnmarshalJSON(data []byte) error {
  6227  	return apijson.UnmarshalRoot(data, r)
  6228  }
  6229  
  6230  // Event sent by the client providing the result of a custom tool execution.
  6231  type BetaManagedAgentsUserCustomToolResultEvent struct {
  6232  	// Unique identifier for this event.
  6233  	ID string `json:"id" api:"required"`
  6234  	// The id of the `agent.custom_tool_use` event this result corresponds to, which
  6235  	// can be found in the last `session.status_idle`
  6236  	// [event's](https://platform.claude.com/docs/en/api/beta/sessions/events/list#beta_managed_agents_session_requires_action.event_ids)
  6237  	// `stop_reason.event_ids` field.
  6238  	CustomToolUseID string `json:"custom_tool_use_id" api:"required"`
  6239  	// Any of "user.custom_tool_result".
  6240  	Type BetaManagedAgentsUserCustomToolResultEventType `json:"type" api:"required"`
  6241  	// The result content returned by the tool.
  6242  	Content []BetaManagedAgentsUserCustomToolResultEventContentUnion `json:"content"`
  6243  	// Whether the tool execution resulted in an error.
  6244  	IsError bool `json:"is_error" api:"nullable"`
  6245  	// A timestamp in RFC 3339 format
  6246  	ProcessedAt time.Time `json:"processed_at" api:"nullable" format:"date-time"`
  6247  	// Routes this result to a subagent thread. Copy from the `agent.custom_tool_use`
  6248  	// event's `session_thread_id`.
  6249  	SessionThreadID string `json:"session_thread_id" api:"nullable"`
  6250  	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
  6251  	JSON struct {
  6252  		ID              respjson.Field
  6253  		CustomToolUseID respjson.Field
  6254  		Type            respjson.Field
  6255  		Content         respjson.Field
  6256  		IsError         respjson.Field
  6257  		ProcessedAt     respjson.Field
  6258  		SessionThreadID respjson.Field
  6259  		ExtraFields     map[string]respjson.Field
  6260  		raw             string
  6261  	} `json:"-"`
  6262  }
  6263  
  6264  // Returns the unmodified JSON received from the API
  6265  func (r BetaManagedAgentsUserCustomToolResultEvent) RawJSON() string { return r.JSON.raw }
  6266  func (r *BetaManagedAgentsUserCustomToolResultEvent) UnmarshalJSON(data []byte) error {
  6267  	return apijson.UnmarshalRoot(data, r)
  6268  }
  6269  
  6270  type BetaManagedAgentsUserCustomToolResultEventType string
  6271  
  6272  const (
  6273  	BetaManagedAgentsUserCustomToolResultEventTypeUserCustomToolResult BetaManagedAgentsUserCustomToolResultEventType = "user.custom_tool_result"
  6274  )
  6275  
  6276  // BetaManagedAgentsUserCustomToolResultEventContentUnion contains all possible
  6277  // properties and values from [BetaManagedAgentsTextBlock],
  6278  // [BetaManagedAgentsImageBlock], [BetaManagedAgentsDocumentBlock],
  6279  // [BetaManagedAgentsSearchResultBlock].
  6280  //
  6281  // Use the [BetaManagedAgentsUserCustomToolResultEventContentUnion.AsAny] method to
  6282  // switch on the variant.
  6283  //
  6284  // Use the methods beginning with 'As' to cast the union to one of its variants.
  6285  type BetaManagedAgentsUserCustomToolResultEventContentUnion struct {
  6286  	// This field is from variant [BetaManagedAgentsTextBlock].
  6287  	Text string `json:"text"`
  6288  	// Any of "text", "image", "document", "search_result".
  6289  	Type string `json:"type"`
  6290  	// This field is a union of [BetaManagedAgentsImageBlockSourceUnion],
  6291  	// [BetaManagedAgentsDocumentBlockSourceUnion], [string]
  6292  	Source BetaManagedAgentsUserCustomToolResultEventContentUnionSource `json:"source"`
  6293  	// This field is from variant [BetaManagedAgentsDocumentBlock].
  6294  	Context string `json:"context"`
  6295  	Title   string `json:"title"`
  6296  	// This field is from variant [BetaManagedAgentsSearchResultBlock].
  6297  	Citations BetaManagedAgentsSearchResultCitations `json:"citations"`
  6298  	// This field is from variant [BetaManagedAgentsSearchResultBlock].
  6299  	Content []BetaManagedAgentsSearchResultContent `json:"content"`
  6300  	JSON    struct {
  6301  		Text      respjson.Field
  6302  		Type      respjson.Field
  6303  		Source    respjson.Field
  6304  		Context   respjson.Field
  6305  		Title     respjson.Field
  6306  		Citations respjson.Field
  6307  		Content   respjson.Field
  6308  		raw       string
  6309  	} `json:"-"`
  6310  }
  6311  
  6312  // anyBetaManagedAgentsUserCustomToolResultEventContent is implemented by each
  6313  // variant of [BetaManagedAgentsUserCustomToolResultEventContentUnion] to add type
  6314  // safety for the return type of
  6315  // [BetaManagedAgentsUserCustomToolResultEventContentUnion.AsAny]
  6316  type anyBetaManagedAgentsUserCustomToolResultEventContent interface {
  6317  	implBetaManagedAgentsUserCustomToolResultEventContentUnion()
  6318  }
  6319  
  6320  func (BetaManagedAgentsTextBlock) implBetaManagedAgentsUserCustomToolResultEventContentUnion()     {}
  6321  func (BetaManagedAgentsImageBlock) implBetaManagedAgentsUserCustomToolResultEventContentUnion()    {}
  6322  func (BetaManagedAgentsDocumentBlock) implBetaManagedAgentsUserCustomToolResultEventContentUnion() {}
  6323  func (BetaManagedAgentsSearchResultBlock) implBetaManagedAgentsUserCustomToolResultEventContentUnion() {
  6324  }
  6325  
  6326  // Use the following switch statement to find the correct variant
  6327  //
  6328  //	switch variant := BetaManagedAgentsUserCustomToolResultEventContentUnion.AsAny().(type) {
  6329  //	case anthropic.BetaManagedAgentsTextBlock:
  6330  //	case anthropic.BetaManagedAgentsImageBlock:
  6331  //	case anthropic.BetaManagedAgentsDocumentBlock:
  6332  //	case anthropic.BetaManagedAgentsSearchResultBlock:
  6333  //	default:
  6334  //	  fmt.Errorf("no variant present")
  6335  //	}
  6336  func (u BetaManagedAgentsUserCustomToolResultEventContentUnion) AsAny() anyBetaManagedAgentsUserCustomToolResultEventContent {
  6337  	switch u.Type {
  6338  	case "text":
  6339  		return u.AsText()
  6340  	case "image":
  6341  		return u.AsImage()
  6342  	case "document":
  6343  		return u.AsDocument()
  6344  	case "search_result":
  6345  		return u.AsSearchResult()
  6346  	}
  6347  	return nil
  6348  }
  6349  
  6350  func (u BetaManagedAgentsUserCustomToolResultEventContentUnion) AsText() (v BetaManagedAgentsTextBlock) {
  6351  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  6352  	return
  6353  }
  6354  
  6355  func (u BetaManagedAgentsUserCustomToolResultEventContentUnion) AsImage() (v BetaManagedAgentsImageBlock) {
  6356  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  6357  	return
  6358  }
  6359  
  6360  func (u BetaManagedAgentsUserCustomToolResultEventContentUnion) AsDocument() (v BetaManagedAgentsDocumentBlock) {
  6361  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  6362  	return
  6363  }
  6364  
  6365  func (u BetaManagedAgentsUserCustomToolResultEventContentUnion) AsSearchResult() (v BetaManagedAgentsSearchResultBlock) {
  6366  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  6367  	return
  6368  }
  6369  
  6370  // Returns the unmodified JSON received from the API
  6371  func (u BetaManagedAgentsUserCustomToolResultEventContentUnion) RawJSON() string { return u.JSON.raw }
  6372  
  6373  func (r *BetaManagedAgentsUserCustomToolResultEventContentUnion) UnmarshalJSON(data []byte) error {
  6374  	return apijson.UnmarshalRoot(data, r)
  6375  }
  6376  
  6377  // BetaManagedAgentsUserCustomToolResultEventContentUnionSource is an implicit
  6378  // subunion of [BetaManagedAgentsUserCustomToolResultEventContentUnion].
  6379  // BetaManagedAgentsUserCustomToolResultEventContentUnionSource provides convenient
  6380  // access to the sub-properties of the union.
  6381  //
  6382  // For type safety it is recommended to directly use a variant of the
  6383  // [BetaManagedAgentsUserCustomToolResultEventContentUnion].
  6384  //
  6385  // If the underlying value is not a json object, one of the following properties
  6386  // will be valid: OfString]
  6387  type BetaManagedAgentsUserCustomToolResultEventContentUnionSource struct {
  6388  	// This field will be present if the value is a [string] instead of an object.
  6389  	OfString  string `json:",inline"`
  6390  	Data      string `json:"data"`
  6391  	MediaType string `json:"media_type"`
  6392  	Type      string `json:"type"`
  6393  	URL       string `json:"url"`
  6394  	FileID    string `json:"file_id"`
  6395  	JSON      struct {
  6396  		OfString  respjson.Field
  6397  		Data      respjson.Field
  6398  		MediaType respjson.Field
  6399  		Type      respjson.Field
  6400  		URL       respjson.Field
  6401  		FileID    respjson.Field
  6402  		raw       string
  6403  	} `json:"-"`
  6404  }
  6405  
  6406  func (r *BetaManagedAgentsUserCustomToolResultEventContentUnionSource) UnmarshalJSON(data []byte) error {
  6407  	return apijson.UnmarshalRoot(data, r)
  6408  }
  6409  
  6410  // Parameters for providing the result of a custom tool execution.
  6411  //
  6412  // The properties CustomToolUseID, Type are required.
  6413  type BetaManagedAgentsUserCustomToolResultEventParams struct {
  6414  	// The id of the `agent.custom_tool_use` event this result corresponds to, which
  6415  	// can be found in the last `session.status_idle`
  6416  	// [event's](https://platform.claude.com/docs/en/api/beta/sessions/events/list#beta_managed_agents_session_requires_action.event_ids)
  6417  	// `stop_reason.event_ids` field.
  6418  	CustomToolUseID string `json:"custom_tool_use_id" api:"required"`
  6419  	// Any of "user.custom_tool_result".
  6420  	Type BetaManagedAgentsUserCustomToolResultEventParamsType `json:"type,omitzero" api:"required"`
  6421  	// Whether the tool execution resulted in an error.
  6422  	IsError param.Opt[bool] `json:"is_error,omitzero"`
  6423  	// The result content returned by the tool.
  6424  	Content []BetaManagedAgentsUserCustomToolResultEventParamsContentUnion `json:"content,omitzero"`
  6425  	paramObj
  6426  }
  6427  
  6428  func (r BetaManagedAgentsUserCustomToolResultEventParams) MarshalJSON() (data []byte, err error) {
  6429  	type shadow BetaManagedAgentsUserCustomToolResultEventParams
  6430  	return param.MarshalObject(r, (*shadow)(&r))
  6431  }
  6432  func (r *BetaManagedAgentsUserCustomToolResultEventParams) UnmarshalJSON(data []byte) error {
  6433  	return apijson.UnmarshalRoot(data, r)
  6434  }
  6435  
  6436  type BetaManagedAgentsUserCustomToolResultEventParamsType string
  6437  
  6438  const (
  6439  	BetaManagedAgentsUserCustomToolResultEventParamsTypeUserCustomToolResult BetaManagedAgentsUserCustomToolResultEventParamsType = "user.custom_tool_result"
  6440  )
  6441  
  6442  // Only one field can be non-zero.
  6443  //
  6444  // Use [param.IsOmitted] to confirm if a field is set.
  6445  type BetaManagedAgentsUserCustomToolResultEventParamsContentUnion struct {
  6446  	OfText         *BetaManagedAgentsTextBlockParam         `json:",omitzero,inline"`
  6447  	OfImage        *BetaManagedAgentsImageBlockParam        `json:",omitzero,inline"`
  6448  	OfDocument     *BetaManagedAgentsDocumentBlockParam     `json:",omitzero,inline"`
  6449  	OfSearchResult *BetaManagedAgentsSearchResultBlockParam `json:",omitzero,inline"`
  6450  	paramUnion
  6451  }
  6452  
  6453  func (u BetaManagedAgentsUserCustomToolResultEventParamsContentUnion) MarshalJSON() ([]byte, error) {
  6454  	return param.MarshalUnion(u, u.OfText, u.OfImage, u.OfDocument, u.OfSearchResult)
  6455  }
  6456  func (u *BetaManagedAgentsUserCustomToolResultEventParamsContentUnion) UnmarshalJSON(data []byte) error {
  6457  	return apijson.UnmarshalRoot(data, u)
  6458  }
  6459  
  6460  func (u *BetaManagedAgentsUserCustomToolResultEventParamsContentUnion) asAny() any {
  6461  	if !param.IsOmitted(u.OfText) {
  6462  		return u.OfText
  6463  	} else if !param.IsOmitted(u.OfImage) {
  6464  		return u.OfImage
  6465  	} else if !param.IsOmitted(u.OfDocument) {
  6466  		return u.OfDocument
  6467  	} else if !param.IsOmitted(u.OfSearchResult) {
  6468  		return u.OfSearchResult
  6469  	}
  6470  	return nil
  6471  }
  6472  
  6473  // Returns a pointer to the underlying variant's property, if present.
  6474  func (u BetaManagedAgentsUserCustomToolResultEventParamsContentUnion) GetText() *string {
  6475  	if vt := u.OfText; vt != nil {
  6476  		return &vt.Text
  6477  	}
  6478  	return nil
  6479  }
  6480  
  6481  // Returns a pointer to the underlying variant's property, if present.
  6482  func (u BetaManagedAgentsUserCustomToolResultEventParamsContentUnion) GetContext() *string {
  6483  	if vt := u.OfDocument; vt != nil && vt.Context.Valid() {
  6484  		return &vt.Context.Value
  6485  	}
  6486  	return nil
  6487  }
  6488  
  6489  // Returns a pointer to the underlying variant's property, if present.
  6490  func (u BetaManagedAgentsUserCustomToolResultEventParamsContentUnion) GetCitations() *BetaManagedAgentsSearchResultCitationsParam {
  6491  	if vt := u.OfSearchResult; vt != nil {
  6492  		return &vt.Citations
  6493  	}
  6494  	return nil
  6495  }
  6496  
  6497  // Returns a pointer to the underlying variant's property, if present.
  6498  func (u BetaManagedAgentsUserCustomToolResultEventParamsContentUnion) GetContent() []BetaManagedAgentsSearchResultContentParam {
  6499  	if vt := u.OfSearchResult; vt != nil {
  6500  		return vt.Content
  6501  	}
  6502  	return nil
  6503  }
  6504  
  6505  // Returns a pointer to the underlying variant's property, if present.
  6506  func (u BetaManagedAgentsUserCustomToolResultEventParamsContentUnion) GetType() *string {
  6507  	if vt := u.OfText; vt != nil {
  6508  		return (*string)(&vt.Type)
  6509  	} else if vt := u.OfImage; vt != nil {
  6510  		return (*string)(&vt.Type)
  6511  	} else if vt := u.OfDocument; vt != nil {
  6512  		return (*string)(&vt.Type)
  6513  	} else if vt := u.OfSearchResult; vt != nil {
  6514  		return (*string)(&vt.Type)
  6515  	}
  6516  	return nil
  6517  }
  6518  
  6519  // Returns a pointer to the underlying variant's property, if present.
  6520  func (u BetaManagedAgentsUserCustomToolResultEventParamsContentUnion) GetTitle() *string {
  6521  	if vt := u.OfDocument; vt != nil && vt.Title.Valid() {
  6522  		return &vt.Title.Value
  6523  	} else if vt := u.OfSearchResult; vt != nil {
  6524  		return (*string)(&vt.Title)
  6525  	}
  6526  	return nil
  6527  }
  6528  
  6529  // Returns a subunion which exports methods to access subproperties
  6530  //
  6531  // Or use AsAny() to get the underlying value
  6532  func (u BetaManagedAgentsUserCustomToolResultEventParamsContentUnion) GetSource() (res betaManagedAgentsUserCustomToolResultEventParamsContentUnionSource) {
  6533  	if vt := u.OfImage; vt != nil {
  6534  		res.any = vt.Source.asAny()
  6535  	} else if vt := u.OfDocument; vt != nil {
  6536  		res.any = vt.Source.asAny()
  6537  	} else if vt := u.OfSearchResult; vt != nil {
  6538  		res.any = &vt.Source
  6539  	}
  6540  	return
  6541  }
  6542  
  6543  // Can have the runtime types [*BetaManagedAgentsBase64ImageSourceParam],
  6544  // [*BetaManagedAgentsURLImageSourceParam],
  6545  // [*BetaManagedAgentsFileImageSourceParam],
  6546  // [*BetaManagedAgentsBase64DocumentSourceParam],
  6547  // [*BetaManagedAgentsPlainTextDocumentSourceParam],
  6548  // [*BetaManagedAgentsURLDocumentSourceParam],
  6549  // [*BetaManagedAgentsFileDocumentSourceParam], [*string]
  6550  type betaManagedAgentsUserCustomToolResultEventParamsContentUnionSource struct{ any }
  6551  
  6552  // Use the following switch statement to get the type of the union:
  6553  //
  6554  //	switch u.AsAny().(type) {
  6555  //	case *anthropic.BetaManagedAgentsBase64ImageSourceParam:
  6556  //	case *anthropic.BetaManagedAgentsURLImageSourceParam:
  6557  //	case *anthropic.BetaManagedAgentsFileImageSourceParam:
  6558  //	case *anthropic.BetaManagedAgentsBase64DocumentSourceParam:
  6559  //	case *anthropic.BetaManagedAgentsPlainTextDocumentSourceParam:
  6560  //	case *anthropic.BetaManagedAgentsURLDocumentSourceParam:
  6561  //	case *anthropic.BetaManagedAgentsFileDocumentSourceParam:
  6562  //	case *string:
  6563  //	default:
  6564  //	    fmt.Errorf("not present")
  6565  //	}
  6566  func (u betaManagedAgentsUserCustomToolResultEventParamsContentUnionSource) AsAny() any { return u.any }
  6567  
  6568  // Returns a pointer to the underlying variant's property, if present.
  6569  func (u betaManagedAgentsUserCustomToolResultEventParamsContentUnionSource) GetData() *string {
  6570  	switch vt := u.any.(type) {
  6571  	case *BetaManagedAgentsImageBlockSourceUnionParam:
  6572  		return vt.GetData()
  6573  	case *BetaManagedAgentsDocumentBlockSourceUnionParam:
  6574  		return vt.GetData()
  6575  	}
  6576  	return nil
  6577  }
  6578  
  6579  // Returns a pointer to the underlying variant's property, if present.
  6580  func (u betaManagedAgentsUserCustomToolResultEventParamsContentUnionSource) GetMediaType() *string {
  6581  	switch vt := u.any.(type) {
  6582  	case *BetaManagedAgentsImageBlockSourceUnionParam:
  6583  		return vt.GetMediaType()
  6584  	case *BetaManagedAgentsDocumentBlockSourceUnionParam:
  6585  		return vt.GetMediaType()
  6586  	}
  6587  	return nil
  6588  }
  6589  
  6590  // Returns a pointer to the underlying variant's property, if present.
  6591  func (u betaManagedAgentsUserCustomToolResultEventParamsContentUnionSource) GetType() *string {
  6592  	switch vt := u.any.(type) {
  6593  	case *BetaManagedAgentsImageBlockSourceUnionParam:
  6594  		return vt.GetType()
  6595  	case *BetaManagedAgentsDocumentBlockSourceUnionParam:
  6596  		return vt.GetType()
  6597  	}
  6598  	return nil
  6599  }
  6600  
  6601  // Returns a pointer to the underlying variant's property, if present.
  6602  func (u betaManagedAgentsUserCustomToolResultEventParamsContentUnionSource) GetURL() *string {
  6603  	switch vt := u.any.(type) {
  6604  	case *BetaManagedAgentsImageBlockSourceUnionParam:
  6605  		return vt.GetURL()
  6606  	case *BetaManagedAgentsDocumentBlockSourceUnionParam:
  6607  		return vt.GetURL()
  6608  	}
  6609  	return nil
  6610  }
  6611  
  6612  // Returns a pointer to the underlying variant's property, if present.
  6613  func (u betaManagedAgentsUserCustomToolResultEventParamsContentUnionSource) GetFileID() *string {
  6614  	switch vt := u.any.(type) {
  6615  	case *BetaManagedAgentsImageBlockSourceUnionParam:
  6616  		return vt.GetFileID()
  6617  	case *BetaManagedAgentsDocumentBlockSourceUnionParam:
  6618  		return vt.GetFileID()
  6619  	}
  6620  	return nil
  6621  }
  6622  
  6623  func init() {
  6624  	apijson.RegisterUnion[BetaManagedAgentsUserCustomToolResultEventParamsContentUnion](
  6625  		"type",
  6626  		apijson.Discriminator[BetaManagedAgentsTextBlockParam]("text"),
  6627  		apijson.Discriminator[BetaManagedAgentsImageBlockParam]("image"),
  6628  		apijson.Discriminator[BetaManagedAgentsDocumentBlockParam]("document"),
  6629  		apijson.Discriminator[BetaManagedAgentsSearchResultBlockParam]("search_result"),
  6630  	)
  6631  }
  6632  
  6633  // Echo of a `user.define_outcome` input event. Carries the server-generated
  6634  // `outcome_id` that subsequent `span.outcome_evaluation_*` events reference.
  6635  type BetaManagedAgentsUserDefineOutcomeEvent struct {
  6636  	// Unique identifier for this event.
  6637  	ID string `json:"id" api:"required"`
  6638  	// What the agent should produce. Copied from the input event.
  6639  	Description string `json:"description" api:"required"`
  6640  	// Evaluate-then-revise cycles before giving up. Default 3, max 20.
  6641  	MaxIterations int64 `json:"max_iterations" api:"required"`
  6642  	// Server-generated `outc_` ID for this outcome. Referenced by
  6643  	// `span.outcome_evaluation_*` events and the session's `outcome_evaluations` list.
  6644  	OutcomeID string `json:"outcome_id" api:"required"`
  6645  	// A timestamp in RFC 3339 format
  6646  	ProcessedAt time.Time `json:"processed_at" api:"required" format:"date-time"`
  6647  	// Rubric for grading the quality of an outcome.
  6648  	Rubric BetaManagedAgentsUserDefineOutcomeEventRubricUnion `json:"rubric" api:"required"`
  6649  	// Any of "user.define_outcome".
  6650  	Type BetaManagedAgentsUserDefineOutcomeEventType `json:"type" api:"required"`
  6651  	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
  6652  	JSON struct {
  6653  		ID            respjson.Field
  6654  		Description   respjson.Field
  6655  		MaxIterations respjson.Field
  6656  		OutcomeID     respjson.Field
  6657  		ProcessedAt   respjson.Field
  6658  		Rubric        respjson.Field
  6659  		Type          respjson.Field
  6660  		ExtraFields   map[string]respjson.Field
  6661  		raw           string
  6662  	} `json:"-"`
  6663  }
  6664  
  6665  // Returns the unmodified JSON received from the API
  6666  func (r BetaManagedAgentsUserDefineOutcomeEvent) RawJSON() string { return r.JSON.raw }
  6667  func (r *BetaManagedAgentsUserDefineOutcomeEvent) UnmarshalJSON(data []byte) error {
  6668  	return apijson.UnmarshalRoot(data, r)
  6669  }
  6670  
  6671  // BetaManagedAgentsUserDefineOutcomeEventRubricUnion contains all possible
  6672  // properties and values from [BetaManagedAgentsFileRubric],
  6673  // [BetaManagedAgentsTextRubric].
  6674  //
  6675  // Use the [BetaManagedAgentsUserDefineOutcomeEventRubricUnion.AsAny] method to
  6676  // switch on the variant.
  6677  //
  6678  // Use the methods beginning with 'As' to cast the union to one of its variants.
  6679  type BetaManagedAgentsUserDefineOutcomeEventRubricUnion struct {
  6680  	// This field is from variant [BetaManagedAgentsFileRubric].
  6681  	FileID string `json:"file_id"`
  6682  	// Any of "file", "text".
  6683  	Type string `json:"type"`
  6684  	// This field is from variant [BetaManagedAgentsTextRubric].
  6685  	Content string `json:"content"`
  6686  	JSON    struct {
  6687  		FileID  respjson.Field
  6688  		Type    respjson.Field
  6689  		Content respjson.Field
  6690  		raw     string
  6691  	} `json:"-"`
  6692  }
  6693  
  6694  // anyBetaManagedAgentsUserDefineOutcomeEventRubric is implemented by each variant
  6695  // of [BetaManagedAgentsUserDefineOutcomeEventRubricUnion] to add type safety for
  6696  // the return type of [BetaManagedAgentsUserDefineOutcomeEventRubricUnion.AsAny]
  6697  type anyBetaManagedAgentsUserDefineOutcomeEventRubric interface {
  6698  	implBetaManagedAgentsUserDefineOutcomeEventRubricUnion()
  6699  }
  6700  
  6701  func (BetaManagedAgentsFileRubric) implBetaManagedAgentsUserDefineOutcomeEventRubricUnion() {}
  6702  func (BetaManagedAgentsTextRubric) implBetaManagedAgentsUserDefineOutcomeEventRubricUnion() {}
  6703  
  6704  // Use the following switch statement to find the correct variant
  6705  //
  6706  //	switch variant := BetaManagedAgentsUserDefineOutcomeEventRubricUnion.AsAny().(type) {
  6707  //	case anthropic.BetaManagedAgentsFileRubric:
  6708  //	case anthropic.BetaManagedAgentsTextRubric:
  6709  //	default:
  6710  //	  fmt.Errorf("no variant present")
  6711  //	}
  6712  func (u BetaManagedAgentsUserDefineOutcomeEventRubricUnion) AsAny() anyBetaManagedAgentsUserDefineOutcomeEventRubric {
  6713  	switch u.Type {
  6714  	case "file":
  6715  		return u.AsFile()
  6716  	case "text":
  6717  		return u.AsText()
  6718  	}
  6719  	return nil
  6720  }
  6721  
  6722  func (u BetaManagedAgentsUserDefineOutcomeEventRubricUnion) AsFile() (v BetaManagedAgentsFileRubric) {
  6723  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  6724  	return
  6725  }
  6726  
  6727  func (u BetaManagedAgentsUserDefineOutcomeEventRubricUnion) AsText() (v BetaManagedAgentsTextRubric) {
  6728  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  6729  	return
  6730  }
  6731  
  6732  // Returns the unmodified JSON received from the API
  6733  func (u BetaManagedAgentsUserDefineOutcomeEventRubricUnion) RawJSON() string { return u.JSON.raw }
  6734  
  6735  func (r *BetaManagedAgentsUserDefineOutcomeEventRubricUnion) UnmarshalJSON(data []byte) error {
  6736  	return apijson.UnmarshalRoot(data, r)
  6737  }
  6738  
  6739  type BetaManagedAgentsUserDefineOutcomeEventType string
  6740  
  6741  const (
  6742  	BetaManagedAgentsUserDefineOutcomeEventTypeUserDefineOutcome BetaManagedAgentsUserDefineOutcomeEventType = "user.define_outcome"
  6743  )
  6744  
  6745  // Parameters for defining an outcome the agent should work toward. The agent
  6746  // begins work on receipt.
  6747  //
  6748  // The properties Description, Rubric, Type are required.
  6749  type BetaManagedAgentsUserDefineOutcomeEventParams struct {
  6750  	// What the agent should produce. This is the task specification.
  6751  	Description string `json:"description" api:"required"`
  6752  	// Rubric for grading the quality of an outcome.
  6753  	Rubric BetaManagedAgentsUserDefineOutcomeEventParamsRubricUnion `json:"rubric,omitzero" api:"required"`
  6754  	// Any of "user.define_outcome".
  6755  	Type BetaManagedAgentsUserDefineOutcomeEventParamsType `json:"type,omitzero" api:"required"`
  6756  	// Eval→revision cycles before giving up. Default 3, max 20.
  6757  	MaxIterations param.Opt[int64] `json:"max_iterations,omitzero"`
  6758  	paramObj
  6759  }
  6760  
  6761  func (r BetaManagedAgentsUserDefineOutcomeEventParams) MarshalJSON() (data []byte, err error) {
  6762  	type shadow BetaManagedAgentsUserDefineOutcomeEventParams
  6763  	return param.MarshalObject(r, (*shadow)(&r))
  6764  }
  6765  func (r *BetaManagedAgentsUserDefineOutcomeEventParams) UnmarshalJSON(data []byte) error {
  6766  	return apijson.UnmarshalRoot(data, r)
  6767  }
  6768  
  6769  // Only one field can be non-zero.
  6770  //
  6771  // Use [param.IsOmitted] to confirm if a field is set.
  6772  type BetaManagedAgentsUserDefineOutcomeEventParamsRubricUnion struct {
  6773  	OfFile *BetaManagedAgentsFileRubricParams `json:",omitzero,inline"`
  6774  	OfText *BetaManagedAgentsTextRubricParams `json:",omitzero,inline"`
  6775  	paramUnion
  6776  }
  6777  
  6778  func (u BetaManagedAgentsUserDefineOutcomeEventParamsRubricUnion) MarshalJSON() ([]byte, error) {
  6779  	return param.MarshalUnion(u, u.OfFile, u.OfText)
  6780  }
  6781  func (u *BetaManagedAgentsUserDefineOutcomeEventParamsRubricUnion) UnmarshalJSON(data []byte) error {
  6782  	return apijson.UnmarshalRoot(data, u)
  6783  }
  6784  
  6785  func (u *BetaManagedAgentsUserDefineOutcomeEventParamsRubricUnion) asAny() any {
  6786  	if !param.IsOmitted(u.OfFile) {
  6787  		return u.OfFile
  6788  	} else if !param.IsOmitted(u.OfText) {
  6789  		return u.OfText
  6790  	}
  6791  	return nil
  6792  }
  6793  
  6794  // Returns a pointer to the underlying variant's property, if present.
  6795  func (u BetaManagedAgentsUserDefineOutcomeEventParamsRubricUnion) GetFileID() *string {
  6796  	if vt := u.OfFile; vt != nil {
  6797  		return &vt.FileID
  6798  	}
  6799  	return nil
  6800  }
  6801  
  6802  // Returns a pointer to the underlying variant's property, if present.
  6803  func (u BetaManagedAgentsUserDefineOutcomeEventParamsRubricUnion) GetContent() *string {
  6804  	if vt := u.OfText; vt != nil {
  6805  		return &vt.Content
  6806  	}
  6807  	return nil
  6808  }
  6809  
  6810  // Returns a pointer to the underlying variant's property, if present.
  6811  func (u BetaManagedAgentsUserDefineOutcomeEventParamsRubricUnion) GetType() *string {
  6812  	if vt := u.OfFile; vt != nil {
  6813  		return (*string)(&vt.Type)
  6814  	} else if vt := u.OfText; vt != nil {
  6815  		return (*string)(&vt.Type)
  6816  	}
  6817  	return nil
  6818  }
  6819  
  6820  func init() {
  6821  	apijson.RegisterUnion[BetaManagedAgentsUserDefineOutcomeEventParamsRubricUnion](
  6822  		"type",
  6823  		apijson.Discriminator[BetaManagedAgentsFileRubricParams]("file"),
  6824  		apijson.Discriminator[BetaManagedAgentsTextRubricParams]("text"),
  6825  	)
  6826  }
  6827  
  6828  type BetaManagedAgentsUserDefineOutcomeEventParamsType string
  6829  
  6830  const (
  6831  	BetaManagedAgentsUserDefineOutcomeEventParamsTypeUserDefineOutcome BetaManagedAgentsUserDefineOutcomeEventParamsType = "user.define_outcome"
  6832  )
  6833  
  6834  // An interrupt event that pauses agent execution and returns control to the user.
  6835  type BetaManagedAgentsUserInterruptEvent struct {
  6836  	// Unique identifier for this event.
  6837  	ID string `json:"id" api:"required"`
  6838  	// Any of "user.interrupt".
  6839  	Type BetaManagedAgentsUserInterruptEventType `json:"type" api:"required"`
  6840  	// A timestamp in RFC 3339 format
  6841  	ProcessedAt time.Time `json:"processed_at" api:"nullable" format:"date-time"`
  6842  	// If absent, interrupts every non-archived thread in a multiagent session (or the
  6843  	// primary alone in a single-agent session). If present, interrupts only the named
  6844  	// thread.
  6845  	SessionThreadID string `json:"session_thread_id" api:"nullable"`
  6846  	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
  6847  	JSON struct {
  6848  		ID              respjson.Field
  6849  		Type            respjson.Field
  6850  		ProcessedAt     respjson.Field
  6851  		SessionThreadID respjson.Field
  6852  		ExtraFields     map[string]respjson.Field
  6853  		raw             string
  6854  	} `json:"-"`
  6855  }
  6856  
  6857  // Returns the unmodified JSON received from the API
  6858  func (r BetaManagedAgentsUserInterruptEvent) RawJSON() string { return r.JSON.raw }
  6859  func (r *BetaManagedAgentsUserInterruptEvent) UnmarshalJSON(data []byte) error {
  6860  	return apijson.UnmarshalRoot(data, r)
  6861  }
  6862  
  6863  type BetaManagedAgentsUserInterruptEventType string
  6864  
  6865  const (
  6866  	BetaManagedAgentsUserInterruptEventTypeUserInterrupt BetaManagedAgentsUserInterruptEventType = "user.interrupt"
  6867  )
  6868  
  6869  // Parameters for sending an interrupt to pause the agent.
  6870  //
  6871  // The property Type is required.
  6872  type BetaManagedAgentsUserInterruptEventParams struct {
  6873  	// Any of "user.interrupt".
  6874  	Type BetaManagedAgentsUserInterruptEventParamsType `json:"type,omitzero" api:"required"`
  6875  	// If absent, interrupts every non-archived thread in a multiagent session (or the
  6876  	// primary alone in a single-agent session). If present, interrupts only the named
  6877  	// thread.
  6878  	SessionThreadID param.Opt[string] `json:"session_thread_id,omitzero"`
  6879  	paramObj
  6880  }
  6881  
  6882  func (r BetaManagedAgentsUserInterruptEventParams) MarshalJSON() (data []byte, err error) {
  6883  	type shadow BetaManagedAgentsUserInterruptEventParams
  6884  	return param.MarshalObject(r, (*shadow)(&r))
  6885  }
  6886  func (r *BetaManagedAgentsUserInterruptEventParams) UnmarshalJSON(data []byte) error {
  6887  	return apijson.UnmarshalRoot(data, r)
  6888  }
  6889  
  6890  type BetaManagedAgentsUserInterruptEventParamsType string
  6891  
  6892  const (
  6893  	BetaManagedAgentsUserInterruptEventParamsTypeUserInterrupt BetaManagedAgentsUserInterruptEventParamsType = "user.interrupt"
  6894  )
  6895  
  6896  // A user message event in the session conversation.
  6897  type BetaManagedAgentsUserMessageEvent struct {
  6898  	// Unique identifier for this event.
  6899  	ID string `json:"id" api:"required"`
  6900  	// Array of content blocks comprising the user message.
  6901  	Content []BetaManagedAgentsUserMessageEventContentUnion `json:"content" api:"required"`
  6902  	// Any of "user.message".
  6903  	Type BetaManagedAgentsUserMessageEventType `json:"type" api:"required"`
  6904  	// A timestamp in RFC 3339 format
  6905  	ProcessedAt time.Time `json:"processed_at" api:"nullable" format:"date-time"`
  6906  	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
  6907  	JSON struct {
  6908  		ID          respjson.Field
  6909  		Content     respjson.Field
  6910  		Type        respjson.Field
  6911  		ProcessedAt respjson.Field
  6912  		ExtraFields map[string]respjson.Field
  6913  		raw         string
  6914  	} `json:"-"`
  6915  }
  6916  
  6917  // Returns the unmodified JSON received from the API
  6918  func (r BetaManagedAgentsUserMessageEvent) RawJSON() string { return r.JSON.raw }
  6919  func (r *BetaManagedAgentsUserMessageEvent) UnmarshalJSON(data []byte) error {
  6920  	return apijson.UnmarshalRoot(data, r)
  6921  }
  6922  
  6923  // BetaManagedAgentsUserMessageEventContentUnion contains all possible properties
  6924  // and values from [BetaManagedAgentsTextBlock], [BetaManagedAgentsImageBlock],
  6925  // [BetaManagedAgentsDocumentBlock], [BetaManagedAgentsRedactedBlock].
  6926  //
  6927  // Use the [BetaManagedAgentsUserMessageEventContentUnion.AsAny] method to switch
  6928  // on the variant.
  6929  //
  6930  // Use the methods beginning with 'As' to cast the union to one of its variants.
  6931  type BetaManagedAgentsUserMessageEventContentUnion struct {
  6932  	// This field is from variant [BetaManagedAgentsTextBlock].
  6933  	Text string `json:"text"`
  6934  	// Any of "text", "image", "document", "redacted".
  6935  	Type string `json:"type"`
  6936  	// This field is a union of [BetaManagedAgentsImageBlockSourceUnion],
  6937  	// [BetaManagedAgentsDocumentBlockSourceUnion]
  6938  	Source BetaManagedAgentsUserMessageEventContentUnionSource `json:"source"`
  6939  	// This field is from variant [BetaManagedAgentsDocumentBlock].
  6940  	Context string `json:"context"`
  6941  	// This field is from variant [BetaManagedAgentsDocumentBlock].
  6942  	Title string `json:"title"`
  6943  	JSON  struct {
  6944  		Text    respjson.Field
  6945  		Type    respjson.Field
  6946  		Source  respjson.Field
  6947  		Context respjson.Field
  6948  		Title   respjson.Field
  6949  		raw     string
  6950  	} `json:"-"`
  6951  }
  6952  
  6953  // anyBetaManagedAgentsUserMessageEventContent is implemented by each variant of
  6954  // [BetaManagedAgentsUserMessageEventContentUnion] to add type safety for the
  6955  // return type of [BetaManagedAgentsUserMessageEventContentUnion.AsAny]
  6956  type anyBetaManagedAgentsUserMessageEventContent interface {
  6957  	implBetaManagedAgentsUserMessageEventContentUnion()
  6958  }
  6959  
  6960  func (BetaManagedAgentsTextBlock) implBetaManagedAgentsUserMessageEventContentUnion()     {}
  6961  func (BetaManagedAgentsImageBlock) implBetaManagedAgentsUserMessageEventContentUnion()    {}
  6962  func (BetaManagedAgentsDocumentBlock) implBetaManagedAgentsUserMessageEventContentUnion() {}
  6963  func (BetaManagedAgentsRedactedBlock) implBetaManagedAgentsUserMessageEventContentUnion() {}
  6964  
  6965  // Use the following switch statement to find the correct variant
  6966  //
  6967  //	switch variant := BetaManagedAgentsUserMessageEventContentUnion.AsAny().(type) {
  6968  //	case anthropic.BetaManagedAgentsTextBlock:
  6969  //	case anthropic.BetaManagedAgentsImageBlock:
  6970  //	case anthropic.BetaManagedAgentsDocumentBlock:
  6971  //	case anthropic.BetaManagedAgentsRedactedBlock:
  6972  //	default:
  6973  //	  fmt.Errorf("no variant present")
  6974  //	}
  6975  func (u BetaManagedAgentsUserMessageEventContentUnion) AsAny() anyBetaManagedAgentsUserMessageEventContent {
  6976  	switch u.Type {
  6977  	case "text":
  6978  		return u.AsText()
  6979  	case "image":
  6980  		return u.AsImage()
  6981  	case "document":
  6982  		return u.AsDocument()
  6983  	case "redacted":
  6984  		return u.AsRedacted()
  6985  	}
  6986  	return nil
  6987  }
  6988  
  6989  func (u BetaManagedAgentsUserMessageEventContentUnion) AsText() (v BetaManagedAgentsTextBlock) {
  6990  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  6991  	return
  6992  }
  6993  
  6994  func (u BetaManagedAgentsUserMessageEventContentUnion) AsImage() (v BetaManagedAgentsImageBlock) {
  6995  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  6996  	return
  6997  }
  6998  
  6999  func (u BetaManagedAgentsUserMessageEventContentUnion) AsDocument() (v BetaManagedAgentsDocumentBlock) {
  7000  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  7001  	return
  7002  }
  7003  
  7004  func (u BetaManagedAgentsUserMessageEventContentUnion) AsRedacted() (v BetaManagedAgentsRedactedBlock) {
  7005  	apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
  7006  	return
  7007  }
  7008  
  7009  // Returns the unmodified JSON received from the API
  7010  func (u BetaManagedAgentsUserMessageEventContentUnion) RawJSON() string { return u.JSON.raw }
  7011  
  7012  func (r *BetaManagedAgentsUserMessageEventContentUnion) UnmarshalJSON(data []byte) error {
  7013  	return apijson.UnmarshalRoot(data, r)
  7014  }
  7015  
  7016  // BetaManagedAgentsUserMessageEventContentUnionSource is an implicit subunion of
  7017  // [BetaManagedAgentsUserMessageEventContentUnion].
  7018  // BetaManagedAgentsUserMessageEventContentUnionSource provides convenient access
  7019  // to the sub-properties of the union.
  7020  //
  7021  // For type safety it is recommended to directly use a variant of the
  7022  // [BetaManagedAgentsUserMessageEventContentUnion].
  7023  type BetaManagedAgentsUserMessageEventContentUnionSource struct {
  7024  	Data      string `json:"data"`
  7025  	MediaType string `json:"media_type"`
  7026  	Type      string `json:"type"`
  7027  	URL       string `json:"url"`
  7028  	FileID    string `json:"file_id"`
  7029  	JSON      struct {
  7030  		Data      respjson.Field
  7031  		MediaType respjson.Field
  7032  		Type      respjson.Field
  7033  		URL       respjson.Field
  7034  		FileID    respjson.Field
  7035  		raw       string
  7036  	} `json:"-"`
  7037  }
  7038  
  7039  func (r *BetaManagedAgentsUserMessageEventContentUnionSource) UnmarshalJSON(data []byte) error {
  7040  	return apijson.UnmarshalRoot(data, r)
  7041  }
  7042  
  7043  type BetaManagedAgentsUserMessageEventType string
  7044  
  7045  const (
  7046  	BetaManagedAgentsUserMessageEventTypeUserMessage BetaManagedAgentsUserMessageEventType = "user.message"
  7047  )
  7048  
  7049  // Parameters for sending a user message to the session.
  7050  //
  7051  // The properties Content, Type are required.
  7052  type BetaManagedAgentsUserMessageEventParams struct {
  7053  	// Array of content blocks for the user message.
  7054  	Content []BetaManagedAgentsUserMessageEventParamsContentUnion `json:"content,omitzero" api:"required"`
  7055  	// Any of "user.message".
  7056  	Type BetaManagedAgentsUserMessageEventParamsType `json:"type,omitzero" api:"required"`
  7057  	paramObj
  7058  }
  7059  
  7060  func (r BetaManagedAgentsUserMessageEventParams) MarshalJSON() (data []byte, err error) {
  7061  	type shadow BetaManagedAgentsUserMessageEventParams
  7062  	return param.MarshalObject(r, (*shadow)(&r))
  7063  }
  7064  func (r *BetaManagedAgentsUserMessageEventParams) UnmarshalJSON(data []byte) error {
  7065  	return apijson.UnmarshalRoot(data, r)
  7066  }
  7067  
  7068  // Only one field can be non-zero.
  7069  //
  7070  // Use [param.IsOmitted] to confirm if a field is set.
  7071  type BetaManagedAgentsUserMessageEventParamsContentUnion struct {
  7072  	OfText     *BetaManagedAgentsTextBlockParam     `json:",omitzero,inline"`
  7073  	OfImage    *BetaManagedAgentsImageBlockParam    `json:",omitzero,inline"`
  7074  	OfDocument *BetaManagedAgentsDocumentBlockParam `json:",omitzero,inline"`
  7075  	OfRedacted *BetaManagedAgentsRedactedBlockParam `json:",omitzero,inline"`
  7076  	paramUnion
  7077  }
  7078  
  7079  func (u BetaManagedAgentsUserMessageEventParamsContentUnion) MarshalJSON() ([]byte, error) {
  7080  	return param.MarshalUnion(u, u.OfText, u.OfImage, u.OfDocument, u.OfRedacted)
  7081  }
  7082  func (u *BetaManagedAgentsUserMessageEventParamsContentUnion) UnmarshalJSON(data []byte) error {
  7083  	return apijson.UnmarshalRoot(data, u)
  7084  }
  7085  
  7086  func (u *BetaManagedAgentsUserMessageEventParamsContentUnion) asAny() any {
  7087  	if !param.IsOmitted(u.OfText) {
  7088  		return u.OfText
  7089  	} else if !param.IsOmitted(u.OfImage) {
  7090  		return u.OfImage
  7091  	} else if !param.IsOmitted(u.OfDocument) {
  7092  		return u.OfDocument
  7093  	} else if !param.IsOmitted(u.OfRedacted) {
  7094  		return u.OfRedacted
  7095  	}
  7096  	return nil
  7097  }
  7098  
  7099  // Returns a pointer to the underlying variant's property, if present.
  7100  func (u BetaManagedAgentsUserMessageEventParamsContentUnion) GetText() *string {
  7101  	if vt := u.OfText; vt != nil {
  7102  		return &vt.Text
  7103  	}
  7104  	return nil
  7105  }
  7106  
  7107  // Returns a pointer to the underlying variant's property, if present.
  7108  func (u BetaManagedAgentsUserMessageEventParamsContentUnion) GetContext() *string {
  7109  	if vt := u.OfDocument; vt != nil && vt.Context.Valid() {
  7110  		return &vt.Context.Value
  7111  	}
  7112  	return nil
  7113  }
  7114  
  7115  // Returns a pointer to the underlying variant's property, if present.
  7116  func (u BetaManagedAgentsUserMessageEventParamsContentUnion) GetTitle() *string {
  7117  	if vt := u.OfDocument; vt != nil && vt.Title.Valid() {
  7118  		return &vt.Title.Value
  7119  	}
  7120  	return nil
  7121  }
  7122  
  7123  // Returns a pointer to the underlying variant's property, if present.
  7124  func (u BetaManagedAgentsUserMessageEventParamsContentUnion) GetType() *string {
  7125  	if vt := u.OfText; vt != nil {
  7126  		return (*string)(&vt.Type)
  7127  	} else if vt := u.OfImage; vt != nil {
  7128  		return (*string)(&vt.Type)
  7129  	} else if vt := u.OfDocument; vt != nil {
  7130  		return (*string)(&vt.Type)
  7131  	} else if vt := u.OfRedacted; vt != nil {
  7132  		return (*string)(&vt.Type)
  7133  	}
  7134  	return nil
  7135  }
  7136  
  7137  // Returns a subunion which exports methods to access subproperties
  7138  //
  7139  // Or use AsAny() to get the underlying value
  7140  func (u BetaManagedAgentsUserMessageEventParamsContentUnion) GetSource() (res betaManagedAgentsUserMessageEventParamsContentUnionSource) {
  7141  	if vt := u.OfImage; vt != nil {
  7142  		res.any = vt.Source.asAny()
  7143  	} else if vt := u.OfDocument; vt != nil {
  7144  		res.any = vt.Source.asAny()
  7145  	}
  7146  	return
  7147  }
  7148  
  7149  // Can have the runtime types [*BetaManagedAgentsBase64ImageSourceParam],
  7150  // [*BetaManagedAgentsURLImageSourceParam],
  7151  // [*BetaManagedAgentsFileImageSourceParam],
  7152  // [*BetaManagedAgentsBase64DocumentSourceParam],
  7153  // [*BetaManagedAgentsPlainTextDocumentSourceParam],
  7154  // [*BetaManagedAgentsURLDocumentSourceParam],
  7155  // [*BetaManagedAgentsFileDocumentSourceParam]
  7156  type betaManagedAgentsUserMessageEventParamsContentUnionSource struct{ any }
  7157  
  7158  // Use the following switch statement to get the type of the union:
  7159  //
  7160  //	switch u.AsAny().(type) {
  7161  //	case *anthropic.BetaManagedAgentsBase64ImageSourceParam:
  7162  //	case *anthropic.BetaManagedAgentsURLImageSourceParam:
  7163  //	case *anthropic.BetaManagedAgentsFileImageSourceParam:
  7164  //	case *anthropic.BetaManagedAgentsBase64DocumentSourceParam:
  7165  //	case *anthropic.BetaManagedAgentsPlainTextDocumentSourceParam:
  7166  //	case *anthropic.BetaManagedAgentsURLDocumentSourceParam:
  7167  //	case *anthropic.BetaManagedAgentsFileDocumentSourceParam:
  7168  //	default:
  7169  //	    fmt.Errorf("not present")
  7170  //	}
  7171  func (u betaManagedAgentsUserMessageEventParamsContentUnionSource) AsAny() any { return u.any }
  7172  
  7173  // Returns a pointer to the underlying variant's property, if present.
  7174  func (u betaManagedAgentsUserMessageEventParamsContentUnionSource) GetData() *string {
  7175  	switch vt := u.any.(type) {
  7176  	case *BetaManagedAgentsImageBlockSourceUnionParam:
  7177  		return vt.GetData()
  7178  	case *BetaManagedAgentsDocumentBlockSourceUnionParam:
  7179  		return vt.GetData()
  7180  	}
  7181  	return nil
  7182  }
  7183  
  7184  // Returns a pointer to the underlying variant's property, if present.
  7185  func (u betaManagedAgentsUserMessageEventParamsContentUnionSource) GetMediaType() *string {
  7186  	switch vt := u.any.(type) {
  7187  	case *BetaManagedAgentsImageBlockSourceUnionParam:
  7188  		return vt.GetMediaType()
  7189  	case *BetaManagedAgentsDocumentBlockSourceUnionParam:
  7190  		return vt.GetMediaType()
  7191  	}
  7192  	return nil
  7193  }
  7194  
  7195  // Returns a pointer to the underlying variant's property, if present.
  7196  func (u betaManagedAgentsUserMessageEventParamsContentUnionSource) GetType() *string {
  7197  	switch vt := u.any.(type) {
  7198  	case *BetaManagedAgentsImageBlockSourceUnionParam:
  7199  		return vt.GetType()
  7200  	case *BetaManagedAgentsDocumentBlockSourceUnionParam:
  7201  		return vt.GetType()
  7202  	}
  7203  	return nil
  7204  }
  7205  
  7206  // Returns a pointer to the underlying variant's property, if present.
  7207  func (u betaManagedAgentsUserMessageEventParamsContentUnionSource) GetURL() *string {
  7208  	switch vt := u.any.(type) {
  7209  	case *BetaManagedAgentsImageBlockSourceUnionParam:
  7210  		return vt.GetURL()
  7211  	case *BetaManagedAgentsDocumentBlockSourceUnionParam:
  7212  		return vt.GetURL()
  7213  	}
  7214  	return nil
  7215  }
  7216  
  7217  // Returns a pointer to the underlying variant's property, if present.
  7218  func (u betaManagedAgentsUserMessageEventParamsContentUnionSource) GetFileID() *string {
  7219  	switch vt := u.any.(type) {
  7220  	case *BetaManagedAgentsImageBlockSourceUnionParam:
  7221  		return vt.GetFileID()
  7222  	case *BetaManagedAgentsDocumentBlockSourceUnionParam:
  7223  		return vt.GetFileID()
  7224  	}
  7225  	return nil
  7226  }
  7227  
  7228  func init() {
  7229  	apijson.RegisterUnion[BetaManagedAgentsUserMessageEventParamsContentUnion](
  7230  		"type",
  7231  		apijson.Discriminator[BetaManagedAgentsTextBlockParam]("text"),
  7232  		apijson.Discriminator[BetaManagedAgentsImageBlockParam]("image"),
  7233  		apijson.Discriminator[BetaManagedAgentsDocumentBlockParam]("document"),
  7234  		apijson.Discriminator[BetaManagedAgentsRedactedBlockParam]("redacted"),
  7235  	)
  7236  }
  7237  
  7238  type BetaManagedAgentsUserMessageEventParamsType string
  7239  
  7240  const (
  7241  	BetaManagedAgentsUserMessageEventParamsTypeUserMessage BetaManagedAgentsUserMessageEventParamsType = "user.message"
  7242  )
  7243  
  7244  // A tool confirmation event that approves or denies a pending tool execution.
  7245  type BetaManagedAgentsUserToolConfirmationEvent struct {
  7246  	// Unique identifier for this event.
  7247  	ID string `json:"id" api:"required"`
  7248  	// UserToolConfirmationResult enum
  7249  	//
  7250  	// Any of "allow", "deny".
  7251  	Result BetaManagedAgentsUserToolConfirmationEventResult `json:"result" api:"required"`
  7252  	// The id of the `agent.tool_use` or `agent.mcp_tool_use` event this result
  7253  	// corresponds to, which can be found in the last `session.status_idle`
  7254  	// [event's](https://platform.claude.com/docs/en/api/beta/sessions/events/list#beta_managed_agents_session_requires_action.event_ids)
  7255  	// `stop_reason.event_ids` field.
  7256  	ToolUseID string `json:"tool_use_id" api:"required"`
  7257  	// Any of "user.tool_confirmation".
  7258  	Type BetaManagedAgentsUserToolConfirmationEventType `json:"type" api:"required"`
  7259  	// Optional message providing context for a 'deny' decision. Only allowed when
  7260  	// result is 'deny'.
  7261  	DenyMessage string `json:"deny_message" api:"nullable"`
  7262  	// A timestamp in RFC 3339 format
  7263  	ProcessedAt time.Time `json:"processed_at" api:"nullable" format:"date-time"`
  7264  	// When set, the confirmation routes to this subagent's thread rather than the
  7265  	// primary. Echo this from the `session_thread_id` on the `agent.tool_use` or
  7266  	// `agent.mcp_tool_use` event that prompted the approval.
  7267  	SessionThreadID string `json:"session_thread_id" api:"nullable"`
  7268  	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
  7269  	JSON struct {
  7270  		ID              respjson.Field
  7271  		Result          respjson.Field
  7272  		ToolUseID       respjson.Field
  7273  		Type            respjson.Field
  7274  		DenyMessage     respjson.Field
  7275  		ProcessedAt     respjson.Field
  7276  		SessionThreadID respjson.Field
  7277  		ExtraFields     map[string]respjson.Field
  7278  		raw             string
  7279  	} `json:"-"`
  7280  }
  7281  
  7282  // Returns the unmodified JSON received from the API
  7283  func (r BetaManagedAgentsUserToolConfirmationEvent) RawJSON() string { return r.JSON.raw }
  7284  func (r *BetaManagedAgentsUserToolConfirmationEvent) UnmarshalJSON(data []byte) error {
  7285  	return apijson.UnmarshalRoot(data, r)
  7286  }
  7287  
  7288  // UserToolConfirmationResult enum
  7289  type BetaManagedAgentsUserToolConfirmationEventResult string
  7290  
  7291  const (
  7292  	BetaManagedAgentsUserToolConfirmationEventResultAllow BetaManagedAgentsUserToolConfirmationEventResult = "allow"
  7293  	BetaManagedAgentsUserToolConfirmationEventResultDeny  BetaManagedAgentsUserToolConfirmationEventResult = "deny"
  7294  )
  7295  
  7296  type BetaManagedAgentsUserToolConfirmationEventType string
  7297  
  7298  const (
  7299  	BetaManagedAgentsUserToolConfirmationEventTypeUserToolConfirmation BetaManagedAgentsUserToolConfirmationEventType = "user.tool_confirmation"
  7300  )
  7301  
  7302  // Parameters for confirming or denying a tool execution request.
  7303  //
  7304  // The properties Result, ToolUseID, Type are required.
  7305  type BetaManagedAgentsUserToolConfirmationEventParams struct {
  7306  	// UserToolConfirmationResult enum
  7307  	//
  7308  	// Any of "allow", "deny".
  7309  	Result BetaManagedAgentsUserToolConfirmationEventParamsResult `json:"result,omitzero" api:"required"`
  7310  	// The id of the `agent.tool_use` or `agent.mcp_tool_use` event this result
  7311  	// corresponds to, which can be found in the last `session.status_idle`
  7312  	// [event's](https://platform.claude.com/docs/en/api/beta/sessions/events/list#beta_managed_agents_session_requires_action.event_ids)
  7313  	// `stop_reason.event_ids` field.
  7314  	ToolUseID string `json:"tool_use_id" api:"required"`
  7315  	// Any of "user.tool_confirmation".
  7316  	Type BetaManagedAgentsUserToolConfirmationEventParamsType `json:"type,omitzero" api:"required"`
  7317  	// Optional message providing context for a 'deny' decision. Only allowed when
  7318  	// result is 'deny'.
  7319  	DenyMessage param.Opt[string] `json:"deny_message,omitzero"`
  7320  	paramObj
  7321  }
  7322  
  7323  func (r BetaManagedAgentsUserToolConfirmationEventParams) MarshalJSON() (data []byte, err error) {
  7324  	type shadow BetaManagedAgentsUserToolConfirmationEventParams
  7325  	return param.MarshalObject(r, (*shadow)(&r))
  7326  }
  7327  func (r *BetaManagedAgentsUserToolConfirmationEventParams) UnmarshalJSON(data []byte) error {
  7328  	return apijson.UnmarshalRoot(data, r)
  7329  }
  7330  
  7331  // UserToolConfirmationResult enum
  7332  type BetaManagedAgentsUserToolConfirmationEventParamsResult string
  7333  
  7334  const (
  7335  	BetaManagedAgentsUserToolConfirmationEventParamsResultAllow BetaManagedAgentsUserToolConfirmationEventParamsResult = "allow"
  7336  	BetaManagedAgentsUserToolConfirmationEventParamsResultDeny  BetaManagedAgentsUserToolConfirmationEventParamsResult = "deny"
  7337  )
  7338  
  7339  type BetaManagedAgentsUserToolConfirmationEventParamsType string
  7340  
  7341  const (
  7342  	BetaManagedAgentsUserToolConfirmationEventParamsTypeUserToolConfirmation BetaManagedAgentsUserToolConfirmationEventParamsType = "user.tool_confirmation"
  7343  )
  7344  
  7345  // Parameters for providing the result of an agent-toolset tool execution. Only
  7346  // valid on `self_hosted` environments, where sandbox-routed tools are executed by
  7347  // the client rather than the server.
  7348  //
  7349  // The properties ToolUseID, Type are required.
  7350  type BetaManagedAgentsUserToolResultEventParams struct {
  7351  	// The id of the `agent.tool_use` event this result corresponds to, which can be
  7352  	// found in the last `session.status_idle`
  7353  	// [event's](https://platform.claude.com/docs/en/api/beta/sessions/events/list#beta_managed_agents_session_requires_action.event_ids)
  7354  	// `stop_reason.event_ids` field.
  7355  	ToolUseID string `json:"tool_use_id" api:"required"`
  7356  	// Any of "user.tool_result".
  7357  	Type BetaManagedAgentsUserToolResultEventParamsType `json:"type,omitzero" api:"required"`
  7358  	// Whether the tool execution resulted in an error.
  7359  	IsError param.Opt[bool] `json:"is_error,omitzero"`
  7360  	// The result content returned by the tool.
  7361  	Content []BetaManagedAgentsUserToolResultEventParamsContentUnion `json:"content,omitzero"`
  7362  	paramObj
  7363  }
  7364  
  7365  func (r BetaManagedAgentsUserToolResultEventParams) MarshalJSON() (data []byte, err error) {
  7366  	type shadow BetaManagedAgentsUserToolResultEventParams
  7367  	return param.MarshalObject(r, (*shadow)(&r))
  7368  }
  7369  func (r *BetaManagedAgentsUserToolResultEventParams) UnmarshalJSON(data []byte) error {
  7370  	return apijson.UnmarshalRoot(data, r)
  7371  }
  7372  
  7373  type BetaManagedAgentsUserToolResultEventParamsType string
  7374  
  7375  const (
  7376  	BetaManagedAgentsUserToolResultEventParamsTypeUserToolResult BetaManagedAgentsUserToolResultEventParamsType = "user.tool_result"
  7377  )
  7378  
  7379  // Only one field can be non-zero.
  7380  //
  7381  // Use [param.IsOmitted] to confirm if a field is set.
  7382  type BetaManagedAgentsUserToolResultEventParamsContentUnion struct {
  7383  	OfText         *BetaManagedAgentsTextBlockParam         `json:",omitzero,inline"`
  7384  	OfImage        *BetaManagedAgentsImageBlockParam        `json:",omitzero,inline"`
  7385  	OfDocument     *BetaManagedAgentsDocumentBlockParam     `json:",omitzero,inline"`
  7386  	OfSearchResult *BetaManagedAgentsSearchResultBlockParam `json:",omitzero,inline"`
  7387  	paramUnion
  7388  }
  7389  
  7390  func (u BetaManagedAgentsUserToolResultEventParamsContentUnion) MarshalJSON() ([]byte, error) {
  7391  	return param.MarshalUnion(u, u.OfText, u.OfImage, u.OfDocument, u.OfSearchResult)
  7392  }
  7393  func (u *BetaManagedAgentsUserToolResultEventParamsContentUnion) UnmarshalJSON(data []byte) error {
  7394  	return apijson.UnmarshalRoot(data, u)
  7395  }
  7396  
  7397  func (u *BetaManagedAgentsUserToolResultEventParamsContentUnion) asAny() any {
  7398  	if !param.IsOmitted(u.OfText) {
  7399  		return u.OfText
  7400  	} else if !param.IsOmitted(u.OfImage) {
  7401  		return u.OfImage
  7402  	} else if !param.IsOmitted(u.OfDocument) {
  7403  		return u.OfDocument
  7404  	} else if !param.IsOmitted(u.OfSearchResult) {
  7405  		return u.OfSearchResult
  7406  	}
  7407  	return nil
  7408  }
  7409  
  7410  // Returns a pointer to the underlying variant's property, if present.
  7411  func (u BetaManagedAgentsUserToolResultEventParamsContentUnion) GetText() *string {
  7412  	if vt := u.OfText; vt != nil {
  7413  		return &vt.Text
  7414  	}
  7415  	return nil
  7416  }
  7417  
  7418  // Returns a pointer to the underlying variant's property, if present.
  7419  func (u BetaManagedAgentsUserToolResultEventParamsContentUnion) GetContext() *string {
  7420  	if vt := u.OfDocument; vt != nil && vt.Context.Valid() {
  7421  		return &vt.Context.Value
  7422  	}
  7423  	return nil
  7424  }
  7425  
  7426  // Returns a pointer to the underlying variant's property, if present.
  7427  func (u BetaManagedAgentsUserToolResultEventParamsContentUnion) GetCitations() *BetaManagedAgentsSearchResultCitationsParam {
  7428  	if vt := u.OfSearchResult; vt != nil {
  7429  		return &vt.Citations
  7430  	}
  7431  	return nil
  7432  }
  7433  
  7434  // Returns a pointer to the underlying variant's property, if present.
  7435  func (u BetaManagedAgentsUserToolResultEventParamsContentUnion) GetContent() []BetaManagedAgentsSearchResultContentParam {
  7436  	if vt := u.OfSearchResult; vt != nil {
  7437  		return vt.Content
  7438  	}
  7439  	return nil
  7440  }
  7441  
  7442  // Returns a pointer to the underlying variant's property, if present.
  7443  func (u BetaManagedAgentsUserToolResultEventParamsContentUnion) GetType() *string {
  7444  	if vt := u.OfText; vt != nil {
  7445  		return (*string)(&vt.Type)
  7446  	} else if vt := u.OfImage; vt != nil {
  7447  		return (*string)(&vt.Type)
  7448  	} else if vt := u.OfDocument; vt != nil {
  7449  		return (*string)(&vt.Type)
  7450  	} else if vt := u.OfSearchResult; vt != nil {
  7451  		return (*string)(&vt.Type)
  7452  	}
  7453  	return nil
  7454  }
  7455  
  7456  // Returns a pointer to the underlying variant's property, if present.
  7457  func (u BetaManagedAgentsUserToolResultEventParamsContentUnion) GetTitle() *string {
  7458  	if vt := u.OfDocument; vt != nil && vt.Title.Valid() {
  7459  		return &vt.Title.Value
  7460  	} else if vt := u.OfSearchResult; vt != nil {
  7461  		return (*string)(&vt.Title)
  7462  	}
  7463  	return nil
  7464  }
  7465  
  7466  // Returns a subunion which exports methods to access subproperties
  7467  //
  7468  // Or use AsAny() to get the underlying value
  7469  func (u BetaManagedAgentsUserToolResultEventParamsContentUnion) GetSource() (res betaManagedAgentsUserToolResultEventParamsContentUnionSource) {
  7470  	if vt := u.OfImage; vt != nil {
  7471  		res.any = vt.Source.asAny()
  7472  	} else if vt := u.OfDocument; vt != nil {
  7473  		res.any = vt.Source.asAny()
  7474  	} else if vt := u.OfSearchResult; vt != nil {
  7475  		res.any = &vt.Source
  7476  	}
  7477  	return
  7478  }
  7479  
  7480  // Can have the runtime types [*BetaManagedAgentsBase64ImageSourceParam],
  7481  // [*BetaManagedAgentsURLImageSourceParam],
  7482  // [*BetaManagedAgentsFileImageSourceParam],
  7483  // [*BetaManagedAgentsBase64DocumentSourceParam],
  7484  // [*BetaManagedAgentsPlainTextDocumentSourceParam],
  7485  // [*BetaManagedAgentsURLDocumentSourceParam],
  7486  // [*BetaManagedAgentsFileDocumentSourceParam], [*string]
  7487  type betaManagedAgentsUserToolResultEventParamsContentUnionSource struct{ any }
  7488  
  7489  // Use the following switch statement to get the type of the union:
  7490  //
  7491  //	switch u.AsAny().(type) {
  7492  //	case *anthropic.BetaManagedAgentsBase64ImageSourceParam:
  7493  //	case *anthropic.BetaManagedAgentsURLImageSourceParam:
  7494  //	case *anthropic.BetaManagedAgentsFileImageSourceParam:
  7495  //	case *anthropic.BetaManagedAgentsBase64DocumentSourceParam:
  7496  //	case *anthropic.BetaManagedAgentsPlainTextDocumentSourceParam:
  7497  //	case *anthropic.BetaManagedAgentsURLDocumentSourceParam:
  7498  //	case *anthropic.BetaManagedAgentsFileDocumentSourceParam:
  7499  //	case *string:
  7500  //	default:
  7501  //	    fmt.Errorf("not present")
  7502  //	}
  7503  func (u betaManagedAgentsUserToolResultEventParamsContentUnionSource) AsAny() any { return u.any }
  7504  
  7505  // Returns a pointer to the underlying variant's property, if present.
  7506  func (u betaManagedAgentsUserToolResultEventParamsContentUnionSource) GetData() *string {
  7507  	switch vt := u.any.(type) {
  7508  	case *BetaManagedAgentsImageBlockSourceUnionParam:
  7509  		return vt.GetData()
  7510  	case *BetaManagedAgentsDocumentBlockSourceUnionParam:
  7511  		return vt.GetData()
  7512  	}
  7513  	return nil
  7514  }
  7515  
  7516  // Returns a pointer to the underlying variant's property, if present.
  7517  func (u betaManagedAgentsUserToolResultEventParamsContentUnionSource) GetMediaType() *string {
  7518  	switch vt := u.any.(type) {
  7519  	case *BetaManagedAgentsImageBlockSourceUnionParam:
  7520  		return vt.GetMediaType()
  7521  	case *BetaManagedAgentsDocumentBlockSourceUnionParam:
  7522  		return vt.GetMediaType()
  7523  	}
  7524  	return nil
  7525  }
  7526  
  7527  // Returns a pointer to the underlying variant's property, if present.
  7528  func (u betaManagedAgentsUserToolResultEventParamsContentUnionSource) GetType() *string {
  7529  	switch vt := u.any.(type) {
  7530  	case *BetaManagedAgentsImageBlockSourceUnionParam:
  7531  		return vt.GetType()
  7532  	case *BetaManagedAgentsDocumentBlockSourceUnionParam:
  7533  		return vt.GetType()
  7534  	}
  7535  	return nil
  7536  }
  7537  
  7538  // Returns a pointer to the underlying variant's property, if present.
  7539  func (u betaManagedAgentsUserToolResultEventParamsContentUnionSource) GetURL() *string {
  7540  	switch vt := u.any.(type) {
  7541  	case *BetaManagedAgentsImageBlockSourceUnionParam:
  7542  		return vt.GetURL()
  7543  	case *BetaManagedAgentsDocumentBlockSourceUnionParam:
  7544  		return vt.GetURL()
  7545  	}
  7546  	return nil
  7547  }
  7548  
  7549  // Returns a pointer to the underlying variant's property, if present.
  7550  func (u betaManagedAgentsUserToolResultEventParamsContentUnionSource) GetFileID() *string {
  7551  	switch vt := u.any.(type) {
  7552  	case *BetaManagedAgentsImageBlockSourceUnionParam:
  7553  		return vt.GetFileID()
  7554  	case *BetaManagedAgentsDocumentBlockSourceUnionParam:
  7555  		return vt.GetFileID()
  7556  	}
  7557  	return nil
  7558  }
  7559  
  7560  func init() {
  7561  	apijson.RegisterUnion[BetaManagedAgentsUserToolResultEventParamsContentUnion](
  7562  		"type",
  7563  		apijson.Discriminator[BetaManagedAgentsTextBlockParam]("text"),
  7564  		apijson.Discriminator[BetaManagedAgentsImageBlockParam]("image"),
  7565  		apijson.Discriminator[BetaManagedAgentsDocumentBlockParam]("document"),
  7566  		apijson.Discriminator[BetaManagedAgentsSearchResultBlockParam]("search_result"),
  7567  	)
  7568  }
  7569  
  7570  type BetaSessionEventListParams struct {
  7571  	// Return events created after this time (exclusive). Compared against the event's
  7572  	// `processed_at` value.
  7573  	CreatedAtGt param.Opt[time.Time] `query:"created_at[gt],omitzero" format:"date-time" json:"-"`
  7574  	// Return events created at or after this time (inclusive). Compared against the
  7575  	// event's `processed_at` value.
  7576  	CreatedAtGte param.Opt[time.Time] `query:"created_at[gte],omitzero" format:"date-time" json:"-"`
  7577  	// Return events created before this time (exclusive). Compared against the event's
  7578  	// `processed_at` value.
  7579  	CreatedAtLt param.Opt[time.Time] `query:"created_at[lt],omitzero" format:"date-time" json:"-"`
  7580  	// Return events created at or before this time (inclusive). Compared against the
  7581  	// event's `processed_at` value.
  7582  	CreatedAtLte param.Opt[time.Time] `query:"created_at[lte],omitzero" format:"date-time" json:"-"`
  7583  	// Query parameter for limit
  7584  	Limit param.Opt[int64] `query:"limit,omitzero" json:"-"`
  7585  	// Opaque pagination cursor from a previous response's `next_page`.
  7586  	Page        param.Opt[string] `query:"page,omitzero" json:"-"`
  7587  	WorkspaceID param.Opt[string] `header:"anthropic-workspace-id,omitzero" json:"-"`
  7588  	// Sort direction for results, ordered by the event's `processed_at`. Defaults to
  7589  	// `asc` (chronological).
  7590  	//
  7591  	// Any of "asc", "desc".
  7592  	Order BetaSessionEventListParamsOrder `query:"order,omitzero" json:"-"`
  7593  	// Filter by event type. Values match the `type` field on returned events (for
  7594  	// example, `user.message` or `agent.tool_use`). Omit to return all event types.
  7595  	Types []string `query:"types,omitzero" json:"-"`
  7596  	// Optional header to specify the beta version(s) you want to use.
  7597  	Betas []AnthropicBeta `header:"anthropic-beta,omitzero" json:"-"`
  7598  	paramObj
  7599  }
  7600  
  7601  // URLQuery serializes [BetaSessionEventListParams]'s query parameters as
  7602  // `url.Values`.
  7603  func (r BetaSessionEventListParams) URLQuery() (v url.Values, err error) {
  7604  	return apiquery.MarshalWithSettings(r, apiquery.QuerySettings{
  7605  		ArrayFormat:  apiquery.ArrayQueryFormatBrackets,
  7606  		NestedFormat: apiquery.NestedQueryFormatBrackets,
  7607  	})
  7608  }
  7609  
  7610  // Sort direction for results, ordered by the event's `processed_at`. Defaults to
  7611  // `asc` (chronological).
  7612  type BetaSessionEventListParamsOrder string
  7613  
  7614  const (
  7615  	BetaSessionEventListParamsOrderAsc  BetaSessionEventListParamsOrder = "asc"
  7616  	BetaSessionEventListParamsOrderDesc BetaSessionEventListParamsOrder = "desc"
  7617  )
  7618  
  7619  type BetaSessionEventSendParams struct {
  7620  	// Events to send to the `session`.
  7621  	Events      []BetaManagedAgentsEventParamsUnion `json:"events,omitzero" api:"required"`
  7622  	WorkspaceID param.Opt[string]                   `header:"anthropic-workspace-id,omitzero" json:"-"`
  7623  	// Optional header to specify the beta version(s) you want to use.
  7624  	Betas []AnthropicBeta `header:"anthropic-beta,omitzero" json:"-"`
  7625  	paramObj
  7626  }
  7627  
  7628  func (r BetaSessionEventSendParams) MarshalJSON() (data []byte, err error) {
  7629  	type shadow BetaSessionEventSendParams
  7630  	return param.MarshalObject(r, (*shadow)(&r))
  7631  }
  7632  func (r *BetaSessionEventSendParams) UnmarshalJSON(data []byte) error {
  7633  	return apijson.UnmarshalRoot(data, r)
  7634  }
  7635  
  7636  type BetaSessionEventStreamParams struct {
  7637  	WorkspaceID param.Opt[string] `header:"anthropic-workspace-id,omitzero" json:"-"`
  7638  	// When set, this connection also receives streaming deltas (`event_start`,
  7639  	// `event_delta`) while an event is being produced, before the event itself
  7640  	// arrives. Deltas are best-effort; when the final event is produced it carries the
  7641  	// complete content. A model request that ends early (an error or interrupt)
  7642  	// produces no final event — its terminal `span.model_request_end` closes the
  7643  	// preview. Accepts one or more event types to preview and may be repeated:
  7644  	// `agent.message` streams `content_delta` fragments; `agent.thinking` is
  7645  	// start-only — a signal that the agent has begun extended thinking, concluded by
  7646  	// the `agent.thinking` event itself. Only previews of the requested event types
  7647  	// are sent.
  7648  	EventDeltas []BetaManagedAgentsDeltaType `query:"event_deltas,omitzero" json:"-"`
  7649  	// Optional header to specify the beta version(s) you want to use.
  7650  	Betas []AnthropicBeta `header:"anthropic-beta,omitzero" json:"-"`
  7651  	paramObj
  7652  }
  7653  
  7654  // URLQuery serializes [BetaSessionEventStreamParams]'s query parameters as
  7655  // `url.Values`.
  7656  func (r BetaSessionEventStreamParams) URLQuery() (v url.Values, err error) {
  7657  	return apiquery.MarshalWithSettings(r, apiquery.QuerySettings{
  7658  		ArrayFormat:  apiquery.ArrayQueryFormatBrackets,
  7659  		NestedFormat: apiquery.NestedQueryFormatBrackets,
  7660  	})
  7661  }