diff --git a/client.go b/client.go index e319115..19dfe13 100644 --- a/client.go +++ b/client.go @@ -1856,6 +1856,112 @@ func (c *Client) GetModelRecommendations(ctx context.Context, modelID string) (j return out, nil } +// ListModelsOptions controls query parameters for the ListModels endpoint. +type ListModelsOptions struct { + // Provider filters by provider name (e.g. "anthropic", "openai"). + Provider string + // SupportsToolUse filters to models with tool calling support. + SupportsToolUse *bool + // SupportsThinking filters to models with extended thinking support. + SupportsThinking *bool +} + +// ListModels lists all enabled LLM models grouped by provider. +func (c *Client) ListModels(ctx context.Context, opts ListModelsOptions) ([]ProviderGroupResponse, error) { + q := map[string]string{} + if opts.Provider != "" { + q["provider"] = opts.Provider + } + if opts.SupportsToolUse != nil { + q["supports_tool_use"] = fmt.Sprintf("%t", *opts.SupportsToolUse) + } + if opts.SupportsThinking != nil { + q["supports_thinking"] = fmt.Sprintf("%t", *opts.SupportsThinking) + } + var out []ProviderGroupResponse + if err := c.Do(ctx, http.MethodGet, "/models", q, nil, nil, &out); err != nil { + return nil, err + } + return out, nil +} + +// GetModel retrieves full details for a specific model. +func (c *Client) GetModel(ctx context.Context, modelID string) (*PromptModelResponse, error) { + var out PromptModelResponse + if err := c.Do(ctx, http.MethodGet, fmt.Sprintf("/models/%s/details", url.PathEscape(modelID)), nil, nil, nil, &out); err != nil { + return nil, err + } + return &out, nil +} + +// ── Model Playground Experiments ──────────────────────────────────────────── + +// ListExperimentsOptions controls query parameters for the ListExperiments endpoint. +type ListExperimentsOptions struct { + // Days is the look-back window in days (1-730, default 30). + Days int + // StartDate filters by start date (YYYY-MM-DD). + StartDate string + // EndDate filters by end date (YYYY-MM-DD). + EndDate string + // Limit is the maximum number of results. + Limit int + // Offset is the pagination offset. + Offset int +} + +// ListExperiments lists model playground experiments. +func (c *Client) ListExperiments(ctx context.Context, opts ListExperimentsOptions) (json.RawMessage, error) { + q := map[string]string{} + if opts.Days > 0 { + q["days"] = fmt.Sprintf("%d", opts.Days) + } + if opts.StartDate != "" { + q["start_date"] = opts.StartDate + } + if opts.EndDate != "" { + q["end_date"] = opts.EndDate + } + if opts.Limit > 0 { + q["limit"] = fmt.Sprintf("%d", opts.Limit) + } + if opts.Offset > 0 { + q["offset"] = fmt.Sprintf("%d", opts.Offset) + } + var out json.RawMessage + if err := c.Do(ctx, http.MethodGet, "/models/playground/experiments", q, nil, nil, &out); err != nil { + return nil, err + } + return out, nil +} + +// CreateExperiment creates a model playground experiment. +func (c *Client) CreateExperiment(ctx context.Context, body PlaygroundCreateRequest) (json.RawMessage, error) { + var out json.RawMessage + if err := c.Do(ctx, http.MethodPost, "/models/playground/experiments", nil, body, nil, &out); err != nil { + return nil, err + } + return out, nil +} + +// GetExperiment retrieves a model playground experiment by ID. +func (c *Client) GetExperiment(ctx context.Context, experimentID string) (json.RawMessage, error) { + var out json.RawMessage + if err := c.Do(ctx, http.MethodGet, fmt.Sprintf("/models/playground/experiments/%s", url.PathEscape(experimentID)), nil, nil, nil, &out); err != nil { + return nil, err + } + return out, nil +} + +// CancelExperiment cancels a running model playground experiment. +func (c *Client) CancelExperiment(ctx context.Context, experimentID string) (json.RawMessage, error) { + var out json.RawMessage + if err := c.Do(ctx, http.MethodPost, fmt.Sprintf("/models/playground/experiments/%s/cancel", url.PathEscape(experimentID)), nil, nil, nil, &out); err != nil { + return nil, err + } + return out, nil +} + // ── General Search ────────────────────────────────────────────────────────── // SearchOptions controls query parameters for the general Search endpoint. diff --git a/generated/seclai.gen.go b/generated/seclai.gen.go index 1448c47..d0b55f4 100644 --- a/generated/seclai.gen.go +++ b/generated/seclai.gen.go @@ -25,9 +25,9 @@ const ( // Defines values for AgentEvaluationTier. const ( - Balanced AgentEvaluationTier = "balanced" - Fast AgentEvaluationTier = "fast" - Thorough AgentEvaluationTier = "thorough" + AgentEvaluationTierBalanced AgentEvaluationTier = "balanced" + AgentEvaluationTierFast AgentEvaluationTier = "fast" + AgentEvaluationTierThorough AgentEvaluationTier = "thorough" ) // Defines values for EvaluationStatus. @@ -55,6 +55,19 @@ const ( PendingProcessingCompletedFailedStatusProcessing PendingProcessingCompletedFailedStatus = "processing" ) +// Defines values for PlaygroundCreateRequestEvaluationComplexity. +const ( + Complex PlaygroundCreateRequestEvaluationComplexity = "complex" + Medium PlaygroundCreateRequestEvaluationComplexity = "medium" + Simple PlaygroundCreateRequestEvaluationComplexity = "simple" +) + +// Defines values for PlaygroundCreateRequestEvaluationMode. +const ( + Manual PlaygroundCreateRequestEvaluationMode = "manual" + Prompt PlaygroundCreateRequestEvaluationMode = "prompt" +) + // Defines values for PromptModelAutoUpgradeStrategy. const ( CautiousAdopter PromptModelAutoUpgradeStrategy = "cautious_adopter" @@ -63,6 +76,14 @@ const ( None PromptModelAutoUpgradeStrategy = "none" ) +// Defines values for SourceIndexMode. +const ( + SourceIndexModeBalanced SourceIndexMode = "balanced" + SourceIndexModeCustom SourceIndexMode = "custom" + SourceIndexModeFastAndCheap SourceIndexMode = "fast_and_cheap" + SourceIndexModeSlowAndThorough SourceIndexMode = "slow_and_thorough" +) + // AddConversationTurnRequest defines model for AddConversationTurnRequest. type AddConversationTurnRequest struct { // ActionsTaken Actions taken by the AI @@ -80,7 +101,7 @@ type AgentDefinitionResponse struct { // ChangeId Current change ID (use as expected_change_id when updating). ChangeId string `json:"change_id"` - // Definition The agent definition containing name, description, tags, and step workflow tree. Step types include prompt_call, retrieval, transform, gate, retry, evaluate_step, insight, extract_json, send_email, webhook_call, call_agent, write_metadata, write_content_attachment, load_content_attachment, load_content, display_result, and others. + // Definition The agent definition containing name, description, tags, and step workflow tree. Step types include prompt_call, retrieval, transform, gate, retry, evaluate_step, insight, extract_content, streaming_result, send_email, webhook_call, call_agent, write_metadata, write_content_attachment, load_content_attachment, load_content, display_result, and others. Definition map[string]interface{} `json:"definition"` // SchemaVersion Agent schema version. @@ -665,6 +686,19 @@ type CreateSourceBody struct { // EmbeddingModel Embedding model override. EmbeddingModel *string `json:"embedding_model"` + // IndexMode Embedding quality / cost trade-off preset for custom_index sources. + // + // Each preset controls the default embedding dimensions, chunk size, and + // chunk overlap. The embedding model is always the account-level default + // (currently ``AWS_BEDROCK_AMAZON_NOVA_2_MULTIMODAL``). + // + // Presets: + // FAST_AND_CHEAP: 256 dimensions, 3 000 char chunks, 500 char overlap. + // BALANCED: 384 dimensions, 1 500 char chunks, 300 char overlap. + // SLOW_AND_THOROUGH: 1 024 dimensions, 1 000 char chunks, 200 char overlap. + // CUSTOM: Caller supplies embedding model, dimensions, and chunk config. + IndexMode *SourceIndexMode `json:"index_mode,omitempty"` + // Name Source name. Name string `json:"name"` @@ -680,7 +714,7 @@ type CreateSourceBody struct { // Retention Retention period in days. Retention *int `json:"retention"` - // SourceType Source type: rss, website, file_uploads, or custom_index. + // SourceType Source type: rss, website, or custom_index. The legacy value 'file_uploads' is accepted as an alias for custom_index. SourceType string `json:"source_type"` // UrlId URL record ID (required for rss/website sources). @@ -1222,9 +1256,59 @@ type PaginationResponse struct { // PendingProcessingCompletedFailedStatus defines model for PendingProcessingCompletedFailedStatus. type PendingProcessingCompletedFailedStatus string +// PlaygroundCreateRequest Create a model playground experiment via the public API. +type PlaygroundCreateRequest struct { + // EvaluationComplexity simple, medium, or complex + EvaluationComplexity *PlaygroundCreateRequestEvaluationComplexity `json:"evaluation_complexity,omitempty"` + + // EvaluationMode manual or prompt + EvaluationMode *PlaygroundCreateRequestEvaluationMode `json:"evaluation_mode,omitempty"` + + // EvaluatorModelId Evaluator model ID when evaluation_mode is prompt. + EvaluatorModelId *string `json:"evaluator_model_id"` + + // IncludeStepOutputInEvaluation Whether to include selected step output as evaluator context. + IncludeStepOutputInEvaluation *bool `json:"include_step_output_in_evaluation,omitempty"` + + // JsonTemplate Optional JSON template for advanced mode. + JsonTemplate *string `json:"json_template"` + + // ModelIds Selected model IDs (1-10). + ModelIds []string `json:"model_ids"` + + // Prompt Prompt text for the experiment. + Prompt string `json:"prompt"` + + // SelectedStepOutput Optional step output text for evaluator context. + SelectedStepOutput *string `json:"selected_step_output"` + + // SystemPrompt Optional system prompt. + SystemPrompt *string `json:"system_prompt,omitempty"` +} + +// PlaygroundCreateRequestEvaluationComplexity simple, medium, or complex +type PlaygroundCreateRequestEvaluationComplexity string + +// PlaygroundCreateRequestEvaluationMode manual or prompt +type PlaygroundCreateRequestEvaluationMode string + // PromptModelAutoUpgradeStrategy defines model for PromptModelAutoUpgradeStrategy. type PromptModelAutoUpgradeStrategy string +// PromptToolResponse Response model for a prompt tool. +type PromptToolResponse struct { + Description *string `json:"description"` + DocumentationUrl *string `json:"documentation_url"` + Example *string `json:"example"` + Headers *map[string]string `json:"headers"` + Id string `json:"id"` + Name string `json:"name"` + Notes *string `json:"notes"` + ToolName *string `json:"tool_name"` + ToolType string `json:"tool_type"` + ToolTypePattern *string `json:"tool_type_pattern"` +} + // ProposedActionResponse A single proposed action. type ProposedActionResponse struct { // ActionType Type of the proposed action. @@ -1328,6 +1412,20 @@ type SourceEmbeddingMigrationResponse struct { UpdatedAt string `json:"updated_at"` } +// SourceIndexMode Embedding quality / cost trade-off preset for custom_index sources. +// +// Each preset controls the default embedding dimensions, chunk size, and +// chunk overlap. The embedding model is always the account-level default +// (currently “AWS_BEDROCK_AMAZON_NOVA_2_MULTIMODAL“). +// +// Presets: +// +// FAST_AND_CHEAP: 256 dimensions, 3 000 char chunks, 500 char overlap. +// BALANCED: 384 dimensions, 1 500 char chunks, 300 char overlap. +// SLOW_AND_THOROUGH: 1 024 dimensions, 1 000 char chunks, 200 char overlap. +// CUSTOM: Caller supplies embedding model, dimensions, and chunk config. +type SourceIndexMode string + // SourceResponse Response model for source data. type SourceResponse struct { // AccountId Account ID associated with the source. @@ -1381,6 +1479,19 @@ type SourceResponse struct { // Id Unique identifier for the source connection. Id string `json:"id"` + // IndexMode Embedding quality / cost trade-off preset for custom_index sources. + // + // Each preset controls the default embedding dimensions, chunk size, and + // chunk overlap. The embedding model is always the account-level default + // (currently ``AWS_BEDROCK_AMAZON_NOVA_2_MULTIMODAL``). + // + // Presets: + // FAST_AND_CHEAP: 256 dimensions, 3 000 char chunks, 500 char overlap. + // BALANCED: 384 dimensions, 1 500 char chunks, 300 char overlap. + // SLOW_AND_THOROUGH: 1 024 dimensions, 1 000 char chunks, 200 char overlap. + // CUSTOM: Caller supplies embedding model, dimensions, and chunk config. + IndexMode *SourceIndexMode `json:"index_mode,omitempty"` + // Name Name of the source connection. Name string `json:"name"` @@ -1691,6 +1802,32 @@ type ValidationError_Loc_Item struct { union json.RawMessage } +// VariantCategoryResponse Response model for a variant category +type VariantCategoryResponse struct { + Category string `json:"category"` + Configurable bool `json:"configurable"` + Description string `json:"description"` + Options []VariantOptionResponse `json:"options"` + Title string `json:"title"` +} + +// VariantOptionResponse Response model for a variant option +type VariantOptionResponse struct { + Default bool `json:"default"` + Description *string `json:"description"` + Input1hCacheWriteCreditsPer1000Tokens *float32 `json:"input_1h_cache_write_credits_per_1000_tokens"` + Input5mCacheWriteCreditsPer1000Tokens *float32 `json:"input_5m_cache_write_credits_per_1000_tokens"` + InputCacheHitCreditsPer1000Tokens *float32 `json:"input_cache_hit_credits_per_1000_tokens"` + InputCreditsPer1000Tokens *float32 `json:"input_credits_per_1000_tokens"` + LongContextInputCacheHitCreditsPer1000Tokens *float32 `json:"long_context_input_cache_hit_credits_per_1000_tokens"` + LongContextInputCreditsPer1000Tokens *float32 `json:"long_context_input_credits_per_1000_tokens"` + LongContextOutputCreditsPer1000Tokens *float32 `json:"long_context_output_credits_per_1000_tokens"` + LongContextThreshold *int `json:"long_context_threshold"` + OutputCreditsPer1000Tokens *float32 `json:"output_credits_per_1000_tokens"` + Title string `json:"title"` + Value string `json:"value"` +} + // RoutersApiAgentsAgentListResponse defines model for routers__api__agents__AgentListResponse. type RoutersApiAgentsAgentListResponse struct { // Data List of agents. @@ -2228,6 +2365,63 @@ type RoutersApiSourcesSourceListResponse struct { Pagination PaginationResponse `json:"pagination"` } +// SchemasModelResponsesPromptModelResponse Response model for prompt model data +type SchemasModelResponsesPromptModelResponse struct { + Default bool `json:"default"` + DeprecatedAt *time.Time `json:"deprecated_at"` + Description string `json:"description"` + Enabled bool `json:"enabled"` + Family *string `json:"family"` + FamilyGeneration *float32 `json:"family_generation"` + Id string `json:"id"` + Input1hCacheWriteCreditsPer1000Tokens *float32 `json:"input_1h_cache_write_credits_per_1000_tokens"` + Input5mCacheWriteCreditsPer1000Tokens *float32 `json:"input_5m_cache_write_credits_per_1000_tokens"` + InputCacheHitCreditsPer1000Tokens *float32 `json:"input_cache_hit_credits_per_1000_tokens"` + InputCreditsPer1000Tokens *float32 `json:"input_credits_per_1000_tokens"` + IsNew *bool `json:"is_new,omitempty"` + LastUsed *bool `json:"last_used,omitempty"` + MaxContextTokens int `json:"max_context_tokens"` + MaxConversationLength int `json:"max_conversation_length"` + MaxOutputTokens int `json:"max_output_tokens"` + ModelId string `json:"model_id"` + Name string `json:"name"` + OutputCreditsPer1000Tokens *float32 `json:"output_credits_per_1000_tokens"` + + // PayloadSchema Model-specific JSON schema for advanced prompt_call json_template payloads. + PayloadSchema *map[string]interface{} `json:"payload_schema"` + + // PayloadSchemaSourceUrl Source URL used to derive payload_schema guidance for this model. + PayloadSchemaSourceUrl *string `json:"payload_schema_source_url"` + Provider string `json:"provider"` + ReleasedAt *time.Time `json:"released_at"` + + // SchemaDocumentationUrl Model documentation URL with request/response payload details. + SchemaDocumentationUrl *string `json:"schema_documentation_url"` + + // SchemaNotes Human-readable notes about request payload compatibility. + SchemaNotes *string `json:"schema_notes"` + SuccessorModelId *string `json:"successor_model_id"` + SunsetAt *time.Time `json:"sunset_at"` + SupportedInputMedia *[]string `json:"supported_input_media"` + SupportedLanguages *[]string `json:"supported_languages"` + SupportsOpenaiArguments *bool `json:"supports_openai_arguments,omitempty"` + SupportsStreaming *bool `json:"supports_streaming,omitempty"` + SupportsStructuredOutput *bool `json:"supports_structured_output,omitempty"` + SupportsThinking *bool `json:"supports_thinking,omitempty"` + SupportsToolUse *bool `json:"supports_tool_use,omitempty"` + ToolsDisabled *[]PromptToolResponse `json:"tools_disabled,omitempty"` + ToolsEnabled *[]PromptToolResponse `json:"tools_enabled,omitempty"` + TrainingCutoffAt *time.Time `json:"training_cutoff_at"` + Url *string `json:"url"` + Variants *[]VariantCategoryResponse `json:"variants"` +} + +// SchemasModelResponsesProviderGroupResponse Response model for provider group with models +type SchemasModelResponsesProviderGroupResponse struct { + Models []SchemasModelResponsesPromptModelResponse `json:"models"` + Provider string `json:"provider"` +} + // SchemasV1AgentEvaluationsNonManualEvaluationModeStatResponse Per-mode rollup for evaluation activity. type SchemasV1AgentEvaluationsNonManualEvaluationModeStatResponse struct { Failed int `json:"failed"` @@ -2920,6 +3114,21 @@ type TestCompactionPromptApiMemoryBanksMemoryBankIdTestCompactionPostParams stru XAccountId *XAccountId `json:"X-Account-Id,omitempty"` } +// ListModelsApiModelsGetParams defines parameters for ListModelsApiModelsGet. +type ListModelsApiModelsGetParams struct { + // Provider Filter by provider name + Provider *string `form:"provider,omitempty" json:"provider,omitempty"` + + // SupportsToolUse Filter to models that support tool use + SupportsToolUse *bool `form:"supports_tool_use,omitempty" json:"supports_tool_use,omitempty"` + + // SupportsThinking Filter to models that support extended thinking + SupportsThinking *bool `form:"supports_thinking,omitempty" json:"supports_thinking,omitempty"` + + // XAccountId Target a different organization account (OAuth only). When omitted, the user's default account is used. Ignored for API key authentication — the key's account is always used. + XAccountId *XAccountId `json:"X-Account-Id,omitempty"` +} + // ListAlertsApiModelsAlertsGetParams defines parameters for ListAlertsApiModelsAlertsGet. type ListAlertsApiModelsAlertsGetParams struct { // AgentId Filter alerts to a specific agent UUID. @@ -2956,6 +3165,51 @@ type MarkReadApiModelsAlertsAlertIdReadPatchParams struct { XAccountId *XAccountId `json:"X-Account-Id,omitempty"` } +// ListExperimentsApiModelsPlaygroundExperimentsGetParams defines parameters for ListExperimentsApiModelsPlaygroundExperimentsGet. +type ListExperimentsApiModelsPlaygroundExperimentsGetParams struct { + // Days Look-back window in days. + Days *int `form:"days,omitempty" json:"days,omitempty"` + + // StartDate Explicit start date (overrides days). + StartDate *openapi_types.Date `form:"start_date,omitempty" json:"start_date,omitempty"` + + // EndDate Explicit end date (overrides days). + EndDate *openapi_types.Date `form:"end_date,omitempty" json:"end_date,omitempty"` + + // Limit Page size. + Limit *int `form:"limit,omitempty" json:"limit,omitempty"` + + // Offset Pagination offset. + Offset *int `form:"offset,omitempty" json:"offset,omitempty"` + + // XAccountId Target a different organization account (OAuth only). When omitted, the user's default account is used. Ignored for API key authentication — the key's account is always used. + XAccountId *XAccountId `json:"X-Account-Id,omitempty"` +} + +// CreateExperimentApiModelsPlaygroundExperimentsPostParams defines parameters for CreateExperimentApiModelsPlaygroundExperimentsPost. +type CreateExperimentApiModelsPlaygroundExperimentsPostParams struct { + // XAccountId Target a different organization account (OAuth only). When omitted, the user's default account is used. Ignored for API key authentication — the key's account is always used. + XAccountId *XAccountId `json:"X-Account-Id,omitempty"` +} + +// GetExperimentApiModelsPlaygroundExperimentsExperimentIdGetParams defines parameters for GetExperimentApiModelsPlaygroundExperimentsExperimentIdGet. +type GetExperimentApiModelsPlaygroundExperimentsExperimentIdGetParams struct { + // XAccountId Target a different organization account (OAuth only). When omitted, the user's default account is used. Ignored for API key authentication — the key's account is always used. + XAccountId *XAccountId `json:"X-Account-Id,omitempty"` +} + +// CancelExperimentEndpointApiModelsPlaygroundExperimentsExperimentIdCancelPostParams defines parameters for CancelExperimentEndpointApiModelsPlaygroundExperimentsExperimentIdCancelPost. +type CancelExperimentEndpointApiModelsPlaygroundExperimentsExperimentIdCancelPostParams struct { + // XAccountId Target a different organization account (OAuth only). When omitted, the user's default account is used. Ignored for API key authentication — the key's account is always used. + XAccountId *XAccountId `json:"X-Account-Id,omitempty"` +} + +// GetModelApiModelsModelIdDetailsGetParams defines parameters for GetModelApiModelsModelIdDetailsGet. +type GetModelApiModelsModelIdDetailsGetParams struct { + // XAccountId Target a different organization account (OAuth only). When omitted, the user's default account is used. Ignored for API key authentication — the key's account is always used. + XAccountId *XAccountId `json:"X-Account-Id,omitempty"` +} + // GetRecommendationsApiModelsModelIdRecommendationsGetParams defines parameters for GetRecommendationsApiModelsModelIdRecommendationsGet. type GetRecommendationsApiModelsModelIdRecommendationsGetParams struct { // RequireToolUse Only recommend models that support tool use. @@ -3349,6 +3603,9 @@ type UpdateMemoryBankApiMemoryBanksMemoryBankIdPutJSONRequestBody = UpdateMemory // TestCompactionPromptApiMemoryBanksMemoryBankIdTestCompactionPostJSONRequestBody defines body for TestCompactionPromptApiMemoryBanksMemoryBankIdTestCompactionPost for application/json ContentType. type TestCompactionPromptApiMemoryBanksMemoryBankIdTestCompactionPostJSONRequestBody = TestCompactionRequest +// CreateExperimentApiModelsPlaygroundExperimentsPostJSONRequestBody defines body for CreateExperimentApiModelsPlaygroundExperimentsPost for application/json ContentType. +type CreateExperimentApiModelsPlaygroundExperimentsPostJSONRequestBody = PlaygroundCreateRequest + // CreateSolutionApiSolutionsPostJSONRequestBody defines body for CreateSolutionApiSolutionsPost for application/json ContentType. type CreateSolutionApiSolutionsPostJSONRequestBody = CreateSolutionRequest @@ -3875,6 +4132,9 @@ type ClientInterface interface { TestCompactionPromptApiMemoryBanksMemoryBankIdTestCompactionPost(ctx context.Context, memoryBankId string, params *TestCompactionPromptApiMemoryBanksMemoryBankIdTestCompactionPostParams, body TestCompactionPromptApiMemoryBanksMemoryBankIdTestCompactionPostJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) + // ListModelsApiModelsGet request + ListModelsApiModelsGet(ctx context.Context, params *ListModelsApiModelsGetParams, reqEditors ...RequestEditorFn) (*http.Response, error) + // ListAlertsApiModelsAlertsGet request ListAlertsApiModelsAlertsGet(ctx context.Context, params *ListAlertsApiModelsAlertsGetParams, reqEditors ...RequestEditorFn) (*http.Response, error) @@ -3887,6 +4147,23 @@ type ClientInterface interface { // MarkReadApiModelsAlertsAlertIdReadPatch request MarkReadApiModelsAlertsAlertIdReadPatch(ctx context.Context, alertId openapi_types.UUID, params *MarkReadApiModelsAlertsAlertIdReadPatchParams, reqEditors ...RequestEditorFn) (*http.Response, error) + // ListExperimentsApiModelsPlaygroundExperimentsGet request + ListExperimentsApiModelsPlaygroundExperimentsGet(ctx context.Context, params *ListExperimentsApiModelsPlaygroundExperimentsGetParams, reqEditors ...RequestEditorFn) (*http.Response, error) + + // CreateExperimentApiModelsPlaygroundExperimentsPostWithBody request with any body + CreateExperimentApiModelsPlaygroundExperimentsPostWithBody(ctx context.Context, params *CreateExperimentApiModelsPlaygroundExperimentsPostParams, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) + + CreateExperimentApiModelsPlaygroundExperimentsPost(ctx context.Context, params *CreateExperimentApiModelsPlaygroundExperimentsPostParams, body CreateExperimentApiModelsPlaygroundExperimentsPostJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) + + // GetExperimentApiModelsPlaygroundExperimentsExperimentIdGet request + GetExperimentApiModelsPlaygroundExperimentsExperimentIdGet(ctx context.Context, experimentId openapi_types.UUID, params *GetExperimentApiModelsPlaygroundExperimentsExperimentIdGetParams, reqEditors ...RequestEditorFn) (*http.Response, error) + + // CancelExperimentEndpointApiModelsPlaygroundExperimentsExperimentIdCancelPost request + CancelExperimentEndpointApiModelsPlaygroundExperimentsExperimentIdCancelPost(ctx context.Context, experimentId openapi_types.UUID, params *CancelExperimentEndpointApiModelsPlaygroundExperimentsExperimentIdCancelPostParams, reqEditors ...RequestEditorFn) (*http.Response, error) + + // GetModelApiModelsModelIdDetailsGet request + GetModelApiModelsModelIdDetailsGet(ctx context.Context, modelId string, params *GetModelApiModelsModelIdDetailsGetParams, reqEditors ...RequestEditorFn) (*http.Response, error) + // GetRecommendationsApiModelsModelIdRecommendationsGet request GetRecommendationsApiModelsModelIdRecommendationsGet(ctx context.Context, modelId string, params *GetRecommendationsApiModelsModelIdRecommendationsGetParams, reqEditors ...RequestEditorFn) (*http.Response, error) @@ -5494,6 +5771,18 @@ func (c *Client) TestCompactionPromptApiMemoryBanksMemoryBankIdTestCompactionPos return c.Client.Do(req) } +func (c *Client) ListModelsApiModelsGet(ctx context.Context, params *ListModelsApiModelsGetParams, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewListModelsApiModelsGetRequest(c.Server, params) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if err := c.applyEditors(ctx, req, reqEditors); err != nil { + return nil, err + } + return c.Client.Do(req) +} + func (c *Client) ListAlertsApiModelsAlertsGet(ctx context.Context, params *ListAlertsApiModelsAlertsGetParams, reqEditors ...RequestEditorFn) (*http.Response, error) { req, err := NewListAlertsApiModelsAlertsGetRequest(c.Server, params) if err != nil { @@ -5542,6 +5831,78 @@ func (c *Client) MarkReadApiModelsAlertsAlertIdReadPatch(ctx context.Context, al return c.Client.Do(req) } +func (c *Client) ListExperimentsApiModelsPlaygroundExperimentsGet(ctx context.Context, params *ListExperimentsApiModelsPlaygroundExperimentsGetParams, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewListExperimentsApiModelsPlaygroundExperimentsGetRequest(c.Server, params) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if err := c.applyEditors(ctx, req, reqEditors); err != nil { + return nil, err + } + return c.Client.Do(req) +} + +func (c *Client) CreateExperimentApiModelsPlaygroundExperimentsPostWithBody(ctx context.Context, params *CreateExperimentApiModelsPlaygroundExperimentsPostParams, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewCreateExperimentApiModelsPlaygroundExperimentsPostRequestWithBody(c.Server, params, contentType, body) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if err := c.applyEditors(ctx, req, reqEditors); err != nil { + return nil, err + } + return c.Client.Do(req) +} + +func (c *Client) CreateExperimentApiModelsPlaygroundExperimentsPost(ctx context.Context, params *CreateExperimentApiModelsPlaygroundExperimentsPostParams, body CreateExperimentApiModelsPlaygroundExperimentsPostJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewCreateExperimentApiModelsPlaygroundExperimentsPostRequest(c.Server, params, body) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if err := c.applyEditors(ctx, req, reqEditors); err != nil { + return nil, err + } + return c.Client.Do(req) +} + +func (c *Client) GetExperimentApiModelsPlaygroundExperimentsExperimentIdGet(ctx context.Context, experimentId openapi_types.UUID, params *GetExperimentApiModelsPlaygroundExperimentsExperimentIdGetParams, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewGetExperimentApiModelsPlaygroundExperimentsExperimentIdGetRequest(c.Server, experimentId, params) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if err := c.applyEditors(ctx, req, reqEditors); err != nil { + return nil, err + } + return c.Client.Do(req) +} + +func (c *Client) CancelExperimentEndpointApiModelsPlaygroundExperimentsExperimentIdCancelPost(ctx context.Context, experimentId openapi_types.UUID, params *CancelExperimentEndpointApiModelsPlaygroundExperimentsExperimentIdCancelPostParams, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewCancelExperimentEndpointApiModelsPlaygroundExperimentsExperimentIdCancelPostRequest(c.Server, experimentId, params) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if err := c.applyEditors(ctx, req, reqEditors); err != nil { + return nil, err + } + return c.Client.Do(req) +} + +func (c *Client) GetModelApiModelsModelIdDetailsGet(ctx context.Context, modelId string, params *GetModelApiModelsModelIdDetailsGetParams, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewGetModelApiModelsModelIdDetailsGetRequest(c.Server, modelId, params) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if err := c.applyEditors(ctx, req, reqEditors); err != nil { + return nil, err + } + return c.Client.Do(req) +} + func (c *Client) GetRecommendationsApiModelsModelIdRecommendationsGet(ctx context.Context, modelId string, params *GetRecommendationsApiModelsModelIdRecommendationsGetParams, reqEditors ...RequestEditorFn) (*http.Response, error) { req, err := NewGetRecommendationsApiModelsModelIdRecommendationsGetRequest(c.Server, modelId, params) if err != nil { @@ -11988,6 +12349,102 @@ func NewTestCompactionPromptApiMemoryBanksMemoryBankIdTestCompactionPostRequestW return req, nil } +// NewListModelsApiModelsGetRequest generates requests for ListModelsApiModelsGet +func NewListModelsApiModelsGetRequest(server string, params *ListModelsApiModelsGetParams) (*http.Request, error) { + var err error + + serverURL, err := url.Parse(server) + if err != nil { + return nil, err + } + + operationPath := fmt.Sprintf("/models") + if operationPath[0] == '/' { + operationPath = "." + operationPath + } + + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err + } + + if params != nil { + queryValues := queryURL.Query() + + if params.Provider != nil { + + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "provider", runtime.ParamLocationQuery, *params.Provider); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } + + } + + if params.SupportsToolUse != nil { + + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "supports_tool_use", runtime.ParamLocationQuery, *params.SupportsToolUse); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } + + } + + if params.SupportsThinking != nil { + + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "supports_thinking", runtime.ParamLocationQuery, *params.SupportsThinking); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } + + } + + queryURL.RawQuery = queryValues.Encode() + } + + req, err := http.NewRequest("GET", queryURL.String(), nil) + if err != nil { + return nil, err + } + + if params != nil { + + if params.XAccountId != nil { + var headerParam0 string + + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "X-Account-Id", runtime.ParamLocationHeader, *params.XAccountId) + if err != nil { + return nil, err + } + + req.Header.Set("X-Account-Id", headerParam0) + } + + } + + return req, nil +} + // NewListAlertsApiModelsAlertsGetRequest generates requests for ListAlertsApiModelsAlertsGet func NewListAlertsApiModelsAlertsGetRequest(server string, params *ListAlertsApiModelsAlertsGetParams) (*http.Request, error) { var err error @@ -12233,23 +12690,16 @@ func NewMarkReadApiModelsAlertsAlertIdReadPatchRequest(server string, alertId op return req, nil } -// NewGetRecommendationsApiModelsModelIdRecommendationsGetRequest generates requests for GetRecommendationsApiModelsModelIdRecommendationsGet -func NewGetRecommendationsApiModelsModelIdRecommendationsGetRequest(server string, modelId string, params *GetRecommendationsApiModelsModelIdRecommendationsGetParams) (*http.Request, error) { +// NewListExperimentsApiModelsPlaygroundExperimentsGetRequest generates requests for ListExperimentsApiModelsPlaygroundExperimentsGet +func NewListExperimentsApiModelsPlaygroundExperimentsGetRequest(server string, params *ListExperimentsApiModelsPlaygroundExperimentsGetParams) (*http.Request, error) { var err error - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "model_id", runtime.ParamLocationPath, modelId) - if err != nil { - return nil, err - } - serverURL, err := url.Parse(server) if err != nil { return nil, err } - operationPath := fmt.Sprintf("/models/%s/recommendations", pathParam0) + operationPath := fmt.Sprintf("/models/playground/experiments") if operationPath[0] == '/' { operationPath = "." + operationPath } @@ -12262,9 +12712,9 @@ func NewGetRecommendationsApiModelsModelIdRecommendationsGetRequest(server strin if params != nil { queryValues := queryURL.Query() - if params.RequireToolUse != nil { + if params.Days != nil { - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "require_tool_use", runtime.ParamLocationQuery, *params.RequireToolUse); err != nil { + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "days", runtime.ParamLocationQuery, *params.Days); err != nil { return nil, err } else if parsed, err := url.ParseQuery(queryFrag); err != nil { return nil, err @@ -12278,9 +12728,346 @@ func NewGetRecommendationsApiModelsModelIdRecommendationsGetRequest(server strin } - if params.RequireStructuredOutput != nil { + if params.StartDate != nil { - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "require_structured_output", runtime.ParamLocationQuery, *params.RequireStructuredOutput); err != nil { + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "start_date", runtime.ParamLocationQuery, *params.StartDate); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } + + } + + if params.EndDate != nil { + + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "end_date", runtime.ParamLocationQuery, *params.EndDate); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } + + } + + if params.Limit != nil { + + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "limit", runtime.ParamLocationQuery, *params.Limit); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } + + } + + if params.Offset != nil { + + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "offset", runtime.ParamLocationQuery, *params.Offset); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } + + } + + queryURL.RawQuery = queryValues.Encode() + } + + req, err := http.NewRequest("GET", queryURL.String(), nil) + if err != nil { + return nil, err + } + + if params != nil { + + if params.XAccountId != nil { + var headerParam0 string + + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "X-Account-Id", runtime.ParamLocationHeader, *params.XAccountId) + if err != nil { + return nil, err + } + + req.Header.Set("X-Account-Id", headerParam0) + } + + } + + return req, nil +} + +// NewCreateExperimentApiModelsPlaygroundExperimentsPostRequest calls the generic CreateExperimentApiModelsPlaygroundExperimentsPost builder with application/json body +func NewCreateExperimentApiModelsPlaygroundExperimentsPostRequest(server string, params *CreateExperimentApiModelsPlaygroundExperimentsPostParams, body CreateExperimentApiModelsPlaygroundExperimentsPostJSONRequestBody) (*http.Request, error) { + var bodyReader io.Reader + buf, err := json.Marshal(body) + if err != nil { + return nil, err + } + bodyReader = bytes.NewReader(buf) + return NewCreateExperimentApiModelsPlaygroundExperimentsPostRequestWithBody(server, params, "application/json", bodyReader) +} + +// NewCreateExperimentApiModelsPlaygroundExperimentsPostRequestWithBody generates requests for CreateExperimentApiModelsPlaygroundExperimentsPost with any type of body +func NewCreateExperimentApiModelsPlaygroundExperimentsPostRequestWithBody(server string, params *CreateExperimentApiModelsPlaygroundExperimentsPostParams, contentType string, body io.Reader) (*http.Request, error) { + var err error + + serverURL, err := url.Parse(server) + if err != nil { + return nil, err + } + + operationPath := fmt.Sprintf("/models/playground/experiments") + if operationPath[0] == '/' { + operationPath = "." + operationPath + } + + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("POST", queryURL.String(), body) + if err != nil { + return nil, err + } + + req.Header.Add("Content-Type", contentType) + + if params != nil { + + if params.XAccountId != nil { + var headerParam0 string + + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "X-Account-Id", runtime.ParamLocationHeader, *params.XAccountId) + if err != nil { + return nil, err + } + + req.Header.Set("X-Account-Id", headerParam0) + } + + } + + return req, nil +} + +// NewGetExperimentApiModelsPlaygroundExperimentsExperimentIdGetRequest generates requests for GetExperimentApiModelsPlaygroundExperimentsExperimentIdGet +func NewGetExperimentApiModelsPlaygroundExperimentsExperimentIdGetRequest(server string, experimentId openapi_types.UUID, params *GetExperimentApiModelsPlaygroundExperimentsExperimentIdGetParams) (*http.Request, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "experiment_id", runtime.ParamLocationPath, experimentId) + if err != nil { + return nil, err + } + + serverURL, err := url.Parse(server) + if err != nil { + return nil, err + } + + operationPath := fmt.Sprintf("/models/playground/experiments/%s", pathParam0) + if operationPath[0] == '/' { + operationPath = "." + operationPath + } + + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("GET", queryURL.String(), nil) + if err != nil { + return nil, err + } + + if params != nil { + + if params.XAccountId != nil { + var headerParam0 string + + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "X-Account-Id", runtime.ParamLocationHeader, *params.XAccountId) + if err != nil { + return nil, err + } + + req.Header.Set("X-Account-Id", headerParam0) + } + + } + + return req, nil +} + +// NewCancelExperimentEndpointApiModelsPlaygroundExperimentsExperimentIdCancelPostRequest generates requests for CancelExperimentEndpointApiModelsPlaygroundExperimentsExperimentIdCancelPost +func NewCancelExperimentEndpointApiModelsPlaygroundExperimentsExperimentIdCancelPostRequest(server string, experimentId openapi_types.UUID, params *CancelExperimentEndpointApiModelsPlaygroundExperimentsExperimentIdCancelPostParams) (*http.Request, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "experiment_id", runtime.ParamLocationPath, experimentId) + if err != nil { + return nil, err + } + + serverURL, err := url.Parse(server) + if err != nil { + return nil, err + } + + operationPath := fmt.Sprintf("/models/playground/experiments/%s/cancel", pathParam0) + if operationPath[0] == '/' { + operationPath = "." + operationPath + } + + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("POST", queryURL.String(), nil) + if err != nil { + return nil, err + } + + if params != nil { + + if params.XAccountId != nil { + var headerParam0 string + + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "X-Account-Id", runtime.ParamLocationHeader, *params.XAccountId) + if err != nil { + return nil, err + } + + req.Header.Set("X-Account-Id", headerParam0) + } + + } + + return req, nil +} + +// NewGetModelApiModelsModelIdDetailsGetRequest generates requests for GetModelApiModelsModelIdDetailsGet +func NewGetModelApiModelsModelIdDetailsGetRequest(server string, modelId string, params *GetModelApiModelsModelIdDetailsGetParams) (*http.Request, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "model_id", runtime.ParamLocationPath, modelId) + if err != nil { + return nil, err + } + + serverURL, err := url.Parse(server) + if err != nil { + return nil, err + } + + operationPath := fmt.Sprintf("/models/%s/details", pathParam0) + if operationPath[0] == '/' { + operationPath = "." + operationPath + } + + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("GET", queryURL.String(), nil) + if err != nil { + return nil, err + } + + if params != nil { + + if params.XAccountId != nil { + var headerParam0 string + + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "X-Account-Id", runtime.ParamLocationHeader, *params.XAccountId) + if err != nil { + return nil, err + } + + req.Header.Set("X-Account-Id", headerParam0) + } + + } + + return req, nil +} + +// NewGetRecommendationsApiModelsModelIdRecommendationsGetRequest generates requests for GetRecommendationsApiModelsModelIdRecommendationsGet +func NewGetRecommendationsApiModelsModelIdRecommendationsGetRequest(server string, modelId string, params *GetRecommendationsApiModelsModelIdRecommendationsGetParams) (*http.Request, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "model_id", runtime.ParamLocationPath, modelId) + if err != nil { + return nil, err + } + + serverURL, err := url.Parse(server) + if err != nil { + return nil, err + } + + operationPath := fmt.Sprintf("/models/%s/recommendations", pathParam0) + if operationPath[0] == '/' { + operationPath = "." + operationPath + } + + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err + } + + if params != nil { + queryValues := queryURL.Query() + + if params.RequireToolUse != nil { + + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "require_tool_use", runtime.ParamLocationQuery, *params.RequireToolUse); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } + + } + + if params.RequireStructuredOutput != nil { + + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "require_structured_output", runtime.ParamLocationQuery, *params.RequireStructuredOutput); err != nil { return nil, err } else if parsed, err := url.ParseQuery(queryFrag); err != nil { return nil, err @@ -15088,6 +15875,9 @@ type ClientWithResponsesInterface interface { TestCompactionPromptApiMemoryBanksMemoryBankIdTestCompactionPostWithResponse(ctx context.Context, memoryBankId string, params *TestCompactionPromptApiMemoryBanksMemoryBankIdTestCompactionPostParams, body TestCompactionPromptApiMemoryBanksMemoryBankIdTestCompactionPostJSONRequestBody, reqEditors ...RequestEditorFn) (*TestCompactionPromptApiMemoryBanksMemoryBankIdTestCompactionPostResponse, error) + // ListModelsApiModelsGetWithResponse request + ListModelsApiModelsGetWithResponse(ctx context.Context, params *ListModelsApiModelsGetParams, reqEditors ...RequestEditorFn) (*ListModelsApiModelsGetResponse, error) + // ListAlertsApiModelsAlertsGetWithResponse request ListAlertsApiModelsAlertsGetWithResponse(ctx context.Context, params *ListAlertsApiModelsAlertsGetParams, reqEditors ...RequestEditorFn) (*ListAlertsApiModelsAlertsGetResponse, error) @@ -15100,6 +15890,23 @@ type ClientWithResponsesInterface interface { // MarkReadApiModelsAlertsAlertIdReadPatchWithResponse request MarkReadApiModelsAlertsAlertIdReadPatchWithResponse(ctx context.Context, alertId openapi_types.UUID, params *MarkReadApiModelsAlertsAlertIdReadPatchParams, reqEditors ...RequestEditorFn) (*MarkReadApiModelsAlertsAlertIdReadPatchResponse, error) + // ListExperimentsApiModelsPlaygroundExperimentsGetWithResponse request + ListExperimentsApiModelsPlaygroundExperimentsGetWithResponse(ctx context.Context, params *ListExperimentsApiModelsPlaygroundExperimentsGetParams, reqEditors ...RequestEditorFn) (*ListExperimentsApiModelsPlaygroundExperimentsGetResponse, error) + + // CreateExperimentApiModelsPlaygroundExperimentsPostWithBodyWithResponse request with any body + CreateExperimentApiModelsPlaygroundExperimentsPostWithBodyWithResponse(ctx context.Context, params *CreateExperimentApiModelsPlaygroundExperimentsPostParams, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*CreateExperimentApiModelsPlaygroundExperimentsPostResponse, error) + + CreateExperimentApiModelsPlaygroundExperimentsPostWithResponse(ctx context.Context, params *CreateExperimentApiModelsPlaygroundExperimentsPostParams, body CreateExperimentApiModelsPlaygroundExperimentsPostJSONRequestBody, reqEditors ...RequestEditorFn) (*CreateExperimentApiModelsPlaygroundExperimentsPostResponse, error) + + // GetExperimentApiModelsPlaygroundExperimentsExperimentIdGetWithResponse request + GetExperimentApiModelsPlaygroundExperimentsExperimentIdGetWithResponse(ctx context.Context, experimentId openapi_types.UUID, params *GetExperimentApiModelsPlaygroundExperimentsExperimentIdGetParams, reqEditors ...RequestEditorFn) (*GetExperimentApiModelsPlaygroundExperimentsExperimentIdGetResponse, error) + + // CancelExperimentEndpointApiModelsPlaygroundExperimentsExperimentIdCancelPostWithResponse request + CancelExperimentEndpointApiModelsPlaygroundExperimentsExperimentIdCancelPostWithResponse(ctx context.Context, experimentId openapi_types.UUID, params *CancelExperimentEndpointApiModelsPlaygroundExperimentsExperimentIdCancelPostParams, reqEditors ...RequestEditorFn) (*CancelExperimentEndpointApiModelsPlaygroundExperimentsExperimentIdCancelPostResponse, error) + + // GetModelApiModelsModelIdDetailsGetWithResponse request + GetModelApiModelsModelIdDetailsGetWithResponse(ctx context.Context, modelId string, params *GetModelApiModelsModelIdDetailsGetParams, reqEditors ...RequestEditorFn) (*GetModelApiModelsModelIdDetailsGetResponse, error) + // GetRecommendationsApiModelsModelIdRecommendationsGetWithResponse request GetRecommendationsApiModelsModelIdRecommendationsGetWithResponse(ctx context.Context, modelId string, params *GetRecommendationsApiModelsModelIdRecommendationsGetParams, reqEditors ...RequestEditorFn) (*GetRecommendationsApiModelsModelIdRecommendationsGetResponse, error) @@ -17131,15 +17938,150 @@ func (r GetAgentsUsingBankApiMemoryBanksMemoryBankIdAgentsGetResponse) StatusCod return 0 } -type CompactMemoryBankApiMemoryBanksMemoryBankIdCompactPostResponse struct { +type CompactMemoryBankApiMemoryBanksMemoryBankIdCompactPostResponse struct { + Body []byte + HTTPResponse *http.Response + JSON202 *map[string]interface{} + JSON422 *HTTPValidationError +} + +// Status returns HTTPResponse.Status +func (r CompactMemoryBankApiMemoryBanksMemoryBankIdCompactPostResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r CompactMemoryBankApiMemoryBanksMemoryBankIdCompactPostResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type DeleteMemoryBankSourceApiMemoryBanksMemoryBankIdSourceDeleteResponse struct { + Body []byte + HTTPResponse *http.Response + JSON422 *HTTPValidationError +} + +// Status returns HTTPResponse.Status +func (r DeleteMemoryBankSourceApiMemoryBanksMemoryBankIdSourceDeleteResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r DeleteMemoryBankSourceApiMemoryBanksMemoryBankIdSourceDeleteResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type GetMemoryBankEntryStatsApiMemoryBanksMemoryBankIdStatsGetResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *map[string]interface{} + JSON422 *HTTPValidationError +} + +// Status returns HTTPResponse.Status +func (r GetMemoryBankEntryStatsApiMemoryBanksMemoryBankIdStatsGetResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r GetMemoryBankEntryStatsApiMemoryBanksMemoryBankIdStatsGetResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type TestCompactionPromptApiMemoryBanksMemoryBankIdTestCompactionPostResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *CompactionTestResponseModel + JSON422 *HTTPValidationError +} + +// Status returns HTTPResponse.Status +func (r TestCompactionPromptApiMemoryBanksMemoryBankIdTestCompactionPostResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r TestCompactionPromptApiMemoryBanksMemoryBankIdTestCompactionPostResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type ListModelsApiModelsGetResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *[]SchemasModelResponsesProviderGroupResponse + JSON422 *HTTPValidationError +} + +// Status returns HTTPResponse.Status +func (r ListModelsApiModelsGetResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r ListModelsApiModelsGetResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type ListAlertsApiModelsAlertsGetResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *map[string]interface{} + JSON422 *HTTPValidationError +} + +// Status returns HTTPResponse.Status +func (r ListAlertsApiModelsAlertsGetResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r ListAlertsApiModelsAlertsGetResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type MarkAllReadApiModelsAlertsMarkAllReadPostResponse struct { Body []byte HTTPResponse *http.Response - JSON202 *map[string]interface{} - JSON422 *HTTPValidationError } // Status returns HTTPResponse.Status -func (r CompactMemoryBankApiMemoryBanksMemoryBankIdCompactPostResponse) Status() string { +func (r MarkAllReadApiModelsAlertsMarkAllReadPostResponse) Status() string { if r.HTTPResponse != nil { return r.HTTPResponse.Status } @@ -17147,21 +18089,21 @@ func (r CompactMemoryBankApiMemoryBanksMemoryBankIdCompactPostResponse) Status() } // StatusCode returns HTTPResponse.StatusCode -func (r CompactMemoryBankApiMemoryBanksMemoryBankIdCompactPostResponse) StatusCode() int { +func (r MarkAllReadApiModelsAlertsMarkAllReadPostResponse) StatusCode() int { if r.HTTPResponse != nil { return r.HTTPResponse.StatusCode } return 0 } -type DeleteMemoryBankSourceApiMemoryBanksMemoryBankIdSourceDeleteResponse struct { +type GetAlertUnreadCountApiModelsAlertsUnreadCountGetResponse struct { Body []byte HTTPResponse *http.Response - JSON422 *HTTPValidationError + JSON200 *map[string]interface{} } // Status returns HTTPResponse.Status -func (r DeleteMemoryBankSourceApiMemoryBanksMemoryBankIdSourceDeleteResponse) Status() string { +func (r GetAlertUnreadCountApiModelsAlertsUnreadCountGetResponse) Status() string { if r.HTTPResponse != nil { return r.HTTPResponse.Status } @@ -17169,22 +18111,21 @@ func (r DeleteMemoryBankSourceApiMemoryBanksMemoryBankIdSourceDeleteResponse) St } // StatusCode returns HTTPResponse.StatusCode -func (r DeleteMemoryBankSourceApiMemoryBanksMemoryBankIdSourceDeleteResponse) StatusCode() int { +func (r GetAlertUnreadCountApiModelsAlertsUnreadCountGetResponse) StatusCode() int { if r.HTTPResponse != nil { return r.HTTPResponse.StatusCode } return 0 } -type GetMemoryBankEntryStatsApiMemoryBanksMemoryBankIdStatsGetResponse struct { +type MarkReadApiModelsAlertsAlertIdReadPatchResponse struct { Body []byte HTTPResponse *http.Response - JSON200 *map[string]interface{} JSON422 *HTTPValidationError } // Status returns HTTPResponse.Status -func (r GetMemoryBankEntryStatsApiMemoryBanksMemoryBankIdStatsGetResponse) Status() string { +func (r MarkReadApiModelsAlertsAlertIdReadPatchResponse) Status() string { if r.HTTPResponse != nil { return r.HTTPResponse.Status } @@ -17192,22 +18133,22 @@ func (r GetMemoryBankEntryStatsApiMemoryBanksMemoryBankIdStatsGetResponse) Statu } // StatusCode returns HTTPResponse.StatusCode -func (r GetMemoryBankEntryStatsApiMemoryBanksMemoryBankIdStatsGetResponse) StatusCode() int { +func (r MarkReadApiModelsAlertsAlertIdReadPatchResponse) StatusCode() int { if r.HTTPResponse != nil { return r.HTTPResponse.StatusCode } return 0 } -type TestCompactionPromptApiMemoryBanksMemoryBankIdTestCompactionPostResponse struct { +type ListExperimentsApiModelsPlaygroundExperimentsGetResponse struct { Body []byte HTTPResponse *http.Response - JSON200 *CompactionTestResponseModel + JSON200 *map[string]interface{} JSON422 *HTTPValidationError } // Status returns HTTPResponse.Status -func (r TestCompactionPromptApiMemoryBanksMemoryBankIdTestCompactionPostResponse) Status() string { +func (r ListExperimentsApiModelsPlaygroundExperimentsGetResponse) Status() string { if r.HTTPResponse != nil { return r.HTTPResponse.Status } @@ -17215,14 +18156,14 @@ func (r TestCompactionPromptApiMemoryBanksMemoryBankIdTestCompactionPostResponse } // StatusCode returns HTTPResponse.StatusCode -func (r TestCompactionPromptApiMemoryBanksMemoryBankIdTestCompactionPostResponse) StatusCode() int { +func (r ListExperimentsApiModelsPlaygroundExperimentsGetResponse) StatusCode() int { if r.HTTPResponse != nil { return r.HTTPResponse.StatusCode } return 0 } -type ListAlertsApiModelsAlertsGetResponse struct { +type CreateExperimentApiModelsPlaygroundExperimentsPostResponse struct { Body []byte HTTPResponse *http.Response JSON200 *map[string]interface{} @@ -17230,7 +18171,7 @@ type ListAlertsApiModelsAlertsGetResponse struct { } // Status returns HTTPResponse.Status -func (r ListAlertsApiModelsAlertsGetResponse) Status() string { +func (r CreateExperimentApiModelsPlaygroundExperimentsPostResponse) Status() string { if r.HTTPResponse != nil { return r.HTTPResponse.Status } @@ -17238,20 +18179,22 @@ func (r ListAlertsApiModelsAlertsGetResponse) Status() string { } // StatusCode returns HTTPResponse.StatusCode -func (r ListAlertsApiModelsAlertsGetResponse) StatusCode() int { +func (r CreateExperimentApiModelsPlaygroundExperimentsPostResponse) StatusCode() int { if r.HTTPResponse != nil { return r.HTTPResponse.StatusCode } return 0 } -type MarkAllReadApiModelsAlertsMarkAllReadPostResponse struct { +type GetExperimentApiModelsPlaygroundExperimentsExperimentIdGetResponse struct { Body []byte HTTPResponse *http.Response + JSON200 *map[string]interface{} + JSON422 *HTTPValidationError } // Status returns HTTPResponse.Status -func (r MarkAllReadApiModelsAlertsMarkAllReadPostResponse) Status() string { +func (r GetExperimentApiModelsPlaygroundExperimentsExperimentIdGetResponse) Status() string { if r.HTTPResponse != nil { return r.HTTPResponse.Status } @@ -17259,21 +18202,22 @@ func (r MarkAllReadApiModelsAlertsMarkAllReadPostResponse) Status() string { } // StatusCode returns HTTPResponse.StatusCode -func (r MarkAllReadApiModelsAlertsMarkAllReadPostResponse) StatusCode() int { +func (r GetExperimentApiModelsPlaygroundExperimentsExperimentIdGetResponse) StatusCode() int { if r.HTTPResponse != nil { return r.HTTPResponse.StatusCode } return 0 } -type GetAlertUnreadCountApiModelsAlertsUnreadCountGetResponse struct { +type CancelExperimentEndpointApiModelsPlaygroundExperimentsExperimentIdCancelPostResponse struct { Body []byte HTTPResponse *http.Response JSON200 *map[string]interface{} + JSON422 *HTTPValidationError } // Status returns HTTPResponse.Status -func (r GetAlertUnreadCountApiModelsAlertsUnreadCountGetResponse) Status() string { +func (r CancelExperimentEndpointApiModelsPlaygroundExperimentsExperimentIdCancelPostResponse) Status() string { if r.HTTPResponse != nil { return r.HTTPResponse.Status } @@ -17281,21 +18225,22 @@ func (r GetAlertUnreadCountApiModelsAlertsUnreadCountGetResponse) Status() strin } // StatusCode returns HTTPResponse.StatusCode -func (r GetAlertUnreadCountApiModelsAlertsUnreadCountGetResponse) StatusCode() int { +func (r CancelExperimentEndpointApiModelsPlaygroundExperimentsExperimentIdCancelPostResponse) StatusCode() int { if r.HTTPResponse != nil { return r.HTTPResponse.StatusCode } return 0 } -type MarkReadApiModelsAlertsAlertIdReadPatchResponse struct { +type GetModelApiModelsModelIdDetailsGetResponse struct { Body []byte HTTPResponse *http.Response + JSON200 *SchemasModelResponsesPromptModelResponse JSON422 *HTTPValidationError } // Status returns HTTPResponse.Status -func (r MarkReadApiModelsAlertsAlertIdReadPatchResponse) Status() string { +func (r GetModelApiModelsModelIdDetailsGetResponse) Status() string { if r.HTTPResponse != nil { return r.HTTPResponse.Status } @@ -17303,7 +18248,7 @@ func (r MarkReadApiModelsAlertsAlertIdReadPatchResponse) Status() string { } // StatusCode returns HTTPResponse.StatusCode -func (r MarkReadApiModelsAlertsAlertIdReadPatchResponse) StatusCode() int { +func (r GetModelApiModelsModelIdDetailsGetResponse) StatusCode() int { if r.HTTPResponse != nil { return r.HTTPResponse.StatusCode } @@ -19233,6 +20178,15 @@ func (c *ClientWithResponses) TestCompactionPromptApiMemoryBanksMemoryBankIdTest return ParseTestCompactionPromptApiMemoryBanksMemoryBankIdTestCompactionPostResponse(rsp) } +// ListModelsApiModelsGetWithResponse request returning *ListModelsApiModelsGetResponse +func (c *ClientWithResponses) ListModelsApiModelsGetWithResponse(ctx context.Context, params *ListModelsApiModelsGetParams, reqEditors ...RequestEditorFn) (*ListModelsApiModelsGetResponse, error) { + rsp, err := c.ListModelsApiModelsGet(ctx, params, reqEditors...) + if err != nil { + return nil, err + } + return ParseListModelsApiModelsGetResponse(rsp) +} + // ListAlertsApiModelsAlertsGetWithResponse request returning *ListAlertsApiModelsAlertsGetResponse func (c *ClientWithResponses) ListAlertsApiModelsAlertsGetWithResponse(ctx context.Context, params *ListAlertsApiModelsAlertsGetParams, reqEditors ...RequestEditorFn) (*ListAlertsApiModelsAlertsGetResponse, error) { rsp, err := c.ListAlertsApiModelsAlertsGet(ctx, params, reqEditors...) @@ -19269,6 +20223,59 @@ func (c *ClientWithResponses) MarkReadApiModelsAlertsAlertIdReadPatchWithRespons return ParseMarkReadApiModelsAlertsAlertIdReadPatchResponse(rsp) } +// ListExperimentsApiModelsPlaygroundExperimentsGetWithResponse request returning *ListExperimentsApiModelsPlaygroundExperimentsGetResponse +func (c *ClientWithResponses) ListExperimentsApiModelsPlaygroundExperimentsGetWithResponse(ctx context.Context, params *ListExperimentsApiModelsPlaygroundExperimentsGetParams, reqEditors ...RequestEditorFn) (*ListExperimentsApiModelsPlaygroundExperimentsGetResponse, error) { + rsp, err := c.ListExperimentsApiModelsPlaygroundExperimentsGet(ctx, params, reqEditors...) + if err != nil { + return nil, err + } + return ParseListExperimentsApiModelsPlaygroundExperimentsGetResponse(rsp) +} + +// CreateExperimentApiModelsPlaygroundExperimentsPostWithBodyWithResponse request with arbitrary body returning *CreateExperimentApiModelsPlaygroundExperimentsPostResponse +func (c *ClientWithResponses) CreateExperimentApiModelsPlaygroundExperimentsPostWithBodyWithResponse(ctx context.Context, params *CreateExperimentApiModelsPlaygroundExperimentsPostParams, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*CreateExperimentApiModelsPlaygroundExperimentsPostResponse, error) { + rsp, err := c.CreateExperimentApiModelsPlaygroundExperimentsPostWithBody(ctx, params, contentType, body, reqEditors...) + if err != nil { + return nil, err + } + return ParseCreateExperimentApiModelsPlaygroundExperimentsPostResponse(rsp) +} + +func (c *ClientWithResponses) CreateExperimentApiModelsPlaygroundExperimentsPostWithResponse(ctx context.Context, params *CreateExperimentApiModelsPlaygroundExperimentsPostParams, body CreateExperimentApiModelsPlaygroundExperimentsPostJSONRequestBody, reqEditors ...RequestEditorFn) (*CreateExperimentApiModelsPlaygroundExperimentsPostResponse, error) { + rsp, err := c.CreateExperimentApiModelsPlaygroundExperimentsPost(ctx, params, body, reqEditors...) + if err != nil { + return nil, err + } + return ParseCreateExperimentApiModelsPlaygroundExperimentsPostResponse(rsp) +} + +// GetExperimentApiModelsPlaygroundExperimentsExperimentIdGetWithResponse request returning *GetExperimentApiModelsPlaygroundExperimentsExperimentIdGetResponse +func (c *ClientWithResponses) GetExperimentApiModelsPlaygroundExperimentsExperimentIdGetWithResponse(ctx context.Context, experimentId openapi_types.UUID, params *GetExperimentApiModelsPlaygroundExperimentsExperimentIdGetParams, reqEditors ...RequestEditorFn) (*GetExperimentApiModelsPlaygroundExperimentsExperimentIdGetResponse, error) { + rsp, err := c.GetExperimentApiModelsPlaygroundExperimentsExperimentIdGet(ctx, experimentId, params, reqEditors...) + if err != nil { + return nil, err + } + return ParseGetExperimentApiModelsPlaygroundExperimentsExperimentIdGetResponse(rsp) +} + +// CancelExperimentEndpointApiModelsPlaygroundExperimentsExperimentIdCancelPostWithResponse request returning *CancelExperimentEndpointApiModelsPlaygroundExperimentsExperimentIdCancelPostResponse +func (c *ClientWithResponses) CancelExperimentEndpointApiModelsPlaygroundExperimentsExperimentIdCancelPostWithResponse(ctx context.Context, experimentId openapi_types.UUID, params *CancelExperimentEndpointApiModelsPlaygroundExperimentsExperimentIdCancelPostParams, reqEditors ...RequestEditorFn) (*CancelExperimentEndpointApiModelsPlaygroundExperimentsExperimentIdCancelPostResponse, error) { + rsp, err := c.CancelExperimentEndpointApiModelsPlaygroundExperimentsExperimentIdCancelPost(ctx, experimentId, params, reqEditors...) + if err != nil { + return nil, err + } + return ParseCancelExperimentEndpointApiModelsPlaygroundExperimentsExperimentIdCancelPostResponse(rsp) +} + +// GetModelApiModelsModelIdDetailsGetWithResponse request returning *GetModelApiModelsModelIdDetailsGetResponse +func (c *ClientWithResponses) GetModelApiModelsModelIdDetailsGetWithResponse(ctx context.Context, modelId string, params *GetModelApiModelsModelIdDetailsGetParams, reqEditors ...RequestEditorFn) (*GetModelApiModelsModelIdDetailsGetResponse, error) { + rsp, err := c.GetModelApiModelsModelIdDetailsGet(ctx, modelId, params, reqEditors...) + if err != nil { + return nil, err + } + return ParseGetModelApiModelsModelIdDetailsGetResponse(rsp) +} + // GetRecommendationsApiModelsModelIdRecommendationsGetWithResponse request returning *GetRecommendationsApiModelsModelIdRecommendationsGetResponse func (c *ClientWithResponses) GetRecommendationsApiModelsModelIdRecommendationsGetWithResponse(ctx context.Context, modelId string, params *GetRecommendationsApiModelsModelIdRecommendationsGetParams, reqEditors ...RequestEditorFn) (*GetRecommendationsApiModelsModelIdRecommendationsGetResponse, error) { rsp, err := c.GetRecommendationsApiModelsModelIdRecommendationsGet(ctx, modelId, params, reqEditors...) @@ -22535,6 +23542,39 @@ func ParseTestCompactionPromptApiMemoryBanksMemoryBankIdTestCompactionPostRespon return response, nil } +// ParseListModelsApiModelsGetResponse parses an HTTP response from a ListModelsApiModelsGetWithResponse call +func ParseListModelsApiModelsGetResponse(rsp *http.Response) (*ListModelsApiModelsGetResponse, error) { + bodyBytes, err := io.ReadAll(rsp.Body) + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err + } + + response := &ListModelsApiModelsGetResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest []SchemasModelResponsesProviderGroupResponse + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 422: + var dest HTTPValidationError + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON422 = &dest + + } + + return response, nil +} + // ParseListAlertsApiModelsAlertsGetResponse parses an HTTP response from a ListAlertsApiModelsAlertsGetWithResponse call func ParseListAlertsApiModelsAlertsGetResponse(rsp *http.Response) (*ListAlertsApiModelsAlertsGetResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) @@ -22636,6 +23676,171 @@ func ParseMarkReadApiModelsAlertsAlertIdReadPatchResponse(rsp *http.Response) (* return response, nil } +// ParseListExperimentsApiModelsPlaygroundExperimentsGetResponse parses an HTTP response from a ListExperimentsApiModelsPlaygroundExperimentsGetWithResponse call +func ParseListExperimentsApiModelsPlaygroundExperimentsGetResponse(rsp *http.Response) (*ListExperimentsApiModelsPlaygroundExperimentsGetResponse, error) { + bodyBytes, err := io.ReadAll(rsp.Body) + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err + } + + response := &ListExperimentsApiModelsPlaygroundExperimentsGetResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest map[string]interface{} + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 422: + var dest HTTPValidationError + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON422 = &dest + + } + + return response, nil +} + +// ParseCreateExperimentApiModelsPlaygroundExperimentsPostResponse parses an HTTP response from a CreateExperimentApiModelsPlaygroundExperimentsPostWithResponse call +func ParseCreateExperimentApiModelsPlaygroundExperimentsPostResponse(rsp *http.Response) (*CreateExperimentApiModelsPlaygroundExperimentsPostResponse, error) { + bodyBytes, err := io.ReadAll(rsp.Body) + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err + } + + response := &CreateExperimentApiModelsPlaygroundExperimentsPostResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest map[string]interface{} + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 422: + var dest HTTPValidationError + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON422 = &dest + + } + + return response, nil +} + +// ParseGetExperimentApiModelsPlaygroundExperimentsExperimentIdGetResponse parses an HTTP response from a GetExperimentApiModelsPlaygroundExperimentsExperimentIdGetWithResponse call +func ParseGetExperimentApiModelsPlaygroundExperimentsExperimentIdGetResponse(rsp *http.Response) (*GetExperimentApiModelsPlaygroundExperimentsExperimentIdGetResponse, error) { + bodyBytes, err := io.ReadAll(rsp.Body) + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err + } + + response := &GetExperimentApiModelsPlaygroundExperimentsExperimentIdGetResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest map[string]interface{} + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 422: + var dest HTTPValidationError + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON422 = &dest + + } + + return response, nil +} + +// ParseCancelExperimentEndpointApiModelsPlaygroundExperimentsExperimentIdCancelPostResponse parses an HTTP response from a CancelExperimentEndpointApiModelsPlaygroundExperimentsExperimentIdCancelPostWithResponse call +func ParseCancelExperimentEndpointApiModelsPlaygroundExperimentsExperimentIdCancelPostResponse(rsp *http.Response) (*CancelExperimentEndpointApiModelsPlaygroundExperimentsExperimentIdCancelPostResponse, error) { + bodyBytes, err := io.ReadAll(rsp.Body) + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err + } + + response := &CancelExperimentEndpointApiModelsPlaygroundExperimentsExperimentIdCancelPostResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest map[string]interface{} + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 422: + var dest HTTPValidationError + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON422 = &dest + + } + + return response, nil +} + +// ParseGetModelApiModelsModelIdDetailsGetResponse parses an HTTP response from a GetModelApiModelsModelIdDetailsGetWithResponse call +func ParseGetModelApiModelsModelIdDetailsGetResponse(rsp *http.Response) (*GetModelApiModelsModelIdDetailsGetResponse, error) { + bodyBytes, err := io.ReadAll(rsp.Body) + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err + } + + response := &GetModelApiModelsModelIdDetailsGetResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest SchemasModelResponsesPromptModelResponse + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 422: + var dest HTTPValidationError + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON422 = &dest + + } + + return response, nil +} + // ParseGetRecommendationsApiModelsModelIdRecommendationsGetResponse parses an HTTP response from a GetRecommendationsApiModelsModelIdRecommendationsGetWithResponse call func ParseGetRecommendationsApiModelsModelIdRecommendationsGetResponse(rsp *http.Response) (*GetRecommendationsApiModelsModelIdRecommendationsGetResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) diff --git a/openapi/seclai.openapi.json b/openapi/seclai.openapi.json index 6e6e6f8..ecc90b5 100644 --- a/openapi/seclai.openapi.json +++ b/openapi/seclai.openapi.json @@ -61,7 +61,7 @@ }, "definition": { "additionalProperties": true, - "description": "The agent definition containing name, description, tags, and step workflow tree. Step types include prompt_call, retrieval, transform, gate, retry, evaluate_step, insight, extract_json, send_email, webhook_call, call_agent, write_metadata, write_content_attachment, load_content_attachment, load_content, display_result, and others.", + "description": "The agent definition containing name, description, tags, and step workflow tree. Step types include prompt_call, retrieval, transform, gate, retry, evaluate_step, insight, extract_content, streaming_result, send_email, webhook_call, call_agent, write_metadata, write_content_attachment, load_content_attachment, load_content, display_result, and others.", "title": "Definition", "type": "object" }, @@ -2048,6 +2048,17 @@ "description": "Embedding model override.", "title": "Embedding Model" }, + "index_mode": { + "anyOf": [ + { + "$ref": "#/components/schemas/SourceIndexMode" + }, + { + "type": "null" + } + ], + "description": "Index mode for custom_index sources: fast_and_cheap (default), balanced, slow_and_thorough, or custom." + }, "name": { "description": "Source name.", "maxLength": 255, @@ -2106,7 +2117,7 @@ "title": "Retention" }, "source_type": { - "description": "Source type: rss, website, file_uploads, or custom_index.", + "description": "Source type: rss, website, or custom_index. The legacy value 'file_uploads' is accepted as an alias for custom_index.", "title": "Source Type", "type": "string" }, @@ -3918,6 +3929,101 @@ "title": "PendingProcessingCompletedFailedStatus", "type": "string" }, + "PlaygroundCreateRequest": { + "description": "Create a model playground experiment via the public API.", + "properties": { + "evaluation_complexity": { + "default": "medium", + "description": "simple, medium, or complex", + "enum": [ + "simple", + "medium", + "complex" + ], + "title": "Evaluation Complexity", + "type": "string" + }, + "evaluation_mode": { + "default": "manual", + "description": "manual or prompt", + "enum": [ + "manual", + "prompt" + ], + "title": "Evaluation Mode", + "type": "string" + }, + "evaluator_model_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Evaluator model ID when evaluation_mode is prompt.", + "title": "Evaluator Model Id" + }, + "include_step_output_in_evaluation": { + "default": false, + "description": "Whether to include selected step output as evaluator context.", + "title": "Include Step Output In Evaluation", + "type": "boolean" + }, + "json_template": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Optional JSON template for advanced mode.", + "title": "Json Template" + }, + "model_ids": { + "description": "Selected model IDs (1-10).", + "items": { + "type": "string" + }, + "maxItems": 10, + "minItems": 1, + "title": "Model Ids", + "type": "array" + }, + "prompt": { + "description": "Prompt text for the experiment.", + "title": "Prompt", + "type": "string" + }, + "selected_step_output": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Optional step output text for evaluator context.", + "title": "Selected Step Output" + }, + "system_prompt": { + "default": "", + "description": "Optional system prompt.", + "title": "System Prompt", + "type": "string" + } + }, + "required": [ + "model_ids", + "prompt" + ], + "title": "PlaygroundCreateRequest", + "type": "object" + }, "PromptModelAutoUpgradeStrategy": { "enum": [ "none", @@ -3928,6 +4034,110 @@ "title": "PromptModelAutoUpgradeStrategy", "type": "string" }, + "PromptToolResponse": { + "description": "Response model for a prompt tool.", + "properties": { + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Description" + }, + "documentation_url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Documentation Url" + }, + "example": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Example" + }, + "headers": { + "anyOf": [ + { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Headers" + }, + "id": { + "title": "Id", + "type": "string" + }, + "name": { + "title": "Name", + "type": "string" + }, + "notes": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Notes" + }, + "tool_name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tool Name" + }, + "tool_type": { + "title": "Tool Type", + "type": "string" + }, + "tool_type_pattern": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tool Type Pattern" + } + }, + "required": [ + "id", + "tool_type", + "name" + ], + "title": "PromptToolResponse", + "type": "object" + }, "ProposedActionResponse": { "description": "A single proposed action.", "properties": { @@ -4262,6 +4472,17 @@ "title": "SourceEmbeddingMigrationResponse", "type": "object" }, + "SourceIndexMode": { + "description": "Embedding quality / cost trade-off preset for custom_index sources.\n\nEach preset controls the default embedding dimensions, chunk size, and\nchunk overlap. The embedding model is always the account-level default\n(currently ``AWS_BEDROCK_AMAZON_NOVA_2_MULTIMODAL``).\n\nPresets:\n FAST_AND_CHEAP: 256 dimensions, 3 000 char chunks, 500 char overlap.\n BALANCED: 384 dimensions, 1 500 char chunks, 300 char overlap.\n SLOW_AND_THOROUGH: 1 024 dimensions, 1 000 char chunks, 200 char overlap.\n CUSTOM: Caller supplies embedding model, dimensions, and chunk config.", + "enum": [ + "fast_and_cheap", + "balanced", + "slow_and_thorough", + "custom" + ], + "title": "SourceIndexMode", + "type": "string" + }, "SourceResponse": { "description": "Response model for source data.", "properties": { @@ -4430,6 +4651,17 @@ "title": "Id", "type": "string" }, + "index_mode": { + "anyOf": [ + { + "$ref": "#/components/schemas/SourceIndexMode" + }, + { + "type": "null" + } + ], + "description": "Index mode for custom_index sources: fast_and_cheap, balanced, slow_and_thorough, or custom." + }, "name": { "description": "Name of the source connection.", "title": "Name", @@ -5450,51 +5682,51 @@ "title": "ValidationError", "type": "object" }, - "routers__api__agents__AgentListResponse": { + "VariantCategoryResponse": { + "description": "Response model for a variant category", "properties": { - "data": { - "description": "List of agents.", - "items": { - "$ref": "#/components/schemas/AgentSummaryResponse" - }, - "title": "Data", - "type": "array" + "category": { + "title": "Category", + "type": "string" }, - "pagination": { - "$ref": "#/components/schemas/PaginationResponse" - } - }, - "required": [ - "data", - "pagination" - ], - "title": "AgentListResponse", - "type": "object" - }, - "routers__api__agents__AgentRunListResponse": { - "properties": { - "data": { - "description": "List of agent runs.", + "configurable": { + "title": "Configurable", + "type": "boolean" + }, + "description": { + "title": "Description", + "type": "string" + }, + "options": { "items": { - "$ref": "#/components/schemas/AgentRunResponse" + "$ref": "#/components/schemas/VariantOptionResponse" }, - "title": "Data", + "title": "Options", "type": "array" }, - "pagination": { - "$ref": "#/components/schemas/PaginationResponse" + "title": { + "title": "Title", + "type": "string" } }, "required": [ - "data", - "pagination" + "category", + "title", + "description", + "configurable", + "options" ], - "title": "AgentRunListResponse", + "title": "VariantCategoryResponse", "type": "object" }, - "routers__api__agents__AgentTraceSearchRequest": { + "VariantOptionResponse": { + "description": "Response model for a variant option", "properties": { - "agent_id": { + "default": { + "title": "Default", + "type": "boolean" + }, + "description": { "anyOf": [ { "type": "string" @@ -5503,81 +5735,252 @@ "type": "null" } ], - "description": "Filter by agent ID.", - "title": "Agent Id" - }, - "query": { - "description": "Search query text.", - "title": "Query", - "type": "string" + "title": "Description" }, - "run_status": { + "input_1h_cache_write_credits_per_1000_tokens": { "anyOf": [ { - "type": "string" + "type": "number" }, { "type": "null" } ], - "description": "Filter by run status.", - "title": "Run Status" + "title": "Input 1H Cache Write Credits Per 1000 Tokens" }, - "step_type": { + "input_5m_cache_write_credits_per_1000_tokens": { "anyOf": [ { - "type": "string" + "type": "number" }, { "type": "null" } ], - "description": "Filter by step type.", - "title": "Step Type" + "title": "Input 5M Cache Write Credits Per 1000 Tokens" }, - "top_n": { - "default": 10, - "description": "Maximum number of results.", - "maximum": 100.0, - "minimum": 1.0, - "title": "Top N", - "type": "integer" - } - }, - "required": [ - "query" - ], - "title": "AgentTraceSearchRequest", - "type": "object" - }, - "routers__api__agents__CreateAgentRequest": { - "properties": { - "agent_template": { + "input_cache_hit_credits_per_1000_tokens": { "anyOf": [ { - "type": "string" + "type": "number" }, { "type": "null" } ], - "description": "Template to initialize the agent from. Values: blank, retrieval_example, simple_qa, summarizer, json_extractor, content_change_notifier, scheduled_report, webhook_pipeline.", - "title": "Agent Template" + "title": "Input Cache Hit Credits Per 1000 Tokens" }, - "description": { + "input_credits_per_1000_tokens": { "anyOf": [ { - "type": "string" + "type": "number" }, { "type": "null" } ], - "description": "Optional description.", - "title": "Description" + "title": "Input Credits Per 1000 Tokens" }, - "name": { - "description": "Name for the new agent.", + "long_context_input_cache_hit_credits_per_1000_tokens": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Long Context Input Cache Hit Credits Per 1000 Tokens" + }, + "long_context_input_credits_per_1000_tokens": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Long Context Input Credits Per 1000 Tokens" + }, + "long_context_output_credits_per_1000_tokens": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Long Context Output Credits Per 1000 Tokens" + }, + "long_context_threshold": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Long Context Threshold" + }, + "output_credits_per_1000_tokens": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Output Credits Per 1000 Tokens" + }, + "title": { + "title": "Title", + "type": "string" + }, + "value": { + "title": "Value", + "type": "string" + } + }, + "required": [ + "value", + "title", + "default" + ], + "title": "VariantOptionResponse", + "type": "object" + }, + "routers__api__agents__AgentListResponse": { + "properties": { + "data": { + "description": "List of agents.", + "items": { + "$ref": "#/components/schemas/AgentSummaryResponse" + }, + "title": "Data", + "type": "array" + }, + "pagination": { + "$ref": "#/components/schemas/PaginationResponse" + } + }, + "required": [ + "data", + "pagination" + ], + "title": "AgentListResponse", + "type": "object" + }, + "routers__api__agents__AgentRunListResponse": { + "properties": { + "data": { + "description": "List of agent runs.", + "items": { + "$ref": "#/components/schemas/AgentRunResponse" + }, + "title": "Data", + "type": "array" + }, + "pagination": { + "$ref": "#/components/schemas/PaginationResponse" + } + }, + "required": [ + "data", + "pagination" + ], + "title": "AgentRunListResponse", + "type": "object" + }, + "routers__api__agents__AgentTraceSearchRequest": { + "properties": { + "agent_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Filter by agent ID.", + "title": "Agent Id" + }, + "query": { + "description": "Search query text.", + "title": "Query", + "type": "string" + }, + "run_status": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Filter by run status.", + "title": "Run Status" + }, + "step_type": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Filter by step type.", + "title": "Step Type" + }, + "top_n": { + "default": 10, + "description": "Maximum number of results.", + "maximum": 100.0, + "minimum": 1.0, + "title": "Top N", + "type": "integer" + } + }, + "required": [ + "query" + ], + "title": "AgentTraceSearchRequest", + "type": "object" + }, + "routers__api__agents__CreateAgentRequest": { + "properties": { + "agent_template": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Template to initialize the agent from. Values: blank, retrieval_example, simple_qa, summarizer, json_extractor, content_change_notifier, scheduled_report, webhook_pipeline.", + "title": "Agent Template" + }, + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Optional description.", + "title": "Description" + }, + "name": { + "description": "Name for the new agent.", "title": "Name", "type": "string" }, @@ -7130,61 +7533,429 @@ "title": "SourceListResponse", "type": "object" }, - "schemas__v1__agent_evaluations__NonManualEvaluationModeStatResponse": { - "description": "Per-mode rollup for evaluation activity.", + "schemas__model_responses__PromptModelResponse": { + "description": "Response model for prompt model data", "properties": { - "failed": { - "title": "Failed", - "type": "integer" - }, - "failure_rate": { - "title": "Failure Rate", - "type": "number" + "default": { + "title": "Default", + "type": "boolean" }, - "flagged": { - "title": "Flagged", - "type": "integer" + "deprecated_at": { + "anyOf": [ + { + "format": "date-time", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Deprecated At" }, - "mode": { - "title": "Mode", + "description": { + "title": "Description", "type": "string" }, - "pass_rate": { - "title": "Pass Rate", - "type": "number" - }, - "passed": { - "title": "Passed", - "type": "integer" + "enabled": { + "title": "Enabled", + "type": "boolean" }, - "total": { - "title": "Total", - "type": "integer" - } - }, - "required": [ - "mode", - "total", - "passed", - "failed", - "flagged", - "pass_rate", - "failure_rate" - ], - "title": "NonManualEvaluationModeStatResponse", - "type": "object" - }, - "schemas__v1__agent_evaluations__NonManualEvaluationSummaryResponse": { - "description": "Account-level summary for evaluations.", - "properties": { - "by_mode": { - "items": { - "$ref": "#/components/schemas/schemas__v1__agent_evaluations__NonManualEvaluationModeStatResponse" - }, - "title": "By Mode", - "type": "array" + "family": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Family" }, - "failed": { + "family_generation": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Family Generation" + }, + "id": { + "title": "Id", + "type": "string" + }, + "input_1h_cache_write_credits_per_1000_tokens": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Input 1H Cache Write Credits Per 1000 Tokens" + }, + "input_5m_cache_write_credits_per_1000_tokens": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Input 5M Cache Write Credits Per 1000 Tokens" + }, + "input_cache_hit_credits_per_1000_tokens": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Input Cache Hit Credits Per 1000 Tokens" + }, + "input_credits_per_1000_tokens": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Input Credits Per 1000 Tokens" + }, + "is_new": { + "default": false, + "title": "Is New", + "type": "boolean" + }, + "last_used": { + "default": false, + "title": "Last Used", + "type": "boolean" + }, + "max_context_tokens": { + "title": "Max Context Tokens", + "type": "integer" + }, + "max_conversation_length": { + "title": "Max Conversation Length", + "type": "integer" + }, + "max_output_tokens": { + "title": "Max Output Tokens", + "type": "integer" + }, + "model_id": { + "title": "Model Id", + "type": "string" + }, + "name": { + "title": "Name", + "type": "string" + }, + "output_credits_per_1000_tokens": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Output Credits Per 1000 Tokens" + }, + "payload_schema": { + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "description": "Model-specific JSON schema for advanced prompt_call json_template payloads.", + "title": "Payload Schema" + }, + "payload_schema_source_url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Source URL used to derive payload_schema guidance for this model.", + "title": "Payload Schema Source Url" + }, + "provider": { + "title": "Provider", + "type": "string" + }, + "released_at": { + "anyOf": [ + { + "format": "date-time", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Released At" + }, + "schema_documentation_url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Model documentation URL with request/response payload details.", + "title": "Schema Documentation Url" + }, + "schema_notes": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Human-readable notes about request payload compatibility.", + "title": "Schema Notes" + }, + "successor_model_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Successor Model Id" + }, + "sunset_at": { + "anyOf": [ + { + "format": "date-time", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Sunset At" + }, + "supported_input_media": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Supported Input Media" + }, + "supported_languages": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Supported Languages" + }, + "supports_openai_arguments": { + "default": false, + "title": "Supports Openai Arguments", + "type": "boolean" + }, + "supports_streaming": { + "default": false, + "title": "Supports Streaming", + "type": "boolean" + }, + "supports_structured_output": { + "default": true, + "title": "Supports Structured Output", + "type": "boolean" + }, + "supports_thinking": { + "default": false, + "title": "Supports Thinking", + "type": "boolean" + }, + "supports_tool_use": { + "default": true, + "title": "Supports Tool Use", + "type": "boolean" + }, + "tools_disabled": { + "items": { + "$ref": "#/components/schemas/PromptToolResponse" + }, + "title": "Tools Disabled", + "type": "array" + }, + "tools_enabled": { + "items": { + "$ref": "#/components/schemas/PromptToolResponse" + }, + "title": "Tools Enabled", + "type": "array" + }, + "training_cutoff_at": { + "anyOf": [ + { + "format": "date-time", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Training Cutoff At" + }, + "url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Url" + }, + "variants": { + "anyOf": [ + { + "items": { + "$ref": "#/components/schemas/VariantCategoryResponse" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Variants" + } + }, + "required": [ + "id", + "model_id", + "name", + "description", + "enabled", + "default", + "provider", + "max_context_tokens", + "max_output_tokens", + "max_conversation_length" + ], + "title": "PromptModelResponse", + "type": "object" + }, + "schemas__model_responses__ProviderGroupResponse": { + "description": "Response model for provider group with models", + "properties": { + "models": { + "items": { + "$ref": "#/components/schemas/schemas__model_responses__PromptModelResponse" + }, + "title": "Models", + "type": "array" + }, + "provider": { + "title": "Provider", + "type": "string" + } + }, + "required": [ + "provider", + "models" + ], + "title": "ProviderGroupResponse", + "type": "object" + }, + "schemas__v1__agent_evaluations__NonManualEvaluationModeStatResponse": { + "description": "Per-mode rollup for evaluation activity.", + "properties": { + "failed": { + "title": "Failed", + "type": "integer" + }, + "failure_rate": { + "title": "Failure Rate", + "type": "number" + }, + "flagged": { + "title": "Flagged", + "type": "integer" + }, + "mode": { + "title": "Mode", + "type": "string" + }, + "pass_rate": { + "title": "Pass Rate", + "type": "number" + }, + "passed": { + "title": "Passed", + "type": "integer" + }, + "total": { + "title": "Total", + "type": "integer" + } + }, + "required": [ + "mode", + "total", + "passed", + "failed", + "flagged", + "pass_rate", + "failure_rate" + ], + "title": "NonManualEvaluationModeStatResponse", + "type": "object" + }, + "schemas__v1__agent_evaluations__NonManualEvaluationSummaryResponse": { + "description": "Account-level summary for evaluations.", + "properties": { + "by_mode": { + "items": { + "$ref": "#/components/schemas/schemas__v1__agent_evaluations__NonManualEvaluationModeStatResponse" + }, + "title": "By Mode", + "type": "array" + }, + "failed": { "title": "Failed", "type": "integer" }, @@ -8458,7 +9229,7 @@ }, "/agents/{agent_id}/definition": { "get": { - "description": "Fetch the current agent definition from the main branch.\n\nThe response includes `change_id` which must be provided when updating the definition (optimistic locking).\n\nThe definition contains the agent's step workflow. Available step types:\n- `prompt_call`: Call an LLM with a prompt template\n- `retrieval`: Search a knowledge base\n- `transform`: Reshape data with a Liquid template\n- `gate`: Evaluate conditions, stop or continue child execution\n- `retry`: Re-execute from a target ancestor step (for quality-control loops; pair with a `gate` step for conditional retrying. Fields: `target_step_id` (ancestor step ID), `max_retries` (1\u201310))\n- `evaluate_step`: Score a selected previous step output and emit JSON with `score`, `passed`, and `pass_threshold` (fields: `target_step_id`, `evaluation_prompt`, `pass_threshold`, optional `evaluation_tier`, optional `expectation_config`)\n- `insight`: Progressively read and analyze large input\n- `extract_json` / `extract_html` / `extract_xml`: Extract structured data\n- `send_email`: Send email with step output\n- `webhook_call`: POST data to an external URL\n- `write_aws_s3_object`: Write output to S3\n- `call_agent`: Invoke another agent\n- `write_metadata`: Write a value to content metadata (for filtering/gates; content-triggered agents only. Fields: `metadata_key`, `content`)\n- `write_content_attachment`: Write a file-backed attachment to content (optionally indexed for retrieval; content-triggered agents only. Fields: `attachment_key`, `content`, `content_type`, `indexed`)\n- `load_content_attachment`: Load a previously written attachment (content-triggered agents only. Fields: `attachment_key`)\n- `load_content`: Load the full text body of a source document (typically used with content-triggered agents; can also load by explicit `content_version_id`. Fields: `content_version_id` optional)\n- `display_result`: Show output to the user\n- `join`: Merge parallel branches\n- `combinator`: Combine multiple inputs\n- `text`: Static text literal\n\nAuth & scoping:\n- Requires `X-API-Key` header or OAuth Bearer token. You can only access agents belonging to your account.", + "description": "Fetch the current agent definition from the main branch.\n\nThe response includes `change_id` which must be provided when updating the definition (optimistic locking).\n\nThe definition contains the agent's step workflow. Available step types:\n- `prompt_call`: Call an LLM with a prompt template\n- `retrieval`: Search a knowledge base\n- `transform`: Reshape data with a Liquid template\n- `gate`: Evaluate conditions, stop or continue child execution\n- `retry`: Re-execute from a target ancestor step (for quality-control loops; pair with a `gate` step for conditional retrying. Fields: `target_step_id` (ancestor step ID), `max_retries` (1\u201310))\n- `evaluate_step`: Score a selected previous step output and emit JSON with `score`, `passed`, and `pass_threshold` (fields: `target_step_id`, `evaluation_prompt`, `pass_threshold`, optional `evaluation_tier`, optional `expectation_config`)\n- `insight`: Progressively read and analyze large input\n- `extract_content`: Extract structured data (JSON, HTML, XML)\n- `send_email`: Send email with step output\n- `webhook_call`: POST data to an external URL\n- `write_aws_s3_object`: Write output to S3\n- `call_agent`: Invoke another agent\n- `write_metadata`: Write a value to content metadata (for filtering/gates; content-triggered agents only. Fields: `metadata_key`, `content`)\n- `write_content_attachment`: Write a file-backed attachment to content (optionally indexed for retrieval; content-triggered agents only. Fields: `attachment_key`, `content`, `content_type`, `indexed`)\n- `load_content_attachment`: Load a previously written attachment (content-triggered agents only. Fields: `attachment_key`)\n- `load_content`: Load the full text body of a source document (typically used with content-triggered agents; can also load by explicit `content_version_id`. Fields: `content_version_id` optional)\n- `streaming_result`: Stream LLM tokens in real-time via SSE (must be a direct child of `prompt_call`; requires `dynamic_input` trigger; `priority: true` enables real-time streaming)\n- `display_result`: Show output to the user\n- `join`: Merge parallel branches\n- `combinator`: Combine multiple inputs\n- `text`: Static text literal\n\nAuth & scoping:\n- Requires `X-API-Key` header or OAuth Bearer token. You can only access agents belonging to your account.", "operationId": "get_agent_definition_api_agents__agent_id__definition_get", "parameters": [ { @@ -8502,7 +9273,7 @@ ] }, "put": { - "description": "Update the agent's definition on the main branch.\n\nUses **optimistic locking**: provide `expected_change_id` from the last `GET /api/agents/{agent_id}/definition`. Returns `409 Conflict` if the definition was modified since your last read.\n\nThe definition contains the agent's step workflow. Step types include `prompt_call`, `retrieval`, `transform`, `gate`, `retry`, `evaluate_step`, `insight`, `extract_json`, `extract_html`, `extract_xml`, `send_email`, `webhook_call`, `write_aws_s3_object`, `call_agent`, `write_metadata`, `write_content_attachment`, `load_content_attachment`, `load_content`, `display_result`, `join`, `combinator`, and `text`. Non-composite step types (`display_result`, `join`, `retry`, `evaluate_step`) cannot contain child steps.\n\n**Retry steps** re-execute from a target ancestor step for quality-control loops. Configure with `target_step_id` (ancestor step ID) and `max_retries` (1\u201310). Best practice: place a `gate` step before the retry to make retries conditional.\n\nAuth & scoping:\n- Requires `X-API-Key` header or OAuth Bearer token. You can only update agents belonging to your account.", + "description": "Update the agent's definition on the main branch.\n\nUses **optimistic locking**: provide `expected_change_id` from the last `GET /api/agents/{agent_id}/definition`. Returns `409 Conflict` if the definition was modified since your last read.\n\nThe definition contains the agent's step workflow. Step types include `prompt_call`, `retrieval`, `transform`, `gate`, `retry`, `evaluate_step`, `insight`, `extract_content`, `streaming_result`, `send_email`, `webhook_call`, `write_aws_s3_object`, `call_agent`, `write_metadata`, `write_content_attachment`, `load_content_attachment`, `load_content`, `display_result`, `join`, `combinator`, and `text`. Non-composite step types (`display_result`, `join`, `retry`, `evaluate_step`, `streaming_result`) cannot contain child steps.\n\n**Retry steps** re-execute from a target ancestor step for quality-control loops. Configure with `target_step_id` (ancestor step ID) and `max_retries` (1\u201310). Best practice: place a `gate` step before the retry to make retries conditional.\n\nAuth & scoping:\n- Requires `X-API-Key` header or OAuth Bearer token. You can only update agents belonging to your account.", "operationId": "update_agent_definition_api_agents__agent_id__definition_put", "parameters": [ { @@ -8994,7 +9765,7 @@ }, "/agents/{agent_id}/export": { "get": { - "description": "Export an agent definition as a portable JSON snapshot.\n\nThe response contains the full definition, trigger configuration with schedules, alert configs, evaluation criteria, agent-scoped governance policies, and a resolved dependency manifest that maps every referenced external entity UUID to its human-readable name.\n\nResponse shape:\n- `export_version`: schema version (currently `\"2\"`)\n- `exported_at`: ISO-8601 timestamp\n- `agent`: name, description, schema_version, definition, timestamps\n- `trigger`: trigger type, input template, schedules\n- `alert_configs`: alert type, thresholds, recipients\n- `evaluation_criteria`: evaluation settings per step\n- `governance_policies`: agent-scoped governance policies\n- `dependencies`: knowledge_bases, memory_banks, source_connections, agents, users\n\nQuery params:\n- `download` (default true): when true, sets `Content-Disposition: attachment` so clients treat the response as a file download.\n\nAuth & scoping:\n- Requires `X-API-Key` header or OAuth Bearer token.\n- When using OAuth, you may target a different organization account with `X-Account-Id`; for API keys, the key's account is always used.\n- You can only export agents belonging to the resolved account.", + "description": "Export an agent definition as a portable JSON snapshot.\n\nThe response contains the full definition, trigger configuration with schedules, alert configs, evaluation criteria, agent-scoped governance policies, and a resolved dependency manifest that maps every referenced external entity UUID to its human-readable name.\n\nResponse shape:\n- `export_version`: schema version (currently `\"2\"`)\n- `exported_at`: ISO-8601 timestamp\n- `agent`: name, description, schema_version, definition, timestamps\n- `trigger`: trigger type, input template, schedules\n- `alert_configs`: alert type, thresholds, recipients\n- `evaluation_criteria`: evaluation settings per step\n- `governance_policies`: agent-scoped governance policies\n- `dependencies`: knowledge_bases, memory_banks, source_connections, agents, users\n\nQuery params:\n- `download` (default true): when true, sets `Content-Disposition: attachment` so clients treat the response as a file download.\n\nAuth & scoping:\n- Requires `X-API-Key`. You can only export agents belonging to your account.", "operationId": "export_agent_api_agents__agent_id__export_get", "parameters": [ { @@ -9196,7 +9967,7 @@ ] }, "post": { - "description": "Start an agent run.\n\nAn *agent* is an automated workflow that can monitor content from your sources, process it with AI, and trigger actions. This endpoint creates a new run and returns a `run_id` you can poll to retrieve status and output.\n\nWhen to use:\n- Use this endpoint for request/response style integrations where polling is acceptable.\n- Use `POST /agents/{agent_id}/runs/stream` if you need real-time progress via SSE.\n\nKey fields:\n- `input`: text input for agents with a `dynamic_input` trigger.\n- `input_upload_id`: alternatively, reference a file previously uploaded via `POST /agents/{agent_id}/upload-input` (mutually exclusive with `input`).\n- `priority`: set true for latency-sensitive, user-facing work.\n- `metadata`: a JSON object that becomes available to agent steps for string substitution.\n\nAfter starting:\n- Poll `GET /agents/runs/{run_id}` until `status` is `completed` or `failed`.\n- Use `include_step_outputs=true` to include per-step outputs, timing, and credits.\n\nAuth & scoping:\n- Requires `X-API-Key` header or OAuth Bearer token. All resources are scoped to the caller's account.", + "description": "Start an agent run.\n\nAn *agent* is an automated workflow that can monitor content from your sources, process it with AI, and trigger actions. This endpoint creates a new run and returns a `run_id` you can poll to retrieve status and output.\n\nWhen to use:\n- Use this endpoint for request/response style integrations where polling is acceptable.\n- Use `POST /agents/{agent_id}/runs/stream` if you need real-time progress via SSE.\n\nKey fields:\n- `input`: text input for agents with a `dynamic_input` trigger.\n- `input_upload_id`: alternatively, reference a file previously uploaded via `POST /agents/{agent_id}/upload-input` (mutually exclusive with `input`).\n- `priority`: set true for latency-sensitive, user-facing work. For agents with a `streaming_result` step, set `priority=true` to enable real-time token streaming; otherwise the run still proceeds, but without live token streaming.\n- `metadata`: a JSON object that becomes available to agent steps for string substitution.\n\nAfter starting:\n- Poll `GET /agents/runs/{run_id}` until `status` is `completed` or `failed`.\n- Use `include_step_outputs=true` to include per-step outputs, timing, and credits.\n\nAuth & scoping:\n- Requires `X-API-Key` header or OAuth Bearer token. All resources are scoped to the caller's account.", "operationId": "run_agent_api_agents__agent_id__runs_post", "parameters": [ { @@ -9233,6 +10004,9 @@ }, "description": "Successful Response" }, + "402": { + "description": "Insufficient credits \u2014 the account has exhausted its credits. The response body is `{\"detail\": {\"error\": \"insufficient_credits\", \"message\": ..., \"account_id\": ...}}`." + }, "422": { "content": { "application/json": { @@ -9252,7 +10026,7 @@ }, "/agents/{agent_id}/runs/stream": { "post": { - "description": "Start a **priority** agent run and stream run events using Server-Sent Events (SSE).\n\nThis is the best option for interactive UIs where you want progress updates as the run executes.\n\nHow it works:\n- The first `init` event contains an `AgentRunResponse` snapshot, including the `run_id`.\n- Subsequent events are forwarded from the run event stream (status changes, step events, etc).\n- The final `done` event contains the terminal snapshot (including `output` and `credits` when available).\n\nInput options (for `dynamic_input` triggers):\n- `input`: text input passed directly.\n- `input_upload_id`: reference a file uploaded via `POST /agents/{agent_id}/upload-input` (mutually exclusive with `input`).\n\nClient guidance:\n- Keep the connection open and handle keepalive comments.\n- On `timeout` or `error`, the payload includes `run_id` so clients can resume by polling `GET /agents/runs/{run_id}`.\n\nAuth & scoping:\n- Requires `X-API-Key` header or OAuth Bearer token. All resources are scoped to the caller's account.", + "description": "Start a **priority** agent run and stream run events using Server-Sent Events (SSE).\n\nThis is the best option for interactive UIs where you want progress updates as the run executes.\n\nHow it works:\n- The first `init` event contains an `AgentRunResponse` snapshot, including the `run_id`.\n- Subsequent events are forwarded from the run event stream (status changes, step events, etc).\n- If the agent contains a `streaming_result` step, `stream_token` events deliver individual LLM tokens (with a `token` field) and a `stream_end` event signals completion.\n- The final `done` event contains the terminal snapshot (including `output` and `credits` when available).\n\nInput options (for `dynamic_input` triggers):\n- `input`: text input passed directly.\n- `input_upload_id`: reference a file uploaded via `POST /agents/{agent_id}/upload-input` (mutually exclusive with `input`).\n\nClient guidance:\n- Keep the connection open and handle keepalive comments.\n- On `timeout` or `error`, the payload includes `run_id` so clients can resume by polling `GET /agents/runs/{run_id}`.\n\nAuth & scoping:\n- Requires `X-API-Key` header or OAuth Bearer token. All resources are scoped to the caller's account.", "operationId": "run_streaming_agent_api_agents__agent_id__runs_stream_post", "parameters": [ { @@ -9293,6 +10067,9 @@ }, "description": "Streams agent run events via Server-Sent Events (SSE); run is always created as priority.\n\nSSE events:\n- `event: init` \u2014 `data` is an `AgentRunResponse` snapshot (includes `run_id`).\n- `event: done` \u2014 `data` is the final `AgentRunResponse` snapshot (includes `output`, `credits`, etc).\n- Other events (e.g. `status`, step events) are forwarded from the run event stream.\n- On `timeout` / `error`, the payload includes `run_id` so clients can fetch status via `GET /api/agents/runs/{run_id}`." }, + "402": { + "description": "Insufficient credits \u2014 the account has exhausted its credits. The response body is `{\"detail\": {\"error\": \"insufficient_credits\", \"message\": ..., \"account_id\": ...}}`." + }, "422": { "content": { "application/json": { @@ -10930,7 +11707,7 @@ }, "/contents/{source_connection_content_version}/upload": { "post": { - "description": "Upload a new file and replace the content backing an existing `SourceConnectionContentVersion`.\n\nThis behaves like a source file upload, but it targets an existing content version ID. This is useful when you want to correct or update an uploaded document while keeping references stable.\n\n**Maximum file size:** 209715200 bytes.\n\n**Supported MIME types:**\n- `application/epub+zip`\n- `application/json`\n- `application/msword`\n- `application/pdf`\n- `application/vnd.ms-excel`\n- `application/vnd.ms-outlook`\n- `application/vnd.ms-powerpoint`\n- `application/vnd.openxmlformats-officedocument.presentationml.presentation`\n- `application/vnd.openxmlformats-officedocument.spreadsheetml.sheet`\n- `application/vnd.openxmlformats-officedocument.wordprocessingml.document`\n- `application/xml`\n- `application/zip`\n- `audio/flac`\n- `audio/mp4`\n- `audio/mpeg`\n- `audio/ogg`\n- `audio/wav`\n- `image/bmp`\n- `image/gif`\n- `image/jpeg`\n- `image/png`\n- `image/tiff`\n- `image/webp`\n- `text/csv`\n- `text/html`\n- `text/markdown`\n- `text/plain`\n- `text/x-markdown`\n- `text/xml`\n- `video/mp4`\n- `video/quicktime`\n- `video/x-msvideo`\n\nNotes:\n- If the uploaded file's content type is `application/octet-stream`, the server attempts to infer the type from the file extension.\n- Use `metadata` to attach an arbitrary JSON object of metadata (for example `metadata={\"category\":\"docs\"}`).\n- `title` is a convenience field and is merged into the metadata as `metadata.title` (it does not override an existing `metadata.title`).\n- For backwards compatibility, you can also pass form fields named `metadata_` (for example `metadata_author=...`). These override keys from `metadata`.\n\nAuth & scoping:\n- Requires `X-API-Key` header or OAuth Bearer token. You can only replace content belonging to your account.", + "description": "Upload a new file and replace the content backing an existing `SourceConnectionContentVersion`.\n\nThis behaves like a source file upload, but it targets an existing content version ID. This is useful when you want to correct or update an uploaded document while keeping references stable.\n\n**Maximum file size:** 209715200 bytes.\n\n**Supported MIME types:**\n- `application/epub+zip`\n- `application/json`\n- `application/pdf`\n- `application/vnd.ms-excel`\n- `application/vnd.ms-outlook`\n- `application/vnd.ms-powerpoint`\n- `application/vnd.openxmlformats-officedocument.presentationml.presentation`\n- `application/vnd.openxmlformats-officedocument.spreadsheetml.sheet`\n- `application/vnd.openxmlformats-officedocument.wordprocessingml.document`\n- `application/xml`\n- `application/zip`\n- `audio/flac`\n- `audio/mp4`\n- `audio/mpeg`\n- `audio/ogg`\n- `audio/wav`\n- `image/bmp`\n- `image/gif`\n- `image/jpeg`\n- `image/png`\n- `image/tiff`\n- `image/webp`\n- `text/csv`\n- `text/html`\n- `text/markdown`\n- `text/plain`\n- `text/x-markdown`\n- `text/xml`\n- `video/mp4`\n- `video/quicktime`\n- `video/x-msvideo`\n\nNotes:\n- If the uploaded file's content type is `application/octet-stream`, the server attempts to infer the type from the file extension.\n- Use `metadata` to attach an arbitrary JSON object of metadata (for example `metadata={\"category\":\"docs\"}`).\n- `title` is a convenience field and is merged into the metadata as `metadata.title` (it does not override an existing `metadata.title`).\n- For backwards compatibility, you can also pass form fields named `metadata_` (for example `metadata_author=...`). These override keys from `metadata`.\n\nAuth & scoping:\n- Requires `X-API-Key` header or OAuth Bearer token. You can only replace content belonging to your account.", "operationId": "upload_file_to_content_api_contents__source_connection_content_version__upload_post", "parameters": [ { @@ -11469,7 +12246,7 @@ }, "/me": { "get": { - "description": "Returns the authenticated user's personal account ID and a list of organizations they belong to. Each organization entry includes the organization's id, name, and account_id. Useful for CLI tooling that needs to let the user pick an organization context.", + "description": "Returns the authenticated user's personal account ID and a list of organisations they belong to. Each organisation entry includes the organisation's own id, display name, and account_id. Useful for CLI tooling that needs to let the user pick an org context.", "operationId": "get_me_api_me_get", "parameters": [ { @@ -11899,10 +12676,248 @@ ] } }, - "/memory_banks/{memory_bank_id}": { + "/memory_banks/{memory_bank_id}": { + "delete": { + "description": "Soft-delete a memory bank. This action is permanent and cannot be undone.\n\nThe linked content source and all stored conversation memory entries will also be removed.", + "operationId": "delete_memory_bank_api_memory_banks__memory_bank_id__delete", + "parameters": [ + { + "in": "path", + "name": "memory_bank_id", + "required": true, + "schema": { + "title": "Memory Bank Id", + "type": "string" + } + }, + { + "$ref": "#/components/parameters/X-Account-Id" + } + ], + "responses": { + "204": { + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Delete Memory Bank", + "tags": [ + "memory_banks" + ] + }, + "get": { + "description": "Fetch a memory bank by ID.\n\nAuth & scoping:\n- Requires `X-API-Key` header or OAuth Bearer token. You can only access memory banks belonging to your account.", + "operationId": "get_memory_bank_api_memory_banks__memory_bank_id__get", + "parameters": [ + { + "in": "path", + "name": "memory_bank_id", + "required": true, + "schema": { + "title": "Memory Bank Id", + "type": "string" + } + }, + { + "$ref": "#/components/parameters/X-Account-Id" + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MemoryBankResponseModel" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Get Memory Bank", + "tags": [ + "memory_banks" + ] + }, + "put": { + "description": "Update a memory bank's configuration. Only provided fields are changed; omitted fields are left unchanged.\n\nNote: the embedding `mode` cannot be changed after creation because it determines the vector dimensions used to store entries.", + "operationId": "update_memory_bank_api_memory_banks__memory_bank_id__put", + "parameters": [ + { + "in": "path", + "name": "memory_bank_id", + "required": true, + "schema": { + "title": "Memory Bank Id", + "type": "string" + } + }, + { + "$ref": "#/components/parameters/X-Account-Id" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateMemoryBankBody" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MemoryBankResponseModel" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Update Memory Bank", + "tags": [ + "memory_banks" + ] + } + }, + "/memory_banks/{memory_bank_id}/agents": { + "get": { + "description": "List agents whose current definition references this memory bank.\n\nReturns an array of `{agent_id, agent_name}` objects.", + "operationId": "get_agents_using_bank_api_memory_banks__memory_bank_id__agents_get", + "parameters": [ + { + "in": "path", + "name": "memory_bank_id", + "required": true, + "schema": { + "title": "Memory Bank Id", + "type": "string" + } + }, + { + "$ref": "#/components/parameters/X-Account-Id" + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "items": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "title": "Response Get Agents Using Bank Api Memory Banks Memory Bank Id Agents Get", + "type": "array" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Get Agents Using Bank", + "tags": [ + "memory_banks" + ] + } + }, + "/memory_banks/{memory_bank_id}/compact": { + "post": { + "description": "Trigger an on-demand compaction run for a memory bank.\n\nThe bank must have at least one compaction threshold configured (max_age_days, max_turns, or max_size_tokens). Compaction runs asynchronously \u2014 the response confirms scheduling, not completion.", + "operationId": "compact_memory_bank_api_memory_banks__memory_bank_id__compact_post", + "parameters": [ + { + "in": "path", + "name": "memory_bank_id", + "required": true, + "schema": { + "title": "Memory Bank Id", + "type": "string" + } + }, + { + "$ref": "#/components/parameters/X-Account-Id" + } + ], + "responses": { + "202": { + "content": { + "application/json": { + "schema": { + "additionalProperties": true, + "title": "Response Compact Memory Bank Api Memory Banks Memory Bank Id Compact Post", + "type": "object" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Compact Memory Bank", + "tags": [ + "memory_banks" + ] + } + }, + "/memory_banks/{memory_bank_id}/source": { "delete": { - "description": "Soft-delete a memory bank. This action is permanent and cannot be undone.\n\nThe linked content source and all stored conversation memory entries will also be removed.", - "operationId": "delete_memory_bank_api_memory_banks__memory_bank_id__delete", + "description": "Delete the content source linked to a memory bank, removing all stored memory entries.\n\nA new content source is automatically created on the next write. Use this to reset a bank's data without deleting the bank itself.", + "operationId": "delete_memory_bank_source_api_memory_banks__memory_bank_id__source_delete", "parameters": [ { "in": "path", @@ -11932,14 +12947,16 @@ "description": "Validation Error" } }, - "summary": "Delete Memory Bank", + "summary": "Delete Memory Bank Source", "tags": [ "memory_banks" ] - }, + } + }, + "/memory_banks/{memory_bank_id}/stats": { "get": { - "description": "Fetch a memory bank by ID.\n\nAuth & scoping:\n- Requires `X-API-Key` header or OAuth Bearer token. You can only access memory banks belonging to your account.", - "operationId": "get_memory_bank_api_memory_banks__memory_bank_id__get", + "description": "Return aggregated entry statistics for a memory bank, including total counts, token/age/entries-per-key distributions (avg, p95, min, max), and top conversation keys, group keys, speakers, and tags. Supports time-range filtering via `days`, `start_date`, and `end_date` query parameters.", + "operationId": "get_memory_bank_entry_stats_api_memory_banks__memory_bank_id__stats_get", "parameters": [ { "in": "path", @@ -11950,6 +12967,52 @@ "type": "string" } }, + { + "in": "query", + "name": "days", + "required": false, + "schema": { + "default": 30, + "maximum": 730, + "minimum": 1, + "title": "Days", + "type": "integer" + } + }, + { + "in": "query", + "name": "start_date", + "required": false, + "schema": { + "anyOf": [ + { + "format": "date", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Start Date" + } + }, + { + "in": "query", + "name": "end_date", + "required": false, + "schema": { + "anyOf": [ + { + "format": "date", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "End Date" + } + }, { "$ref": "#/components/parameters/X-Account-Id" } @@ -11959,7 +13022,9 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/MemoryBankResponseModel" + "additionalProperties": true, + "title": "Response Get Memory Bank Entry Stats Api Memory Banks Memory Bank Id Stats Get", + "type": "object" } } }, @@ -11976,14 +13041,16 @@ "description": "Validation Error" } }, - "summary": "Get Memory Bank", + "summary": "Get Memory Bank Entry Stats", "tags": [ "memory_banks" ] - }, - "put": { - "description": "Update a memory bank's configuration. Only provided fields are changed; omitted fields are left unchanged.\n\nNote: the embedding `mode` cannot be changed after creation because it determines the vector dimensions used to store entries.", - "operationId": "update_memory_bank_api_memory_banks__memory_bank_id__put", + } + }, + "/memory_banks/{memory_bank_id}/test-compaction": { + "post": { + "description": "Test a compaction prompt by running the summarizer and evaluating the result with an LLM-as-judge. Returns original entries, compaction summary, surviving entries, and a structured quality evaluation with verdict, score, and reasoning.", + "operationId": "test_compaction_prompt_api_memory_banks__memory_bank_id__test_compaction_post", "parameters": [ { "in": "path", @@ -12002,7 +13069,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/UpdateMemoryBankBody" + "$ref": "#/components/schemas/TestCompactionRequest" } } }, @@ -12013,7 +13080,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/MemoryBankResponseModel" + "$ref": "#/components/schemas/CompactionTestResponseModel" } } }, @@ -12030,24 +13097,69 @@ "description": "Validation Error" } }, - "summary": "Update Memory Bank", + "summary": "Test Compaction Prompt", "tags": [ "memory_banks" ] } }, - "/memory_banks/{memory_bank_id}/agents": { + "/models": { "get": { - "description": "List agents whose current definition references this memory bank.\n\nReturns an array of `{agent_id, agent_name}` objects.", - "operationId": "get_agents_using_bank_api_memory_banks__memory_bank_id__agents_get", + "description": "List all enabled LLM models with full details.\n\nReturns models grouped by provider, including capabilities, credit pricing, tool support, variant tiers, and lifecycle status.\n\nOptional query parameters:\n- `provider`: filter by provider (e.g. 'anthropic', 'openai')\n- `supports_tool_use`: filter to models with tool calling support\n- `supports_thinking`: filter to models with extended thinking support\n\nAuth & scoping:\n- Requires `X-API-Key` header or OAuth Bearer token.", + "operationId": "list_models_api_models_get", "parameters": [ { - "in": "path", - "name": "memory_bank_id", - "required": true, + "description": "Filter by provider name", + "in": "query", + "name": "provider", + "required": false, "schema": { - "title": "Memory Bank Id", - "type": "string" + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Filter by provider name", + "title": "Provider" + } + }, + { + "description": "Filter to models that support tool use", + "in": "query", + "name": "supports_tool_use", + "required": false, + "schema": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "description": "Filter to models that support tool use", + "title": "Supports Tool Use" + } + }, + { + "description": "Filter to models that support extended thinking", + "in": "query", + "name": "supports_thinking", + "required": false, + "schema": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "description": "Filter to models that support extended thinking", + "title": "Supports Thinking" } }, { @@ -12060,94 +13172,189 @@ "application/json": { "schema": { "items": { - "additionalProperties": { - "type": "string" - }, - "type": "object" + "$ref": "#/components/schemas/schemas__model_responses__ProviderGroupResponse" }, - "title": "Response Get Agents Using Bank Api Memory Banks Memory Bank Id Agents Get", + "title": "Response List Models Api Models Get", "type": "array" } } }, "description": "Successful Response" - }, - "422": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } - } - }, - "description": "Validation Error" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "List Models", + "tags": [ + "models" + ] + } + }, + "/models/alerts": { + "get": { + "description": "List model lifecycle alerts for the account.\n\nReturns in-app notifications about model deprecations, sunsets, and newer model availability. Supports filtering by agent, unread-only, and pagination.\n\nAuth & scoping:\n- Requires `X-API-Key` header or OAuth Bearer token. Alerts are scoped to the caller's account.", + "operationId": "list_alerts_api_models_alerts_get", + "parameters": [ + { + "description": "Filter alerts to a specific agent UUID.", + "in": "query", + "name": "agent_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Filter alerts to a specific agent UUID.", + "title": "Agent Id" + } + }, + { + "description": "When true, only return unread alerts.", + "in": "query", + "name": "unread_only", + "required": false, + "schema": { + "default": false, + "description": "When true, only return unread alerts.", + "title": "Unread Only", + "type": "boolean" + } + }, + { + "description": "Maximum number of alerts to return (1-100).", + "in": "query", + "name": "limit", + "required": false, + "schema": { + "default": 50, + "description": "Maximum number of alerts to return (1-100).", + "maximum": 100, + "minimum": 1, + "title": "Limit", + "type": "integer" + } + }, + { + "description": "Pagination offset.", + "in": "query", + "name": "offset", + "required": false, + "schema": { + "default": 0, + "description": "Pagination offset.", + "minimum": 0, + "title": "Offset", + "type": "integer" + } + }, + { + "$ref": "#/components/parameters/X-Account-Id" + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "additionalProperties": true, + "title": "Response List Alerts Api Models Alerts Get", + "type": "object" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "List Alerts", + "tags": [ + "models" + ] + } + }, + "/models/alerts/mark-all-read": { + "post": { + "description": "Mark all model lifecycle alerts as read for the account.\n\nAuth & scoping:\n- Requires `X-API-Key` header or OAuth Bearer token. Scoped to the caller's account.", + "operationId": "mark_all_read_api_models_alerts_mark_all_read_post", + "parameters": [ + { + "$ref": "#/components/parameters/X-Account-Id" + } + ], + "responses": { + "204": { + "description": "Successful Response" } }, - "summary": "Get Agents Using Bank", + "summary": "Mark All Read", "tags": [ - "memory_banks" + "models" ] } }, - "/memory_banks/{memory_bank_id}/compact": { - "post": { - "description": "Trigger an on-demand compaction run for a memory bank.\n\nThe bank must have at least one compaction threshold configured (max_age_days, max_turns, or max_size_tokens). Compaction runs asynchronously \u2014 the response confirms scheduling, not completion.", - "operationId": "compact_memory_bank_api_memory_banks__memory_bank_id__compact_post", + "/models/alerts/unread-count": { + "get": { + "description": "Get the count of unread model lifecycle alerts.\n\nUseful for badge indicators in UIs and dashboards.\n\nAuth & scoping:\n- Requires `X-API-Key` header or OAuth Bearer token. Count is scoped to the caller's account.", + "operationId": "get_alert_unread_count_api_models_alerts_unread_count_get", "parameters": [ - { - "in": "path", - "name": "memory_bank_id", - "required": true, - "schema": { - "title": "Memory Bank Id", - "type": "string" - } - }, { "$ref": "#/components/parameters/X-Account-Id" } ], "responses": { - "202": { + "200": { "content": { "application/json": { "schema": { "additionalProperties": true, - "title": "Response Compact Memory Bank Api Memory Banks Memory Bank Id Compact Post", + "title": "Response Get Alert Unread Count Api Models Alerts Unread Count Get", "type": "object" } } }, "description": "Successful Response" - }, - "422": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } - } - }, - "description": "Validation Error" } }, - "summary": "Compact Memory Bank", + "summary": "Get Alert Unread Count", "tags": [ - "memory_banks" + "models" ] } }, - "/memory_banks/{memory_bank_id}/source": { - "delete": { - "description": "Delete the content source linked to a memory bank, removing all stored memory entries.\n\nA new content source is automatically created on the next write. Use this to reset a bank's data without deleting the bank itself.", - "operationId": "delete_memory_bank_source_api_memory_banks__memory_bank_id__source_delete", + "/models/alerts/{alert_id}/read": { + "patch": { + "description": "Mark a single model lifecycle alert as read (dismissed).\n\nAuth & scoping:\n- Requires `X-API-Key` header or OAuth Bearer token. The alert must belong to the caller's account.", + "operationId": "mark_read_api_models_alerts__alert_id__read_patch", "parameters": [ { "in": "path", - "name": "memory_bank_id", + "name": "alert_id", "required": true, "schema": { - "title": "Memory Bank Id", + "format": "uuid", + "title": "Alert Id", "type": "string" } }, @@ -12170,32 +13377,25 @@ "description": "Validation Error" } }, - "summary": "Delete Memory Bank Source", + "summary": "Mark Read", "tags": [ - "memory_banks" + "models" ] } }, - "/memory_banks/{memory_bank_id}/stats": { + "/models/playground/experiments": { "get": { - "description": "Return aggregated entry statistics for a memory bank, including total counts, token/age/entries-per-key distributions (avg, p95, min, max), and top conversation keys, group keys, speakers, and tags. Supports time-range filtering via `days`, `start_date`, and `end_date` query parameters.", - "operationId": "get_memory_bank_entry_stats_api_memory_banks__memory_bank_id__stats_get", + "description": "List model playground experiments for the account.\n\nReturns a paginated, time-filtered list of experiments ordered by creation date descending.\n\nAuth & scoping:\n- Requires `X-API-Key` header or OAuth Bearer token. Experiments are scoped to the caller's account.", + "operationId": "list_experiments_api_models_playground_experiments_get", "parameters": [ { - "in": "path", - "name": "memory_bank_id", - "required": true, - "schema": { - "title": "Memory Bank Id", - "type": "string" - } - }, - { + "description": "Look-back window in days.", "in": "query", "name": "days", "required": false, "schema": { "default": 30, + "description": "Look-back window in days.", "maximum": 730, "minimum": 1, "title": "Days", @@ -12203,6 +13403,7 @@ } }, { + "description": "Explicit start date (overrides days).", "in": "query", "name": "start_date", "required": false, @@ -12216,10 +13417,12 @@ "type": "null" } ], + "description": "Explicit start date (overrides days).", "title": "Start Date" } }, { + "description": "Explicit end date (overrides days).", "in": "query", "name": "end_date", "required": false, @@ -12233,9 +13436,37 @@ "type": "null" } ], + "description": "Explicit end date (overrides days).", "title": "End Date" } }, + { + "description": "Page size.", + "in": "query", + "name": "limit", + "required": false, + "schema": { + "default": 20, + "description": "Page size.", + "maximum": 50, + "minimum": 1, + "title": "Limit", + "type": "integer" + } + }, + { + "description": "Pagination offset.", + "in": "query", + "name": "offset", + "required": false, + "schema": { + "default": 0, + "description": "Pagination offset.", + "minimum": 0, + "title": "Offset", + "type": "integer" + } + }, { "$ref": "#/components/parameters/X-Account-Id" } @@ -12246,7 +13477,7 @@ "application/json": { "schema": { "additionalProperties": true, - "title": "Response Get Memory Bank Entry Stats Api Memory Banks Memory Bank Id Stats Get", + "title": "Response List Experiments Api Models Playground Experiments Get", "type": "object" } } @@ -12264,26 +13495,15 @@ "description": "Validation Error" } }, - "summary": "Get Memory Bank Entry Stats", + "summary": "List Experiments", "tags": [ - "memory_banks" + "models" ] - } - }, - "/memory_banks/{memory_bank_id}/test-compaction": { + }, "post": { - "description": "Test a compaction prompt by running the summarizer and evaluating the result with an LLM-as-judge. Returns original entries, compaction summary, surviving entries, and a structured quality evaluation with verdict, score, and reasoning.", - "operationId": "test_compaction_prompt_api_memory_banks__memory_bank_id__test_compaction_post", + "description": "Create and schedule a model playground experiment.\n\nRuns the given prompt against 1-10 models in parallel and optionally evaluates the outputs with an LLM judge.\n\nAuth & scoping:\n- Requires `X-API-Key` header or OAuth Bearer token.", + "operationId": "create_experiment_api_models_playground_experiments_post", "parameters": [ - { - "in": "path", - "name": "memory_bank_id", - "required": true, - "schema": { - "title": "Memory Bank Id", - "type": "string" - } - }, { "$ref": "#/components/parameters/X-Account-Id" } @@ -12292,7 +13512,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/TestCompactionRequest" + "$ref": "#/components/schemas/PlaygroundCreateRequest" } } }, @@ -12303,7 +13523,9 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CompactionTestResponseModel" + "additionalProperties": true, + "title": "Response Create Experiment Api Models Playground Experiments Post", + "type": "object" } } }, @@ -12320,72 +13542,25 @@ "description": "Validation Error" } }, - "summary": "Test Compaction Prompt", + "summary": "Create Experiment", "tags": [ - "memory_banks" + "models" ] } }, - "/models/alerts": { + "/models/playground/experiments/{experiment_id}": { "get": { - "description": "List model lifecycle alerts for the account.\n\nReturns in-app notifications about model deprecations, sunsets, and newer model availability. Supports filtering by agent, unread-only, and pagination.\n\nAuth & scoping:\n- Requires `X-API-Key` header or OAuth Bearer token. Alerts are scoped to the caller's account.", - "operationId": "list_alerts_api_models_alerts_get", + "description": "Get details and results for a specific model playground experiment.\n\nReturns the full experiment payload including prompt, model outputs, and evaluation results (if available).\n\nAuth & scoping:\n- Requires `X-API-Key` header or OAuth Bearer token. The experiment must belong to the caller's account.", + "operationId": "get_experiment_api_models_playground_experiments__experiment_id__get", "parameters": [ { - "description": "Filter alerts to a specific agent UUID.", - "in": "query", - "name": "agent_id", - "required": false, - "schema": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Filter alerts to a specific agent UUID.", - "title": "Agent Id" - } - }, - { - "description": "When true, only return unread alerts.", - "in": "query", - "name": "unread_only", - "required": false, - "schema": { - "default": false, - "description": "When true, only return unread alerts.", - "title": "Unread Only", - "type": "boolean" - } - }, - { - "description": "Maximum number of alerts to return (1-100).", - "in": "query", - "name": "limit", - "required": false, - "schema": { - "default": 50, - "description": "Maximum number of alerts to return (1-100).", - "maximum": 100, - "minimum": 1, - "title": "Limit", - "type": "integer" - } - }, - { - "description": "Pagination offset.", - "in": "query", - "name": "offset", - "required": false, + "in": "path", + "name": "experiment_id", + "required": true, "schema": { - "default": 0, - "description": "Pagination offset.", - "minimum": 0, - "title": "Offset", - "type": "integer" + "format": "uuid", + "title": "Experiment Id", + "type": "string" } }, { @@ -12398,7 +13573,7 @@ "application/json": { "schema": { "additionalProperties": true, - "title": "Response List Alerts Api Models Alerts Get", + "title": "Response Get Experiment Api Models Playground Experiments Experiment Id Get", "type": "object" } } @@ -12416,37 +13591,27 @@ "description": "Validation Error" } }, - "summary": "List Alerts", + "summary": "Get Experiment", "tags": [ "models" ] } }, - "/models/alerts/mark-all-read": { + "/models/playground/experiments/{experiment_id}/cancel": { "post": { - "description": "Mark all model lifecycle alerts as read for the account.\n\nAuth & scoping:\n- Requires `X-API-Key` header or OAuth Bearer token. Scoped to the caller's account.", - "operationId": "mark_all_read_api_models_alerts_mark_all_read_post", + "description": "Cancel a running or pending model playground experiment.\n\nSignals running model calls to abort and marks the experiment as canceled.\n\nAuth & scoping:\n- Requires `X-API-Key` header or OAuth Bearer token. The experiment must belong to the caller's account.", + "operationId": "cancel_experiment_endpoint_api_models_playground_experiments__experiment_id__cancel_post", "parameters": [ { - "$ref": "#/components/parameters/X-Account-Id" - } - ], - "responses": { - "204": { - "description": "Successful Response" - } - }, - "summary": "Mark All Read", - "tags": [ - "models" - ] - } - }, - "/models/alerts/unread-count": { - "get": { - "description": "Get the count of unread model lifecycle alerts.\n\nUseful for badge indicators in UIs and dashboards.\n\nAuth & scoping:\n- Requires `X-API-Key` header or OAuth Bearer token. Count is scoped to the caller's account.", - "operationId": "get_alert_unread_count_api_models_alerts_unread_count_get", - "parameters": [ + "in": "path", + "name": "experiment_id", + "required": true, + "schema": { + "format": "uuid", + "title": "Experiment Id", + "type": "string" + } + }, { "$ref": "#/components/parameters/X-Account-Id" } @@ -12457,32 +13622,41 @@ "application/json": { "schema": { "additionalProperties": true, - "title": "Response Get Alert Unread Count Api Models Alerts Unread Count Get", + "title": "Response Cancel Experiment Endpoint Api Models Playground Experiments Experiment Id Cancel Post", "type": "object" } } }, "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" } }, - "summary": "Get Alert Unread Count", + "summary": "Cancel Experiment Endpoint", "tags": [ "models" ] } }, - "/models/alerts/{alert_id}/read": { - "patch": { - "description": "Mark a single model lifecycle alert as read (dismissed).\n\nAuth & scoping:\n- Requires `X-API-Key` header or OAuth Bearer token. The alert must belong to the caller's account.", - "operationId": "mark_read_api_models_alerts__alert_id__read_patch", + "/models/{model_id}/details": { + "get": { + "description": "Get detailed information about a specific model.\n\nReturns full model details including capabilities, credit pricing, tool support, variant tiers, and lifecycle status.\n\nThe `model_id` is the model enum identifier (e.g. 'anthropic_claude_opus_4_6').\n\nAuth & scoping:\n- Requires `X-API-Key` header or OAuth Bearer token.", + "operationId": "get_model_api_models__model_id__details_get", "parameters": [ { "in": "path", - "name": "alert_id", + "name": "model_id", "required": true, "schema": { - "format": "uuid", - "title": "Alert Id", + "title": "Model Id", "type": "string" } }, @@ -12491,7 +13665,14 @@ } ], "responses": { - "204": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/schemas__model_responses__PromptModelResponse" + } + } + }, "description": "Successful Response" }, "422": { @@ -12505,7 +13686,7 @@ "description": "Validation Error" } }, - "summary": "Mark Read", + "summary": "Get Model", "tags": [ "models" ] @@ -13817,7 +14998,7 @@ }, "/sources": { "post": { - "description": "Create a new content source.\n\nSource types: `rss`, `website`, `file_uploads`, `custom_index`.\n\nFor RSS and website sources, provide the URL. For file upload and custom index sources, the URL is created automatically.", + "description": "Create a new content source.\n\nSource types: `rss`, `website`, `custom_index`.\n\nFor RSS and website sources, provide the URL. For custom index sources, the URL is created automatically.\n\nFor custom_index sources, you can optionally specify an `index_mode`: `fast_and_cheap` (default), `balanced`, `slow_and_thorough`, or `custom`. The legacy `file_uploads` source type is accepted as an alias for `custom_index` with `index_mode=fast_and_cheap`.", "operationId": "create_source_api_sources_post", "parameters": [ { @@ -13867,7 +15048,7 @@ }, "/sources/": { "get": { - "description": "List content sources for your account.\n\nA *source* is where Seclai pulls or receives content from (for example RSS feeds, websites, file uploads, or custom indexes). Sources are the inputs that power your agents and knowledge base workflows.\n\nParameters:\n- Pagination: `page` and `limit`.\n- Sorting: `sort` (created_at/updated_at/name) and `order` (asc/desc).\n\nAuth & scoping:\n- Requires `X-API-Key` header or OAuth Bearer token. Results are scoped to the caller's account.\n- The optional `account_id` query param is only allowed when it matches the caller's account.", + "description": "List content sources for your account.\n\nA *source* is where Seclai pulls or receives content from \u2014 RSS feeds, websites, or content stores (``custom_index``). Content stores support file uploads and API-driven content ingestion with configurable index modes (``fast_and_cheap``, ``balanced``, ``slow_and_thorough``, or ``custom``).\n\nParameters:\n- Pagination: `page` and `limit`.\n- Sorting: `sort` (created_at/updated_at/name) and `order` (asc/desc).\n\nAuth & scoping:\n- Requires `X-API-Key` header or OAuth Bearer token. Results are scoped to the caller's account.\n- The optional `account_id` query param is only allowed when it matches the caller's account.", "operationId": "list_sources_api_sources__get", "parameters": [ { @@ -14728,7 +15909,7 @@ }, "/sources/{source_connection_id}/upload": { "post": { - "description": "Upload a file to a content source.\n\n**Maximum file size:** 209715200 bytes.\n\n**Supported MIME types:**\n- `application/epub+zip`\n- `application/json`\n- `application/msword`\n- `application/pdf`\n- `application/vnd.ms-excel`\n- `application/vnd.ms-outlook`\n- `application/vnd.ms-powerpoint`\n- `application/vnd.openxmlformats-officedocument.presentationml.presentation`\n- `application/vnd.openxmlformats-officedocument.spreadsheetml.sheet`\n- `application/vnd.openxmlformats-officedocument.wordprocessingml.document`\n- `application/xml`\n- `application/zip`\n- `audio/flac`\n- `audio/mp4`\n- `audio/mpeg`\n- `audio/ogg`\n- `audio/wav`\n- `image/bmp`\n- `image/gif`\n- `image/jpeg`\n- `image/png`\n- `image/tiff`\n- `image/webp`\n- `text/csv`\n- `text/html`\n- `text/markdown`\n- `text/plain`\n- `text/x-markdown`\n- `text/xml`\n- `video/mp4`\n- `video/quicktime`\n- `video/x-msvideo`\n\nNotes:\n- If the uploaded file's content type is `application/octet-stream`, the server attempts to infer the type from the file extension.\n- Use `metadata` to attach an arbitrary JSON object of metadata (for example `metadata={\"author\":\"Ada\",\"category\":\"docs\"}`).\n- `title` is a convenience field and is merged into the metadata as `metadata.title` (it does not override an existing `metadata.title`).\n- For backwards compatibility, you can also pass form fields named `metadata_` (for example `metadata_author=...`). These override keys from `metadata`.\n\nResponse:\n- `status` is `uploaded` for a new upload, or `duplicate` when the same file already exists for this source.", + "description": "Upload a file to a content source.\n\n**Maximum file size:** 209715200 bytes.\n\n**Supported MIME types:**\n- `application/epub+zip`\n- `application/json`\n- `application/pdf`\n- `application/vnd.ms-excel`\n- `application/vnd.ms-outlook`\n- `application/vnd.ms-powerpoint`\n- `application/vnd.openxmlformats-officedocument.presentationml.presentation`\n- `application/vnd.openxmlformats-officedocument.spreadsheetml.sheet`\n- `application/vnd.openxmlformats-officedocument.wordprocessingml.document`\n- `application/xml`\n- `application/zip`\n- `audio/flac`\n- `audio/mp4`\n- `audio/mpeg`\n- `audio/ogg`\n- `audio/wav`\n- `image/bmp`\n- `image/gif`\n- `image/jpeg`\n- `image/png`\n- `image/tiff`\n- `image/webp`\n- `text/csv`\n- `text/html`\n- `text/markdown`\n- `text/plain`\n- `text/x-markdown`\n- `text/xml`\n- `video/mp4`\n- `video/quicktime`\n- `video/x-msvideo`\n\nNotes:\n- If the uploaded file's content type is `application/octet-stream`, the server attempts to infer the type from the file extension.\n- Use `metadata` to attach an arbitrary JSON object of metadata (for example `metadata={\"author\":\"Ada\",\"category\":\"docs\"}`).\n- `title` is a convenience field and is merged into the metadata as `metadata.title` (it does not override an existing `metadata.title`).\n- For backwards compatibility, you can also pass form fields named `metadata_` (for example `metadata_author=...`). These override keys from `metadata`.\n\nResponse:\n- `status` is `uploaded` for a new upload, or `duplicate` when the same file already exists for this source.", "operationId": "upload_file_to_source_api_sources__source_connection_id__upload_post", "parameters": [ { diff --git a/types.go b/types.go index 675fe2b..de6e24b 100644 --- a/types.go +++ b/types.go @@ -399,6 +399,17 @@ type AiAssistantFeedbackRequest = generated.RoutersApiAiAssistantAiAssistantFeed // AiAssistantFeedbackResponse is the response from submitting AI assistant feedback. type AiAssistantFeedbackResponse = generated.AiAssistantFeedbackResponse +// ── Models ────────────────────────────────────────────────────────────────── + +// ProviderGroupResponse is a group of models from a single provider. +type ProviderGroupResponse = generated.SchemasModelResponsesProviderGroupResponse + +// PromptModelResponse is the full detail response for a single model. +type PromptModelResponse = generated.SchemasModelResponsesPromptModelResponse + +// PlaygroundCreateRequest is the request body for creating a model playground experiment. +type PlaygroundCreateRequest = generated.PlaygroundCreateRequest + // ── Identity ──────────────────────────────────────────────────────────────── // MeResponse is the response from the GET /me identity endpoint.