From 7e90a286e28ea0fd2ac74b8f0d354dbe295f35b4 Mon Sep 17 00:00:00 2001 From: "quantcloud[bot]" Date: Wed, 28 Jan 2026 03:59:09 +0000 Subject: [PATCH] feat(sdk): v4.9.0 - Auto-generated from unified API spec Generated from unified API spec v4.9.0 Changes: - Auto-generated SDK updates This PR was automatically created by the API generation pipeline. --- .openapi-generator-config.json | 2 +- .openapi-generator/FILES | 36 +- api.ts | 13076 ++++++++++------ common.ts | 2 +- configuration.ts | 2 +- docs/AIAgentsApi.md | 5 +- docs/AIFileStorageApi.md | 247 + docs/AIInferenceApi.md | 130 +- docs/AITaskManagementApi.md | 372 + docs/AIToolsApi.md | 58 + docs/AIVectorDatabaseApi.md | 2 +- docs/ChatInference202Response.md | 28 + docs/ChatInferenceRequest.md | 6 +- docs/ChatInferenceStreamRequest.md | 6 +- docs/ChatWithAIAgent202Response.md | 32 + docs/ChatWithAIAgentRequest.md | 4 + docs/CreateTask201Response.md | 28 + docs/CreateTaskRequest.md | 40 + docs/DeleteFile200Response.md | 22 + docs/DeleteTask200Response.md | 24 + docs/DeleteTask409Response.md | 24 + docs/GetAIOrchestrationStatus200Response.md | 36 + ...rchestrationStatus200ResponseToolsInner.md | 28 + docs/GetAIOrchestrationStatus404Response.md | 22 + docs/GetDependencyGraph200Response.md | 28 + docs/GetDurableExecutionStatus200Response.md | 34 + ...tDurableExecutionStatus200ResponseError.md | 23 + ...utionStatus200ResponsePendingToolsInner.md | 24 + ...DurableExecutionStatus200ResponseResult.md | 25 + ...xecutionStatus200ResponseResultResponse.md | 22 + ...leExecutionStatus200ResponseResultUsage.md | 24 + docs/GetFile200Response.md | 34 + docs/GetTask200Response.md | 66 + docs/ListFiles200Response.md | 24 + docs/ListFiles200ResponseFilesInner.md | 30 + docs/ListTasks200Response.md | 26 + docs/ListTasks200ResponseTasksInner.md | 42 + docs/OrchestrationApi.md | 65 + docs/QueryVectorCollection200Response.md | 18 +- ...ryVectorCollection200ResponsePagination.md | 25 + ...VectorCollection200ResponseResultsInner.md | 12 +- ...llection200ResponseResultsInnerMetadata.md | 24 - docs/QueryVectorCollectionRequest.md | 22 +- docs/QueryVectorCollectionRequestFilter.md | 23 + docs/SubmitToolCallback200Response.md | 24 + docs/SubmitToolCallbackRequest.md | 22 + ...bmitToolCallbackRequestToolResultsInner.md | 22 + docs/UpdateTask200Response.md | 24 + docs/UpdateTaskRequest.md | 48 + docs/UploadFile201Response.md | 40 + docs/UploadFileRequest.md | 30 + index.ts | 2 +- package-lock.json | 4 +- package.json | 2 +- 54 files changed, 9893 insertions(+), 5148 deletions(-) create mode 100644 docs/AIFileStorageApi.md create mode 100644 docs/AITaskManagementApi.md create mode 100644 docs/ChatInference202Response.md create mode 100644 docs/ChatWithAIAgent202Response.md create mode 100644 docs/CreateTask201Response.md create mode 100644 docs/CreateTaskRequest.md create mode 100644 docs/DeleteFile200Response.md create mode 100644 docs/DeleteTask200Response.md create mode 100644 docs/DeleteTask409Response.md create mode 100644 docs/GetAIOrchestrationStatus200Response.md create mode 100644 docs/GetAIOrchestrationStatus200ResponseToolsInner.md create mode 100644 docs/GetAIOrchestrationStatus404Response.md create mode 100644 docs/GetDependencyGraph200Response.md create mode 100644 docs/GetDurableExecutionStatus200Response.md create mode 100644 docs/GetDurableExecutionStatus200ResponseError.md create mode 100644 docs/GetDurableExecutionStatus200ResponsePendingToolsInner.md create mode 100644 docs/GetDurableExecutionStatus200ResponseResult.md create mode 100644 docs/GetDurableExecutionStatus200ResponseResultResponse.md create mode 100644 docs/GetDurableExecutionStatus200ResponseResultUsage.md create mode 100644 docs/GetFile200Response.md create mode 100644 docs/GetTask200Response.md create mode 100644 docs/ListFiles200Response.md create mode 100644 docs/ListFiles200ResponseFilesInner.md create mode 100644 docs/ListTasks200Response.md create mode 100644 docs/ListTasks200ResponseTasksInner.md create mode 100644 docs/OrchestrationApi.md create mode 100644 docs/QueryVectorCollection200ResponsePagination.md delete mode 100644 docs/QueryVectorCollection200ResponseResultsInnerMetadata.md create mode 100644 docs/QueryVectorCollectionRequestFilter.md create mode 100644 docs/SubmitToolCallback200Response.md create mode 100644 docs/SubmitToolCallbackRequest.md create mode 100644 docs/SubmitToolCallbackRequestToolResultsInner.md create mode 100644 docs/UpdateTask200Response.md create mode 100644 docs/UpdateTaskRequest.md create mode 100644 docs/UploadFile201Response.md create mode 100644 docs/UploadFileRequest.md diff --git a/.openapi-generator-config.json b/.openapi-generator-config.json index 5d060ed..c642c44 100644 --- a/.openapi-generator-config.json +++ b/.openapi-generator-config.json @@ -3,7 +3,7 @@ "gitUserId": "quantcdn", "gitRepoId": "quant-ts-client", "npmName": "@quantcdn/quant-client", - "npmVersion": "4.8.0", + "npmVersion": "4.9.0", "packageName": "quant-client", "projectName": "quant-client", "projectDescription": "TypeScript client for QuantCDN and QuantCloud Platform APIs", diff --git a/.openapi-generator/FILES b/.openapi-generator/FILES index 01d9ff4..9f25771 100644 --- a/.openapi-generator/FILES +++ b/.openapi-generator/FILES @@ -5,10 +5,12 @@ common.ts configuration.ts docs/AIAgentsApi.md docs/AICustomToolsApi.md +docs/AIFileStorageApi.md docs/AIInferenceApi.md docs/AIModelsApi.md docs/AIMonitoringApi.md docs/AISessionsApi.md +docs/AITaskManagementApi.md docs/AIToolsApi.md docs/AIVectorDatabaseApi.md docs/Application.md @@ -28,6 +30,7 @@ docs/ChatInference200ResponseResponseToolUseOneOf.md docs/ChatInference200ResponseResponseToolUseOneOf1Inner.md docs/ChatInference200ResponseResponseToolUseOneOfResult.md docs/ChatInference200ResponseUsage.md +docs/ChatInference202Response.md docs/ChatInferenceRequest.md docs/ChatInferenceRequestMessagesInner.md docs/ChatInferenceRequestMessagesInnerContent.md @@ -53,6 +56,7 @@ docs/ChatInferenceStreamRequestMessagesInnerContent.md docs/ChatWithAIAgent200Response.md docs/ChatWithAIAgent200ResponseResponse.md docs/ChatWithAIAgent200ResponseResponseUsage.md +docs/ChatWithAIAgent202Response.md docs/ChatWithAIAgentRequest.md docs/Command.md docs/CommandsApi.md @@ -90,6 +94,8 @@ docs/CreateCustomToolRequest.md docs/CreateEnvironment403Response.md docs/CreateEnvironmentRequest.md docs/CreateEnvironmentRequestEnvironmentInner.md +docs/CreateTask201Response.md +docs/CreateTaskRequest.md docs/CreateVectorCollection201Response.md docs/CreateVectorCollection201ResponseCollection.md docs/CreateVectorCollectionRequest.md @@ -101,6 +107,9 @@ docs/DeleteAIAgent200Response.md docs/DeleteAISession200Response.md docs/DeleteBackup200Response.md docs/DeleteCustomTool200Response.md +docs/DeleteFile200Response.md +docs/DeleteTask200Response.md +docs/DeleteTask409Response.md docs/DeleteVectorCollection200Response.md docs/DomainsApi.md docs/DownloadBackup200Response.md @@ -121,17 +130,29 @@ docs/GetAIModel200Response.md docs/GetAIModel200ResponseCapabilities.md docs/GetAIModel200ResponsePricing.md docs/GetAIModel404Response.md +docs/GetAIOrchestrationStatus200Response.md +docs/GetAIOrchestrationStatus200ResponseToolsInner.md +docs/GetAIOrchestrationStatus404Response.md docs/GetAISession200Response.md docs/GetAIToolExecutionStatus200Response.md docs/GetAIToolExecutionStatus200ResponseResult.md docs/GetAIToolExecutionStatus404Response.md docs/GetAIUsageStats200Response.md docs/GetAIUsageStats200ResponseByModelValue.md +docs/GetDependencyGraph200Response.md +docs/GetDurableExecutionStatus200Response.md +docs/GetDurableExecutionStatus200ResponseError.md +docs/GetDurableExecutionStatus200ResponsePendingToolsInner.md +docs/GetDurableExecutionStatus200ResponseResult.md +docs/GetDurableExecutionStatus200ResponseResultResponse.md +docs/GetDurableExecutionStatus200ResponseResultUsage.md docs/GetEcrLoginCredentials200Response.md docs/GetEnvironmentLogs200Response.md docs/GetEnvironmentLogs200ResponseLogEventsInner.md +docs/GetFile200Response.md docs/GetSshAccessCredentials200Response.md docs/GetSshAccessCredentials200ResponseCredentials.md +docs/GetTask200Response.md docs/GetVectorCollection200Response.md docs/GetVectorCollection200ResponseCollection.md docs/HeadersApi.md @@ -167,8 +188,13 @@ docs/ListBackups200ResponseBackupsInner.md docs/ListBackups422Response.md docs/ListCustomTools200Response.md docs/ListCustomTools200ResponseToolsInner.md +docs/ListFiles200Response.md +docs/ListFiles200ResponseFilesInner.md +docs/ListTasks200Response.md +docs/ListTasks200ResponseTasksInner.md docs/ListVectorCollections200Response.md docs/ListVectorCollections200ResponseCollectionsInner.md +docs/OrchestrationApi.md docs/OrganizationsApi.md docs/OrganizationsList200ResponseInner.md docs/PatchEnvironmentCompose202Response.md @@ -180,14 +206,18 @@ docs/ProjectsApi.md docs/PurgeApi.md docs/PurgeCreateRequest.md docs/QueryVectorCollection200Response.md +docs/QueryVectorCollection200ResponsePagination.md docs/QueryVectorCollection200ResponseResultsInner.md -docs/QueryVectorCollection200ResponseResultsInnerMetadata.md docs/QueryVectorCollectionRequest.md +docs/QueryVectorCollectionRequestFilter.md docs/RulesApi.md docs/SSHAccessApi.md docs/ScalingPolicy.md docs/ScalingPolicyApi.md docs/SpotConfiguration.md +docs/SubmitToolCallback200Response.md +docs/SubmitToolCallbackRequest.md +docs/SubmitToolCallbackRequestToolResultsInner.md docs/SyncOperation.md docs/SyncToEnvironmentRequest.md docs/UpdateAIAgent200Response.md @@ -199,6 +229,10 @@ docs/UpdateCronJobRequest.md docs/UpdateEnvironmentRequest.md docs/UpdateEnvironmentStateRequest.md docs/UpdateEnvironmentVariableRequest.md +docs/UpdateTask200Response.md +docs/UpdateTaskRequest.md +docs/UploadFile201Response.md +docs/UploadFileRequest.md docs/UploadVectorDocuments200Response.md docs/UploadVectorDocumentsRequest.md docs/UploadVectorDocumentsRequestDocumentsInner.md diff --git a/api.ts b/api.ts index d2fcd6d..a7b77ba 100644 --- a/api.ts +++ b/api.ts @@ -4,7 +4,7 @@ * QuantCDN API * Unified API for QuantCDN Admin and QuantCloud Platform services * - * The version of the OpenAPI document: 4.8.0 + * The version of the OpenAPI document: 4.9.0 * * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). @@ -515,6 +515,50 @@ export interface ChatInference200ResponseUsage { */ 'totalTokens'?: number; } +/** + * + * @export + * @interface ChatInference202Response + */ +export interface ChatInference202Response { + /** + * Unique request identifier for polling + * @type {string} + * @memberof ChatInference202Response + */ + 'requestId': string; + /** + * Session ID for conversation continuity + * @type {string} + * @memberof ChatInference202Response + */ + 'sessionId'?: string; + /** + * Initial execution status + * @type {string} + * @memberof ChatInference202Response + */ + 'status': ChatInference202ResponseStatusEnum; + /** + * Human-readable status message + * @type {string} + * @memberof ChatInference202Response + */ + 'message'?: string; + /** + * URL to poll for execution status + * @type {string} + * @memberof ChatInference202Response + */ + 'pollUrl': string; +} + +export const ChatInference202ResponseStatusEnum = { + Queued: 'queued' +} as const; + +export type ChatInference202ResponseStatusEnum = typeof ChatInference202ResponseStatusEnum[keyof typeof ChatInference202ResponseStatusEnum]; + /** * * @export @@ -540,7 +584,7 @@ export interface ChatInferenceRequest { */ 'temperature'?: number; /** - * + * Max tokens. Claude 4.5 supports up to 64k. * @type {number} * @memberof ChatInferenceRequest */ @@ -581,6 +625,18 @@ export interface ChatInferenceRequest { * @memberof ChatInferenceRequest */ 'toolConfig'?: ChatInferenceRequestToolConfig; + /** + * Optional session ID for conversation continuity. Omit to use stateless mode, include to continue an existing session. + * @type {string} + * @memberof ChatInferenceRequest + */ + 'sessionId'?: string; + /** + * Enable async/durable execution mode. When true, returns 202 with pollUrl instead of waiting for completion. Use for long-running inference, client-executed tools, or operations >30 seconds. + * @type {boolean} + * @memberof ChatInferenceRequest + */ + 'async'?: boolean; } /** * @@ -933,7 +989,7 @@ export interface ChatInferenceStreamRequest { */ 'temperature'?: number; /** - * + * Max tokens. Claude 4.5 supports up to 64k. * @type {number} * @memberof ChatInferenceStreamRequest */ @@ -968,6 +1024,18 @@ export interface ChatInferenceStreamRequest { * @memberof ChatInferenceStreamRequest */ 'toolConfig'?: ChatInferenceRequestToolConfig; + /** + * Optional session ID for conversation continuity. Omit to use stateless mode, include to continue an existing session. + * @type {string} + * @memberof ChatInferenceStreamRequest + */ + 'sessionId'?: string; + /** + * Enable async/durable execution mode. When true, returns 202 with pollUrl instead of streaming. Use for long-running inference, client-executed tools, or operations >30 seconds. + * @type {boolean} + * @memberof ChatInferenceStreamRequest + */ + 'async'?: boolean; } /** * @@ -1072,6 +1140,62 @@ export interface ChatWithAIAgent200ResponseResponseUsage { */ 'outputTokens'?: number; } +/** + * + * @export + * @interface ChatWithAIAgent202Response + */ +export interface ChatWithAIAgent202Response { + /** + * Unique request identifier for polling + * @type {string} + * @memberof ChatWithAIAgent202Response + */ + 'requestId': string; + /** + * The agent processing the request + * @type {string} + * @memberof ChatWithAIAgent202Response + */ + 'agentId': string; + /** + * Human-readable agent name + * @type {string} + * @memberof ChatWithAIAgent202Response + */ + 'agentName'?: string; + /** + * Session ID (if provided) + * @type {string} + * @memberof ChatWithAIAgent202Response + */ + 'sessionId'?: string; + /** + * Initial status + * @type {string} + * @memberof ChatWithAIAgent202Response + */ + 'status': ChatWithAIAgent202ResponseStatusEnum; + /** + * + * @type {string} + * @memberof ChatWithAIAgent202Response + */ + 'message'?: string; + /** + * URL to poll for execution status + * @type {string} + * @memberof ChatWithAIAgent202Response + */ + 'pollUrl': string; +} + +export const ChatWithAIAgent202ResponseStatusEnum = { + Queued: 'queued' +} as const; + +export type ChatWithAIAgent202ResponseStatusEnum = typeof ChatWithAIAgent202ResponseStatusEnum[keyof typeof ChatWithAIAgent202ResponseStatusEnum]; + /** * * @export @@ -1102,6 +1226,18 @@ export interface ChatWithAIAgentRequest { * @memberof ChatWithAIAgentRequest */ 'stream'?: boolean; + /** + * Enable async/durable execution mode. When true, returns 202 with pollUrl. Use for long-running agent tasks. + * @type {boolean} + * @memberof ChatWithAIAgentRequest + */ + 'async'?: boolean; + /** + * Optional additional system prompt (appended to agent\'s configured prompt) + * @type {string} + * @memberof ChatWithAIAgentRequest + */ + 'system'?: string; } /** * @@ -2154,6 +2290,128 @@ export interface CreateEnvironmentRequestEnvironmentInner { */ 'value'?: string; } +/** + * + * @export + * @interface CreateTask201Response + */ +export interface CreateTask201Response { + /** + * + * @type {string} + * @memberof CreateTask201Response + */ + 'taskId'?: string; + /** + * + * @type {string} + * @memberof CreateTask201Response + */ + 'orgId'?: string; + /** + * + * @type {string} + * @memberof CreateTask201Response + */ + 'title'?: string; + /** + * + * @type {string} + * @memberof CreateTask201Response + */ + 'status'?: string; + /** + * + * @type {number} + * @memberof CreateTask201Response + */ + 'createdAt'?: number; +} +/** + * + * @export + * @interface CreateTaskRequest + */ +export interface CreateTaskRequest { + /** + * Task title + * @type {string} + * @memberof CreateTaskRequest + */ + 'title': string; + /** + * Detailed task description + * @type {string} + * @memberof CreateTaskRequest + */ + 'description'?: string; + /** + * Task list ID for grouping related tasks (implicit - lists are created automatically) + * @type {string} + * @memberof CreateTaskRequest + */ + 'taskListId'?: string; + /** + * Initial task status + * @type {string} + * @memberof CreateTaskRequest + */ + 'status'?: CreateTaskRequestStatusEnum; + /** + * Pre-assign task to specific agent + * @type {string} + * @memberof CreateTaskRequest + */ + 'assignedAgentId'?: string; + /** + * Agent ID that created this task + * @type {string} + * @memberof CreateTaskRequest + */ + 'createdByAgentId'?: string; + /** + * Task IDs that must complete before this task can start + * @type {Array} + * @memberof CreateTaskRequest + */ + 'dependsOn'?: Array; + /** + * Flexible JSON metadata for task-specific data + * @type {object} + * @memberof CreateTaskRequest + */ + 'metadata'?: object; + /** + * Maximum retry attempts on failure + * @type {number} + * @memberof CreateTaskRequest + */ + 'maxRetries'?: number; + /** + * Reason task is blocked (when status is blocked) + * @type {string} + * @memberof CreateTaskRequest + */ + 'blockedReason'?: string; + /** + * Task IDs that are blocking this task + * @type {Array} + * @memberof CreateTaskRequest + */ + 'blockedByTaskIds'?: Array; +} + +export const CreateTaskRequestStatusEnum = { + Pending: 'pending', + InProgress: 'in_progress', + Completed: 'completed', + Failed: 'failed', + Cancelled: 'cancelled', + Blocked: 'blocked' +} as const; + +export type CreateTaskRequestStatusEnum = typeof CreateTaskRequestStatusEnum[keyof typeof CreateTaskRequestStatusEnum]; + /** * * @export @@ -2452,6 +2710,75 @@ export interface DeleteCustomTool200Response { */ 'message'?: string; } +/** + * + * @export + * @interface DeleteFile200Response + */ +export interface DeleteFile200Response { + /** + * + * @type {string} + * @memberof DeleteFile200Response + */ + 'message'?: string; + /** + * + * @type {string} + * @memberof DeleteFile200Response + */ + 'fileId'?: string; +} +/** + * + * @export + * @interface DeleteTask200Response + */ +export interface DeleteTask200Response { + /** + * + * @type {boolean} + * @memberof DeleteTask200Response + */ + 'deleted'?: boolean; + /** + * Number of tasks deleted (more than 1 for cascade) + * @type {number} + * @memberof DeleteTask200Response + */ + 'deletedCount'?: number; + /** + * + * @type {Array} + * @memberof DeleteTask200Response + */ + 'deletedTaskIds'?: Array; +} +/** + * + * @export + * @interface DeleteTask409Response + */ +export interface DeleteTask409Response { + /** + * + * @type {string} + * @memberof DeleteTask409Response + */ + 'error'?: string; + /** + * + * @type {string} + * @memberof DeleteTask409Response + */ + 'message'?: string; + /** + * + * @type {Array} + * @memberof DeleteTask409Response + */ + 'dependentTaskIds'?: Array; +} /** * * @export @@ -3143,52 +3470,190 @@ export interface GetAIModel404Response { /** * * @export - * @interface GetAISession200Response + * @interface GetAIOrchestrationStatus200Response */ -export interface GetAISession200Response { +export interface GetAIOrchestrationStatus200Response { /** - * + * Unique orchestration identifier * @type {string} - * @memberof GetAISession200Response + * @memberof GetAIOrchestrationStatus200Response */ - 'id'?: string; + 'orchestrationId': string; /** - * + * Current orchestration status * @type {string} - * @memberof GetAISession200Response + * @memberof GetAIOrchestrationStatus200Response */ - 'title'?: string; + 'status': GetAIOrchestrationStatus200ResponseStatusEnum; /** - * + * Total number of async tools in this orchestration + * @type {number} + * @memberof GetAIOrchestrationStatus200Response + */ + 'toolCount': number; + /** + * Number of tools that have completed + * @type {number} + * @memberof GetAIOrchestrationStatus200Response + */ + 'completedTools'?: number; + /** + * AI-synthesized response combining all tool results (only present when status=complete) * @type {string} - * @memberof GetAISession200Response + * @memberof GetAIOrchestrationStatus200Response */ - 'model'?: string; + 'synthesizedResponse'?: string; /** - * - * @type {Array} - * @memberof GetAISession200Response + * Status of individual tool executions + * @type {Array} + * @memberof GetAIOrchestrationStatus200Response */ - 'messages'?: Array; + 'tools'?: Array; /** - * + * Error message (only present when status=failed) * @type {string} - * @memberof GetAISession200Response + * @memberof GetAIOrchestrationStatus200Response */ - 'created_at'?: string; + 'error'?: string; + /** + * When orchestration was created + * @type {string} + * @memberof GetAIOrchestrationStatus200Response + */ + 'createdAt': string; + /** + * When orchestration completed (if status in complete or failed) + * @type {string} + * @memberof GetAIOrchestrationStatus200Response + */ + 'completedAt'?: string; } + +export const GetAIOrchestrationStatus200ResponseStatusEnum = { + Pending: 'pending', + Polling: 'polling', + Synthesizing: 'synthesizing', + Complete: 'complete', + Failed: 'failed' +} as const; + +export type GetAIOrchestrationStatus200ResponseStatusEnum = typeof GetAIOrchestrationStatus200ResponseStatusEnum[keyof typeof GetAIOrchestrationStatus200ResponseStatusEnum]; + /** * * @export - * @interface GetAIToolExecutionStatus200Response + * @interface GetAIOrchestrationStatus200ResponseToolsInner */ -export interface GetAIToolExecutionStatus200Response { +export interface GetAIOrchestrationStatus200ResponseToolsInner { /** * * @type {string} - * @memberof GetAIToolExecutionStatus200Response + * @memberof GetAIOrchestrationStatus200ResponseToolsInner */ - 'executionId': string; + 'executionId'?: string; + /** + * + * @type {string} + * @memberof GetAIOrchestrationStatus200ResponseToolsInner + */ + 'toolName'?: string; + /** + * + * @type {string} + * @memberof GetAIOrchestrationStatus200ResponseToolsInner + */ + 'status'?: GetAIOrchestrationStatus200ResponseToolsInnerStatusEnum; + /** + * Tool result (if complete) + * @type {object} + * @memberof GetAIOrchestrationStatus200ResponseToolsInner + */ + 'result'?: object; + /** + * Error message (if failed) + * @type {string} + * @memberof GetAIOrchestrationStatus200ResponseToolsInner + */ + 'error'?: string; +} + +export const GetAIOrchestrationStatus200ResponseToolsInnerStatusEnum = { + Pending: 'pending', + Running: 'running', + Complete: 'complete', + Failed: 'failed' +} as const; + +export type GetAIOrchestrationStatus200ResponseToolsInnerStatusEnum = typeof GetAIOrchestrationStatus200ResponseToolsInnerStatusEnum[keyof typeof GetAIOrchestrationStatus200ResponseToolsInnerStatusEnum]; + +/** + * + * @export + * @interface GetAIOrchestrationStatus404Response + */ +export interface GetAIOrchestrationStatus404Response { + /** + * + * @type {string} + * @memberof GetAIOrchestrationStatus404Response + */ + 'error'?: string; + /** + * + * @type {string} + * @memberof GetAIOrchestrationStatus404Response + */ + 'orchestrationId'?: string; +} +/** + * + * @export + * @interface GetAISession200Response + */ +export interface GetAISession200Response { + /** + * + * @type {string} + * @memberof GetAISession200Response + */ + 'id'?: string; + /** + * + * @type {string} + * @memberof GetAISession200Response + */ + 'title'?: string; + /** + * + * @type {string} + * @memberof GetAISession200Response + */ + 'model'?: string; + /** + * + * @type {Array} + * @memberof GetAISession200Response + */ + 'messages'?: Array; + /** + * + * @type {string} + * @memberof GetAISession200Response + */ + 'created_at'?: string; +} +/** + * + * @export + * @interface GetAIToolExecutionStatus200Response + */ +export interface GetAIToolExecutionStatus200Response { + /** + * + * @type {string} + * @memberof GetAIToolExecutionStatus200Response + */ + 'executionId': string; /** * * @type {string} @@ -3323,7651 +3788,9928 @@ export interface GetAIUsageStats200ResponseByModelValue { /** * * @export - * @interface GetEcrLoginCredentials200Response + * @interface GetDependencyGraph200Response */ -export interface GetEcrLoginCredentials200Response { - /** - * - * @type {string} - * @memberof GetEcrLoginCredentials200Response - */ - 'username'?: string; +export interface GetDependencyGraph200Response { /** * * @type {string} - * @memberof GetEcrLoginCredentials200Response + * @memberof GetDependencyGraph200Response */ - 'password'?: string; + 'taskListId'?: string; /** * - * @type {string} - * @memberof GetEcrLoginCredentials200Response + * @type {number} + * @memberof GetDependencyGraph200Response */ - 'expiresAt'?: string; + 'taskCount'?: number; /** - * - * @type {string} - * @memberof GetEcrLoginCredentials200Response + * Task IDs with no dependencies + * @type {Array} + * @memberof GetDependencyGraph200Response */ - 'endpoint'?: string; -} -/** - * - * @export - * @interface GetEnvironmentLogs200Response - */ -export interface GetEnvironmentLogs200Response { + 'roots'?: Array; /** - * Array of log events - * @type {Array} - * @memberof GetEnvironmentLogs200Response + * Task IDs with no dependents + * @type {Array} + * @memberof GetDependencyGraph200Response */ - 'logEvents'?: Array; + 'leaves'?: Array; /** - * Token for fetching next page of results (null if no more pages) - * @type {string} - * @memberof GetEnvironmentLogs200Response + * Adjacency list with task summaries, dependsOn, and dependents arrays + * @type {object} + * @memberof GetDependencyGraph200Response */ - 'nextToken'?: string | null; + 'graph'?: object; } /** * * @export - * @interface GetEnvironmentLogs200ResponseLogEventsInner + * @interface GetDurableExecutionStatus200Response */ -export interface GetEnvironmentLogs200ResponseLogEventsInner { - /** - * Unix timestamp in milliseconds - * @type {number} - * @memberof GetEnvironmentLogs200ResponseLogEventsInner - */ - 'timestamp'?: number; +export interface GetDurableExecutionStatus200Response { /** - * Log message content + * * @type {string} - * @memberof GetEnvironmentLogs200ResponseLogEventsInner + * @memberof GetDurableExecutionStatus200Response */ - 'message'?: string; -} -/** - * - * @export - * @interface GetSshAccessCredentials200Response - */ -export interface GetSshAccessCredentials200Response { + 'requestId'?: string; /** * - * @type {boolean} - * @memberof GetSshAccessCredentials200Response + * @type {string} + * @memberof GetDurableExecutionStatus200Response */ - 'success'?: boolean; + 'executionArn'?: string; /** * - * @type {GetSshAccessCredentials200ResponseCredentials} - * @memberof GetSshAccessCredentials200Response + * @type {string} + * @memberof GetDurableExecutionStatus200Response */ - 'credentials'?: GetSshAccessCredentials200ResponseCredentials; + 'status'?: GetDurableExecutionStatus200ResponseStatusEnum; /** - * + * Raw AWS Step Functions status * @type {string} - * @memberof GetSshAccessCredentials200Response + * @memberof GetDurableExecutionStatus200Response */ - 'clusterName'?: string; + 'awsStatus'?: string; /** - * + * Present when status is waiting_callback - use with /chat/callback * @type {string} - * @memberof GetSshAccessCredentials200Response + * @memberof GetDurableExecutionStatus200Response */ - 'taskArn'?: string; + 'callbackId'?: string; /** - * - * @type {string} - * @memberof GetSshAccessCredentials200Response + * Present when status is waiting_callback - tools waiting for results + * @type {Array} + * @memberof GetDurableExecutionStatus200Response */ - 'taskId'?: string; + 'pendingTools'?: Array; /** * - * @type {Array} - * @memberof GetSshAccessCredentials200Response + * @type {GetDurableExecutionStatus200ResponseResult} + * @memberof GetDurableExecutionStatus200Response */ - 'containerNames'?: Array; + 'result'?: GetDurableExecutionStatus200ResponseResult; /** * - * @type {string} - * @memberof GetSshAccessCredentials200Response + * @type {GetDurableExecutionStatus200ResponseError} + * @memberof GetDurableExecutionStatus200Response */ - 'region'?: string; + 'error'?: GetDurableExecutionStatus200ResponseError; +} + +export const GetDurableExecutionStatus200ResponseStatusEnum = { + Pending: 'pending', + Running: 'running', + WaitingCallback: 'waiting_callback', + Complete: 'complete', + Failed: 'failed' +} as const; + +export type GetDurableExecutionStatus200ResponseStatusEnum = typeof GetDurableExecutionStatus200ResponseStatusEnum[keyof typeof GetDurableExecutionStatus200ResponseStatusEnum]; + +/** + * Present when status is failed + * @export + * @interface GetDurableExecutionStatus200ResponseError + */ +export interface GetDurableExecutionStatus200ResponseError { /** * - * @type {number} - * @memberof GetSshAccessCredentials200Response + * @type {string} + * @memberof GetDurableExecutionStatus200ResponseError */ - 'expiresIn'?: number; + 'ErrorMessage'?: string; /** * * @type {string} - * @memberof GetSshAccessCredentials200Response + * @memberof GetDurableExecutionStatus200ResponseError */ - 'organizationScope'?: string; + 'ErrorType'?: string; } /** * * @export - * @interface GetSshAccessCredentials200ResponseCredentials + * @interface GetDurableExecutionStatus200ResponsePendingToolsInner */ -export interface GetSshAccessCredentials200ResponseCredentials { - /** - * - * @type {string} - * @memberof GetSshAccessCredentials200ResponseCredentials - */ - 'accessKeyId'?: string; +export interface GetDurableExecutionStatus200ResponsePendingToolsInner { /** * * @type {string} - * @memberof GetSshAccessCredentials200ResponseCredentials + * @memberof GetDurableExecutionStatus200ResponsePendingToolsInner */ - 'secretAccessKey'?: string; + 'name'?: string; /** * * @type {string} - * @memberof GetSshAccessCredentials200ResponseCredentials + * @memberof GetDurableExecutionStatus200ResponsePendingToolsInner */ - 'sessionToken'?: string; + 'toolUseId'?: string; /** * - * @type {string} - * @memberof GetSshAccessCredentials200ResponseCredentials + * @type {object} + * @memberof GetDurableExecutionStatus200ResponsePendingToolsInner */ - 'expiration'?: string; + 'input'?: object; } /** - * + * Present when status is complete * @export - * @interface GetVectorCollection200Response + * @interface GetDurableExecutionStatus200ResponseResult */ -export interface GetVectorCollection200Response { +export interface GetDurableExecutionStatus200ResponseResult { /** * - * @type {GetVectorCollection200ResponseCollection} - * @memberof GetVectorCollection200Response + * @type {GetDurableExecutionStatus200ResponseResultResponse} + * @memberof GetDurableExecutionStatus200ResponseResult */ - 'collection'?: GetVectorCollection200ResponseCollection; + 'response'?: GetDurableExecutionStatus200ResponseResultResponse; + /** + * + * @type {GetDurableExecutionStatus200ResponseResultUsage} + * @memberof GetDurableExecutionStatus200ResponseResult + */ + 'usage'?: GetDurableExecutionStatus200ResponseResultUsage; + /** + * + * @type {Array} + * @memberof GetDurableExecutionStatus200ResponseResult + */ + 'toolExecutions'?: Array; } /** * * @export - * @interface GetVectorCollection200ResponseCollection + * @interface GetDurableExecutionStatus200ResponseResultResponse */ -export interface GetVectorCollection200ResponseCollection { - /** - * - * @type {string} - * @memberof GetVectorCollection200ResponseCollection - */ - 'collectionId'?: string; +export interface GetDurableExecutionStatus200ResponseResultResponse { /** * * @type {string} - * @memberof GetVectorCollection200ResponseCollection + * @memberof GetDurableExecutionStatus200ResponseResultResponse */ - 'name'?: string; + 'role'?: string; /** * * @type {string} - * @memberof GetVectorCollection200ResponseCollection + * @memberof GetDurableExecutionStatus200ResponseResultResponse */ - 'description'?: string; + 'content'?: string; +} +/** + * + * @export + * @interface GetDurableExecutionStatus200ResponseResultUsage + */ +export interface GetDurableExecutionStatus200ResponseResultUsage { /** * * @type {number} - * @memberof GetVectorCollection200ResponseCollection + * @memberof GetDurableExecutionStatus200ResponseResultUsage */ - 'documentCount'?: number; + 'inputTokens'?: number; /** * - * @type {string} - * @memberof GetVectorCollection200ResponseCollection + * @type {number} + * @memberof GetDurableExecutionStatus200ResponseResultUsage */ - 'embeddingModel'?: string; + 'outputTokens'?: number; /** * * @type {number} - * @memberof GetVectorCollection200ResponseCollection + * @memberof GetDurableExecutionStatus200ResponseResultUsage */ - 'dimensions'?: number; + 'totalTokens'?: number; +} +/** + * + * @export + * @interface GetEcrLoginCredentials200Response + */ +export interface GetEcrLoginCredentials200Response { /** * * @type {string} - * @memberof GetVectorCollection200ResponseCollection + * @memberof GetEcrLoginCredentials200Response */ - 'createdAt'?: string; + 'username'?: string; /** * * @type {string} - * @memberof GetVectorCollection200ResponseCollection + * @memberof GetEcrLoginCredentials200Response */ - 'updatedAt'?: string; + 'password'?: string; + /** + * + * @type {string} + * @memberof GetEcrLoginCredentials200Response + */ + 'expiresAt'?: string; + /** + * + * @type {string} + * @memberof GetEcrLoginCredentials200Response + */ + 'endpoint'?: string; } /** * * @export - * @interface ImageGeneration200Response + * @interface GetEnvironmentLogs200Response */ -export interface ImageGeneration200Response { - /** - * Array of base64-encoded generated images - * @type {Array} - * @memberof ImageGeneration200Response - */ - 'images': Array; +export interface GetEnvironmentLogs200Response { /** - * Base64-encoded mask image (for virtual try-on) - * @type {string} - * @memberof ImageGeneration200Response + * Array of log events + * @type {Array} + * @memberof GetEnvironmentLogs200Response */ - 'maskImage'?: string; + 'logEvents'?: Array; /** - * Error message if any images were blocked by content moderation + * Token for fetching next page of results (null if no more pages) * @type {string} - * @memberof ImageGeneration200Response + * @memberof GetEnvironmentLogs200Response */ - 'error'?: string; + 'nextToken'?: string | null; } /** * * @export - * @interface ImageGenerationRequest + * @interface GetEnvironmentLogs200ResponseLogEventsInner */ -export interface ImageGenerationRequest { +export interface GetEnvironmentLogs200ResponseLogEventsInner { /** - * Model to use for image generation - * @type {string} - * @memberof ImageGenerationRequest + * Unix timestamp in milliseconds + * @type {number} + * @memberof GetEnvironmentLogs200ResponseLogEventsInner */ - 'modelId'?: string; + 'timestamp'?: number; /** - * Type of image generation task + * Log message content * @type {string} - * @memberof ImageGenerationRequest + * @memberof GetEnvironmentLogs200ResponseLogEventsInner */ - 'taskType': ImageGenerationRequestTaskTypeEnum; + 'message'?: string; +} +/** + * + * @export + * @interface GetFile200Response + */ +export interface GetFile200Response { /** * - * @type {ImageGenerationRequestTextToImageParams} - * @memberof ImageGenerationRequest + * @type {string} + * @memberof GetFile200Response */ - 'textToImageParams'?: ImageGenerationRequestTextToImageParams; + 'fileId'?: string; /** * - * @type {ImageGenerationRequestColorGuidedGenerationParams} - * @memberof ImageGenerationRequest + * @type {string} + * @memberof GetFile200Response */ - 'colorGuidedGenerationParams'?: ImageGenerationRequestColorGuidedGenerationParams; + 's3Uri'?: string; /** - * - * @type {ImageGenerationRequestImageVariationParams} - * @memberof ImageGenerationRequest + * Presigned download URL (1 hour) + * @type {string} + * @memberof GetFile200Response */ - 'imageVariationParams'?: ImageGenerationRequestImageVariationParams; + 'url'?: string; /** * - * @type {ImageGenerationRequestInPaintingParams} - * @memberof ImageGenerationRequest + * @type {string} + * @memberof GetFile200Response */ - 'inPaintingParams'?: ImageGenerationRequestInPaintingParams; + 'filename'?: string; /** * - * @type {ImageGenerationRequestOutPaintingParams} - * @memberof ImageGenerationRequest + * @type {string} + * @memberof GetFile200Response */ - 'outPaintingParams'?: ImageGenerationRequestOutPaintingParams; + 'contentType'?: string; /** * - * @type {ImageGenerationRequestBackgroundRemovalParams} - * @memberof ImageGenerationRequest + * @type {number} + * @memberof GetFile200Response */ - 'backgroundRemovalParams'?: ImageGenerationRequestBackgroundRemovalParams; + 'size'?: number; /** - * Parameters for VIRTUAL_TRY_ON task + * * @type {object} - * @memberof ImageGenerationRequest + * @memberof GetFile200Response */ - 'virtualTryOnParams'?: object; + 'metadata'?: object; /** * - * @type {ImageGenerationRequestImageGenerationConfig} - * @memberof ImageGenerationRequest - */ - 'imageGenerationConfig'?: ImageGenerationRequestImageGenerationConfig; - /** - * AWS region for Nova Canvas * @type {string} - * @memberof ImageGenerationRequest + * @memberof GetFile200Response */ - 'region'?: ImageGenerationRequestRegionEnum; + 'createdAt'?: string; } - -export const ImageGenerationRequestTaskTypeEnum = { - TextImage: 'TEXT_IMAGE', - ColorGuidedGeneration: 'COLOR_GUIDED_GENERATION', - ImageVariation: 'IMAGE_VARIATION', - Inpainting: 'INPAINTING', - Outpainting: 'OUTPAINTING', - BackgroundRemoval: 'BACKGROUND_REMOVAL', - VirtualTryOn: 'VIRTUAL_TRY_ON' -} as const; - -export type ImageGenerationRequestTaskTypeEnum = typeof ImageGenerationRequestTaskTypeEnum[keyof typeof ImageGenerationRequestTaskTypeEnum]; -export const ImageGenerationRequestRegionEnum = { - UsEast1: 'us-east-1', - ApNortheast1: 'ap-northeast-1', - EuWest1: 'eu-west-1' -} as const; - -export type ImageGenerationRequestRegionEnum = typeof ImageGenerationRequestRegionEnum[keyof typeof ImageGenerationRequestRegionEnum]; - /** - * Parameters for BACKGROUND_REMOVAL task + * * @export - * @interface ImageGenerationRequestBackgroundRemovalParams + * @interface GetSshAccessCredentials200Response */ -export interface ImageGenerationRequestBackgroundRemovalParams { +export interface GetSshAccessCredentials200Response { /** * - * @type {string} - * @memberof ImageGenerationRequestBackgroundRemovalParams + * @type {boolean} + * @memberof GetSshAccessCredentials200Response */ - 'image'?: string; -} -/** - * Parameters for COLOR_GUIDED_GENERATION task - * @export - * @interface ImageGenerationRequestColorGuidedGenerationParams - */ -export interface ImageGenerationRequestColorGuidedGenerationParams { + 'success'?: boolean; /** * - * @type {Array} - * @memberof ImageGenerationRequestColorGuidedGenerationParams + * @type {GetSshAccessCredentials200ResponseCredentials} + * @memberof GetSshAccessCredentials200Response */ - 'colors'?: Array; + 'credentials'?: GetSshAccessCredentials200ResponseCredentials; /** * * @type {string} - * @memberof ImageGenerationRequestColorGuidedGenerationParams + * @memberof GetSshAccessCredentials200Response */ - 'referenceImage'?: string; + 'clusterName'?: string; /** * * @type {string} - * @memberof ImageGenerationRequestColorGuidedGenerationParams + * @memberof GetSshAccessCredentials200Response */ - 'text'?: string; + 'taskArn'?: string; /** * * @type {string} - * @memberof ImageGenerationRequestColorGuidedGenerationParams - */ - 'negativeText'?: string; -} -/** - * General image generation configuration - * @export - * @interface ImageGenerationRequestImageGenerationConfig - */ -export interface ImageGenerationRequestImageGenerationConfig { - /** - * - * @type {number} - * @memberof ImageGenerationRequestImageGenerationConfig + * @memberof GetSshAccessCredentials200Response */ - 'width'?: number; + 'taskId'?: string; /** * - * @type {number} - * @memberof ImageGenerationRequestImageGenerationConfig + * @type {Array} + * @memberof GetSshAccessCredentials200Response */ - 'height'?: number; + 'containerNames'?: Array; /** * * @type {string} - * @memberof ImageGenerationRequestImageGenerationConfig - */ - 'quality'?: ImageGenerationRequestImageGenerationConfigQualityEnum; - /** - * - * @type {number} - * @memberof ImageGenerationRequestImageGenerationConfig + * @memberof GetSshAccessCredentials200Response */ - 'cfgScale'?: number; + 'region'?: string; /** * * @type {number} - * @memberof ImageGenerationRequestImageGenerationConfig + * @memberof GetSshAccessCredentials200Response */ - 'seed'?: number; + 'expiresIn'?: number; /** * - * @type {number} - * @memberof ImageGenerationRequestImageGenerationConfig + * @type {string} + * @memberof GetSshAccessCredentials200Response */ - 'numberOfImages'?: number; + 'organizationScope'?: string; } - -export const ImageGenerationRequestImageGenerationConfigQualityEnum = { - Standard: 'standard', - Premium: 'premium' -} as const; - -export type ImageGenerationRequestImageGenerationConfigQualityEnum = typeof ImageGenerationRequestImageGenerationConfigQualityEnum[keyof typeof ImageGenerationRequestImageGenerationConfigQualityEnum]; - /** - * Parameters for IMAGE_VARIATION task + * * @export - * @interface ImageGenerationRequestImageVariationParams + * @interface GetSshAccessCredentials200ResponseCredentials */ -export interface ImageGenerationRequestImageVariationParams { +export interface GetSshAccessCredentials200ResponseCredentials { /** * - * @type {Array} - * @memberof ImageGenerationRequestImageVariationParams + * @type {string} + * @memberof GetSshAccessCredentials200ResponseCredentials */ - 'images'?: Array; + 'accessKeyId'?: string; /** * - * @type {number} - * @memberof ImageGenerationRequestImageVariationParams + * @type {string} + * @memberof GetSshAccessCredentials200ResponseCredentials */ - 'similarityStrength'?: number; + 'secretAccessKey'?: string; /** * * @type {string} - * @memberof ImageGenerationRequestImageVariationParams + * @memberof GetSshAccessCredentials200ResponseCredentials */ - 'text'?: string; + 'sessionToken'?: string; /** * * @type {string} - * @memberof ImageGenerationRequestImageVariationParams + * @memberof GetSshAccessCredentials200ResponseCredentials */ - 'negativeText'?: string; + 'expiration'?: string; } /** - * Parameters for INPAINTING task + * * @export - * @interface ImageGenerationRequestInPaintingParams + * @interface GetTask200Response */ -export interface ImageGenerationRequestInPaintingParams { +export interface GetTask200Response { /** * * @type {string} - * @memberof ImageGenerationRequestInPaintingParams + * @memberof GetTask200Response */ - 'image'?: string; + 'taskId'?: string; /** * * @type {string} - * @memberof ImageGenerationRequestInPaintingParams + * @memberof GetTask200Response */ - 'maskImage'?: string; + 'orgId'?: string; /** * * @type {string} - * @memberof ImageGenerationRequestInPaintingParams + * @memberof GetTask200Response */ - 'maskPrompt'?: string; + 'taskListId'?: string | null; /** * * @type {string} - * @memberof ImageGenerationRequestInPaintingParams + * @memberof GetTask200Response */ - 'text'?: string; + 'title'?: string; /** * * @type {string} - * @memberof ImageGenerationRequestInPaintingParams + * @memberof GetTask200Response */ - 'negativeText'?: string; -} -/** - * Parameters for OUTPAINTING task - * @export - * @interface ImageGenerationRequestOutPaintingParams - */ -export interface ImageGenerationRequestOutPaintingParams { + 'description'?: string; /** * * @type {string} - * @memberof ImageGenerationRequestOutPaintingParams + * @memberof GetTask200Response */ - 'image'?: string; + 'status'?: GetTask200ResponseStatusEnum; /** * * @type {string} - * @memberof ImageGenerationRequestOutPaintingParams + * @memberof GetTask200Response */ - 'maskImage'?: string; + 'assignedAgentId'?: string | null; /** * * @type {string} - * @memberof ImageGenerationRequestOutPaintingParams + * @memberof GetTask200Response */ - 'maskPrompt'?: string; + 'createdByAgentId'?: string | null; /** * - * @type {string} - * @memberof ImageGenerationRequestOutPaintingParams + * @type {Array} + * @memberof GetTask200Response */ - 'outPaintingMode'?: ImageGenerationRequestOutPaintingParamsOutPaintingModeEnum; + 'dependsOn'?: Array; /** * - * @type {string} - * @memberof ImageGenerationRequestOutPaintingParams + * @type {object} + * @memberof GetTask200Response */ - 'text'?: string; + 'metadata'?: object; /** * - * @type {string} - * @memberof ImageGenerationRequestOutPaintingParams + * @type {number} + * @memberof GetTask200Response */ - 'negativeText'?: string; -} - -export const ImageGenerationRequestOutPaintingParamsOutPaintingModeEnum = { - Precise: 'PRECISE', - Default: 'DEFAULT' -} as const; - -export type ImageGenerationRequestOutPaintingParamsOutPaintingModeEnum = typeof ImageGenerationRequestOutPaintingParamsOutPaintingModeEnum[keyof typeof ImageGenerationRequestOutPaintingParamsOutPaintingModeEnum]; - -/** - * Parameters for TEXT_IMAGE task - * @export - * @interface ImageGenerationRequestTextToImageParams - */ -export interface ImageGenerationRequestTextToImageParams { + 'progress'?: number; /** - * Text prompt + * * @type {string} - * @memberof ImageGenerationRequestTextToImageParams + * @memberof GetTask200Response */ - 'text'?: string; + 'progressMessage'?: string; /** - * What NOT to include - * @type {string} - * @memberof ImageGenerationRequestTextToImageParams + * Task result data when completed + * @type {object} + * @memberof GetTask200Response */ - 'negativeText'?: string; + 'result'?: object | null; /** - * + * Error message if status is failed * @type {string} - * @memberof ImageGenerationRequestTextToImageParams + * @memberof GetTask200Response */ - 'style'?: ImageGenerationRequestTextToImageParamsStyleEnum; + 'error'?: string | null; /** - * Base64-encoded conditioning image - * @type {string} - * @memberof ImageGenerationRequestTextToImageParams + * + * @type {number} + * @memberof GetTask200Response */ - 'conditionImage'?: string; + 'retryCount'?: number; /** * - * @type {string} - * @memberof ImageGenerationRequestTextToImageParams + * @type {number} + * @memberof GetTask200Response */ - 'controlMode'?: ImageGenerationRequestTextToImageParamsControlModeEnum; + 'maxRetries'?: number; /** - * + * Unix timestamp in milliseconds * @type {number} - * @memberof ImageGenerationRequestTextToImageParams + * @memberof GetTask200Response */ - 'controlStrength'?: number; -} - -export const ImageGenerationRequestTextToImageParamsStyleEnum = { - _3DAnimatedFamilyFilm: '3D_ANIMATED_FAMILY_FILM', - DesignSketch: 'DESIGN_SKETCH', - FlatVectorIllustration: 'FLAT_VECTOR_ILLUSTRATION', - GraphicNovelIllustration: 'GRAPHIC_NOVEL_ILLUSTRATION', - Maximalism: 'MAXIMALISM', - MidcenturyRetro: 'MIDCENTURY_RETRO', - Photorealism: 'PHOTOREALISM', - SoftDigitalPainting: 'SOFT_DIGITAL_PAINTING' -} as const; - -export type ImageGenerationRequestTextToImageParamsStyleEnum = typeof ImageGenerationRequestTextToImageParamsStyleEnum[keyof typeof ImageGenerationRequestTextToImageParamsStyleEnum]; -export const ImageGenerationRequestTextToImageParamsControlModeEnum = { - CannyEdge: 'CANNY_EDGE', - Segmentation: 'SEGMENTATION' -} as const; - -export type ImageGenerationRequestTextToImageParamsControlModeEnum = typeof ImageGenerationRequestTextToImageParamsControlModeEnum[keyof typeof ImageGenerationRequestTextToImageParamsControlModeEnum]; - -/** - * - * @export - * @interface KVItemsCreate200Response - */ -export interface KVItemsCreate200Response { + 'createdAt'?: number; /** - * - * @type {boolean} - * @memberof KVItemsCreate200Response + * Unix timestamp in milliseconds + * @type {number} + * @memberof GetTask200Response */ - 'success'?: boolean; + 'updatedAt'?: number; /** - * - * @type {string} - * @memberof KVItemsCreate200Response + * When status changed to in_progress + * @type {number} + * @memberof GetTask200Response */ - 'key'?: string; + 'startedAt'?: number | null; /** - * - * @type {string} - * @memberof KVItemsCreate200Response + * When task completed/failed/cancelled + * @type {number} + * @memberof GetTask200Response */ - 'value'?: string; -} -/** - * - * @export - * @interface KVItemsDelete200Response - */ -export interface KVItemsDelete200Response { + 'completedAt'?: number | null; /** - * - * @type {boolean} - * @memberof KVItemsDelete200Response + * TTL timestamp for completed tasks + * @type {number} + * @memberof GetTask200Response */ - 'success'?: boolean; + 'expiresAt'?: number | null; /** - * + * Reason task is blocked * @type {string} - * @memberof KVItemsDelete200Response + * @memberof GetTask200Response */ - 'key'?: string; -} -/** - * - * @export - * @interface KVItemsShow200Response - */ -export interface KVItemsShow200Response { + 'blockedReason'?: string | null; /** - * - * @type {string} - * @memberof KVItemsShow200Response + * Task IDs that are blocking this task + * @type {Array} + * @memberof GetTask200Response */ - 'key'?: string; + 'blockedByTaskIds'?: Array | null; /** - * - * @type {KVItemsShow200ResponseValue} - * @memberof KVItemsShow200Response + * When status changed to blocked + * @type {number} + * @memberof GetTask200Response */ - 'value'?: KVItemsShow200ResponseValue; + 'blockedAt'?: number | null; } -/** - * @type KVItemsShow200ResponseValue - * Item value (decoded from JSON if applicable). Returns \'[ENCRYPTED]\' for secret items. - * @export - */ -export type KVItemsShow200ResponseValue = object | string; + +export const GetTask200ResponseStatusEnum = { + Pending: 'pending', + InProgress: 'in_progress', + Completed: 'completed', + Failed: 'failed', + Cancelled: 'cancelled', + Blocked: 'blocked' +} as const; + +export type GetTask200ResponseStatusEnum = typeof GetTask200ResponseStatusEnum[keyof typeof GetTask200ResponseStatusEnum]; /** * * @export - * @interface ListAIAgents200Response + * @interface GetVectorCollection200Response */ -export interface ListAIAgents200Response { +export interface GetVectorCollection200Response { /** * - * @type {Array} - * @memberof ListAIAgents200Response + * @type {GetVectorCollection200ResponseCollection} + * @memberof GetVectorCollection200Response */ - 'agents'?: Array; + 'collection'?: GetVectorCollection200ResponseCollection; } /** * * @export - * @interface ListAIAgents200ResponseAgentsInner + * @interface GetVectorCollection200ResponseCollection */ -export interface ListAIAgents200ResponseAgentsInner { +export interface GetVectorCollection200ResponseCollection { /** * * @type {string} - * @memberof ListAIAgents200ResponseAgentsInner + * @memberof GetVectorCollection200ResponseCollection */ - 'agentId'?: string; + 'collectionId'?: string; /** * * @type {string} - * @memberof ListAIAgents200ResponseAgentsInner + * @memberof GetVectorCollection200ResponseCollection */ 'name'?: string; /** * * @type {string} - * @memberof ListAIAgents200ResponseAgentsInner + * @memberof GetVectorCollection200ResponseCollection */ 'description'?: string; /** * - * @type {string} - * @memberof ListAIAgents200ResponseAgentsInner + * @type {number} + * @memberof GetVectorCollection200ResponseCollection */ - 'group'?: string; + 'documentCount'?: number; /** * * @type {string} - * @memberof ListAIAgents200ResponseAgentsInner - */ - 'modelId'?: string; - /** - * - * @type {number} - * @memberof ListAIAgents200ResponseAgentsInner + * @memberof GetVectorCollection200ResponseCollection */ - 'temperature'?: number; + 'embeddingModel'?: string; /** * * @type {number} - * @memberof ListAIAgents200ResponseAgentsInner - */ - 'maxTokens'?: number; - /** - * - * @type {Array} - * @memberof ListAIAgents200ResponseAgentsInner + * @memberof GetVectorCollection200ResponseCollection */ - 'allowedTools'?: Array; + 'dimensions'?: number; /** * * @type {string} - * @memberof ListAIAgents200ResponseAgentsInner + * @memberof GetVectorCollection200ResponseCollection */ 'createdAt'?: string; /** * * @type {string} - * @memberof ListAIAgents200ResponseAgentsInner + * @memberof GetVectorCollection200ResponseCollection */ 'updatedAt'?: string; } /** * * @export - * @interface ListAIModels200Response + * @interface ImageGeneration200Response */ -export interface ListAIModels200Response { +export interface ImageGeneration200Response { /** - * - * @type {number} - * @memberof ListAIModels200Response + * Array of base64-encoded generated images + * @type {Array} + * @memberof ImageGeneration200Response */ - 'count'?: number; + 'images': Array; /** - * - * @type {Array} - * @memberof ListAIModels200Response + * Base64-encoded mask image (for virtual try-on) + * @type {string} + * @memberof ImageGeneration200Response */ - 'models'?: Array; + 'maskImage'?: string; + /** + * Error message if any images were blocked by content moderation + * @type {string} + * @memberof ImageGeneration200Response + */ + 'error'?: string; } /** * * @export - * @interface ListAIModels200ResponseModelsInner + * @interface ImageGenerationRequest */ -export interface ListAIModels200ResponseModelsInner { +export interface ImageGenerationRequest { /** - * + * Model to use for image generation * @type {string} - * @memberof ListAIModels200ResponseModelsInner + * @memberof ImageGenerationRequest */ - 'id'?: string; + 'modelId'?: string; /** - * + * Type of image generation task * @type {string} - * @memberof ListAIModels200ResponseModelsInner + * @memberof ImageGenerationRequest */ - 'name'?: string; + 'taskType': ImageGenerationRequestTaskTypeEnum; /** * - * @type {string} - * @memberof ListAIModels200ResponseModelsInner + * @type {ImageGenerationRequestTextToImageParams} + * @memberof ImageGenerationRequest */ - 'provider'?: string; + 'textToImageParams'?: ImageGenerationRequestTextToImageParams; /** * - * @type {ListAIModels200ResponseModelsInnerCapabilities} - * @memberof ListAIModels200ResponseModelsInner - */ - 'capabilities'?: ListAIModels200ResponseModelsInnerCapabilities; -} -/** - * Model capabilities and features - * @export - * @interface ListAIModels200ResponseModelsInnerCapabilities - */ -export interface ListAIModels200ResponseModelsInnerCapabilities { - /** - * Supports text generation - * @type {boolean} - * @memberof ListAIModels200ResponseModelsInnerCapabilities - */ - 'text'?: boolean; - /** - * Supports images/video - * @type {boolean} - * @memberof ListAIModels200ResponseModelsInnerCapabilities + * @type {ImageGenerationRequestColorGuidedGenerationParams} + * @memberof ImageGenerationRequest */ - 'multimodal'?: boolean; + 'colorGuidedGenerationParams'?: ImageGenerationRequestColorGuidedGenerationParams; /** - * Supports embeddings - * @type {boolean} - * @memberof ListAIModels200ResponseModelsInnerCapabilities + * + * @type {ImageGenerationRequestImageVariationParams} + * @memberof ImageGenerationRequest */ - 'embeddings'?: boolean; + 'imageVariationParams'?: ImageGenerationRequestImageVariationParams; /** - * Supports streaming responses - * @type {boolean} - * @memberof ListAIModels200ResponseModelsInnerCapabilities + * + * @type {ImageGenerationRequestInPaintingParams} + * @memberof ImageGenerationRequest */ - 'streaming'?: boolean; + 'inPaintingParams'?: ImageGenerationRequestInPaintingParams; /** - * Supports function calling - * @type {boolean} - * @memberof ListAIModels200ResponseModelsInnerCapabilities + * + * @type {ImageGenerationRequestOutPaintingParams} + * @memberof ImageGenerationRequest */ - 'toolUse'?: boolean; -} -/** - * - * @export - * @interface ListAISessions200ResponseInner - */ -export interface ListAISessions200ResponseInner { + 'outPaintingParams'?: ImageGenerationRequestOutPaintingParams; /** * - * @type {string} - * @memberof ListAISessions200ResponseInner + * @type {ImageGenerationRequestBackgroundRemovalParams} + * @memberof ImageGenerationRequest */ - 'id'?: string; + 'backgroundRemovalParams'?: ImageGenerationRequestBackgroundRemovalParams; /** - * - * @type {string} - * @memberof ListAISessions200ResponseInner + * Parameters for VIRTUAL_TRY_ON task + * @type {object} + * @memberof ImageGenerationRequest */ - 'title'?: string; + 'virtualTryOnParams'?: object; /** * - * @type {string} - * @memberof ListAISessions200ResponseInner + * @type {ImageGenerationRequestImageGenerationConfig} + * @memberof ImageGenerationRequest */ - 'model'?: string; + 'imageGenerationConfig'?: ImageGenerationRequestImageGenerationConfig; /** - * + * AWS region for Nova Canvas * @type {string} - * @memberof ListAISessions200ResponseInner + * @memberof ImageGenerationRequest */ - 'created_at'?: string; + 'region'?: ImageGenerationRequestRegionEnum; +} + +export const ImageGenerationRequestTaskTypeEnum = { + TextImage: 'TEXT_IMAGE', + ColorGuidedGeneration: 'COLOR_GUIDED_GENERATION', + ImageVariation: 'IMAGE_VARIATION', + Inpainting: 'INPAINTING', + Outpainting: 'OUTPAINTING', + BackgroundRemoval: 'BACKGROUND_REMOVAL', + VirtualTryOn: 'VIRTUAL_TRY_ON' +} as const; + +export type ImageGenerationRequestTaskTypeEnum = typeof ImageGenerationRequestTaskTypeEnum[keyof typeof ImageGenerationRequestTaskTypeEnum]; +export const ImageGenerationRequestRegionEnum = { + UsEast1: 'us-east-1', + ApNortheast1: 'ap-northeast-1', + EuWest1: 'eu-west-1' +} as const; + +export type ImageGenerationRequestRegionEnum = typeof ImageGenerationRequestRegionEnum[keyof typeof ImageGenerationRequestRegionEnum]; + +/** + * Parameters for BACKGROUND_REMOVAL task + * @export + * @interface ImageGenerationRequestBackgroundRemovalParams + */ +export interface ImageGenerationRequestBackgroundRemovalParams { /** * * @type {string} - * @memberof ListAISessions200ResponseInner + * @memberof ImageGenerationRequestBackgroundRemovalParams */ - 'updated_at'?: string; + 'image'?: string; } /** - * + * Parameters for COLOR_GUIDED_GENERATION task * @export - * @interface ListAIToolExecutions200Response + * @interface ImageGenerationRequestColorGuidedGenerationParams */ -export interface ListAIToolExecutions200Response { +export interface ImageGenerationRequestColorGuidedGenerationParams { /** * - * @type {Array} - * @memberof ListAIToolExecutions200Response + * @type {Array} + * @memberof ImageGenerationRequestColorGuidedGenerationParams */ - 'executions': Array; + 'colors'?: Array; /** - * Number of executions returned - * @type {number} - * @memberof ListAIToolExecutions200Response + * + * @type {string} + * @memberof ImageGenerationRequestColorGuidedGenerationParams */ - 'count': number; + 'referenceImage'?: string; /** - * Organization identifier + * * @type {string} - * @memberof ListAIToolExecutions200Response + * @memberof ImageGenerationRequestColorGuidedGenerationParams */ - 'orgId': string; + 'text'?: string; /** - * Filter applied (or \'all\') + * * @type {string} - * @memberof ListAIToolExecutions200Response + * @memberof ImageGenerationRequestColorGuidedGenerationParams */ - 'status'?: string; + 'negativeText'?: string; } /** - * + * General image generation configuration * @export - * @interface ListAIToolExecutions200ResponseExecutionsInner + * @interface ImageGenerationRequestImageGenerationConfig */ -export interface ListAIToolExecutions200ResponseExecutionsInner { +export interface ImageGenerationRequestImageGenerationConfig { /** * - * @type {string} - * @memberof ListAIToolExecutions200ResponseExecutionsInner + * @type {number} + * @memberof ImageGenerationRequestImageGenerationConfig */ - 'executionId'?: string; + 'width'?: number; /** * - * @type {string} - * @memberof ListAIToolExecutions200ResponseExecutionsInner + * @type {number} + * @memberof ImageGenerationRequestImageGenerationConfig */ - 'toolName'?: string; + 'height'?: number; /** - * Execution status: pending, running, complete, or failed + * * @type {string} - * @memberof ListAIToolExecutions200ResponseExecutionsInner + * @memberof ImageGenerationRequestImageGenerationConfig */ - 'status'?: string; + 'quality'?: ImageGenerationRequestImageGenerationConfigQualityEnum; /** * - * @type {string} - * @memberof ListAIToolExecutions200ResponseExecutionsInner + * @type {number} + * @memberof ImageGenerationRequestImageGenerationConfig */ - 'createdAt'?: string; + 'cfgScale'?: number; /** * - * @type {string} - * @memberof ListAIToolExecutions200ResponseExecutionsInner + * @type {number} + * @memberof ImageGenerationRequestImageGenerationConfig */ - 'completedAt'?: string; + 'seed'?: number; + /** + * + * @type {number} + * @memberof ImageGenerationRequestImageGenerationConfig + */ + 'numberOfImages'?: number; } + +export const ImageGenerationRequestImageGenerationConfigQualityEnum = { + Standard: 'standard', + Premium: 'premium' +} as const; + +export type ImageGenerationRequestImageGenerationConfigQualityEnum = typeof ImageGenerationRequestImageGenerationConfigQualityEnum[keyof typeof ImageGenerationRequestImageGenerationConfigQualityEnum]; + /** - * + * Parameters for IMAGE_VARIATION task * @export - * @interface ListAIToolNames200Response + * @interface ImageGenerationRequestImageVariationParams */ -export interface ListAIToolNames200Response { +export interface ImageGenerationRequestImageVariationParams { /** - * Array of tool names + * * @type {Array} - * @memberof ListAIToolNames200Response + * @memberof ImageGenerationRequestImageVariationParams */ - 'tools': Array; + 'images'?: Array; /** - * Number of tools + * * @type {number} - * @memberof ListAIToolNames200Response + * @memberof ImageGenerationRequestImageVariationParams */ - 'count': number; -} -/** - * - * @export - * @interface ListAITools200Response - */ -export interface ListAITools200Response { + 'similarityStrength'?: number; /** - * Array of available tool specifications - * @type {Array} - * @memberof ListAITools200Response + * + * @type {string} + * @memberof ImageGenerationRequestImageVariationParams */ - 'tools': Array; + 'text'?: string; /** - * Number of available tools - * @type {number} - * @memberof ListAITools200Response + * + * @type {string} + * @memberof ImageGenerationRequestImageVariationParams */ - 'count': number; + 'negativeText'?: string; } /** - * + * Parameters for INPAINTING task * @export - * @interface ListAITools200ResponseToolsInner + * @interface ImageGenerationRequestInPaintingParams */ -export interface ListAITools200ResponseToolsInner { +export interface ImageGenerationRequestInPaintingParams { /** * - * @type {ListAITools200ResponseToolsInnerToolSpec} - * @memberof ListAITools200ResponseToolsInner + * @type {string} + * @memberof ImageGenerationRequestInPaintingParams */ - 'toolSpec'?: ListAITools200ResponseToolsInnerToolSpec; -} -/** - * - * @export - * @interface ListAITools200ResponseToolsInnerToolSpec - */ -export interface ListAITools200ResponseToolsInnerToolSpec { + 'image'?: string; /** * * @type {string} - * @memberof ListAITools200ResponseToolsInnerToolSpec + * @memberof ImageGenerationRequestInPaintingParams */ - 'name'?: string; + 'maskImage'?: string; /** * * @type {string} - * @memberof ListAITools200ResponseToolsInnerToolSpec + * @memberof ImageGenerationRequestInPaintingParams */ - 'description'?: string; + 'maskPrompt'?: string; /** * - * @type {ListAITools200ResponseToolsInnerToolSpecInputSchema} - * @memberof ListAITools200ResponseToolsInnerToolSpec + * @type {string} + * @memberof ImageGenerationRequestInPaintingParams */ - 'inputSchema'?: ListAITools200ResponseToolsInnerToolSpecInputSchema; -} -/** - * - * @export - * @interface ListAITools200ResponseToolsInnerToolSpecInputSchema - */ -export interface ListAITools200ResponseToolsInnerToolSpecInputSchema { + 'text'?: string; /** - * JSON Schema defining function parameters - * @type {object} - * @memberof ListAITools200ResponseToolsInnerToolSpecInputSchema + * + * @type {string} + * @memberof ImageGenerationRequestInPaintingParams */ - 'json'?: object; + 'negativeText'?: string; } /** - * + * Parameters for OUTPAINTING task * @export - * @interface ListBackups200Response + * @interface ImageGenerationRequestOutPaintingParams */ -export interface ListBackups200Response { - /** - * - * @type {Array} - * @memberof ListBackups200Response - */ - 'backups'?: Array; +export interface ImageGenerationRequestOutPaintingParams { /** * - * @type {number} - * @memberof ListBackups200Response - */ - 'count'?: number; - /** - * Token for retrieving the next page of results, if more data is available * @type {string} - * @memberof ListBackups200Response + * @memberof ImageGenerationRequestOutPaintingParams */ - 'nextToken'?: string | null; + 'image'?: string; /** * * @type {string} - * @memberof ListBackups200Response + * @memberof ImageGenerationRequestOutPaintingParams */ - 'message'?: string; -} -/** - * - * @export - * @interface ListBackups200ResponseBackupsInner - */ -export interface ListBackups200ResponseBackupsInner { + 'maskImage'?: string; /** * * @type {string} - * @memberof ListBackups200ResponseBackupsInner + * @memberof ImageGenerationRequestOutPaintingParams */ - 'backupId'?: string; + 'maskPrompt'?: string; /** * * @type {string} - * @memberof ListBackups200ResponseBackupsInner + * @memberof ImageGenerationRequestOutPaintingParams */ - 'status'?: string; + 'outPaintingMode'?: ImageGenerationRequestOutPaintingParamsOutPaintingModeEnum; /** * * @type {string} - * @memberof ListBackups200ResponseBackupsInner + * @memberof ImageGenerationRequestOutPaintingParams */ - 'type'?: string; + 'text'?: string; /** * * @type {string} - * @memberof ListBackups200ResponseBackupsInner + * @memberof ImageGenerationRequestOutPaintingParams */ - 'engine'?: string; + 'negativeText'?: string; +} + +export const ImageGenerationRequestOutPaintingParamsOutPaintingModeEnum = { + Precise: 'PRECISE', + Default: 'DEFAULT' +} as const; + +export type ImageGenerationRequestOutPaintingParamsOutPaintingModeEnum = typeof ImageGenerationRequestOutPaintingParamsOutPaintingModeEnum[keyof typeof ImageGenerationRequestOutPaintingParamsOutPaintingModeEnum]; + +/** + * Parameters for TEXT_IMAGE task + * @export + * @interface ImageGenerationRequestTextToImageParams + */ +export interface ImageGenerationRequestTextToImageParams { /** - * + * Text prompt * @type {string} - * @memberof ListBackups200ResponseBackupsInner + * @memberof ImageGenerationRequestTextToImageParams */ - 'description'?: string; + 'text'?: string; /** - * + * What NOT to include * @type {string} - * @memberof ListBackups200ResponseBackupsInner + * @memberof ImageGenerationRequestTextToImageParams */ - 'createdAt'?: string; + 'negativeText'?: string; /** * * @type {string} - * @memberof ListBackups200ResponseBackupsInner + * @memberof ImageGenerationRequestTextToImageParams */ - 'updatedAt'?: string; + 'style'?: ImageGenerationRequestTextToImageParamsStyleEnum; /** - * + * Base64-encoded conditioning image * @type {string} - * @memberof ListBackups200ResponseBackupsInner + * @memberof ImageGenerationRequestTextToImageParams */ - 'taskArn'?: string; + 'conditionImage'?: string; /** * * @type {string} - * @memberof ListBackups200ResponseBackupsInner + * @memberof ImageGenerationRequestTextToImageParams */ - 's3Key'?: string; + 'controlMode'?: ImageGenerationRequestTextToImageParamsControlModeEnum; /** * - * @type {string} - * @memberof ListBackups200ResponseBackupsInner + * @type {number} + * @memberof ImageGenerationRequestTextToImageParams */ - 'bucketName'?: string; + 'controlStrength'?: number; +} + +export const ImageGenerationRequestTextToImageParamsStyleEnum = { + _3DAnimatedFamilyFilm: '3D_ANIMATED_FAMILY_FILM', + DesignSketch: 'DESIGN_SKETCH', + FlatVectorIllustration: 'FLAT_VECTOR_ILLUSTRATION', + GraphicNovelIllustration: 'GRAPHIC_NOVEL_ILLUSTRATION', + Maximalism: 'MAXIMALISM', + MidcenturyRetro: 'MIDCENTURY_RETRO', + Photorealism: 'PHOTOREALISM', + SoftDigitalPainting: 'SOFT_DIGITAL_PAINTING' +} as const; + +export type ImageGenerationRequestTextToImageParamsStyleEnum = typeof ImageGenerationRequestTextToImageParamsStyleEnum[keyof typeof ImageGenerationRequestTextToImageParamsStyleEnum]; +export const ImageGenerationRequestTextToImageParamsControlModeEnum = { + CannyEdge: 'CANNY_EDGE', + Segmentation: 'SEGMENTATION' +} as const; + +export type ImageGenerationRequestTextToImageParamsControlModeEnum = typeof ImageGenerationRequestTextToImageParamsControlModeEnum[keyof typeof ImageGenerationRequestTextToImageParamsControlModeEnum]; + +/** + * + * @export + * @interface KVItemsCreate200Response + */ +export interface KVItemsCreate200Response { /** * - * @type {number} - * @memberof ListBackups200ResponseBackupsInner + * @type {boolean} + * @memberof KVItemsCreate200Response */ - 'size'?: number; + 'success'?: boolean; /** * * @type {string} - * @memberof ListBackups200ResponseBackupsInner + * @memberof KVItemsCreate200Response */ - 'sizeFormatted'?: string; + 'key'?: string; /** * - * @type {boolean} - * @memberof ListBackups200ResponseBackupsInner + * @type {string} + * @memberof KVItemsCreate200Response */ - 'fileExists'?: boolean; + 'value'?: string; } /** * * @export - * @interface ListBackups422Response + * @interface KVItemsDelete200Response */ -export interface ListBackups422Response { +export interface KVItemsDelete200Response { + /** + * + * @type {boolean} + * @memberof KVItemsDelete200Response + */ + 'success'?: boolean; /** * * @type {string} - * @memberof ListBackups422Response + * @memberof KVItemsDelete200Response */ - 'error'?: string; + 'key'?: string; } /** * * @export - * @interface ListCustomTools200Response + * @interface KVItemsShow200Response */ -export interface ListCustomTools200Response { +export interface KVItemsShow200Response { /** * - * @type {Array} - * @memberof ListCustomTools200Response + * @type {string} + * @memberof KVItemsShow200Response */ - 'tools'?: Array; + 'key'?: string; /** * - * @type {number} - * @memberof ListCustomTools200Response + * @type {KVItemsShow200ResponseValue} + * @memberof KVItemsShow200Response */ - 'count'?: number; + 'value'?: KVItemsShow200ResponseValue; } +/** + * @type KVItemsShow200ResponseValue + * Item value (decoded from JSON if applicable). Returns \'[ENCRYPTED]\' for secret items. + * @export + */ +export type KVItemsShow200ResponseValue = object | string; + /** * * @export - * @interface ListCustomTools200ResponseToolsInner + * @interface ListAIAgents200Response */ -export interface ListCustomTools200ResponseToolsInner { +export interface ListAIAgents200Response { /** * - * @type {string} - * @memberof ListCustomTools200ResponseToolsInner + * @type {Array} + * @memberof ListAIAgents200Response */ - 'name'?: string; + 'agents'?: Array; +} +/** + * + * @export + * @interface ListAIAgents200ResponseAgentsInner + */ +export interface ListAIAgents200ResponseAgentsInner { /** * * @type {string} - * @memberof ListCustomTools200ResponseToolsInner + * @memberof ListAIAgents200ResponseAgentsInner */ - 'description'?: string; + 'agentId'?: string; /** * * @type {string} - * @memberof ListCustomTools200ResponseToolsInner + * @memberof ListAIAgents200ResponseAgentsInner */ - 'edgeFunctionUrl'?: string; + 'name'?: string; /** * - * @type {boolean} - * @memberof ListCustomTools200ResponseToolsInner + * @type {string} + * @memberof ListAIAgents200ResponseAgentsInner */ - 'isAsync'?: boolean; + 'description'?: string; /** * - * @type {object} - * @memberof ListCustomTools200ResponseToolsInner + * @type {string} + * @memberof ListAIAgents200ResponseAgentsInner */ - 'inputSchema'?: object; + 'group'?: string; /** * * @type {string} - * @memberof ListCustomTools200ResponseToolsInner + * @memberof ListAIAgents200ResponseAgentsInner */ - 'createdAt'?: string; -} -/** - * - * @export - * @interface ListVectorCollections200Response - */ -export interface ListVectorCollections200Response { + 'modelId'?: string; /** * - * @type {Array} - * @memberof ListVectorCollections200Response + * @type {number} + * @memberof ListAIAgents200ResponseAgentsInner */ - 'collections'?: Array; + 'temperature'?: number; /** * * @type {number} - * @memberof ListVectorCollections200Response - */ - 'count'?: number; -} -/** - * - * @export - * @interface ListVectorCollections200ResponseCollectionsInner - */ -export interface ListVectorCollections200ResponseCollectionsInner { - /** - * - * @type {string} - * @memberof ListVectorCollections200ResponseCollectionsInner - */ - 'collectionId'?: string; - /** - * - * @type {string} - * @memberof ListVectorCollections200ResponseCollectionsInner - */ - 'name'?: string; - /** - * - * @type {string} - * @memberof ListVectorCollections200ResponseCollectionsInner + * @memberof ListAIAgents200ResponseAgentsInner */ - 'description'?: string; + 'maxTokens'?: number; /** * - * @type {number} - * @memberof ListVectorCollections200ResponseCollectionsInner + * @type {Array} + * @memberof ListAIAgents200ResponseAgentsInner */ - 'documentCount'?: number; + 'allowedTools'?: Array; /** * * @type {string} - * @memberof ListVectorCollections200ResponseCollectionsInner + * @memberof ListAIAgents200ResponseAgentsInner */ - 'embeddingModel'?: string; + 'createdAt'?: string; /** * * @type {string} - * @memberof ListVectorCollections200ResponseCollectionsInner + * @memberof ListAIAgents200ResponseAgentsInner */ - 'createdAt'?: string; + 'updatedAt'?: string; } /** * * @export - * @interface OrganizationsList200ResponseInner + * @interface ListAIModels200Response */ -export interface OrganizationsList200ResponseInner { +export interface ListAIModels200Response { /** - * Organization name - * @type {string} - * @memberof OrganizationsList200ResponseInner + * + * @type {number} + * @memberof ListAIModels200Response */ - 'name'?: string; + 'count'?: number; /** - * Organization machine name - * @type {string} - * @memberof OrganizationsList200ResponseInner + * + * @type {Array} + * @memberof ListAIModels200Response */ - 'machine_name'?: string; + 'models'?: Array; } /** * * @export - * @interface PatchEnvironmentCompose202Response + * @interface ListAIModels200ResponseModelsInner */ -export interface PatchEnvironmentCompose202Response { +export interface ListAIModels200ResponseModelsInner { /** * * @type {string} - * @memberof PatchEnvironmentCompose202Response + * @memberof ListAIModels200ResponseModelsInner */ - 'architecture'?: string; + 'id'?: string; /** * * @type {string} - * @memberof PatchEnvironmentCompose202Response + * @memberof ListAIModels200ResponseModelsInner */ - 'taskCpu'?: string; + 'name'?: string; /** * * @type {string} - * @memberof PatchEnvironmentCompose202Response + * @memberof ListAIModels200ResponseModelsInner */ - 'taskMemory'?: string; + 'provider'?: string; /** * - * @type {number} - * @memberof PatchEnvironmentCompose202Response + * @type {ListAIModels200ResponseModelsInnerCapabilities} + * @memberof ListAIModels200ResponseModelsInner */ - 'minCapacity'?: number; + 'capabilities'?: ListAIModels200ResponseModelsInnerCapabilities; +} +/** + * Model capabilities and features + * @export + * @interface ListAIModels200ResponseModelsInnerCapabilities + */ +export interface ListAIModels200ResponseModelsInnerCapabilities { /** - * - * @type {number} - * @memberof PatchEnvironmentCompose202Response + * Supports text generation + * @type {boolean} + * @memberof ListAIModels200ResponseModelsInnerCapabilities */ - 'maxCapacity'?: number; + 'text'?: boolean; /** - * - * @type {Array} - * @memberof PatchEnvironmentCompose202Response + * Supports images/video + * @type {boolean} + * @memberof ListAIModels200ResponseModelsInnerCapabilities */ - 'containers'?: Array; + 'multimodal'?: boolean; /** - * - * @type {PatchEnvironmentCompose202ResponseSpotConfiguration} - * @memberof PatchEnvironmentCompose202Response + * Supports embeddings + * @type {boolean} + * @memberof ListAIModels200ResponseModelsInnerCapabilities */ - 'spotConfiguration'?: PatchEnvironmentCompose202ResponseSpotConfiguration; + 'embeddings'?: boolean; /** - * + * Supports streaming responses * @type {boolean} - * @memberof PatchEnvironmentCompose202Response + * @memberof ListAIModels200ResponseModelsInnerCapabilities */ - 'enableCrossEnvNetworking'?: boolean; + 'streaming'?: boolean; /** - * + * Supports function calling * @type {boolean} - * @memberof PatchEnvironmentCompose202Response + * @memberof ListAIModels200ResponseModelsInnerCapabilities */ - 'enableCrossAppNetworking'?: boolean; + 'toolUse'?: boolean; } /** * * @export - * @interface PatchEnvironmentCompose202ResponseSpotConfiguration + * @interface ListAISessions200ResponseInner */ -export interface PatchEnvironmentCompose202ResponseSpotConfiguration { +export interface ListAISessions200ResponseInner { /** * * @type {string} - * @memberof PatchEnvironmentCompose202ResponseSpotConfiguration + * @memberof ListAISessions200ResponseInner */ - 'strategy'?: string; + 'id'?: string; /** * - * @type {boolean} - * @memberof PatchEnvironmentCompose202ResponseSpotConfiguration + * @type {string} + * @memberof ListAISessions200ResponseInner */ - 'tolerateDowntime'?: boolean; -} -/** - * - * @export - * @interface PatchEnvironmentCompose400Response - */ -export interface PatchEnvironmentCompose400Response { + 'title'?: string; /** * * @type {string} - * @memberof PatchEnvironmentCompose400Response + * @memberof ListAISessions200ResponseInner */ - 'message'?: string; + 'model'?: string; /** * - * @type {object} - * @memberof PatchEnvironmentCompose400Response + * @type {string} + * @memberof ListAISessions200ResponseInner */ - 'errors'?: object; + 'created_at'?: string; + /** + * + * @type {string} + * @memberof ListAISessions200ResponseInner + */ + 'updated_at'?: string; } /** * * @export - * @interface PatchEnvironmentComposeRequest + * @interface ListAIToolExecutions200Response */ -export interface PatchEnvironmentComposeRequest { +export interface ListAIToolExecutions200Response { /** * - * @type {string} - * @memberof PatchEnvironmentComposeRequest + * @type {Array} + * @memberof ListAIToolExecutions200Response */ - 'architecture'?: string | null; + 'executions': Array; /** - * - * @type {string} - * @memberof PatchEnvironmentComposeRequest + * Number of executions returned + * @type {number} + * @memberof ListAIToolExecutions200Response */ - 'taskCpu'?: string | null; + 'count': number; /** - * + * Organization identifier * @type {string} - * @memberof PatchEnvironmentComposeRequest + * @memberof ListAIToolExecutions200Response */ - 'taskMemory'?: string | null; + 'orgId': string; /** - * - * @type {number} - * @memberof PatchEnvironmentComposeRequest + * Filter applied (or \'all\') + * @type {string} + * @memberof ListAIToolExecutions200Response */ - 'minCapacity'?: number | null; + 'status'?: string; +} +/** + * + * @export + * @interface ListAIToolExecutions200ResponseExecutionsInner + */ +export interface ListAIToolExecutions200ResponseExecutionsInner { /** * - * @type {number} - * @memberof PatchEnvironmentComposeRequest + * @type {string} + * @memberof ListAIToolExecutions200ResponseExecutionsInner */ - 'maxCapacity'?: number | null; + 'executionId'?: string; /** * - * @type {Array} - * @memberof PatchEnvironmentComposeRequest + * @type {string} + * @memberof ListAIToolExecutions200ResponseExecutionsInner */ - 'containers'?: Array | null; + 'toolName'?: string; /** - * - * @type {PatchEnvironmentComposeRequestSpotConfiguration} - * @memberof PatchEnvironmentComposeRequest + * Execution status: pending, running, complete, or failed + * @type {string} + * @memberof ListAIToolExecutions200ResponseExecutionsInner */ - 'spotConfiguration'?: PatchEnvironmentComposeRequestSpotConfiguration | null; + 'status'?: string; /** * - * @type {boolean} - * @memberof PatchEnvironmentComposeRequest + * @type {string} + * @memberof ListAIToolExecutions200ResponseExecutionsInner */ - 'enableCrossEnvNetworking'?: boolean | null; + 'createdAt'?: string; /** * - * @type {boolean} - * @memberof PatchEnvironmentComposeRequest + * @type {string} + * @memberof ListAIToolExecutions200ResponseExecutionsInner */ - 'enableCrossAppNetworking'?: boolean | null; + 'completedAt'?: string; } /** * * @export - * @interface PatchEnvironmentComposeRequestSpotConfiguration + * @interface ListAIToolNames200Response */ -export interface PatchEnvironmentComposeRequestSpotConfiguration { +export interface ListAIToolNames200Response { /** - * - * @type {string} - * @memberof PatchEnvironmentComposeRequestSpotConfiguration + * Array of tool names + * @type {Array} + * @memberof ListAIToolNames200Response */ - 'strategy'?: PatchEnvironmentComposeRequestSpotConfigurationStrategyEnum; + 'tools': Array; + /** + * Number of tools + * @type {number} + * @memberof ListAIToolNames200Response + */ + 'count': number; } - -export const PatchEnvironmentComposeRequestSpotConfigurationStrategyEnum = { - Off: 'off', - SpotOnly: 'spot-only', - MixedSafe: 'mixed-safe', - MixedAggressive: 'mixed-aggressive' -} as const; - -export type PatchEnvironmentComposeRequestSpotConfigurationStrategyEnum = typeof PatchEnvironmentComposeRequestSpotConfigurationStrategyEnum[keyof typeof PatchEnvironmentComposeRequestSpotConfigurationStrategyEnum]; - /** * * @export - * @interface PurgeCreateRequest + * @interface ListAITools200Response */ -export interface PurgeCreateRequest { - /** - * Cache keys to purge - * @type {Array} - * @memberof PurgeCreateRequest - */ - 'cache_keys': Array; - /** - * URLs to purge - * @type {Array} - * @memberof PurgeCreateRequest - */ - 'urls'?: Array; +export interface ListAITools200Response { /** - * Purge scope (org or project) - * @type {string} - * @memberof PurgeCreateRequest + * Array of available tool specifications + * @type {Array} + * @memberof ListAITools200Response */ - 'scope': string; + 'tools': Array; /** - * Soft purge - * @type {boolean} - * @memberof PurgeCreateRequest + * Number of available tools + * @type {number} + * @memberof ListAITools200Response */ - 'soft'?: boolean; + 'count': number; } /** * * @export - * @interface QueryVectorCollection200Response + * @interface ListAITools200ResponseToolsInner */ -export interface QueryVectorCollection200Response { +export interface ListAITools200ResponseToolsInner { /** * - * @type {Array} - * @memberof QueryVectorCollection200Response + * @type {ListAITools200ResponseToolsInnerToolSpec} + * @memberof ListAITools200ResponseToolsInner */ - 'results'?: Array; + 'toolSpec'?: ListAITools200ResponseToolsInnerToolSpec; +} +/** + * + * @export + * @interface ListAITools200ResponseToolsInnerToolSpec + */ +export interface ListAITools200ResponseToolsInnerToolSpec { /** * * @type {string} - * @memberof QueryVectorCollection200Response + * @memberof ListAITools200ResponseToolsInnerToolSpec */ - 'query'?: string; + 'name'?: string; /** * - * @type {number} - * @memberof QueryVectorCollection200Response + * @type {string} + * @memberof ListAITools200ResponseToolsInnerToolSpec */ - 'count'?: number; + 'description'?: string; /** * - * @type {number} - * @memberof QueryVectorCollection200Response + * @type {ListAITools200ResponseToolsInnerToolSpecInputSchema} + * @memberof ListAITools200ResponseToolsInnerToolSpec */ - 'executionTimeMs'?: number; + 'inputSchema'?: ListAITools200ResponseToolsInnerToolSpecInputSchema; } /** * * @export - * @interface QueryVectorCollection200ResponseResultsInner + * @interface ListAITools200ResponseToolsInnerToolSpecInputSchema */ -export interface QueryVectorCollection200ResponseResultsInner { - /** - * - * @type {string} - * @memberof QueryVectorCollection200ResponseResultsInner - */ - 'content'?: string; - /** - * - * @type {number} - * @memberof QueryVectorCollection200ResponseResultsInner - */ - 'score'?: number; +export interface ListAITools200ResponseToolsInnerToolSpecInputSchema { /** - * - * @type {QueryVectorCollection200ResponseResultsInnerMetadata} - * @memberof QueryVectorCollection200ResponseResultsInner + * JSON Schema defining function parameters + * @type {object} + * @memberof ListAITools200ResponseToolsInnerToolSpecInputSchema */ - 'metadata'?: QueryVectorCollection200ResponseResultsInnerMetadata; + 'json'?: object; } /** * * @export - * @interface QueryVectorCollection200ResponseResultsInnerMetadata + * @interface ListBackups200Response */ -export interface QueryVectorCollection200ResponseResultsInnerMetadata { +export interface ListBackups200Response { /** * - * @type {string} - * @memberof QueryVectorCollection200ResponseResultsInnerMetadata + * @type {Array} + * @memberof ListBackups200Response */ - 'title'?: string; + 'backups'?: Array; /** * + * @type {number} + * @memberof ListBackups200Response + */ + 'count'?: number; + /** + * Token for retrieving the next page of results, if more data is available * @type {string} - * @memberof QueryVectorCollection200ResponseResultsInnerMetadata + * @memberof ListBackups200Response */ - 'source_url'?: string; + 'nextToken'?: string | null; /** * * @type {string} - * @memberof QueryVectorCollection200ResponseResultsInnerMetadata + * @memberof ListBackups200Response */ - 'section'?: string; + 'message'?: string; } /** * * @export - * @interface QueryVectorCollectionRequest + * @interface ListBackups200ResponseBackupsInner */ -export interface QueryVectorCollectionRequest { +export interface ListBackups200ResponseBackupsInner { /** - * Natural language search query + * * @type {string} - * @memberof QueryVectorCollectionRequest - */ - 'query': string; - /** - * Number of results to return - * @type {number} - * @memberof QueryVectorCollectionRequest + * @memberof ListBackups200ResponseBackupsInner */ - 'count'?: number; -} -/** - * - * @export - * @interface ScalingPolicy - */ -export interface ScalingPolicy { + 'backupId'?: string; /** * * @type {string} - * @memberof ScalingPolicy + * @memberof ListBackups200ResponseBackupsInner */ - 'metric'?: ScalingPolicyMetricEnum; + 'status'?: string; /** * - * @type {number} - * @memberof ScalingPolicy + * @type {string} + * @memberof ListBackups200ResponseBackupsInner */ - 'targetValue'?: number; + 'type'?: string; /** * - * @type {number} - * @memberof ScalingPolicy + * @type {string} + * @memberof ListBackups200ResponseBackupsInner */ - 'scaleInCooldownSeconds'?: number; + 'engine'?: string; /** * - * @type {number} - * @memberof ScalingPolicy + * @type {string} + * @memberof ListBackups200ResponseBackupsInner */ - 'scaleOutCooldownSeconds'?: number; -} - -export const ScalingPolicyMetricEnum = { - CpuUtilization: 'CPUUtilization', - MemoryUtilization: 'MemoryUtilization', - Rps: 'RPS' -} as const; - -export type ScalingPolicyMetricEnum = typeof ScalingPolicyMetricEnum[keyof typeof ScalingPolicyMetricEnum]; - -/** - * Spot instance strategy configuration for controlling cost vs reliability. Spot instances provide significant cost savings (~70%) but may be interrupted by AWS. Available for non-production environments. - * @export - * @interface SpotConfiguration - */ -export interface SpotConfiguration { + 'description'?: string; /** - * Spot instance strategy. \'off\' = On-Demand only (highest reliability, no savings). \'spot-only\' = 100% Spot instances (~70% savings, default for non-prod). \'mixed-safe\' = 50% Spot instances (~35% savings, requires multiple instances). \'mixed-aggressive\' = 80% Spot instances (~56% savings, requires multiple instances). + * * @type {string} - * @memberof SpotConfiguration + * @memberof ListBackups200ResponseBackupsInner */ - 'strategy': SpotConfigurationStrategyEnum; -} - -export const SpotConfigurationStrategyEnum = { - Off: 'off', - SpotOnly: 'spot-only', - MixedSafe: 'mixed-safe', - MixedAggressive: 'mixed-aggressive' -} as const; - -export type SpotConfigurationStrategyEnum = typeof SpotConfigurationStrategyEnum[keyof typeof SpotConfigurationStrategyEnum]; - -/** - * - * @export - * @interface SyncOperation - */ -export interface SyncOperation { + 'createdAt'?: string; /** * * @type {string} - * @memberof SyncOperation + * @memberof ListBackups200ResponseBackupsInner */ - 'syncId'?: string; + 'updatedAt'?: string; /** * * @type {string} - * @memberof SyncOperation + * @memberof ListBackups200ResponseBackupsInner */ - 'syncType'?: string; + 'taskArn'?: string; /** * * @type {string} - * @memberof SyncOperation + * @memberof ListBackups200ResponseBackupsInner */ - 'sourceEnvironment'?: string; + 's3Key'?: string; /** * * @type {string} - * @memberof SyncOperation + * @memberof ListBackups200ResponseBackupsInner */ - 'targetEnvironment'?: string; + 'bucketName'?: string; /** * - * @type {string} - * @memberof SyncOperation + * @type {number} + * @memberof ListBackups200ResponseBackupsInner */ - 'status'?: string; + 'size'?: number; /** * * @type {string} - * @memberof SyncOperation + * @memberof ListBackups200ResponseBackupsInner */ - 'createdAt'?: string; + 'sizeFormatted'?: string; /** * - * @type {string} - * @memberof SyncOperation + * @type {boolean} + * @memberof ListBackups200ResponseBackupsInner */ - 'completedAt'?: string; + 'fileExists'?: boolean; } /** * * @export - * @interface SyncToEnvironmentRequest + * @interface ListBackups422Response */ -export interface SyncToEnvironmentRequest { +export interface ListBackups422Response { /** * * @type {string} - * @memberof SyncToEnvironmentRequest + * @memberof ListBackups422Response */ - 'sourceEnvironment'?: string; + 'error'?: string; } /** * * @export - * @interface UpdateAIAgent200Response + * @interface ListCustomTools200Response */ -export interface UpdateAIAgent200Response { - /** - * - * @type {boolean} - * @memberof UpdateAIAgent200Response - */ - 'success'?: boolean; +export interface ListCustomTools200Response { /** * - * @type {object} - * @memberof UpdateAIAgent200Response + * @type {Array} + * @memberof ListCustomTools200Response */ - 'agent'?: object; + 'tools'?: Array; /** * - * @type {string} - * @memberof UpdateAIAgent200Response + * @type {number} + * @memberof ListCustomTools200Response */ - 'message'?: string; + 'count'?: number; } /** * * @export - * @interface UpdateAIAgentRequest + * @interface ListCustomTools200ResponseToolsInner */ -export interface UpdateAIAgentRequest { +export interface ListCustomTools200ResponseToolsInner { /** * * @type {string} - * @memberof UpdateAIAgentRequest + * @memberof ListCustomTools200ResponseToolsInner */ 'name'?: string; /** * * @type {string} - * @memberof UpdateAIAgentRequest + * @memberof ListCustomTools200ResponseToolsInner */ 'description'?: string; /** * * @type {string} - * @memberof UpdateAIAgentRequest + * @memberof ListCustomTools200ResponseToolsInner */ - 'group'?: string; + 'edgeFunctionUrl'?: string; /** * - * @type {string} - * @memberof UpdateAIAgentRequest + * @type {boolean} + * @memberof ListCustomTools200ResponseToolsInner */ - 'systemPrompt'?: string; + 'isAsync'?: boolean; /** * - * @type {number} - * @memberof UpdateAIAgentRequest + * @type {object} + * @memberof ListCustomTools200ResponseToolsInner */ - 'temperature'?: number; + 'inputSchema'?: object; /** * * @type {string} - * @memberof UpdateAIAgentRequest + * @memberof ListCustomTools200ResponseToolsInner */ - 'modelId'?: string; + 'createdAt'?: string; +} +/** + * + * @export + * @interface ListFiles200Response + */ +export interface ListFiles200Response { /** * - * @type {number} - * @memberof UpdateAIAgentRequest + * @type {Array} + * @memberof ListFiles200Response */ - 'maxTokens'?: number; + 'files'?: Array; /** - * - * @type {Array} - * @memberof UpdateAIAgentRequest + * Cursor for next page + * @type {string} + * @memberof ListFiles200Response */ - 'allowedTools'?: Array; + 'nextCursor'?: string | null; /** - * - * @type {Array} - * @memberof UpdateAIAgentRequest + * True if more results available + * @type {boolean} + * @memberof ListFiles200Response */ - 'allowedCollections'?: Array; + 'hasMore'?: boolean; } /** * * @export - * @interface UpdateAISession200Response + * @interface ListFiles200ResponseFilesInner */ -export interface UpdateAISession200Response { +export interface ListFiles200ResponseFilesInner { /** * * @type {string} - * @memberof UpdateAISession200Response + * @memberof ListFiles200ResponseFilesInner */ - 'sessionId'?: string; + 'fileId'?: string; /** * * @type {string} - * @memberof UpdateAISession200Response + * @memberof ListFiles200ResponseFilesInner */ - 'status'?: string; + 'filename'?: string; /** * - * @type {number} - * @memberof UpdateAISession200Response + * @type {string} + * @memberof ListFiles200ResponseFilesInner */ - 'totalMessages'?: number; + 'contentType'?: string; /** * * @type {number} - * @memberof UpdateAISession200Response + * @memberof ListFiles200ResponseFilesInner */ - 'totalTokens'?: number; + 'size'?: number; + /** + * + * @type {object} + * @memberof ListFiles200ResponseFilesInner + */ + 'metadata'?: object; /** * * @type {string} - * @memberof UpdateAISession200Response + * @memberof ListFiles200ResponseFilesInner */ - 'updatedAt'?: string; + 'createdAt'?: string; } /** * * @export - * @interface UpdateAISessionRequest + * @interface ListTasks200Response */ -export interface UpdateAISessionRequest { +export interface ListTasks200Response { /** - * New messages to append to conversation - * @type {Array} - * @memberof UpdateAISessionRequest + * + * @type {Array} + * @memberof ListTasks200Response */ - 'newMessages'?: Array; + 'tasks'?: Array; /** - * Tokens consumed in this turn - * @type {number} - * @memberof UpdateAISessionRequest + * Task IDs (only with dependsOn filter) + * @type {Array} + * @memberof ListTasks200Response */ - 'tokensUsed'?: number; + 'taskIds'?: Array; /** - * Update session status - * @type {string} - * @memberof UpdateAISessionRequest + * + * @type {number} + * @memberof ListTasks200Response */ - 'status'?: UpdateAISessionRequestStatusEnum; + 'count'?: number; /** - * Update custom metadata - * @type {object} - * @memberof UpdateAISessionRequest + * The queried task ID (only with dependsOn filter) + * @type {string} + * @memberof ListTasks200Response */ - 'metadata'?: object; + 'dependsOn'?: string; } - -export const UpdateAISessionRequestStatusEnum = { - Active: 'active', - Completed: 'completed' -} as const; - -export type UpdateAISessionRequestStatusEnum = typeof UpdateAISessionRequestStatusEnum[keyof typeof UpdateAISessionRequestStatusEnum]; - /** * * @export - * @interface UpdateAISessionRequestNewMessagesInner + * @interface ListTasks200ResponseTasksInner */ -export interface UpdateAISessionRequestNewMessagesInner { +export interface ListTasks200ResponseTasksInner { /** * * @type {string} - * @memberof UpdateAISessionRequestNewMessagesInner + * @memberof ListTasks200ResponseTasksInner */ - 'role'?: UpdateAISessionRequestNewMessagesInnerRoleEnum; + 'taskId'?: string; /** * * @type {string} - * @memberof UpdateAISessionRequestNewMessagesInner + * @memberof ListTasks200ResponseTasksInner */ - 'content'?: string; -} - -export const UpdateAISessionRequestNewMessagesInnerRoleEnum = { - User: 'user', - Assistant: 'assistant' -} as const; - -export type UpdateAISessionRequestNewMessagesInnerRoleEnum = typeof UpdateAISessionRequestNewMessagesInnerRoleEnum[keyof typeof UpdateAISessionRequestNewMessagesInnerRoleEnum]; - -/** - * - * @export - * @interface UpdateCronJobRequest - */ -export interface UpdateCronJobRequest { + 'orgId'?: string; /** * * @type {string} - * @memberof UpdateCronJobRequest + * @memberof ListTasks200ResponseTasksInner */ - 'description'?: string | null; + 'taskListId'?: string | null; /** * * @type {string} - * @memberof UpdateCronJobRequest + * @memberof ListTasks200ResponseTasksInner */ - 'scheduleExpression'?: string | null; + 'title'?: string; /** * - * @type {Array} - * @memberof UpdateCronJobRequest + * @type {string} + * @memberof ListTasks200ResponseTasksInner */ - 'command'?: Array | null; + 'description'?: string; /** * * @type {string} - * @memberof UpdateCronJobRequest + * @memberof ListTasks200ResponseTasksInner */ - 'targetContainerName'?: string | null; + 'status'?: ListTasks200ResponseTasksInnerStatusEnum; /** * - * @type {boolean} - * @memberof UpdateCronJobRequest + * @type {string} + * @memberof ListTasks200ResponseTasksInner */ - 'isEnabled'?: boolean | null; -} -/** - * - * @export - * @interface UpdateEnvironmentRequest - */ -export interface UpdateEnvironmentRequest { + 'assignedAgentId'?: string | null; /** * - * @type {Compose} - * @memberof UpdateEnvironmentRequest + * @type {number} + * @memberof ListTasks200ResponseTasksInner */ - 'composeDefinition': Compose; + 'progress'?: number; /** - * Optional. Minimum number of tasks for auto-scaling. If provided at root level, will be merged into composeDefinition. + * + * @type {string} + * @memberof ListTasks200ResponseTasksInner + */ + 'blockedReason'?: string | null; + /** + * + * @type {Array} + * @memberof ListTasks200ResponseTasksInner + */ + 'blockedByTaskIds'?: Array | null; + /** + * * @type {number} - * @memberof UpdateEnvironmentRequest + * @memberof ListTasks200ResponseTasksInner */ - 'minCapacity'?: number | null; + 'createdAt'?: number; /** - * Optional. Maximum number of tasks for auto-scaling. If provided at root level, will be merged into composeDefinition. + * * @type {number} - * @memberof UpdateEnvironmentRequest + * @memberof ListTasks200ResponseTasksInner */ - 'maxCapacity'?: number | null; + 'updatedAt'?: number; } + +export const ListTasks200ResponseTasksInnerStatusEnum = { + Pending: 'pending', + InProgress: 'in_progress', + Completed: 'completed', + Failed: 'failed', + Cancelled: 'cancelled', + Blocked: 'blocked' +} as const; + +export type ListTasks200ResponseTasksInnerStatusEnum = typeof ListTasks200ResponseTasksInnerStatusEnum[keyof typeof ListTasks200ResponseTasksInnerStatusEnum]; + /** * * @export - * @interface UpdateEnvironmentStateRequest + * @interface ListVectorCollections200Response */ -export interface UpdateEnvironmentStateRequest { +export interface ListVectorCollections200Response { /** * - * @type {string} - * @memberof UpdateEnvironmentStateRequest + * @type {Array} + * @memberof ListVectorCollections200Response */ - 'action'?: string; + 'collections'?: Array; /** * - * @type {string} - * @memberof UpdateEnvironmentStateRequest + * @type {number} + * @memberof ListVectorCollections200Response */ - 'imageTag'?: string; + 'count'?: number; } /** * * @export - * @interface UpdateEnvironmentVariableRequest + * @interface ListVectorCollections200ResponseCollectionsInner */ -export interface UpdateEnvironmentVariableRequest { +export interface ListVectorCollections200ResponseCollectionsInner { /** * * @type {string} - * @memberof UpdateEnvironmentVariableRequest + * @memberof ListVectorCollections200ResponseCollectionsInner */ - 'value'?: string; -} -/** - * - * @export - * @interface UploadVectorDocuments200Response - */ -export interface UploadVectorDocuments200Response { + 'collectionId'?: string; /** * - * @type {boolean} - * @memberof UploadVectorDocuments200Response + * @type {string} + * @memberof ListVectorCollections200ResponseCollectionsInner */ - 'success'?: boolean; + 'name'?: string; /** * - * @type {Array} - * @memberof UploadVectorDocuments200Response + * @type {string} + * @memberof ListVectorCollections200ResponseCollectionsInner */ - 'documentIds'?: Array; + 'description'?: string; /** * * @type {number} - * @memberof UploadVectorDocuments200Response + * @memberof ListVectorCollections200ResponseCollectionsInner */ - 'chunksCreated'?: number; + 'documentCount'?: number; /** * * @type {string} - * @memberof UploadVectorDocuments200Response + * @memberof ListVectorCollections200ResponseCollectionsInner */ - 'message'?: string; -} -/** - * - * @export - * @interface UploadVectorDocumentsRequest - */ -export interface UploadVectorDocumentsRequest { + 'embeddingModel'?: string; /** * - * @type {Array} - * @memberof UploadVectorDocumentsRequest + * @type {string} + * @memberof ListVectorCollections200ResponseCollectionsInner */ - 'documents': Array; + 'createdAt'?: string; } /** * * @export - * @interface UploadVectorDocumentsRequestDocumentsInner + * @interface OrganizationsList200ResponseInner */ -export interface UploadVectorDocumentsRequestDocumentsInner { +export interface OrganizationsList200ResponseInner { /** - * Document text content + * Organization name * @type {string} - * @memberof UploadVectorDocumentsRequestDocumentsInner + * @memberof OrganizationsList200ResponseInner */ - 'content': string; + 'name'?: string; /** - * - * @type {UploadVectorDocumentsRequestDocumentsInnerMetadata} - * @memberof UploadVectorDocumentsRequestDocumentsInner + * Organization machine name + * @type {string} + * @memberof OrganizationsList200ResponseInner */ - 'metadata'?: UploadVectorDocumentsRequestDocumentsInnerMetadata; + 'machine_name'?: string; } /** * * @export - * @interface UploadVectorDocumentsRequestDocumentsInnerMetadata + * @interface PatchEnvironmentCompose202Response */ -export interface UploadVectorDocumentsRequestDocumentsInnerMetadata { +export interface PatchEnvironmentCompose202Response { /** * * @type {string} - * @memberof UploadVectorDocumentsRequestDocumentsInnerMetadata + * @memberof PatchEnvironmentCompose202Response */ - 'title'?: string; + 'architecture'?: string; /** * * @type {string} - * @memberof UploadVectorDocumentsRequestDocumentsInnerMetadata + * @memberof PatchEnvironmentCompose202Response */ - 'source_url'?: string; + 'taskCpu'?: string; /** * * @type {string} - * @memberof UploadVectorDocumentsRequestDocumentsInnerMetadata - */ - 'section'?: string; - /** - * - * @type {Array} - * @memberof UploadVectorDocumentsRequestDocumentsInnerMetadata + * @memberof PatchEnvironmentCompose202Response */ - 'tags'?: Array; -} -/** - * - * @export - * @interface V1ContentItem - */ -export interface V1ContentItem { + 'taskMemory'?: string; /** * - * @type {string} - * @memberof V1ContentItem + * @type {number} + * @memberof PatchEnvironmentCompose202Response */ - 'url': string; + 'minCapacity'?: number; /** * - * @type {string} - * @memberof V1ContentItem + * @type {number} + * @memberof PatchEnvironmentCompose202Response */ - 'date_timestamp': string; + 'maxCapacity'?: number; /** * - * @type {string} - * @memberof V1ContentItem + * @type {Array} + * @memberof PatchEnvironmentCompose202Response */ - 'published': string; + 'containers'?: Array; /** * - * @type {number} - * @memberof V1ContentItem + * @type {PatchEnvironmentCompose202ResponseSpotConfiguration} + * @memberof PatchEnvironmentCompose202Response */ - 'revision_count': number; + 'spotConfiguration'?: PatchEnvironmentCompose202ResponseSpotConfiguration; /** * - * @type {string} - * @memberof V1ContentItem + * @type {boolean} + * @memberof PatchEnvironmentCompose202Response */ - 'desc'?: string; + 'enableCrossEnvNetworking'?: boolean; /** * - * @type {string} - * @memberof V1ContentItem + * @type {boolean} + * @memberof PatchEnvironmentCompose202Response */ - 'uuid'?: string; + 'enableCrossAppNetworking'?: boolean; } /** * * @export - * @interface V1ContentListResponse + * @interface PatchEnvironmentCompose202ResponseSpotConfiguration */ -export interface V1ContentListResponse { +export interface PatchEnvironmentCompose202ResponseSpotConfiguration { /** * - * @type {number} - * @memberof V1ContentListResponse + * @type {string} + * @memberof PatchEnvironmentCompose202ResponseSpotConfiguration */ - 'draw': number; + 'strategy'?: string; /** * - * @type {number} - * @memberof V1ContentListResponse + * @type {boolean} + * @memberof PatchEnvironmentCompose202ResponseSpotConfiguration */ - 'iTotalRecords': number; + 'tolerateDowntime'?: boolean; +} +/** + * + * @export + * @interface PatchEnvironmentCompose400Response + */ +export interface PatchEnvironmentCompose400Response { /** * - * @type {number} - * @memberof V1ContentListResponse + * @type {string} + * @memberof PatchEnvironmentCompose400Response */ - 'iTotalDisplayRecords': number; + 'message'?: string; /** * - * @type {Array} - * @memberof V1ContentListResponse + * @type {object} + * @memberof PatchEnvironmentCompose400Response */ - 'aaData': Array; + 'errors'?: object; } /** * * @export - * @interface V1ContentRequest + * @interface PatchEnvironmentComposeRequest */ -export interface V1ContentRequest { +export interface PatchEnvironmentComposeRequest { /** - * The content URL. Must be relative and start with a leading \'/\' + * * @type {string} - * @memberof V1ContentRequest + * @memberof PatchEnvironmentComposeRequest */ - 'url': string; + 'architecture'?: string | null; /** - * The content (e.g. html) + * * @type {string} - * @memberof V1ContentRequest + * @memberof PatchEnvironmentComposeRequest */ - 'content': string; + 'taskCpu'?: string | null; /** - * If the asset should be published - * @type {boolean} - * @memberof V1ContentRequest + * + * @type {string} + * @memberof PatchEnvironmentComposeRequest */ - 'published': boolean; + 'taskMemory'?: string | null; /** - * User defined timestamp for this content item + * * @type {number} - * @memberof V1ContentRequest + * @memberof PatchEnvironmentComposeRequest */ - 'content_timestamp'?: number; + 'minCapacity'?: number | null; /** * - * @type {V1Info} - * @memberof V1ContentRequest + * @type {number} + * @memberof PatchEnvironmentComposeRequest */ - 'info'?: V1Info; + 'maxCapacity'?: number | null; /** * - * @type {Array} - * @memberof V1ContentRequest + * @type {Array} + * @memberof PatchEnvironmentComposeRequest */ - 'transitions'?: Array; -} -/** - * - * @export - * @interface V1DeleteResponse - */ -export interface V1DeleteResponse { + 'containers'?: Array | null; /** - * Indicates at least one error occurred - * @type {boolean} - * @memberof V1DeleteResponse + * + * @type {PatchEnvironmentComposeRequestSpotConfiguration} + * @memberof PatchEnvironmentComposeRequest */ - 'error'?: boolean; + 'spotConfiguration'?: PatchEnvironmentComposeRequestSpotConfiguration | null; /** - * List of any errors - * @type {Array} - * @memberof V1DeleteResponse + * + * @type {boolean} + * @memberof PatchEnvironmentComposeRequest */ - 'errors'?: Array; + 'enableCrossEnvNetworking'?: boolean | null; /** * - * @type {Array} - * @memberof V1DeleteResponse + * @type {boolean} + * @memberof PatchEnvironmentComposeRequest */ - 'meta'?: Array; + 'enableCrossAppNetworking'?: boolean | null; } /** * * @export - * @interface V1Error + * @interface PatchEnvironmentComposeRequestSpotConfiguration */ -export interface V1Error { - /** - * - * @type {boolean} - * @memberof V1Error - */ - 'error': boolean; +export interface PatchEnvironmentComposeRequestSpotConfiguration { /** * * @type {string} - * @memberof V1Error + * @memberof PatchEnvironmentComposeRequestSpotConfiguration */ - 'message': string; + 'strategy'?: PatchEnvironmentComposeRequestSpotConfigurationStrategyEnum; } + +export const PatchEnvironmentComposeRequestSpotConfigurationStrategyEnum = { + Off: 'off', + SpotOnly: 'spot-only', + MixedSafe: 'mixed-safe', + MixedAggressive: 'mixed-aggressive' +} as const; + +export type PatchEnvironmentComposeRequestSpotConfigurationStrategyEnum = typeof PatchEnvironmentComposeRequestSpotConfigurationStrategyEnum[keyof typeof PatchEnvironmentComposeRequestSpotConfigurationStrategyEnum]; + /** * * @export - * @interface V1FormSubmissionItem + * @interface PurgeCreateRequest */ -export interface V1FormSubmissionItem { - /** - * - * @type {string} - * @memberof V1FormSubmissionItem - */ - 'uuid': string; +export interface PurgeCreateRequest { /** - * - * @type {string} - * @memberof V1FormSubmissionItem + * Cache keys to purge + * @type {Array} + * @memberof PurgeCreateRequest */ - 'country_ip': string; + 'cache_keys': Array; /** - * - * @type {string} - * @memberof V1FormSubmissionItem + * URLs to purge + * @type {Array} + * @memberof PurgeCreateRequest */ - 'spam_score': string; + 'urls'?: Array; /** - * + * Purge scope (org or project) * @type {string} - * @memberof V1FormSubmissionItem - */ - 'data': string; - /** - * - * @type {number} - * @memberof V1FormSubmissionItem + * @memberof PurgeCreateRequest */ - 'file_count': number; + 'scope': string; /** - * - * @type {string} - * @memberof V1FormSubmissionItem + * Soft purge + * @type {boolean} + * @memberof PurgeCreateRequest */ - 'date_submitted': string; + 'soft'?: boolean; } /** * * @export - * @interface V1FormSubmissionListResponse + * @interface QueryVectorCollection200Response */ -export interface V1FormSubmissionListResponse { +export interface QueryVectorCollection200Response { /** * - * @type {number} - * @memberof V1FormSubmissionListResponse + * @type {Array} + * @memberof QueryVectorCollection200Response */ - 'draw': number; + 'results'?: Array; /** - * - * @type {number} - * @memberof V1FormSubmissionListResponse + * Original query text (null if vector or metadata search was used) + * @type {string} + * @memberof QueryVectorCollection200Response */ - 'iTotalRecords': number; + 'query'?: string | null; /** - * - * @type {number} - * @memberof V1FormSubmissionListResponse + * Search mode used: text (query provided), vector (pre-computed), metadata (listByMetadata) + * @type {string} + * @memberof QueryVectorCollection200Response */ - 'iTotalDisplayRecords': number; + 'searchMode'?: QueryVectorCollection200ResponseSearchModeEnum; + /** + * Filter that was applied (if any) + * @type {object} + * @memberof QueryVectorCollection200Response + */ + 'filter'?: object | null; + /** + * Number of results returned + * @type {number} + * @memberof QueryVectorCollection200Response + */ + 'count'?: number; + /** + * Query execution time in milliseconds + * @type {number} + * @memberof QueryVectorCollection200Response + */ + 'executionTimeMs'?: number; /** * - * @type {Array} - * @memberof V1FormSubmissionListResponse + * @type {string} + * @memberof QueryVectorCollection200Response */ - 'aaData': Array; + 'collectionId'?: string; + /** + * True if more results available (listByMetadata mode only) + * @type {boolean} + * @memberof QueryVectorCollection200Response + */ + 'hasMore'?: boolean; + /** + * Cursor for next page. Pass as cursor param to continue. Null when no more results. Only in listByMetadata mode. + * @type {string} + * @memberof QueryVectorCollection200Response + */ + 'nextCursor'?: string | null; + /** + * + * @type {QueryVectorCollection200ResponsePagination} + * @memberof QueryVectorCollection200Response + */ + 'pagination'?: QueryVectorCollection200ResponsePagination | null; } + +export const QueryVectorCollection200ResponseSearchModeEnum = { + Text: 'text', + Vector: 'vector', + Metadata: 'metadata' +} as const; + +export type QueryVectorCollection200ResponseSearchModeEnum = typeof QueryVectorCollection200ResponseSearchModeEnum[keyof typeof QueryVectorCollection200ResponseSearchModeEnum]; + /** - * + * Pagination info (listByMetadata mode only) * @export - * @interface V1GetMetricSeriesResponse + * @interface QueryVectorCollection200ResponsePagination */ -export interface V1GetMetricSeriesResponse { +export interface QueryVectorCollection200ResponsePagination { /** * - * @type {boolean} - * @memberof V1GetMetricSeriesResponse + * @type {string} + * @memberof QueryVectorCollection200ResponsePagination */ - 'success': boolean; + 'sortBy'?: QueryVectorCollection200ResponsePaginationSortByEnum; /** * - * @type {V1GetMetricSeriesResponseData} - * @memberof V1GetMetricSeriesResponse + * @type {string} + * @memberof QueryVectorCollection200ResponsePagination */ - 'data': V1GetMetricSeriesResponseData; + 'sortOrder'?: QueryVectorCollection200ResponsePaginationSortOrderEnum; + /** + * + * @type {number} + * @memberof QueryVectorCollection200ResponsePagination + */ + 'limit'?: number; } -/** - * @type V1GetMetricSeriesResponseData - * @export - */ -export type V1GetMetricSeriesResponseData = Array | Array | { [key: string]: number; }; + +export const QueryVectorCollection200ResponsePaginationSortByEnum = { + CreatedAt: 'created_at', + DocumentId: 'document_id' +} as const; + +export type QueryVectorCollection200ResponsePaginationSortByEnum = typeof QueryVectorCollection200ResponsePaginationSortByEnum[keyof typeof QueryVectorCollection200ResponsePaginationSortByEnum]; +export const QueryVectorCollection200ResponsePaginationSortOrderEnum = { + Asc: 'asc', + Desc: 'desc' +} as const; + +export type QueryVectorCollection200ResponsePaginationSortOrderEnum = typeof QueryVectorCollection200ResponsePaginationSortOrderEnum[keyof typeof QueryVectorCollection200ResponsePaginationSortOrderEnum]; /** * * @export - * @interface V1GetMetricsResponse + * @interface QueryVectorCollection200ResponseResultsInner */ -export interface V1GetMetricsResponse { +export interface QueryVectorCollection200ResponseResultsInner { /** * - * @type {boolean} - * @memberof V1GetMetricsResponse + * @type {string} + * @memberof QueryVectorCollection200ResponseResultsInner */ - 'success': boolean; + 'documentId'?: string; + /** + * Document text content + * @type {string} + * @memberof QueryVectorCollection200ResponseResultsInner + */ + 'content'?: string; + /** + * Cosine similarity score (1.0 for metadata-only queries) + * @type {number} + * @memberof QueryVectorCollection200ResponseResultsInner + */ + 'similarity'?: number; /** * - * @type {V1GetMetricsResponseData} - * @memberof V1GetMetricsResponse + * @type {{ [key: string]: any; }} + * @memberof QueryVectorCollection200ResponseResultsInner */ - 'data': V1GetMetricsResponseData; + 'metadata'?: { [key: string]: any; }; + /** + * Vector embedding (only if includeEmbeddings=true) + * @type {Array} + * @memberof QueryVectorCollection200ResponseResultsInner + */ + 'embedding'?: Array; } -/** - * @type V1GetMetricsResponseData - * @export - */ -export type V1GetMetricsResponseData = { [key: string]: V1MetricDayStats; } | { [key: string]: V1MetricMinuteStats; } | { [key: string]: V1MetricMonthStats; }; - /** * * @export - * @interface V1GlobalMetaResponse + * @interface QueryVectorCollectionRequest */ -export interface V1GlobalMetaResponse { +export interface QueryVectorCollectionRequest { /** - * - * @type {V1GlobalMetaResponseGlobalMeta} - * @memberof V1GlobalMetaResponse + * Natural language search query (mutually exclusive with vector) + * @type {string} + * @memberof QueryVectorCollectionRequest */ - 'global_meta'?: V1GlobalMetaResponseGlobalMeta; + 'query'?: string; /** - * - * @type {number} - * @memberof V1GlobalMetaResponse + * Pre-computed embedding vector (mutually exclusive with query). Array length must match collection dimension. + * @type {Array} + * @memberof QueryVectorCollectionRequest */ - 'total_records'?: number; + 'vector'?: Array; /** - * + * Maximum number of results to return * @type {number} - * @memberof V1GlobalMetaResponse + * @memberof QueryVectorCollectionRequest */ - 'total_pages'?: number; + 'limit'?: number; /** - * + * Minimum similarity score (0-1, higher = more relevant) * @type {number} - * @memberof V1GlobalMetaResponse + * @memberof QueryVectorCollectionRequest */ - 'page'?: number; + 'threshold'?: number; /** - * - * @type {number} - * @memberof V1GlobalMetaResponse + * Include embedding vectors in response (for debugging) + * @type {boolean} + * @memberof QueryVectorCollectionRequest */ - 'page_size'?: number; + 'includeEmbeddings'?: boolean; /** * + * @type {QueryVectorCollectionRequestFilter} + * @memberof QueryVectorCollectionRequest + */ + 'filter'?: QueryVectorCollectionRequestFilter; + /** + * If true, skip semantic search and return all documents matching the filter. Requires filter. Supports cursor pagination. * @type {boolean} - * @memberof V1GlobalMetaResponse + * @memberof QueryVectorCollectionRequest */ - 'refine_search'?: boolean; + 'listByMetadata'?: boolean; + /** + * Pagination cursor for listByMetadata mode. Use nextCursor from previous response. Opaque format - do not construct manually. + * @type {string} + * @memberof QueryVectorCollectionRequest + */ + 'cursor'?: string; + /** + * Field to sort by in listByMetadata mode + * @type {string} + * @memberof QueryVectorCollectionRequest + */ + 'sortBy'?: QueryVectorCollectionRequestSortByEnum; + /** + * Sort direction in listByMetadata mode + * @type {string} + * @memberof QueryVectorCollectionRequest + */ + 'sortOrder'?: QueryVectorCollectionRequestSortOrderEnum; } + +export const QueryVectorCollectionRequestSortByEnum = { + CreatedAt: 'created_at', + DocumentId: 'document_id' +} as const; + +export type QueryVectorCollectionRequestSortByEnum = typeof QueryVectorCollectionRequestSortByEnum[keyof typeof QueryVectorCollectionRequestSortByEnum]; +export const QueryVectorCollectionRequestSortOrderEnum = { + Asc: 'asc', + Desc: 'desc' +} as const; + +export type QueryVectorCollectionRequestSortOrderEnum = typeof QueryVectorCollectionRequestSortOrderEnum[keyof typeof QueryVectorCollectionRequestSortOrderEnum]; + /** - * + * Filter results by metadata fields. Applied AFTER semantic search (or alone in listByMetadata mode). All conditions use AND logic. * @export - * @interface V1GlobalMetaResponseGlobalMeta + * @interface QueryVectorCollectionRequestFilter */ -export interface V1GlobalMetaResponseGlobalMeta { +export interface QueryVectorCollectionRequestFilter { /** - * - * @type {Array} - * @memberof V1GlobalMetaResponseGlobalMeta + * Exact match on metadata fields. Keys are metadata field names, values are expected values. + * @type {{ [key: string]: any; }} + * @memberof QueryVectorCollectionRequestFilter */ - 'records'?: Array; + 'exact'?: { [key: string]: any; }; + /** + * Array contains filter for array metadata fields (like tags). Returns documents where the metadata array contains ANY of the specified values. + * @type {{ [key: string]: Array; }} + * @memberof QueryVectorCollectionRequestFilter + */ + 'contains'?: { [key: string]: Array; }; } /** * * @export - * @interface V1Info + * @interface ScalingPolicy */ -export interface V1Info { +export interface ScalingPolicy { /** * * @type {string} - * @memberof V1Info + * @memberof ScalingPolicy */ - 'author_user'?: string; + 'metric'?: ScalingPolicyMetricEnum; /** * - * @type {string} - * @memberof V1Info + * @type {number} + * @memberof ScalingPolicy */ - 'author_name'?: string; + 'targetValue'?: number; /** * - * @type {string} - * @memberof V1Info + * @type {number} + * @memberof ScalingPolicy */ - 'author_email'?: string; + 'scaleInCooldownSeconds'?: number; /** * + * @type {number} + * @memberof ScalingPolicy + */ + 'scaleOutCooldownSeconds'?: number; +} + +export const ScalingPolicyMetricEnum = { + CpuUtilization: 'CPUUtilization', + MemoryUtilization: 'MemoryUtilization', + Rps: 'RPS' +} as const; + +export type ScalingPolicyMetricEnum = typeof ScalingPolicyMetricEnum[keyof typeof ScalingPolicyMetricEnum]; + +/** + * Spot instance strategy configuration for controlling cost vs reliability. Spot instances provide significant cost savings (~70%) but may be interrupted by AWS. Available for non-production environments. + * @export + * @interface SpotConfiguration + */ +export interface SpotConfiguration { + /** + * Spot instance strategy. \'off\' = On-Demand only (highest reliability, no savings). \'spot-only\' = 100% Spot instances (~70% savings, default for non-prod). \'mixed-safe\' = 50% Spot instances (~35% savings, requires multiple instances). \'mixed-aggressive\' = 80% Spot instances (~56% savings, requires multiple instances). * @type {string} - * @memberof V1Info + * @memberof SpotConfiguration */ - 'log'?: string; + 'strategy': SpotConfigurationStrategyEnum; +} + +export const SpotConfigurationStrategyEnum = { + Off: 'off', + SpotOnly: 'spot-only', + MixedSafe: 'mixed-safe', + MixedAggressive: 'mixed-aggressive' +} as const; + +export type SpotConfigurationStrategyEnum = typeof SpotConfigurationStrategyEnum[keyof typeof SpotConfigurationStrategyEnum]; + +/** + * + * @export + * @interface SubmitToolCallback200Response + */ +export interface SubmitToolCallback200Response { /** * - * @type {string} - * @memberof V1Info + * @type {boolean} + * @memberof SubmitToolCallback200Response */ - 'custom_1'?: string; + 'success'?: boolean; /** * * @type {string} - * @memberof V1Info + * @memberof SubmitToolCallback200Response */ - 'custom_2'?: string; + 'message'?: string; /** - * + * Echo of the callbackId for confirmation * @type {string} - * @memberof V1Info + * @memberof SubmitToolCallback200Response */ - 'source'?: string; + 'callbackId'?: string; } /** * * @export - * @interface V1Meta + * @interface SubmitToolCallbackRequest */ -export interface V1Meta { +export interface SubmitToolCallbackRequest { /** - * + * The callbackId from the waiting_callback status response * @type {string} - * @memberof V1Meta + * @memberof SubmitToolCallbackRequest */ - 'url'?: string; + 'callbackId': string; /** - * + * Results of client-executed tools + * @type {Array} + * @memberof SubmitToolCallbackRequest + */ + 'toolResults': Array; +} +/** + * + * @export + * @interface SubmitToolCallbackRequestToolResultsInner + */ +export interface SubmitToolCallbackRequestToolResultsInner { + /** + * The toolUseId from pendingTools * @type {string} - * @memberof V1Meta + * @memberof SubmitToolCallbackRequestToolResultsInner */ - 'type'?: string; + 'toolUseId': string; /** - * - * @type {number} - * @memberof V1Meta + * The result of executing the tool + * @type {object} + * @memberof SubmitToolCallbackRequestToolResultsInner */ - 'seq_num'?: number; + 'result': object; +} +/** + * + * @export + * @interface SyncOperation + */ +export interface SyncOperation { /** * - * @type {boolean} - * @memberof V1Meta + * @type {string} + * @memberof SyncOperation */ - 'published'?: boolean; + 'syncId'?: string; /** * - * @type {number} - * @memberof V1Meta + * @type {string} + * @memberof SyncOperation */ - 'published_revision'?: number; + 'syncType'?: string; /** * * @type {string} - * @memberof V1Meta + * @memberof SyncOperation */ - 'published_md5'?: string; + 'sourceEnvironment'?: string; /** * - * @type {number} - * @memberof V1Meta + * @type {string} + * @memberof SyncOperation */ - 'byte_length'?: number; + 'targetEnvironment'?: string; /** * - * @type {number} - * @memberof V1Meta + * @type {string} + * @memberof SyncOperation */ - 'revision_count'?: number; + 'status'?: string; /** * - * @type {number} - * @memberof V1Meta + * @type {string} + * @memberof SyncOperation */ - 'highest_revision_number'?: number; + 'createdAt'?: string; /** * - * @type {boolean} - * @memberof V1Meta + * @type {string} + * @memberof SyncOperation */ - 'deleted'?: boolean; + 'completedAt'?: string; +} +/** + * + * @export + * @interface SyncToEnvironmentRequest + */ +export interface SyncToEnvironmentRequest { /** * - * @type {number} - * @memberof V1Meta + * @type {string} + * @memberof SyncToEnvironmentRequest */ - 'deleted_timestamp'?: number; + 'sourceEnvironment'?: string; +} +/** + * + * @export + * @interface UpdateAIAgent200Response + */ +export interface UpdateAIAgent200Response { /** * - * @type {string} - * @memberof V1Meta + * @type {boolean} + * @memberof UpdateAIAgent200Response */ - 'md5'?: string; + 'success'?: boolean; /** * - * @type {number} - * @memberof V1Meta + * @type {object} + * @memberof UpdateAIAgent200Response */ - 'revision_number'?: number; + 'agent'?: object; /** * - * @type {number} - * @memberof V1Meta + * @type {string} + * @memberof UpdateAIAgent200Response */ - 'date_timestamp'?: number; + 'message'?: string; } /** * * @export - * @interface V1MetricDayStats + * @interface UpdateAIAgentRequest */ -export interface V1MetricDayStats { +export interface UpdateAIAgentRequest { /** * - * @type {number} - * @memberof V1MetricDayStats + * @type {string} + * @memberof UpdateAIAgentRequest */ - 'total': number; + 'name'?: string; /** * - * @type {number} - * @memberof V1MetricDayStats + * @type {string} + * @memberof UpdateAIAgentRequest */ - 'day_total': number; + 'description'?: string; /** * - * @type {{ [key: string]: number; }} - * @memberof V1MetricDayStats + * @type {string} + * @memberof UpdateAIAgentRequest */ - 'day_series': { [key: string]: number; }; + 'group'?: string; /** * - * @type {number} - * @memberof V1MetricDayStats + * @type {string} + * @memberof UpdateAIAgentRequest */ - 'day_average': number; -} -/** - * - * @export - * @interface V1MetricMinuteStats - */ -export interface V1MetricMinuteStats { + 'systemPrompt'?: string; /** * * @type {number} - * @memberof V1MetricMinuteStats + * @memberof UpdateAIAgentRequest */ - 'total': number; + 'temperature'?: number; + /** + * + * @type {string} + * @memberof UpdateAIAgentRequest + */ + 'modelId'?: string; /** * * @type {number} - * @memberof V1MetricMinuteStats + * @memberof UpdateAIAgentRequest */ - 'minute_total': number; + 'maxTokens'?: number; /** * - * @type {{ [key: string]: number; }} - * @memberof V1MetricMinuteStats + * @type {Array} + * @memberof UpdateAIAgentRequest */ - 'minute_series': { [key: string]: number; }; + 'allowedTools'?: Array; /** * - * @type {number} - * @memberof V1MetricMinuteStats + * @type {Array} + * @memberof UpdateAIAgentRequest */ - 'minute_average': number; + 'allowedCollections'?: Array; } /** * * @export - * @interface V1MetricMonthStats + * @interface UpdateAISession200Response */ -export interface V1MetricMonthStats { +export interface UpdateAISession200Response { /** * - * @type {number} - * @memberof V1MetricMonthStats + * @type {string} + * @memberof UpdateAISession200Response */ - 'total': number; + 'sessionId'?: string; /** * - * @type {number} - * @memberof V1MetricMonthStats + * @type {string} + * @memberof UpdateAISession200Response */ - 'month_total': number; + 'status'?: string; /** * - * @type {{ [key: string]: number; }} - * @memberof V1MetricMonthStats + * @type {number} + * @memberof UpdateAISession200Response */ - 'month_series': { [key: string]: number; }; + 'totalMessages'?: number; /** * * @type {number} - * @memberof V1MetricMonthStats + * @memberof UpdateAISession200Response */ - 'month_average': number; + 'totalTokens'?: number; + /** + * + * @type {string} + * @memberof UpdateAISession200Response + */ + 'updatedAt'?: string; } /** * * @export - * @interface V1PingResponse + * @interface UpdateAISessionRequest */ -export interface V1PingResponse { +export interface UpdateAISessionRequest { /** - * Configuration associated with a project - * @type {object} - * @memberof V1PingResponse + * New messages to append to conversation + * @type {Array} + * @memberof UpdateAISessionRequest */ - 'config'?: object; + 'newMessages'?: Array; /** - * The project machine name + * Tokens consumed in this turn + * @type {number} + * @memberof UpdateAISessionRequest + */ + 'tokensUsed'?: number; + /** + * Update session status * @type {string} - * @memberof V1PingResponse + * @memberof UpdateAISessionRequest */ - 'project'?: string; + 'status'?: UpdateAISessionRequestStatusEnum; + /** + * Update custom metadata + * @type {object} + * @memberof UpdateAISessionRequest + */ + 'metadata'?: object; } + +export const UpdateAISessionRequestStatusEnum = { + Active: 'active', + Completed: 'completed' +} as const; + +export type UpdateAISessionRequestStatusEnum = typeof UpdateAISessionRequestStatusEnum[keyof typeof UpdateAISessionRequestStatusEnum]; + /** * * @export - * @interface V1ProxyItem + * @interface UpdateAISessionRequestNewMessagesInner */ -export interface V1ProxyItem { +export interface UpdateAISessionRequestNewMessagesInner { /** * * @type {string} - * @memberof V1ProxyItem + * @memberof UpdateAISessionRequestNewMessagesInner */ - 'url': string; + 'role'?: UpdateAISessionRequestNewMessagesInnerRoleEnum; /** * * @type {string} - * @memberof V1ProxyItem + * @memberof UpdateAISessionRequestNewMessagesInner */ - 'proxy_url': string; + 'content'?: string; +} + +export const UpdateAISessionRequestNewMessagesInnerRoleEnum = { + User: 'user', + Assistant: 'assistant' +} as const; + +export type UpdateAISessionRequestNewMessagesInnerRoleEnum = typeof UpdateAISessionRequestNewMessagesInnerRoleEnum[keyof typeof UpdateAISessionRequestNewMessagesInnerRoleEnum]; + +/** + * + * @export + * @interface UpdateCronJobRequest + */ +export interface UpdateCronJobRequest { /** * * @type {string} - * @memberof V1ProxyItem + * @memberof UpdateCronJobRequest */ - 'date_timestamp': string; + 'description'?: string | null; /** * * @type {string} - * @memberof V1ProxyItem + * @memberof UpdateCronJobRequest */ - 'published': string; + 'scheduleExpression'?: string | null; /** * - * @type {number} - * @memberof V1ProxyItem + * @type {Array} + * @memberof UpdateCronJobRequest */ - 'revision_count': number; + 'command'?: Array | null; + /** + * + * @type {string} + * @memberof UpdateCronJobRequest + */ + 'targetContainerName'?: string | null; + /** + * + * @type {boolean} + * @memberof UpdateCronJobRequest + */ + 'isEnabled'?: boolean | null; } /** * * @export - * @interface V1ProxyListResponse + * @interface UpdateEnvironmentRequest */ -export interface V1ProxyListResponse { +export interface UpdateEnvironmentRequest { /** * - * @type {number} - * @memberof V1ProxyListResponse + * @type {Compose} + * @memberof UpdateEnvironmentRequest */ - 'draw': number; + 'composeDefinition': Compose; /** - * + * Optional. Minimum number of tasks for auto-scaling. If provided at root level, will be merged into composeDefinition. * @type {number} - * @memberof V1ProxyListResponse + * @memberof UpdateEnvironmentRequest */ - 'iTotalRecords': number; + 'minCapacity'?: number | null; /** - * + * Optional. Maximum number of tasks for auto-scaling. If provided at root level, will be merged into composeDefinition. * @type {number} - * @memberof V1ProxyListResponse - */ - 'iTotalDisplayRecords': number; - /** - * - * @type {Array} - * @memberof V1ProxyListResponse + * @memberof UpdateEnvironmentRequest */ - 'aaData': Array; + 'maxCapacity'?: number | null; } /** * * @export - * @interface V1RedirectItem + * @interface UpdateEnvironmentStateRequest */ -export interface V1RedirectItem { +export interface UpdateEnvironmentStateRequest { /** - * * @OA\\Schema( schema=\"V1RedirectItem\", type=\"object\", required={\"url\",\"redirect_url\",\"redirect_http_code\",\"date_timestamp\",\"published\",\"revision_count\"}, + * * @type {string} - * @memberof V1RedirectItem + * @memberof UpdateEnvironmentStateRequest */ - 'url': string; + 'action'?: string; /** * * @type {string} - * @memberof V1RedirectItem + * @memberof UpdateEnvironmentStateRequest */ - 'redirect_url': string; + 'imageTag'?: string; +} +/** + * + * @export + * @interface UpdateEnvironmentVariableRequest + */ +export interface UpdateEnvironmentVariableRequest { /** * - * @type {number} - * @memberof V1RedirectItem + * @type {string} + * @memberof UpdateEnvironmentVariableRequest */ - 'redirect_http_code': number; + 'value'?: string; +} +/** + * + * @export + * @interface UpdateTask200Response + */ +export interface UpdateTask200Response { /** * * @type {string} - * @memberof V1RedirectItem + * @memberof UpdateTask200Response */ - 'date_timestamp': string; + 'taskId'?: string; /** * * @type {string} - * @memberof V1RedirectItem + * @memberof UpdateTask200Response */ - 'published': string; + 'status'?: string; /** * * @type {number} - * @memberof V1RedirectItem + * @memberof UpdateTask200Response */ - 'revision_count': number; + 'updatedAt'?: number; } /** * * @export - * @interface V1RedirectListResponse + * @interface UpdateTaskRequest */ -export interface V1RedirectListResponse { +export interface UpdateTaskRequest { /** * - * @type {number} - * @memberof V1RedirectListResponse + * @type {string} + * @memberof UpdateTaskRequest */ - 'draw': number; + 'title'?: string; /** * - * @type {number} - * @memberof V1RedirectListResponse + * @type {string} + * @memberof UpdateTaskRequest */ - 'iTotalRecords': number; + 'description'?: string; /** - * - * @type {number} - * @memberof V1RedirectListResponse + * Move task to different list or remove from list (set null) + * @type {string} + * @memberof UpdateTaskRequest */ - 'iTotalDisplayRecords': number; + 'taskListId'?: string | null; /** - * - * @type {Array} - * @memberof V1RedirectListResponse + * Task status (triggers automatic timestamp updates) + * @type {string} + * @memberof UpdateTaskRequest */ - 'aaData': Array; -} -/** - * - * @export - * @interface V1RedirectRequest - */ -export interface V1RedirectRequest { + 'status'?: UpdateTaskRequestStatusEnum; /** - * The redirect from URL + * Reassign task to different agent * @type {string} - * @memberof V1RedirectRequest + * @memberof UpdateTaskRequest */ - 'url': string; + 'assignedAgentId'?: string | null; /** - * The destination URL - * @type {string} - * @memberof V1RedirectRequest + * Update task dependencies + * @type {Array} + * @memberof UpdateTaskRequest */ - 'redirect_url': string; + 'dependsOn'?: Array; /** - * The HTTP code to send with the redirect + * Update task metadata (replaces entire metadata object) + * @type {object} + * @memberof UpdateTaskRequest + */ + 'metadata'?: object; + /** + * Progress from 0.0 to 1.0 * @type {number} - * @memberof V1RedirectRequest + * @memberof UpdateTaskRequest */ - 'redirect_http_code': number; + 'progress'?: number; /** - * If the redirect is published - * @type {boolean} - * @memberof V1RedirectRequest + * Human-readable progress message + * @type {string} + * @memberof UpdateTaskRequest */ - 'published': boolean; + 'progressMessage'?: string; /** - * User defined timestamp for this content item + * Task result data (set when completing task) + * @type {object} + * @memberof UpdateTaskRequest + */ + 'result'?: object; + /** + * Error message (set when task fails) + * @type {string} + * @memberof UpdateTaskRequest + */ + 'error'?: string | null; + /** + * Update retry count * @type {number} - * @memberof V1RedirectRequest + * @memberof UpdateTaskRequest */ - 'content_timestamp'?: number; + 'retryCount'?: number; /** - * - * @type {V1Info} - * @memberof V1RedirectRequest + * Update maximum retry attempts + * @type {number} + * @memberof UpdateTaskRequest */ - 'info'?: V1Info; + 'maxRetries'?: number; /** - * - * @type {Array} - * @memberof V1RedirectRequest + * Reason task is blocked (set when status is blocked) + * @type {string} + * @memberof UpdateTaskRequest */ - 'transitions'?: Array; + 'blockedReason'?: string | null; + /** + * Task IDs that are blocking this task + * @type {Array} + * @memberof UpdateTaskRequest + */ + 'blockedByTaskIds'?: Array | null; } + +export const UpdateTaskRequestStatusEnum = { + Pending: 'pending', + InProgress: 'in_progress', + Completed: 'completed', + Failed: 'failed', + Cancelled: 'cancelled', + Blocked: 'blocked' +} as const; + +export type UpdateTaskRequestStatusEnum = typeof UpdateTaskRequestStatusEnum[keyof typeof UpdateTaskRequestStatusEnum]; + /** * * @export - * @interface V1RedirectResponse + * @interface UploadFile201Response */ -export interface V1RedirectResponse { +export interface UploadFile201Response { /** * * @type {string} - * @memberof V1RedirectResponse + * @memberof UploadFile201Response */ - 'md5'?: string; + 'fileId'?: string; /** - * + * S3 URI (direct upload only) * @type {string} - * @memberof V1RedirectResponse + * @memberof UploadFile201Response */ - 'type'?: string; + 's3Uri'?: string; /** - * - * @type {number} - * @memberof V1RedirectResponse + * Presigned download URL (direct upload only) + * @type {string} + * @memberof UploadFile201Response */ - 'byte_length'?: number; + 'url'?: string; /** - * + * Presigned PUT URL (presigned upload only) + * @type {string} + * @memberof UploadFile201Response + */ + 'uploadUrl'?: string; + /** + * S3 object key (presigned upload only) + * @type {string} + * @memberof UploadFile201Response + */ + 's3Key'?: string; + /** + * URL expiry in seconds (presigned upload only) * @type {number} - * @memberof V1RedirectResponse + * @memberof UploadFile201Response */ - 'revision_number'?: number; + 'expiresIn'?: number; /** * - * @type {number} - * @memberof V1RedirectResponse + * @type {string} + * @memberof UploadFile201Response */ - 'date_timestamp'?: number; + 'filename'?: string; /** * - * @type {boolean} - * @memberof V1RedirectResponse + * @type {string} + * @memberof UploadFile201Response */ - 'deleted'?: boolean; + 'contentType'?: string; /** * * @type {number} - * @memberof V1RedirectResponse + * @memberof UploadFile201Response */ - 'deleted_timestamp'?: number; + 'size'?: number; /** * - * @type {Array} - * @memberof V1RedirectResponse + * @type {object} + * @memberof UploadFile201Response */ - 'transitions'?: Array; + 'metadata'?: object; /** * - * @type {V1Info} - * @memberof V1RedirectResponse + * @type {string} + * @memberof UploadFile201Response */ - 'info'?: V1Info; + 'createdAt'?: string; +} +/** + * + * @export + * @interface UploadFileRequest + */ +export interface UploadFileRequest { /** - * The HTTP code + * Base64-encoded file content (for direct upload). Required unless using requestUploadUrl. + * @type {string} + * @memberof UploadFileRequest + */ + 'content'?: string; + /** + * Set to true to get a presigned S3 upload URL instead of uploading directly. + * @type {boolean} + * @memberof UploadFileRequest + */ + 'requestUploadUrl'?: boolean; + /** + * File size in bytes. Optional but recommended for presigned uploads. * @type {number} - * @memberof V1RedirectResponse + * @memberof UploadFileRequest */ - 'redirect_http_code'?: number; + 'size'?: number; /** - * + * Original filename * @type {string} - * @memberof V1RedirectResponse + * @memberof UploadFileRequest */ - 'highest_revision_number'?: string; + 'filename'?: string; /** - * The redirect from URL + * MIME type of the file * @type {string} - * @memberof V1RedirectResponse + * @memberof UploadFileRequest */ - 'url'?: string; + 'contentType': string; + /** + * Custom metadata for filtering. Any fields allowed. + * @type {{ [key: string]: any; }} + * @memberof UploadFileRequest + */ + 'metadata'?: { [key: string]: any; }; } /** * * @export - * @interface V1Revision + * @interface UploadVectorDocuments200Response */ -export interface V1Revision { +export interface UploadVectorDocuments200Response { /** * - * @type {string} - * @memberof V1Revision + * @type {boolean} + * @memberof UploadVectorDocuments200Response */ - 'md5'?: string; + 'success'?: boolean; /** * - * @type {string} - * @memberof V1Revision + * @type {Array} + * @memberof UploadVectorDocuments200Response */ - 'type'?: string; + 'documentIds'?: Array; /** * * @type {number} - * @memberof V1Revision + * @memberof UploadVectorDocuments200Response */ - 'byte_length'?: number; + 'chunksCreated'?: number; /** * - * @type {number} - * @memberof V1Revision + * @type {string} + * @memberof UploadVectorDocuments200Response */ - 'revision_number'?: number; + 'message'?: string; +} +/** + * + * @export + * @interface UploadVectorDocumentsRequest + */ +export interface UploadVectorDocumentsRequest { /** * - * @type {number} - * @memberof V1Revision + * @type {Array} + * @memberof UploadVectorDocumentsRequest */ - 'date_timestamp'?: number; + 'documents': Array; +} +/** + * + * @export + * @interface UploadVectorDocumentsRequestDocumentsInner + */ +export interface UploadVectorDocumentsRequestDocumentsInner { + /** + * Document text content + * @type {string} + * @memberof UploadVectorDocumentsRequestDocumentsInner + */ + 'content': string; /** * - * @type {boolean} - * @memberof V1Revision + * @type {UploadVectorDocumentsRequestDocumentsInnerMetadata} + * @memberof UploadVectorDocumentsRequestDocumentsInner */ - 'deleted'?: boolean; + 'metadata'?: UploadVectorDocumentsRequestDocumentsInnerMetadata; +} +/** + * + * @export + * @interface UploadVectorDocumentsRequestDocumentsInnerMetadata + */ +export interface UploadVectorDocumentsRequestDocumentsInnerMetadata { /** * - * @type {number} - * @memberof V1Revision + * @type {string} + * @memberof UploadVectorDocumentsRequestDocumentsInnerMetadata */ - 'deleted_timestamp'?: number; + 'title'?: string; /** * - * @type {Array} - * @memberof V1Revision + * @type {string} + * @memberof UploadVectorDocumentsRequestDocumentsInnerMetadata */ - 'transitions'?: Array; + 'source_url'?: string; /** * - * @type {V1Info} - * @memberof V1Revision + * @type {string} + * @memberof UploadVectorDocumentsRequestDocumentsInnerMetadata */ - 'info'?: V1Info; + 'section'?: string; + /** + * + * @type {Array} + * @memberof UploadVectorDocumentsRequestDocumentsInnerMetadata + */ + 'tags'?: Array; } /** * * @export - * @interface V1RevisionsResponse + * @interface V1ContentItem */ -export interface V1RevisionsResponse { +export interface V1ContentItem { /** - * Revision objects, mapped by revision number - * @type {object} - * @memberof V1RevisionsResponse + * + * @type {string} + * @memberof V1ContentItem */ - 'revisions'?: object; + 'url': string; /** - * The url of the asset + * * @type {string} - * @memberof V1RevisionsResponse + * @memberof V1ContentItem */ - 'url'?: string; + 'date_timestamp': string; /** - * Published state of the asset - * @type {boolean} - * @memberof V1RevisionsResponse + * + * @type {string} + * @memberof V1ContentItem */ - 'published'?: boolean; + 'published': string; /** - * Published revision number of the asset + * * @type {number} - * @memberof V1RevisionsResponse + * @memberof V1ContentItem */ - 'published_revision'?: number; + 'revision_count': number; /** * - * @type {Array} - * @memberof V1RevisionsResponse + * @type {string} + * @memberof V1ContentItem */ - 'transitions'?: Array; + 'desc'?: string; /** - * Last revision number + * + * @type {string} + * @memberof V1ContentItem + */ + 'uuid'?: string; +} +/** + * + * @export + * @interface V1ContentListResponse + */ +export interface V1ContentListResponse { + /** + * * @type {number} - * @memberof V1RevisionsResponse + * @memberof V1ContentListResponse */ - 'highest_revision_number'?: number; + 'draw': number; /** - * The transition number, if set + * * @type {number} - * @memberof V1RevisionsResponse + * @memberof V1ContentListResponse */ - 'transition_revision'?: number; + 'iTotalRecords': number; + /** + * + * @type {number} + * @memberof V1ContentListResponse + */ + 'iTotalDisplayRecords': number; + /** + * + * @type {Array} + * @memberof V1ContentListResponse + */ + 'aaData': Array; } /** - * Generic search hit; fields vary by index + * * @export - * @interface V1SearchHit + * @interface V1ContentRequest */ -export interface V1SearchHit { +export interface V1ContentRequest { /** - * The controller for managing Search integration. + * The content URL. Must be relative and start with a leading \'/\' * @type {string} - * @memberof V1SearchHit + * @memberof V1ContentRequest */ - 'title'?: string; + 'url': string; /** - * + * The content (e.g. html) * @type {string} - * @memberof V1SearchHit + * @memberof V1ContentRequest */ - 'url'?: string; + 'content': string; /** - * - * @type {string} - * @memberof V1SearchHit + * If the asset should be published + * @type {boolean} + * @memberof V1ContentRequest */ - 'summary'?: string; + 'published': boolean; /** - * - * @type {string} - * @memberof V1SearchHit + * User defined timestamp for this content item + * @type {number} + * @memberof V1ContentRequest */ - 'content'?: string; + 'content_timestamp'?: number; /** * - * @type {string} - * @memberof V1SearchHit + * @type {V1Info} + * @memberof V1ContentRequest */ - 'image'?: string; + 'info'?: V1Info; /** * - * @type {string} - * @memberof V1SearchHit + * @type {Array} + * @memberof V1ContentRequest */ - 'objectID'?: string; + 'transitions'?: Array; } /** * * @export - * @interface V1SearchItemsResponse + * @interface V1DeleteResponse */ -export interface V1SearchItemsResponse { +export interface V1DeleteResponse { /** - * - * @type {Array} - * @memberof V1SearchItemsResponse + * Indicates at least one error occurred + * @type {boolean} + * @memberof V1DeleteResponse */ - 'hits'?: Array; + 'error'?: boolean; + /** + * List of any errors + * @type {Array} + * @memberof V1DeleteResponse + */ + 'errors'?: Array; /** * - * @type {number} - * @memberof V1SearchItemsResponse + * @type {Array} + * @memberof V1DeleteResponse */ - 'nbPages'?: number; + 'meta'?: Array; } /** * * @export - * @interface V1SearchMutationResponse + * @interface V1Error */ -export interface V1SearchMutationResponse { +export interface V1Error { /** * * @type {boolean} - * @memberof V1SearchMutationResponse + * @memberof V1Error */ - 'success': boolean; + 'error': boolean; /** * * @type {string} - * @memberof V1SearchMutationResponse + * @memberof V1Error */ 'message': string; - /** - * - * @type {object} - * @memberof V1SearchMutationResponse - */ - 'result'?: object; } /** * * @export - * @interface V1SearchRecord + * @interface V1FormSubmissionItem */ -export interface V1SearchRecord { +export interface V1FormSubmissionItem { /** * * @type {string} - * @memberof V1SearchRecord + * @memberof V1FormSubmissionItem */ - 'title'?: string; + 'uuid': string; /** * * @type {string} - * @memberof V1SearchRecord + * @memberof V1FormSubmissionItem */ - 'content'?: string; + 'country_ip': string; /** * * @type {string} - * @memberof V1SearchRecord + * @memberof V1FormSubmissionItem */ - 'url'?: string; + 'spam_score': string; /** * * @type {string} - * @memberof V1SearchRecord + * @memberof V1FormSubmissionItem */ - 'summary'?: string; -} -/** - * - * @export - * @interface V1SearchResponse - */ -export interface V1SearchResponse { + 'data': string; /** - * Search configuration for the index - * @type {object} - * @memberof V1SearchResponse + * + * @type {number} + * @memberof V1FormSubmissionItem */ - 'settings'?: object; + 'file_count': number; /** - * Detail related to index size and status - * @type {object} - * @memberof V1SearchResponse + * + * @type {string} + * @memberof V1FormSubmissionItem */ - 'index'?: object; + 'date_submitted': string; } /** * * @export - * @interface V1SeriesPointDay + * @interface V1FormSubmissionListResponse */ -export interface V1SeriesPointDay { +export interface V1FormSubmissionListResponse { /** * - * @type {string} - * @memberof V1SeriesPointDay + * @type {number} + * @memberof V1FormSubmissionListResponse */ - 'x': string; + 'draw': number; /** * * @type {number} - * @memberof V1SeriesPointDay + * @memberof V1FormSubmissionListResponse */ - 'y': number; -} -/** - * - * @export - * @interface V1SeriesPointMonth - */ -export interface V1SeriesPointMonth { + 'iTotalRecords': number; /** * - * @type {string} - * @memberof V1SeriesPointMonth + * @type {number} + * @memberof V1FormSubmissionListResponse */ - 'x': string; + 'iTotalDisplayRecords': number; /** * - * @type {number} - * @memberof V1SeriesPointMonth + * @type {Array} + * @memberof V1FormSubmissionListResponse */ - 'y': number; + 'aaData': Array; } /** * * @export - * @interface V1Transition + * @interface V1GetMetricSeriesResponse */ -export interface V1Transition { +export interface V1GetMetricSeriesResponse { /** * - * @type {string} - * @memberof V1Transition + * @type {boolean} + * @memberof V1GetMetricSeriesResponse */ - 'state'?: V1TransitionStateEnum; + 'success': boolean; /** * - * @type {number} - * @memberof V1Transition + * @type {V1GetMetricSeriesResponseData} + * @memberof V1GetMetricSeriesResponse */ - 'date_timestamp'?: number; + 'data': V1GetMetricSeriesResponseData; } - -export const V1TransitionStateEnum = { - Published: 'published', - Unpublished: 'unpublished' -} as const; - -export type V1TransitionStateEnum = typeof V1TransitionStateEnum[keyof typeof V1TransitionStateEnum]; +/** + * @type V1GetMetricSeriesResponseData + * @export + */ +export type V1GetMetricSeriesResponseData = Array | Array | { [key: string]: number; }; /** * * @export - * @interface V1UploadResponse + * @interface V1GetMetricsResponse */ -export interface V1UploadResponse { +export interface V1GetMetricsResponse { /** * * @type {boolean} - * @memberof V1UploadResponse + * @memberof V1GetMetricsResponse */ 'success': boolean; /** * - * @type {string} - * @memberof V1UploadResponse + * @type {V1GetMetricsResponseData} + * @memberof V1GetMetricsResponse */ - 'url': string; + 'data': V1GetMetricsResponseData; } /** - * + * @type V1GetMetricsResponseData * @export - * @interface V1UrlMetaRequest */ -export interface V1UrlMetaRequest { - /** - * - * @type {Array} - * @memberof V1UrlMetaRequest - */ - 'Quant-Url': Array; -} +export type V1GetMetricsResponseData = { [key: string]: V1MetricDayStats; } | { [key: string]: V1MetricMinuteStats; } | { [key: string]: V1MetricMonthStats; }; + /** * * @export - * @interface V1UrlMetaResponse + * @interface V1GlobalMetaResponse */ -export interface V1UrlMetaResponse { +export interface V1GlobalMetaResponse { /** * * @type {V1GlobalMetaResponseGlobalMeta} - * @memberof V1UrlMetaResponse + * @memberof V1GlobalMetaResponse */ 'global_meta'?: V1GlobalMetaResponseGlobalMeta; -} -/** - * - * @export - * @interface V1WafLogItem - */ -export interface V1WafLogItem { /** * - * @type {string} - * @memberof V1WafLogItem + * @type {number} + * @memberof V1GlobalMetaResponse */ - 'timestamp': string; + 'total_records'?: number; /** * - * @type {string} - * @memberof V1WafLogItem + * @type {number} + * @memberof V1GlobalMetaResponse */ - 'ip_address': string; + 'total_pages'?: number; /** * - * @type {string} - * @memberof V1WafLogItem + * @type {number} + * @memberof V1GlobalMetaResponse */ - 'location': string; + 'page'?: number; /** * - * @type {string} - * @memberof V1WafLogItem + * @type {number} + * @memberof V1GlobalMetaResponse */ - 'asn': string; + 'page_size'?: number; + /** + * + * @type {boolean} + * @memberof V1GlobalMetaResponse + */ + 'refine_search'?: boolean; +} +/** + * + * @export + * @interface V1GlobalMetaResponseGlobalMeta + */ +export interface V1GlobalMetaResponseGlobalMeta { + /** + * + * @type {Array} + * @memberof V1GlobalMetaResponseGlobalMeta + */ + 'records'?: Array; +} +/** + * + * @export + * @interface V1Info + */ +export interface V1Info { /** * * @type {string} - * @memberof V1WafLogItem + * @memberof V1Info */ - 'type': string; + 'author_user'?: string; /** * * @type {string} - * @memberof V1WafLogItem + * @memberof V1Info */ - 'mode': string; + 'author_name'?: string; /** * * @type {string} - * @memberof V1WafLogItem + * @memberof V1Info */ - 'rule_id': string; + 'author_email'?: string; /** * * @type {string} - * @memberof V1WafLogItem + * @memberof V1Info */ - 'domain': string; + 'log'?: string; /** * * @type {string} - * @memberof V1WafLogItem + * @memberof V1Info */ - 'url': string; + 'custom_1'?: string; /** * * @type {string} - * @memberof V1WafLogItem + * @memberof V1Info */ - 'method': string; + 'custom_2'?: string; /** * * @type {string} - * @memberof V1WafLogItem + * @memberof V1Info */ - 'user_agent': string; + 'source'?: string; } /** * * @export - * @interface V1WafLogListResponse + * @interface V1Meta */ -export interface V1WafLogListResponse { +export interface V1Meta { /** * - * @type {number} - * @memberof V1WafLogListResponse + * @type {string} + * @memberof V1Meta */ - 'draw': number; + 'url'?: string; /** * - * @type {number} - * @memberof V1WafLogListResponse + * @type {string} + * @memberof V1Meta */ - 'iTotalRecords': number; + 'type'?: string; /** * * @type {number} - * @memberof V1WafLogListResponse + * @memberof V1Meta */ - 'iTotalDisplayRecords': number; + 'seq_num'?: number; /** * - * @type {Array} - * @memberof V1WafLogListResponse + * @type {boolean} + * @memberof V1Meta */ - 'aaData': Array; -} -/** - * - * @export - * @interface V2Crawler - */ -export interface V2Crawler { + 'published'?: boolean; /** - * Crawler ID + * * @type {number} - * @memberof V2Crawler + * @memberof V1Meta */ - 'id': number; + 'published_revision'?: number; /** - * Crawler name + * * @type {string} - * @memberof V2Crawler + * @memberof V1Meta */ - 'name'?: string; + 'published_md5'?: string; /** - * Project ID + * * @type {number} - * @memberof V2Crawler + * @memberof V1Meta */ - 'project_id': number; + 'byte_length'?: number; /** - * Crawler UUID - * @type {string} - * @memberof V2Crawler + * + * @type {number} + * @memberof V1Meta */ - 'uuid': string; + 'revision_count'?: number; /** - * Crawler configuration (YAML) - * @type {string} - * @memberof V2Crawler - */ - 'config': string; - /** - * Crawler domain - * @type {string} - * @memberof V2Crawler - */ - 'domain': string; - /** - * Domain verification status + * * @type {number} - * @memberof V2Crawler + * @memberof V1Meta */ - 'domain_verified'?: number; + 'highest_revision_number'?: number; /** - * URLs list (YAML) - * @type {string} - * @memberof V2Crawler + * + * @type {boolean} + * @memberof V1Meta */ - 'urls_list'?: string; + 'deleted'?: boolean; /** - * Webhook URL for notifications - * @type {string} - * @memberof V2Crawler + * + * @type {number} + * @memberof V1Meta */ - 'webhook_url'?: string; + 'deleted_timestamp'?: number; /** - * Authorization header for webhook + * * @type {string} - * @memberof V2Crawler + * @memberof V1Meta */ - 'webhook_auth_header'?: string; + 'md5'?: string; /** - * Extra variables for webhook - * @type {string} - * @memberof V2Crawler + * + * @type {number} + * @memberof V1Meta */ - 'webhook_extra_vars'?: string; + 'revision_number'?: number; /** - * Browser mode enabled - * @type {boolean} - * @memberof V2Crawler + * + * @type {number} + * @memberof V1Meta */ - 'browser_mode'?: boolean; + 'date_timestamp'?: number; +} +/** + * + * @export + * @interface V1MetricDayStats + */ +export interface V1MetricDayStats { /** - * Number of concurrent workers + * * @type {number} - * @memberof V2Crawler + * @memberof V1MetricDayStats */ - 'workers'?: number; + 'total': number; /** - * Delay between requests in seconds + * * @type {number} - * @memberof V2Crawler + * @memberof V1MetricDayStats */ - 'delay'?: number; + 'day_total': number; /** - * Maximum crawl depth - * @type {number} - * @memberof V2Crawler + * + * @type {{ [key: string]: number; }} + * @memberof V1MetricDayStats */ - 'depth'?: number; + 'day_series': { [key: string]: number; }; /** - * Maximum total requests + * * @type {number} - * @memberof V2Crawler + * @memberof V1MetricDayStats */ - 'max_hits'?: number; + 'day_average': number; +} +/** + * + * @export + * @interface V1MetricMinuteStats + */ +export interface V1MetricMinuteStats { /** - * Maximum HTML pages + * * @type {number} - * @memberof V2Crawler + * @memberof V1MetricMinuteStats */ - 'max_html'?: number; + 'total': number; /** - * HTTP status codes for content capture - * @type {Array} - * @memberof V2Crawler + * + * @type {number} + * @memberof V1MetricMinuteStats */ - 'status_ok'?: Array; + 'minute_total': number; /** - * Custom user agent - * @type {string} - * @memberof V2Crawler + * + * @type {{ [key: string]: number; }} + * @memberof V1MetricMinuteStats */ - 'user_agent'?: string; + 'minute_series': { [key: string]: number; }; /** - * Maximum errors before stopping + * * @type {number} - * @memberof V2Crawler + * @memberof V1MetricMinuteStats */ - 'max_errors'?: number; + 'minute_average': number; +} +/** + * + * @export + * @interface V1MetricMonthStats + */ +export interface V1MetricMonthStats { /** - * Starting URLs - * @type {Array} - * @memberof V2Crawler + * + * @type {number} + * @memberof V1MetricMonthStats */ - 'start_urls'?: Array; + 'total': number; /** - * URLs list - * @type {Array} - * @memberof V2Crawler + * + * @type {number} + * @memberof V1MetricMonthStats */ - 'urls'?: Array; + 'month_total': number; /** - * Custom headers - * @type {{ [key: string]: string; }} - * @memberof V2Crawler + * + * @type {{ [key: string]: number; }} + * @memberof V1MetricMonthStats */ - 'headers'?: { [key: string]: string; }; + 'month_series': { [key: string]: number; }; /** - * URL patterns to exclude - * @type {Array} - * @memberof V2Crawler + * + * @type {number} + * @memberof V1MetricMonthStats */ - 'exclude'?: Array; + 'month_average': number; +} +/** + * + * @export + * @interface V1PingResponse + */ +export interface V1PingResponse { /** - * URL patterns to include - * @type {Array} - * @memberof V2Crawler + * Configuration associated with a project + * @type {object} + * @memberof V1PingResponse */ - 'include'?: Array; + 'config'?: object; /** - * Sitemap configuration - * @type {Array} - * @memberof V2Crawler + * The project machine name + * @type {string} + * @memberof V1PingResponse */ - 'sitemap'?: Array; + 'project'?: string; +} +/** + * + * @export + * @interface V1ProxyItem + */ +export interface V1ProxyItem { /** - * Allowed domains - * @type {Array} - * @memberof V2Crawler + * + * @type {string} + * @memberof V1ProxyItem */ - 'allowed_domains'?: Array; + 'url': string; /** * - * @type {V2CrawlerAssets} - * @memberof V2Crawler + * @type {string} + * @memberof V1ProxyItem */ - 'assets'?: V2CrawlerAssets; + 'proxy_url': string; /** - * Creation timestamp + * * @type {string} - * @memberof V2Crawler + * @memberof V1ProxyItem */ - 'created_at'?: string; + 'date_timestamp': string; /** - * Last update timestamp + * * @type {string} - * @memberof V2Crawler + * @memberof V1ProxyItem */ - 'updated_at'?: string; + 'published': string; /** - * Deletion timestamp - * @type {string} - * @memberof V2Crawler + * + * @type {number} + * @memberof V1ProxyItem */ - 'deleted_at'?: string | null; + 'revision_count': number; } /** - * Asset harvesting configuration + * * @export - * @interface V2CrawlerAssets + * @interface V1ProxyListResponse */ -export interface V2CrawlerAssets { +export interface V1ProxyListResponse { /** * - * @type {V2CrawlerAssetsNetworkIntercept} - * @memberof V2CrawlerAssets + * @type {number} + * @memberof V1ProxyListResponse */ - 'network_intercept'?: V2CrawlerAssetsNetworkIntercept; + 'draw': number; /** * - * @type {V2CrawlerAssetsParser} - * @memberof V2CrawlerAssets + * @type {number} + * @memberof V1ProxyListResponse */ - 'parser'?: V2CrawlerAssetsParser; + 'iTotalRecords': number; + /** + * + * @type {number} + * @memberof V1ProxyListResponse + */ + 'iTotalDisplayRecords': number; + /** + * + * @type {Array} + * @memberof V1ProxyListResponse + */ + 'aaData': Array; } /** - * Network intercept configuration for asset collection + * * @export - * @interface V2CrawlerAssetsNetworkIntercept + * @interface V1RedirectItem */ -export interface V2CrawlerAssetsNetworkIntercept { +export interface V1RedirectItem { /** - * Enable network intercept - * @type {boolean} - * @memberof V2CrawlerAssetsNetworkIntercept + * * @OA\\Schema( schema=\"V1RedirectItem\", type=\"object\", required={\"url\",\"redirect_url\",\"redirect_http_code\",\"date_timestamp\",\"published\",\"revision_count\"}, + * @type {string} + * @memberof V1RedirectItem */ - 'enabled'?: boolean; + 'url': string; /** - * Request timeout in seconds + * + * @type {string} + * @memberof V1RedirectItem + */ + 'redirect_url': string; + /** + * * @type {number} - * @memberof V2CrawlerAssetsNetworkIntercept + * @memberof V1RedirectItem */ - 'timeout'?: number; + 'redirect_http_code': number; /** - * Execute JavaScript during asset collection - * @type {boolean} - * @memberof V2CrawlerAssetsNetworkIntercept + * + * @type {string} + * @memberof V1RedirectItem */ - 'execute_js'?: boolean; + 'date_timestamp': string; + /** + * + * @type {string} + * @memberof V1RedirectItem + */ + 'published': string; + /** + * + * @type {number} + * @memberof V1RedirectItem + */ + 'revision_count': number; } /** - * Parser configuration for asset extraction + * * @export - * @interface V2CrawlerAssetsParser + * @interface V1RedirectListResponse */ -export interface V2CrawlerAssetsParser { +export interface V1RedirectListResponse { /** - * Enable parser - * @type {boolean} - * @memberof V2CrawlerAssetsParser + * + * @type {number} + * @memberof V1RedirectListResponse */ - 'enabled'?: boolean; + 'draw': number; + /** + * + * @type {number} + * @memberof V1RedirectListResponse + */ + 'iTotalRecords': number; + /** + * + * @type {number} + * @memberof V1RedirectListResponse + */ + 'iTotalDisplayRecords': number; + /** + * + * @type {Array} + * @memberof V1RedirectListResponse + */ + 'aaData': Array; } /** * * @export - * @interface V2CrawlerRequest + * @interface V1RedirectRequest */ -export interface V2CrawlerRequest { +export interface V1RedirectRequest { /** - * Crawler name + * The redirect from URL * @type {string} - * @memberof V2CrawlerRequest + * @memberof V1RedirectRequest */ - 'name'?: string; + 'url': string; /** - * Domain to crawl + * The destination URL * @type {string} - * @memberof V2CrawlerRequest - */ - 'domain': string; - /** - * Enable browser mode - * @type {boolean} - * @memberof V2CrawlerRequest - */ - 'browser_mode'?: boolean; - /** - * URLs to crawl - * @type {Array} - * @memberof V2CrawlerRequest + * @memberof V1RedirectRequest */ - 'urls'?: Array; + 'redirect_url': string; /** - * Starting URLs for crawl - * @type {Array} - * @memberof V2CrawlerRequest + * The HTTP code to send with the redirect + * @type {number} + * @memberof V1RedirectRequest */ - 'start_urls'?: Array; + 'redirect_http_code': number; /** - * Custom headers - * @type {{ [key: string]: string; }} - * @memberof V2CrawlerRequest + * If the redirect is published + * @type {boolean} + * @memberof V1RedirectRequest */ - 'headers'?: { [key: string]: string; }; + 'published': boolean; /** - * URL patterns to exclude (regex) - * @type {Array} - * @memberof V2CrawlerRequest + * User defined timestamp for this content item + * @type {number} + * @memberof V1RedirectRequest */ - 'exclude'?: Array; + 'content_timestamp'?: number; /** - * URL patterns to include (regex) - * @type {Array} - * @memberof V2CrawlerRequest + * + * @type {V1Info} + * @memberof V1RedirectRequest */ - 'include'?: Array; + 'info'?: V1Info; /** - * Webhook URL for notifications - * @type {string} - * @memberof V2CrawlerRequest + * + * @type {Array} + * @memberof V1RedirectRequest */ - 'webhook_url'?: string; + 'transitions'?: Array; +} +/** + * + * @export + * @interface V1RedirectResponse + */ +export interface V1RedirectResponse { /** - * Authorization header for webhook + * * @type {string} - * @memberof V2CrawlerRequest + * @memberof V1RedirectResponse */ - 'webhook_auth_header'?: string; + 'md5'?: string; /** - * Extra variables for webhook + * * @type {string} - * @memberof V2CrawlerRequest + * @memberof V1RedirectResponse */ - 'webhook_extra_vars'?: string; + 'type'?: string; /** - * Number of concurrent workers (default: 2, non-default requires verification) + * * @type {number} - * @memberof V2CrawlerRequest + * @memberof V1RedirectResponse */ - 'workers'?: number; + 'byte_length'?: number; /** - * Delay between requests in seconds (default: 4, non-default requires verification) + * * @type {number} - * @memberof V2CrawlerRequest + * @memberof V1RedirectResponse */ - 'delay'?: number; + 'revision_number'?: number; /** - * Maximum crawl depth, -1 for unlimited + * * @type {number} - * @memberof V2CrawlerRequest + * @memberof V1RedirectResponse */ - 'depth'?: number; + 'date_timestamp'?: number; /** - * Maximum total requests, 0 for unlimited (default: 0, non-default requires verification) - * @type {number} - * @memberof V2CrawlerRequest + * + * @type {boolean} + * @memberof V1RedirectResponse */ - 'max_hits'?: number; + 'deleted'?: boolean; /** - * Maximum HTML pages, 0 for unlimited (default: org limit, non-default requires verification) + * * @type {number} - * @memberof V2CrawlerRequest - */ - 'max_html'?: number; - /** - * HTTP status codes that will result in content being captured and pushed to Quant - * @type {Array} - * @memberof V2CrawlerRequest + * @memberof V1RedirectResponse */ - 'status_ok'?: Array; + 'deleted_timestamp'?: number; /** - * Sitemap configuration - * @type {Array} - * @memberof V2CrawlerRequest + * + * @type {Array} + * @memberof V1RedirectResponse */ - 'sitemap'?: Array; + 'transitions'?: Array; /** - * Allowed domains for multi-domain crawling, automatically enables merge_domains - * @type {Array} - * @memberof V2CrawlerRequest + * + * @type {V1Info} + * @memberof V1RedirectResponse */ - 'allowed_domains'?: Array; + 'info'?: V1Info; /** - * Custom user agent, only when browser_mode is false - * @type {string} - * @memberof V2CrawlerRequest + * The HTTP code + * @type {number} + * @memberof V1RedirectResponse */ - 'user_agent'?: string; + 'redirect_http_code'?: number; /** * - * @type {V2CrawlerAssets} - * @memberof V2CrawlerRequest + * @type {string} + * @memberof V1RedirectResponse */ - 'assets'?: V2CrawlerAssets; + 'highest_revision_number'?: string; /** - * Maximum errors before stopping crawl - * @type {number} - * @memberof V2CrawlerRequest + * The redirect from URL + * @type {string} + * @memberof V1RedirectResponse */ - 'max_errors'?: number; + 'url'?: string; } /** * * @export - * @interface V2CrawlerRun + * @interface V1Revision */ -export interface V2CrawlerRun { +export interface V1Revision { /** - * Run ID - * @type {number} - * @memberof V2CrawlerRun + * + * @type {string} + * @memberof V1Revision */ - 'id': number; + 'md5'?: string; /** - * Crawler config ID - * @type {number} - * @memberof V2CrawlerRun + * + * @type {string} + * @memberof V1Revision */ - 'crawler_config_id': number; + 'type'?: string; /** - * Project ID + * * @type {number} - * @memberof V2CrawlerRun + * @memberof V1Revision */ - 'project_id': number; + 'byte_length'?: number; /** - * Run status - * @type {string} - * @memberof V2CrawlerRun + * + * @type {number} + * @memberof V1Revision */ - 'last_status': string; + 'revision_number'?: number; /** - * Task ID - * @type {string} - * @memberof V2CrawlerRun + * + * @type {number} + * @memberof V1Revision */ - 'task_id': string; + 'date_timestamp'?: number; /** - * Start time (Unix timestamp) - * @type {number} - * @memberof V2CrawlerRun + * + * @type {boolean} + * @memberof V1Revision */ - 'started_at'?: number | null; + 'deleted'?: boolean; /** - * Completion time (Unix timestamp) + * * @type {number} - * @memberof V2CrawlerRun + * @memberof V1Revision */ - 'completed_at'?: number | null; + 'deleted_timestamp'?: number; /** - * Creation timestamp - * @type {string} - * @memberof V2CrawlerRun + * + * @type {Array} + * @memberof V1Revision */ - 'created_at'?: string; + 'transitions'?: Array; /** - * Last update timestamp - * @type {string} - * @memberof V2CrawlerRun + * + * @type {V1Info} + * @memberof V1Revision */ - 'updated_at'?: string; + 'info'?: V1Info; } /** * * @export - * @interface V2CrawlerSchedule + * @interface V1RevisionsResponse */ -export interface V2CrawlerSchedule { +export interface V1RevisionsResponse { /** - * Schedule ID - * @type {number} - * @memberof V2CrawlerSchedule + * Revision objects, mapped by revision number + * @type {object} + * @memberof V1RevisionsResponse */ - 'id': number; + 'revisions'?: object; /** - * Schedule name + * The url of the asset * @type {string} - * @memberof V2CrawlerSchedule + * @memberof V1RevisionsResponse */ - 'name'?: string; + 'url'?: string; /** - * Crawler config ID + * Published state of the asset + * @type {boolean} + * @memberof V1RevisionsResponse + */ + 'published'?: boolean; + /** + * Published revision number of the asset * @type {number} - * @memberof V2CrawlerSchedule + * @memberof V1RevisionsResponse */ - 'crawler_config_id': number; + 'published_revision'?: number; /** - * Crawler UUID - * @type {string} - * @memberof V2CrawlerSchedule + * + * @type {Array} + * @memberof V1RevisionsResponse */ - 'crawler_uuid'?: string; + 'transitions'?: Array; /** - * Project ID + * Last revision number * @type {number} - * @memberof V2CrawlerSchedule + * @memberof V1RevisionsResponse */ - 'project_id': number; + 'highest_revision_number'?: number; /** - * Last run ID + * The transition number, if set * @type {number} - * @memberof V2CrawlerSchedule + * @memberof V1RevisionsResponse */ - 'crawler_last_run_id': number; + 'transition_revision'?: number; +} +/** + * Generic search hit; fields vary by index + * @export + * @interface V1SearchHit + */ +export interface V1SearchHit { /** - * Cron schedule string + * The controller for managing Search integration. * @type {string} - * @memberof V2CrawlerSchedule + * @memberof V1SearchHit */ - 'schedule_cron_string': string; + 'title'?: string; /** - * Creation timestamp + * * @type {string} - * @memberof V2CrawlerSchedule + * @memberof V1SearchHit */ - 'created_at'?: string; + 'url'?: string; /** - * Last update timestamp + * * @type {string} - * @memberof V2CrawlerSchedule + * @memberof V1SearchHit */ - 'updated_at'?: string; -} -/** - * - * @export - * @interface V2CrawlerScheduleRequest - */ -export interface V2CrawlerScheduleRequest { + 'summary'?: string; /** - * Schedule name + * * @type {string} - * @memberof V2CrawlerScheduleRequest + * @memberof V1SearchHit */ - 'name': string; + 'content'?: string; /** - * Cron schedule string + * * @type {string} - * @memberof V2CrawlerScheduleRequest + * @memberof V1SearchHit */ - 'schedule_cron_string': string; -} -/** - * - * @export - * @interface V2CrawlerSitemapInner - */ -export interface V2CrawlerSitemapInner { + 'image'?: string; /** - * Sitemap URL + * * @type {string} - * @memberof V2CrawlerSitemapInner - */ - 'url'?: string; - /** - * Recursively follow sitemap links - * @type {boolean} - * @memberof V2CrawlerSitemapInner + * @memberof V1SearchHit */ - 'recursive'?: boolean; + 'objectID'?: string; } /** * * @export - * @interface V2CustomHeaderRequest + * @interface V1SearchItemsResponse */ -export interface V2CustomHeaderRequest { +export interface V1SearchItemsResponse { /** - * Custom headers - * @type {{ [key: string]: string; }} - * @memberof V2CustomHeaderRequest + * + * @type {Array} + * @memberof V1SearchItemsResponse */ - 'headers': { [key: string]: string; }; + 'hits'?: Array; + /** + * + * @type {number} + * @memberof V1SearchItemsResponse + */ + 'nbPages'?: number; } /** * * @export - * @interface V2Domain + * @interface V1SearchMutationResponse */ -export interface V2Domain { +export interface V1SearchMutationResponse { /** - * Domain ID - * @type {number} - * @memberof V2Domain + * + * @type {boolean} + * @memberof V1SearchMutationResponse */ - 'id': number; + 'success': boolean; /** - * Domain name + * * @type {string} - * @memberof V2Domain - */ - 'domain': string; - /** - * DNS engagement status. 1 indicates DNS is properly configured and engaged, 0 indicates DNS configuration is pending or incomplete. - * @type {number} - * @memberof V2Domain - */ - 'dns_engaged': number; - /** - * DNS validation records required for SSL certificate validation. Present for domains pending certificate validation. Each record contains the CNAME information needed to validate domain ownership. - * @type {Array} - * @memberof V2Domain + * @memberof V1SearchMutationResponse */ - 'dns_validation_records'?: Array | null; + 'message': string; /** - * DNS records required to route traffic to the CDN. These records differ based on domain type (apex vs subdomain). Present when the CDN is configured and ready to receive traffic. - * @type {Array} - * @memberof V2Domain + * + * @type {object} + * @memberof V1SearchMutationResponse */ - 'dns_go_live_records'?: Array | null; + 'result'?: object; } /** * * @export - * @interface V2DomainDnsGoLiveRecordsInner + * @interface V1SearchRecord */ -export interface V2DomainDnsGoLiveRecordsInner { +export interface V1SearchRecord { /** - * DNS record type (CNAME, A, or ALIAS) + * * @type {string} - * @memberof V2DomainDnsGoLiveRecordsInner + * @memberof V1SearchRecord */ - 'type'?: string; + 'title'?: string; /** - * DNS record name/host (@ for apex/root domains, subdomain name for subdomains) + * * @type {string} - * @memberof V2DomainDnsGoLiveRecordsInner + * @memberof V1SearchRecord */ - 'name'?: string; + 'content'?: string; /** - * DNS record value (IP addresses for A records, domain name for CNAME/ALIAS) + * * @type {string} - * @memberof V2DomainDnsGoLiveRecordsInner + * @memberof V1SearchRecord */ - 'value'?: string | null; + 'url'?: string; /** - * Human-readable instructions for configuring this DNS record + * * @type {string} - * @memberof V2DomainDnsGoLiveRecordsInner + * @memberof V1SearchRecord */ - 'description'?: string; + 'summary'?: string; } /** * * @export - * @interface V2DomainDnsValidationRecordsInner + * @interface V1SearchResponse */ -export interface V2DomainDnsValidationRecordsInner { - /** - * DNS record name (host/subdomain) - * @type {string} - * @memberof V2DomainDnsValidationRecordsInner - */ - 'name'?: string; +export interface V1SearchResponse { /** - * DNS record type (typically CNAME) - * @type {string} - * @memberof V2DomainDnsValidationRecordsInner + * Search configuration for the index + * @type {object} + * @memberof V1SearchResponse */ - 'type'?: string; + 'settings'?: object; /** - * DNS record value to point to - * @type {string} - * @memberof V2DomainDnsValidationRecordsInner + * Detail related to index size and status + * @type {object} + * @memberof V1SearchResponse */ - 'value'?: string; + 'index'?: object; } /** * * @export - * @interface V2DomainRequest + * @interface V1SeriesPointDay */ -export interface V2DomainRequest { +export interface V1SeriesPointDay { /** - * Domain name + * * @type {string} - * @memberof V2DomainRequest + * @memberof V1SeriesPointDay */ - 'domain': string; + 'x': string; + /** + * + * @type {number} + * @memberof V1SeriesPointDay + */ + 'y': number; } /** * * @export - * @interface V2Error + * @interface V1SeriesPointMonth */ -export interface V2Error { +export interface V1SeriesPointMonth { /** - * Error message + * * @type {string} - * @memberof V2Error + * @memberof V1SeriesPointMonth */ - 'message': string; + 'x': string; /** - * Error flag - * @type {boolean} - * @memberof V2Error + * + * @type {number} + * @memberof V1SeriesPointMonth */ - 'error': boolean; + 'y': number; } /** * * @export - * @interface V2Organization + * @interface V1Transition */ -export interface V2Organization { - /** - * Organization name - * @type {string} - * @memberof V2Organization - */ - 'name': string; - /** - * Organization machine name - * @type {string} - * @memberof V2Organization - */ - 'machine_name': string; - /** - * Organization type - * @type {string} - * @memberof V2Organization - */ - 'type'?: string; +export interface V1Transition { /** - * Organization region + * * @type {string} - * @memberof V2Organization + * @memberof V1Transition */ - 'region'?: string; + 'state'?: V1TransitionStateEnum; /** - * Subscription type - * @type {string} - * @memberof V2Organization + * + * @type {number} + * @memberof V1Transition */ - 'subscription'?: string; + 'date_timestamp'?: number; +} + +export const V1TransitionStateEnum = { + Published: 'published', + Unpublished: 'unpublished' +} as const; + +export type V1TransitionStateEnum = typeof V1TransitionStateEnum[keyof typeof V1TransitionStateEnum]; + +/** + * + * @export + * @interface V1UploadResponse + */ +export interface V1UploadResponse { /** - * Creation timestamp - * @type {string} - * @memberof V2Organization + * + * @type {boolean} + * @memberof V1UploadResponse */ - 'created_at'?: string; + 'success': boolean; /** - * Last update timestamp + * * @type {string} - * @memberof V2Organization + * @memberof V1UploadResponse */ - 'updated_at'?: string; + 'url': string; } /** * * @export - * @interface V2OrganizationRequest + * @interface V1UrlMetaRequest */ -export interface V2OrganizationRequest { - /** - * Organization name - * @type {string} - * @memberof V2OrganizationRequest - */ - 'name': string; +export interface V1UrlMetaRequest { /** - * Organization machine name - * @type {string} - * @memberof V2OrganizationRequest + * + * @type {Array} + * @memberof V1UrlMetaRequest */ - 'machine_name': string; + 'Quant-Url': Array; } /** * * @export - * @interface V2Project + * @interface V1UrlMetaResponse */ -export interface V2Project { +export interface V1UrlMetaResponse { /** - * Project ID - * @type {number} - * @memberof V2Project + * + * @type {V1GlobalMetaResponseGlobalMeta} + * @memberof V1UrlMetaResponse */ - 'id': number; + 'global_meta'?: V1GlobalMetaResponseGlobalMeta; +} +/** + * + * @export + * @interface V1WafLogItem + */ +export interface V1WafLogItem { /** - * Project UUID + * * @type {string} - * @memberof V2Project + * @memberof V1WafLogItem */ - 'uuid': string; + 'timestamp': string; /** - * Project name + * * @type {string} - * @memberof V2Project + * @memberof V1WafLogItem */ - 'name': string; + 'ip_address': string; /** - * Project machine name + * * @type {string} - * @memberof V2Project + * @memberof V1WafLogItem */ - 'machine_name': string; + 'location': string; /** - * Write token for API access + * * @type {string} - * @memberof V2Project + * @memberof V1WafLogItem */ - 'write_token'?: string; -} -/** - * - * @export - * @interface V2ProjectRequest - */ -export interface V2ProjectRequest { + 'asn': string; /** - * Project name + * * @type {string} - * @memberof V2ProjectRequest + * @memberof V1WafLogItem */ - 'name'?: string; + 'type': string; /** - * Project machine name + * * @type {string} - * @memberof V2ProjectRequest + * @memberof V1WafLogItem */ - 'machine_name'?: string; + 'mode': string; /** - * Project region + * * @type {string} - * @memberof V2ProjectRequest - */ - 'region'?: string; - /** - * Allow query parameters - * @type {boolean} - * @memberof V2ProjectRequest + * @memberof V1WafLogItem */ - 'allow_query_params'?: boolean; + 'rule_id': string; /** - * Disable revisions - * @type {boolean} - * @memberof V2ProjectRequest + * + * @type {string} + * @memberof V1WafLogItem */ - 'disable_revisions'?: boolean; + 'domain': string; /** - * Basic auth username + * * @type {string} - * @memberof V2ProjectRequest + * @memberof V1WafLogItem */ - 'basic_auth_username'?: string; + 'url': string; /** - * Basic auth password + * * @type {string} - * @memberof V2ProjectRequest + * @memberof V1WafLogItem */ - 'basic_auth_password'?: string; + 'method': string; /** - * Apply basic auth to preview domain only - * @type {boolean} - * @memberof V2ProjectRequest + * + * @type {string} + * @memberof V1WafLogItem */ - 'basic_auth_preview_only'?: boolean; + 'user_agent': string; } /** * * @export - * @interface V2Rule + * @interface V1WafLogListResponse */ -export interface V2Rule { +export interface V1WafLogListResponse { /** - * Rule name - * @type {string} - * @memberof V2Rule + * + * @type {number} + * @memberof V1WafLogListResponse */ - 'name'?: string; + 'draw': number; /** - * Rule UUID - * @type {string} - * @memberof V2Rule - */ - 'uuid': string; - /** - * Rule ID - * @type {string} - * @memberof V2Rule - */ - 'rule_id'?: string; - /** - * Rule weight + * * @type {number} - * @memberof V2Rule - */ - 'weight'?: number; - /** - * URL patterns - * @type {Array} - * @memberof V2Rule + * @memberof V1WafLogListResponse */ - 'url'?: Array; + 'iTotalRecords': number; /** - * Domain patterns - * @type {Array} - * @memberof V2Rule + * + * @type {number} + * @memberof V1WafLogListResponse */ - 'domain'?: Array; + 'iTotalDisplayRecords': number; /** - * Whether rule is disabled - * @type {boolean} - * @memberof V2Rule + * + * @type {Array} + * @memberof V1WafLogListResponse */ - 'disabled': boolean; + 'aaData': Array; +} +/** + * + * @export + * @interface V2Crawler + */ +export interface V2Crawler { /** - * Only apply with cookie - * @type {string} - * @memberof V2Rule + * Crawler ID + * @type {number} + * @memberof V2Crawler */ - 'only_with_cookie'?: string; + 'id': number; /** - * HTTP method + * Crawler name * @type {string} - * @memberof V2Rule + * @memberof V2Crawler */ - 'method'?: string; + 'name'?: string; /** - * Allowed HTTP methods - * @type {Array} - * @memberof V2Rule + * Project ID + * @type {number} + * @memberof V2Crawler */ - 'method_is'?: Array; + 'project_id': number; /** - * Excluded HTTP methods - * @type {Array} - * @memberof V2Rule + * Crawler UUID + * @type {string} + * @memberof V2Crawler */ - 'method_is_not'?: Array; + 'uuid': string; /** - * IP address + * Crawler configuration (YAML) * @type {string} - * @memberof V2Rule + * @memberof V2Crawler */ - 'ip'?: string; + 'config': string; /** - * Allowed IP addresses - * @type {Array} - * @memberof V2Rule + * Crawler domain + * @type {string} + * @memberof V2Crawler */ - 'ip_is'?: Array; + 'domain': string; /** - * Excluded IP addresses - * @type {Array} - * @memberof V2Rule + * Domain verification status + * @type {number} + * @memberof V2Crawler */ - 'ip_is_not'?: Array; + 'domain_verified'?: number; /** - * Country code + * URLs list (YAML) * @type {string} - * @memberof V2Rule + * @memberof V2Crawler */ - 'country'?: string; + 'urls_list'?: string; /** - * Allowed countries - * @type {Array} - * @memberof V2Rule + * Webhook URL for notifications + * @type {string} + * @memberof V2Crawler */ - 'country_is'?: Array; + 'webhook_url'?: string; /** - * Excluded countries - * @type {Array} - * @memberof V2Rule + * Authorization header for webhook + * @type {string} + * @memberof V2Crawler */ - 'country_is_not'?: Array; + 'webhook_auth_header'?: string; /** - * Rule action + * Extra variables for webhook * @type {string} - * @memberof V2Rule + * @memberof V2Crawler */ - 'action': string; -} -/** - * - * @export - * @interface V2RuleAuth - */ -export interface V2RuleAuth { + 'webhook_extra_vars'?: string; /** - * Rule name - * @type {string} - * @memberof V2RuleAuth + * Browser mode enabled + * @type {boolean} + * @memberof V2Crawler */ - 'name'?: string; + 'browser_mode'?: boolean; /** - * Rule UUID - * @type {string} - * @memberof V2RuleAuth + * Number of concurrent workers + * @type {number} + * @memberof V2Crawler */ - 'uuid': string; + 'workers'?: number; /** - * Rule ID - * @type {string} - * @memberof V2RuleAuth + * Delay between requests in seconds + * @type {number} + * @memberof V2Crawler */ - 'rule_id'?: string; + 'delay'?: number; /** - * Rule weight + * Maximum crawl depth * @type {number} - * @memberof V2RuleAuth + * @memberof V2Crawler */ - 'weight'?: number; + 'depth'?: number; /** - * URL patterns - * @type {Array} - * @memberof V2RuleAuth + * Maximum total requests + * @type {number} + * @memberof V2Crawler */ - 'url'?: Array; + 'max_hits'?: number; /** - * Domain patterns - * @type {Array} - * @memberof V2RuleAuth + * Maximum HTML pages + * @type {number} + * @memberof V2Crawler */ - 'domain'?: Array; + 'max_html'?: number; /** - * Whether rule is disabled - * @type {boolean} - * @memberof V2RuleAuth + * HTTP status codes for content capture + * @type {Array} + * @memberof V2Crawler */ - 'disabled': boolean; + 'status_ok'?: Array; /** - * Only apply with cookie + * Custom user agent * @type {string} - * @memberof V2RuleAuth + * @memberof V2Crawler */ - 'only_with_cookie'?: string; + 'user_agent'?: string; /** - * HTTP method - * @type {string} - * @memberof V2RuleAuth + * Maximum errors before stopping + * @type {number} + * @memberof V2Crawler */ - 'method'?: string; + 'max_errors'?: number; /** - * Allowed HTTP methods + * Starting URLs * @type {Array} - * @memberof V2RuleAuth + * @memberof V2Crawler */ - 'method_is'?: Array; + 'start_urls'?: Array; /** - * Excluded HTTP methods + * URLs list * @type {Array} - * @memberof V2RuleAuth + * @memberof V2Crawler */ - 'method_is_not'?: Array; + 'urls'?: Array; /** - * IP address - * @type {string} - * @memberof V2RuleAuth + * Custom headers + * @type {{ [key: string]: string; }} + * @memberof V2Crawler */ - 'ip'?: string; + 'headers'?: { [key: string]: string; }; /** - * Allowed IP addresses + * URL patterns to exclude * @type {Array} - * @memberof V2RuleAuth + * @memberof V2Crawler */ - 'ip_is'?: Array; + 'exclude'?: Array; /** - * Excluded IP addresses + * URL patterns to include * @type {Array} - * @memberof V2RuleAuth + * @memberof V2Crawler */ - 'ip_is_not'?: Array; + 'include'?: Array; /** - * Country code - * @type {string} - * @memberof V2RuleAuth + * Sitemap configuration + * @type {Array} + * @memberof V2Crawler */ - 'country'?: string; + 'sitemap'?: Array; /** - * Allowed countries + * Allowed domains * @type {Array} - * @memberof V2RuleAuth + * @memberof V2Crawler */ - 'country_is'?: Array; + 'allowed_domains'?: Array; /** - * Excluded countries - * @type {Array} - * @memberof V2RuleAuth + * + * @type {V2CrawlerAssets} + * @memberof V2Crawler */ - 'country_is_not'?: Array; + 'assets'?: V2CrawlerAssets; /** - * Rule action + * Creation timestamp * @type {string} - * @memberof V2RuleAuth - */ - 'action': string; - /** - * - * @type {V2RuleAuthAction} - * @memberof V2RuleAuth + * @memberof V2Crawler */ - 'action_config': V2RuleAuthAction; -} -/** - * - * @export - * @interface V2RuleAuthAction - */ -export interface V2RuleAuthAction { + 'created_at'?: string; /** - * Authentication username + * Last update timestamp * @type {string} - * @memberof V2RuleAuthAction + * @memberof V2Crawler */ - 'auth_user': string; + 'updated_at'?: string; /** - * Authentication password + * Deletion timestamp * @type {string} - * @memberof V2RuleAuthAction + * @memberof V2Crawler */ - 'auth_pass': string; + 'deleted_at'?: string | null; } /** - * + * Asset harvesting configuration * @export - * @interface V2RuleAuthRequest + * @interface V2CrawlerAssets */ -export interface V2RuleAuthRequest { +export interface V2CrawlerAssets { /** - * Domain patterns (default: any) - * @type {Array} - * @memberof V2RuleAuthRequest + * + * @type {V2CrawlerAssetsNetworkIntercept} + * @memberof V2CrawlerAssets */ - 'domain': Array; + 'network_intercept'?: V2CrawlerAssetsNetworkIntercept; /** - * Rule name - * @type {string} - * @memberof V2RuleAuthRequest + * + * @type {V2CrawlerAssetsParser} + * @memberof V2CrawlerAssets */ - 'name'?: string; + 'parser'?: V2CrawlerAssetsParser; +} +/** + * Network intercept configuration for asset collection + * @export + * @interface V2CrawlerAssetsNetworkIntercept + */ +export interface V2CrawlerAssetsNetworkIntercept { /** - * Rule UUID - * @type {string} - * @memberof V2RuleAuthRequest + * Enable network intercept + * @type {boolean} + * @memberof V2CrawlerAssetsNetworkIntercept */ - 'uuid'?: string; + 'enabled'?: boolean; /** - * Rule weight + * Request timeout in seconds * @type {number} - * @memberof V2RuleAuthRequest + * @memberof V2CrawlerAssetsNetworkIntercept */ - 'weight'?: number; + 'timeout'?: number; /** - * Whether rule is disabled + * Execute JavaScript during asset collection * @type {boolean} - * @memberof V2RuleAuthRequest + * @memberof V2CrawlerAssetsNetworkIntercept */ - 'disabled'?: boolean; + 'execute_js'?: boolean; +} +/** + * Parser configuration for asset extraction + * @export + * @interface V2CrawlerAssetsParser + */ +export interface V2CrawlerAssetsParser { /** - * URL patterns - * @type {Array} - * @memberof V2RuleAuthRequest + * Enable parser + * @type {boolean} + * @memberof V2CrawlerAssetsParser */ - 'url': Array; + 'enabled'?: boolean; +} +/** + * + * @export + * @interface V2CrawlerRequest + */ +export interface V2CrawlerRequest { /** - * Country filter type (country_is, country_is_not, any) + * Crawler name * @type {string} - * @memberof V2RuleAuthRequest - */ - 'country'?: string; - /** - * Allowed countries - * @type {Array} - * @memberof V2RuleAuthRequest + * @memberof V2CrawlerRequest */ - 'country_is'?: Array; + 'name'?: string; /** - * Excluded countries - * @type {Array} - * @memberof V2RuleAuthRequest + * Domain to crawl + * @type {string} + * @memberof V2CrawlerRequest */ - 'country_is_not'?: Array; + 'domain': string; /** - * Method filter type (method_is, method_is_not, any) - * @type {string} - * @memberof V2RuleAuthRequest + * Enable browser mode + * @type {boolean} + * @memberof V2CrawlerRequest */ - 'method'?: string; + 'browser_mode'?: boolean; /** - * Allowed HTTP methods + * URLs to crawl * @type {Array} - * @memberof V2RuleAuthRequest + * @memberof V2CrawlerRequest */ - 'method_is'?: Array; + 'urls'?: Array; /** - * Excluded HTTP methods + * Starting URLs for crawl * @type {Array} - * @memberof V2RuleAuthRequest + * @memberof V2CrawlerRequest */ - 'method_is_not'?: Array; + 'start_urls'?: Array; /** - * IP filter type (ip_is, ip_is_not, any) - * @type {string} - * @memberof V2RuleAuthRequest + * Custom headers + * @type {{ [key: string]: string; }} + * @memberof V2CrawlerRequest */ - 'ip'?: string; + 'headers'?: { [key: string]: string; }; /** - * Allowed IP addresses + * URL patterns to exclude (regex) * @type {Array} - * @memberof V2RuleAuthRequest + * @memberof V2CrawlerRequest */ - 'ip_is'?: Array; + 'exclude'?: Array; /** - * Excluded IP addresses + * URL patterns to include (regex) * @type {Array} - * @memberof V2RuleAuthRequest + * @memberof V2CrawlerRequest */ - 'ip_is_not'?: Array; + 'include'?: Array; /** - * Authentication username + * Webhook URL for notifications * @type {string} - * @memberof V2RuleAuthRequest + * @memberof V2CrawlerRequest */ - 'auth_user': string; + 'webhook_url'?: string; /** - * Authentication password + * Authorization header for webhook * @type {string} - * @memberof V2RuleAuthRequest + * @memberof V2CrawlerRequest */ - 'auth_pass': string; -} -/** - * - * @export - * @interface V2RuleBotChallenge - */ -export interface V2RuleBotChallenge { + 'webhook_auth_header'?: string; /** - * Rule name + * Extra variables for webhook * @type {string} - * @memberof V2RuleBotChallenge + * @memberof V2CrawlerRequest */ - 'name'?: string; + 'webhook_extra_vars'?: string; /** - * Rule UUID - * @type {string} - * @memberof V2RuleBotChallenge + * Number of concurrent workers (default: 2, non-default requires verification) + * @type {number} + * @memberof V2CrawlerRequest */ - 'uuid': string; + 'workers'?: number; /** - * Rule ID - * @type {string} - * @memberof V2RuleBotChallenge + * Delay between requests in seconds (default: 4, non-default requires verification) + * @type {number} + * @memberof V2CrawlerRequest */ - 'rule_id'?: string; + 'delay'?: number; /** - * Rule weight + * Maximum crawl depth, -1 for unlimited * @type {number} - * @memberof V2RuleBotChallenge + * @memberof V2CrawlerRequest */ - 'weight'?: number; + 'depth'?: number; /** - * URL patterns - * @type {Array} - * @memberof V2RuleBotChallenge + * Maximum total requests, 0 for unlimited (default: 0, non-default requires verification) + * @type {number} + * @memberof V2CrawlerRequest */ - 'url'?: Array; + 'max_hits'?: number; /** - * Domain patterns - * @type {Array} - * @memberof V2RuleBotChallenge + * Maximum HTML pages, 0 for unlimited (default: org limit, non-default requires verification) + * @type {number} + * @memberof V2CrawlerRequest */ - 'domain'?: Array; + 'max_html'?: number; /** - * Whether rule is disabled - * @type {boolean} - * @memberof V2RuleBotChallenge + * HTTP status codes that will result in content being captured and pushed to Quant + * @type {Array} + * @memberof V2CrawlerRequest */ - 'disabled': boolean; + 'status_ok'?: Array; /** - * Only apply with cookie - * @type {string} - * @memberof V2RuleBotChallenge + * Sitemap configuration + * @type {Array} + * @memberof V2CrawlerRequest */ - 'only_with_cookie'?: string; + 'sitemap'?: Array; /** - * HTTP method - * @type {string} - * @memberof V2RuleBotChallenge + * Allowed domains for multi-domain crawling, automatically enables merge_domains + * @type {Array} + * @memberof V2CrawlerRequest */ - 'method'?: string; + 'allowed_domains'?: Array; /** - * Allowed HTTP methods - * @type {Array} - * @memberof V2RuleBotChallenge + * Custom user agent, only when browser_mode is false + * @type {string} + * @memberof V2CrawlerRequest */ - 'method_is'?: Array; + 'user_agent'?: string; /** - * Excluded HTTP methods - * @type {Array} - * @memberof V2RuleBotChallenge - */ - 'method_is_not'?: Array; - /** - * IP address - * @type {string} - * @memberof V2RuleBotChallenge - */ - 'ip'?: string; - /** - * Allowed IP addresses - * @type {Array} - * @memberof V2RuleBotChallenge - */ - 'ip_is'?: Array; - /** - * Excluded IP addresses - * @type {Array} - * @memberof V2RuleBotChallenge - */ - 'ip_is_not'?: Array; - /** - * Country code - * @type {string} - * @memberof V2RuleBotChallenge - */ - 'country'?: string; - /** - * Allowed countries - * @type {Array} - * @memberof V2RuleBotChallenge - */ - 'country_is'?: Array; - /** - * Excluded countries - * @type {Array} - * @memberof V2RuleBotChallenge - */ - 'country_is_not'?: Array; - /** - * Rule action - * @type {string} - * @memberof V2RuleBotChallenge + * + * @type {V2CrawlerAssets} + * @memberof V2CrawlerRequest */ - 'action': string; + 'assets'?: V2CrawlerAssets; /** - * - * @type {V2RuleBotChallengeAction} - * @memberof V2RuleBotChallenge + * Maximum errors before stopping crawl + * @type {number} + * @memberof V2CrawlerRequest */ - 'action_config': V2RuleBotChallengeAction; + 'max_errors'?: number; } /** * * @export - * @interface V2RuleBotChallengeAction + * @interface V2CrawlerRun */ -export interface V2RuleBotChallengeAction { - /** - * Challenge type (invisible or checkbox) - * @type {string} - * @memberof V2RuleBotChallengeAction - */ - 'robot_challenge_type': string; +export interface V2CrawlerRun { /** - * Verification TTL in seconds + * Run ID * @type {number} - * @memberof V2RuleBotChallengeAction + * @memberof V2CrawlerRun */ - 'robot_challenge_verification_ttl'?: number; + 'id': number; /** - * Challenge TTL in seconds + * Crawler config ID * @type {number} - * @memberof V2RuleBotChallengeAction + * @memberof V2CrawlerRun */ - 'robot_challenge_challenge_ttl'?: number; -} -/** - * - * @export - * @interface V2RuleBotChallengeRequest - */ -export interface V2RuleBotChallengeRequest { + 'crawler_config_id': number; /** - * Domain patterns (default: any) - * @type {Array} - * @memberof V2RuleBotChallengeRequest + * Project ID + * @type {number} + * @memberof V2CrawlerRun */ - 'domain': Array; + 'project_id': number; /** - * Rule name + * Run status * @type {string} - * @memberof V2RuleBotChallengeRequest + * @memberof V2CrawlerRun */ - 'name'?: string; + 'last_status': string; /** - * Rule UUID + * Task ID * @type {string} - * @memberof V2RuleBotChallengeRequest + * @memberof V2CrawlerRun */ - 'uuid'?: string; + 'task_id': string; /** - * Rule weight + * Start time (Unix timestamp) * @type {number} - * @memberof V2RuleBotChallengeRequest - */ - 'weight'?: number; - /** - * Whether rule is disabled - * @type {boolean} - * @memberof V2RuleBotChallengeRequest + * @memberof V2CrawlerRun */ - 'disabled'?: boolean; + 'started_at'?: number | null; /** - * URL patterns - * @type {Array} - * @memberof V2RuleBotChallengeRequest + * Completion time (Unix timestamp) + * @type {number} + * @memberof V2CrawlerRun */ - 'url': Array; + 'completed_at'?: number | null; /** - * Country filter type (country_is, country_is_not, any) + * Creation timestamp * @type {string} - * @memberof V2RuleBotChallengeRequest + * @memberof V2CrawlerRun */ - 'country'?: string; + 'created_at'?: string; /** - * Allowed countries - * @type {Array} - * @memberof V2RuleBotChallengeRequest + * Last update timestamp + * @type {string} + * @memberof V2CrawlerRun */ - 'country_is'?: Array; + 'updated_at'?: string; +} +/** + * + * @export + * @interface V2CrawlerSchedule + */ +export interface V2CrawlerSchedule { /** - * Excluded countries - * @type {Array} - * @memberof V2RuleBotChallengeRequest + * Schedule ID + * @type {number} + * @memberof V2CrawlerSchedule */ - 'country_is_not'?: Array; + 'id': number; /** - * Method filter type (method_is, method_is_not, any) + * Schedule name * @type {string} - * @memberof V2RuleBotChallengeRequest - */ - 'method'?: string; - /** - * Allowed HTTP methods - * @type {Array} - * @memberof V2RuleBotChallengeRequest + * @memberof V2CrawlerSchedule */ - 'method_is'?: Array; + 'name'?: string; /** - * Excluded HTTP methods - * @type {Array} - * @memberof V2RuleBotChallengeRequest + * Crawler config ID + * @type {number} + * @memberof V2CrawlerSchedule */ - 'method_is_not'?: Array; + 'crawler_config_id': number; /** - * IP filter type (ip_is, ip_is_not, any) + * Crawler UUID * @type {string} - * @memberof V2RuleBotChallengeRequest + * @memberof V2CrawlerSchedule */ - 'ip'?: string; + 'crawler_uuid'?: string; /** - * Allowed IP addresses - * @type {Array} - * @memberof V2RuleBotChallengeRequest + * Project ID + * @type {number} + * @memberof V2CrawlerSchedule */ - 'ip_is'?: Array; + 'project_id': number; /** - * Excluded IP addresses - * @type {Array} - * @memberof V2RuleBotChallengeRequest + * Last run ID + * @type {number} + * @memberof V2CrawlerSchedule */ - 'ip_is_not'?: Array; + 'crawler_last_run_id': number; /** - * Challenge type (invisible or checkbox) + * Cron schedule string * @type {string} - * @memberof V2RuleBotChallengeRequest + * @memberof V2CrawlerSchedule */ - 'robot_challenge_type': string; + 'schedule_cron_string': string; /** - * Verification TTL in seconds - * @type {number} - * @memberof V2RuleBotChallengeRequest + * Creation timestamp + * @type {string} + * @memberof V2CrawlerSchedule */ - 'robot_challenge_verification_ttl'?: number; + 'created_at'?: string; /** - * Challenge TTL in seconds - * @type {number} - * @memberof V2RuleBotChallengeRequest + * Last update timestamp + * @type {string} + * @memberof V2CrawlerSchedule */ - 'robot_challenge_challenge_ttl'?: number; + 'updated_at'?: string; } /** * * @export - * @interface V2RuleContentFilter + * @interface V2CrawlerScheduleRequest */ -export interface V2RuleContentFilter { +export interface V2CrawlerScheduleRequest { /** - * Rule name + * Schedule name * @type {string} - * @memberof V2RuleContentFilter + * @memberof V2CrawlerScheduleRequest */ - 'name'?: string; + 'name': string; /** - * Rule UUID + * Cron schedule string * @type {string} - * @memberof V2RuleContentFilter + * @memberof V2CrawlerScheduleRequest */ - 'uuid': string; + 'schedule_cron_string': string; +} +/** + * + * @export + * @interface V2CrawlerSitemapInner + */ +export interface V2CrawlerSitemapInner { /** - * Rule ID + * Sitemap URL * @type {string} - * @memberof V2RuleContentFilter + * @memberof V2CrawlerSitemapInner */ - 'rule_id'?: string; + 'url'?: string; /** - * Rule weight - * @type {number} - * @memberof V2RuleContentFilter + * Recursively follow sitemap links + * @type {boolean} + * @memberof V2CrawlerSitemapInner */ - 'weight'?: number; - /** - * URL patterns - * @type {Array} - * @memberof V2RuleContentFilter - */ - 'url'?: Array; + 'recursive'?: boolean; +} +/** + * + * @export + * @interface V2CustomHeaderRequest + */ +export interface V2CustomHeaderRequest { /** - * Domain patterns - * @type {Array} - * @memberof V2RuleContentFilter + * Custom headers + * @type {{ [key: string]: string; }} + * @memberof V2CustomHeaderRequest */ - 'domain'?: Array; + 'headers': { [key: string]: string; }; +} +/** + * + * @export + * @interface V2Domain + */ +export interface V2Domain { /** - * Whether rule is disabled - * @type {boolean} - * @memberof V2RuleContentFilter + * Domain ID + * @type {number} + * @memberof V2Domain */ - 'disabled': boolean; + 'id': number; /** - * Only apply with cookie + * Domain name * @type {string} - * @memberof V2RuleContentFilter + * @memberof V2Domain */ - 'only_with_cookie'?: string; + 'domain': string; /** - * HTTP method - * @type {string} - * @memberof V2RuleContentFilter + * DNS engagement status. 1 indicates DNS is properly configured and engaged, 0 indicates DNS configuration is pending or incomplete. + * @type {number} + * @memberof V2Domain */ - 'method'?: string; + 'dns_engaged': number; /** - * Allowed HTTP methods - * @type {Array} - * @memberof V2RuleContentFilter + * DNS validation records required for SSL certificate validation. Present for domains pending certificate validation. Each record contains the CNAME information needed to validate domain ownership. + * @type {Array} + * @memberof V2Domain */ - 'method_is'?: Array; + 'dns_validation_records'?: Array | null; /** - * Excluded HTTP methods - * @type {Array} - * @memberof V2RuleContentFilter + * DNS records required to route traffic to the CDN. These records differ based on domain type (apex vs subdomain). Present when the CDN is configured and ready to receive traffic. + * @type {Array} + * @memberof V2Domain */ - 'method_is_not'?: Array; + 'dns_go_live_records'?: Array | null; +} +/** + * + * @export + * @interface V2DomainDnsGoLiveRecordsInner + */ +export interface V2DomainDnsGoLiveRecordsInner { /** - * IP address + * DNS record type (CNAME, A, or ALIAS) * @type {string} - * @memberof V2RuleContentFilter - */ - 'ip'?: string; - /** - * Allowed IP addresses - * @type {Array} - * @memberof V2RuleContentFilter + * @memberof V2DomainDnsGoLiveRecordsInner */ - 'ip_is'?: Array; + 'type'?: string; /** - * Excluded IP addresses - * @type {Array} - * @memberof V2RuleContentFilter + * DNS record name/host (@ for apex/root domains, subdomain name for subdomains) + * @type {string} + * @memberof V2DomainDnsGoLiveRecordsInner */ - 'ip_is_not'?: Array; + 'name'?: string; /** - * Country code + * DNS record value (IP addresses for A records, domain name for CNAME/ALIAS) * @type {string} - * @memberof V2RuleContentFilter + * @memberof V2DomainDnsGoLiveRecordsInner */ - 'country'?: string; + 'value'?: string | null; /** - * Allowed countries - * @type {Array} - * @memberof V2RuleContentFilter + * Human-readable instructions for configuring this DNS record + * @type {string} + * @memberof V2DomainDnsGoLiveRecordsInner */ - 'country_is'?: Array; + 'description'?: string; +} +/** + * + * @export + * @interface V2DomainDnsValidationRecordsInner + */ +export interface V2DomainDnsValidationRecordsInner { /** - * Excluded countries - * @type {Array} - * @memberof V2RuleContentFilter + * DNS record name (host/subdomain) + * @type {string} + * @memberof V2DomainDnsValidationRecordsInner */ - 'country_is_not'?: Array; + 'name'?: string; /** - * Rule action + * DNS record type (typically CNAME) * @type {string} - * @memberof V2RuleContentFilter + * @memberof V2DomainDnsValidationRecordsInner */ - 'action': string; + 'type'?: string; /** - * - * @type {V2RuleContentFilterAction} - * @memberof V2RuleContentFilter + * DNS record value to point to + * @type {string} + * @memberof V2DomainDnsValidationRecordsInner */ - 'action_config': V2RuleContentFilterAction; + 'value'?: string; } /** * * @export - * @interface V2RuleContentFilterAction + * @interface V2DomainRequest */ -export interface V2RuleContentFilterAction { +export interface V2DomainRequest { /** - * Function UUID + * Domain name * @type {string} - * @memberof V2RuleContentFilterAction + * @memberof V2DomainRequest */ - 'fn_uuid': string; + 'domain': string; } /** * * @export - * @interface V2RuleContentFilterRequest + * @interface V2Error */ -export interface V2RuleContentFilterRequest { - /** - * Domain patterns (default: any) - * @type {Array} - * @memberof V2RuleContentFilterRequest - */ - 'domain': Array; - /** - * Rule name - * @type {string} - * @memberof V2RuleContentFilterRequest - */ - 'name'?: string; +export interface V2Error { /** - * Rule UUID + * Error message * @type {string} - * @memberof V2RuleContentFilterRequest - */ - 'uuid'?: string; - /** - * Rule weight - * @type {number} - * @memberof V2RuleContentFilterRequest + * @memberof V2Error */ - 'weight'?: number; + 'message': string; /** - * Whether rule is disabled + * Error flag * @type {boolean} - * @memberof V2RuleContentFilterRequest + * @memberof V2Error */ - 'disabled'?: boolean; + 'error': boolean; +} +/** + * + * @export + * @interface V2Organization + */ +export interface V2Organization { /** - * URL patterns - * @type {Array} - * @memberof V2RuleContentFilterRequest + * Organization name + * @type {string} + * @memberof V2Organization */ - 'url': Array; + 'name': string; /** - * Country filter type (country_is, country_is_not, any) + * Organization machine name * @type {string} - * @memberof V2RuleContentFilterRequest + * @memberof V2Organization */ - 'country'?: string; + 'machine_name': string; /** - * Allowed countries - * @type {Array} - * @memberof V2RuleContentFilterRequest + * Organization type + * @type {string} + * @memberof V2Organization */ - 'country_is'?: Array; + 'type'?: string; /** - * Excluded countries - * @type {Array} - * @memberof V2RuleContentFilterRequest + * Organization region + * @type {string} + * @memberof V2Organization */ - 'country_is_not'?: Array; + 'region'?: string; /** - * Method filter type (method_is, method_is_not, any) + * Subscription type * @type {string} - * @memberof V2RuleContentFilterRequest + * @memberof V2Organization */ - 'method'?: string; + 'subscription'?: string; /** - * Allowed HTTP methods - * @type {Array} - * @memberof V2RuleContentFilterRequest + * Creation timestamp + * @type {string} + * @memberof V2Organization */ - 'method_is'?: Array; + 'created_at'?: string; /** - * Excluded HTTP methods - * @type {Array} - * @memberof V2RuleContentFilterRequest + * Last update timestamp + * @type {string} + * @memberof V2Organization */ - 'method_is_not'?: Array; + 'updated_at'?: string; +} +/** + * + * @export + * @interface V2OrganizationRequest + */ +export interface V2OrganizationRequest { /** - * IP filter type (ip_is, ip_is_not, any) + * Organization name * @type {string} - * @memberof V2RuleContentFilterRequest + * @memberof V2OrganizationRequest */ - 'ip'?: string; + 'name': string; /** - * Allowed IP addresses - * @type {Array} - * @memberof V2RuleContentFilterRequest + * Organization machine name + * @type {string} + * @memberof V2OrganizationRequest */ - 'ip_is'?: Array; + 'machine_name': string; +} +/** + * + * @export + * @interface V2Project + */ +export interface V2Project { /** - * Excluded IP addresses - * @type {Array} - * @memberof V2RuleContentFilterRequest + * Project ID + * @type {number} + * @memberof V2Project */ - 'ip_is_not'?: Array; + 'id': number; /** - * Function UUID + * Project UUID * @type {string} - * @memberof V2RuleContentFilterRequest + * @memberof V2Project */ - 'fn_uuid': string; + 'uuid': string; + /** + * Project name + * @type {string} + * @memberof V2Project + */ + 'name': string; + /** + * Project machine name + * @type {string} + * @memberof V2Project + */ + 'machine_name': string; + /** + * Write token for API access + * @type {string} + * @memberof V2Project + */ + 'write_token'?: string; } /** * * @export - * @interface V2RuleCustomResponse + * @interface V2ProjectRequest */ -export interface V2RuleCustomResponse { +export interface V2ProjectRequest { + /** + * Project name + * @type {string} + * @memberof V2ProjectRequest + */ + 'name'?: string; + /** + * Project machine name + * @type {string} + * @memberof V2ProjectRequest + */ + 'machine_name'?: string; + /** + * Project region + * @type {string} + * @memberof V2ProjectRequest + */ + 'region'?: string; + /** + * Allow query parameters + * @type {boolean} + * @memberof V2ProjectRequest + */ + 'allow_query_params'?: boolean; + /** + * Disable revisions + * @type {boolean} + * @memberof V2ProjectRequest + */ + 'disable_revisions'?: boolean; + /** + * Basic auth username + * @type {string} + * @memberof V2ProjectRequest + */ + 'basic_auth_username'?: string; + /** + * Basic auth password + * @type {string} + * @memberof V2ProjectRequest + */ + 'basic_auth_password'?: string; + /** + * Apply basic auth to preview domain only + * @type {boolean} + * @memberof V2ProjectRequest + */ + 'basic_auth_preview_only'?: boolean; +} +/** + * + * @export + * @interface V2Rule + */ +export interface V2Rule { /** * Rule name * @type {string} - * @memberof V2RuleCustomResponse + * @memberof V2Rule */ 'name'?: string; /** * Rule UUID * @type {string} - * @memberof V2RuleCustomResponse + * @memberof V2Rule */ 'uuid': string; /** * Rule ID * @type {string} - * @memberof V2RuleCustomResponse + * @memberof V2Rule */ 'rule_id'?: string; /** * Rule weight * @type {number} - * @memberof V2RuleCustomResponse + * @memberof V2Rule */ 'weight'?: number; /** * URL patterns * @type {Array} - * @memberof V2RuleCustomResponse + * @memberof V2Rule */ 'url'?: Array; /** * Domain patterns * @type {Array} - * @memberof V2RuleCustomResponse + * @memberof V2Rule */ 'domain'?: Array; /** * Whether rule is disabled * @type {boolean} - * @memberof V2RuleCustomResponse + * @memberof V2Rule */ 'disabled': boolean; /** * Only apply with cookie * @type {string} - * @memberof V2RuleCustomResponse + * @memberof V2Rule */ 'only_with_cookie'?: string; /** * HTTP method * @type {string} - * @memberof V2RuleCustomResponse + * @memberof V2Rule */ 'method'?: string; /** * Allowed HTTP methods * @type {Array} - * @memberof V2RuleCustomResponse + * @memberof V2Rule */ 'method_is'?: Array; /** * Excluded HTTP methods * @type {Array} - * @memberof V2RuleCustomResponse + * @memberof V2Rule */ 'method_is_not'?: Array; /** * IP address * @type {string} - * @memberof V2RuleCustomResponse + * @memberof V2Rule */ 'ip'?: string; /** * Allowed IP addresses * @type {Array} - * @memberof V2RuleCustomResponse + * @memberof V2Rule */ 'ip_is'?: Array; /** * Excluded IP addresses * @type {Array} - * @memberof V2RuleCustomResponse + * @memberof V2Rule */ 'ip_is_not'?: Array; /** * Country code * @type {string} - * @memberof V2RuleCustomResponse + * @memberof V2Rule */ 'country'?: string; /** * Allowed countries * @type {Array} - * @memberof V2RuleCustomResponse + * @memberof V2Rule */ 'country_is'?: Array; /** * Excluded countries * @type {Array} - * @memberof V2RuleCustomResponse + * @memberof V2Rule */ 'country_is_not'?: Array; /** * Rule action * @type {string} - * @memberof V2RuleCustomResponse + * @memberof V2Rule */ 'action': string; - /** - * - * @type {V2RuleCustomResponseAction} - * @memberof V2RuleCustomResponse - */ - 'action_config'?: V2RuleCustomResponseAction; -} -/** - * - * @export - * @interface V2RuleCustomResponseAction - */ -export interface V2RuleCustomResponseAction { - /** - * Custom response body content - * @type {string} - * @memberof V2RuleCustomResponseAction - */ - 'custom_response_body': string; - /** - * HTTP status code for custom response - * @type {number} - * @memberof V2RuleCustomResponseAction - */ - 'custom_response_status_code'?: number; } /** * * @export - * @interface V2RuleCustomResponseRequest + * @interface V2RuleAuth */ -export interface V2RuleCustomResponseRequest { - /** - * Domain patterns (default: any) - * @type {Array} - * @memberof V2RuleCustomResponseRequest - */ - 'domain': Array; +export interface V2RuleAuth { /** * Rule name * @type {string} - * @memberof V2RuleCustomResponseRequest + * @memberof V2RuleAuth */ 'name'?: string; /** * Rule UUID * @type {string} - * @memberof V2RuleCustomResponseRequest + * @memberof V2RuleAuth */ - 'uuid'?: string; + 'uuid': string; + /** + * Rule ID + * @type {string} + * @memberof V2RuleAuth + */ + 'rule_id'?: string; /** * Rule weight * @type {number} - * @memberof V2RuleCustomResponseRequest + * @memberof V2RuleAuth */ 'weight'?: number; - /** - * Whether rule is disabled - * @type {boolean} - * @memberof V2RuleCustomResponseRequest - */ - 'disabled'?: boolean; /** * URL patterns * @type {Array} - * @memberof V2RuleCustomResponseRequest + * @memberof V2RuleAuth */ - 'url': Array; + 'url'?: Array; /** - * Country filter type (country_is, country_is_not, any) - * @type {string} - * @memberof V2RuleCustomResponseRequest + * Domain patterns + * @type {Array} + * @memberof V2RuleAuth */ - 'country'?: string; + 'domain'?: Array; /** - * Allowed countries - * @type {Array} - * @memberof V2RuleCustomResponseRequest + * Whether rule is disabled + * @type {boolean} + * @memberof V2RuleAuth */ - 'country_is'?: Array; + 'disabled': boolean; /** - * Excluded countries - * @type {Array} - * @memberof V2RuleCustomResponseRequest + * Only apply with cookie + * @type {string} + * @memberof V2RuleAuth */ - 'country_is_not'?: Array; + 'only_with_cookie'?: string; /** - * Method filter type (method_is, method_is_not, any) + * HTTP method * @type {string} - * @memberof V2RuleCustomResponseRequest + * @memberof V2RuleAuth */ 'method'?: string; /** * Allowed HTTP methods * @type {Array} - * @memberof V2RuleCustomResponseRequest + * @memberof V2RuleAuth */ 'method_is'?: Array; /** * Excluded HTTP methods * @type {Array} - * @memberof V2RuleCustomResponseRequest + * @memberof V2RuleAuth */ 'method_is_not'?: Array; /** - * IP filter type (ip_is, ip_is_not, any) + * IP address * @type {string} - * @memberof V2RuleCustomResponseRequest + * @memberof V2RuleAuth */ 'ip'?: string; /** * Allowed IP addresses * @type {Array} - * @memberof V2RuleCustomResponseRequest + * @memberof V2RuleAuth */ 'ip_is'?: Array; /** * Excluded IP addresses * @type {Array} - * @memberof V2RuleCustomResponseRequest + * @memberof V2RuleAuth */ 'ip_is_not'?: Array; /** - * Custom response body content + * Country code * @type {string} - * @memberof V2RuleCustomResponseRequest + * @memberof V2RuleAuth */ - 'custom_response_body': string; + 'country'?: string; /** - * HTTP status code for custom response - * @type {number} - * @memberof V2RuleCustomResponseRequest + * Allowed countries + * @type {Array} + * @memberof V2RuleAuth */ - 'custom_response_status_code'?: number; - /** - * Legacy field for status code (deprecated) - * @type {number} - * @memberof V2RuleCustomResponseRequest - */ - 'status_code'?: number; - /** - * Legacy field for response body (deprecated) - * @type {string} - * @memberof V2RuleCustomResponseRequest - */ - 'body'?: string; -} -/** - * - * @export - * @interface V2RuleFunction - */ -export interface V2RuleFunction { - /** - * Rule name - * @type {string} - * @memberof V2RuleFunction - */ - 'name'?: string; - /** - * Rule UUID - * @type {string} - * @memberof V2RuleFunction - */ - 'uuid': string; - /** - * Rule ID - * @type {string} - * @memberof V2RuleFunction - */ - 'rule_id'?: string; - /** - * Rule weight - * @type {number} - * @memberof V2RuleFunction - */ - 'weight'?: number; - /** - * URL patterns - * @type {Array} - * @memberof V2RuleFunction - */ - 'url'?: Array; - /** - * Domain patterns - * @type {Array} - * @memberof V2RuleFunction - */ - 'domain'?: Array; - /** - * Whether rule is disabled - * @type {boolean} - * @memberof V2RuleFunction - */ - 'disabled': boolean; - /** - * Only apply with cookie - * @type {string} - * @memberof V2RuleFunction - */ - 'only_with_cookie'?: string; - /** - * HTTP method - * @type {string} - * @memberof V2RuleFunction - */ - 'method'?: string; - /** - * Allowed HTTP methods - * @type {Array} - * @memberof V2RuleFunction - */ - 'method_is'?: Array; - /** - * Excluded HTTP methods - * @type {Array} - * @memberof V2RuleFunction - */ - 'method_is_not'?: Array; - /** - * IP address - * @type {string} - * @memberof V2RuleFunction - */ - 'ip'?: string; - /** - * Allowed IP addresses - * @type {Array} - * @memberof V2RuleFunction - */ - 'ip_is'?: Array; - /** - * Excluded IP addresses - * @type {Array} - * @memberof V2RuleFunction - */ - 'ip_is_not'?: Array; - /** - * Country code - * @type {string} - * @memberof V2RuleFunction - */ - 'country'?: string; - /** - * Allowed countries - * @type {Array} - * @memberof V2RuleFunction - */ - 'country_is'?: Array; + 'country_is'?: Array; /** * Excluded countries * @type {Array} - * @memberof V2RuleFunction + * @memberof V2RuleAuth */ 'country_is_not'?: Array; /** * Rule action * @type {string} - * @memberof V2RuleFunction + * @memberof V2RuleAuth */ 'action': string; /** * - * @type {V2RuleFunctionAction} - * @memberof V2RuleFunction + * @type {V2RuleAuthAction} + * @memberof V2RuleAuth */ - 'action_config': V2RuleFunctionAction; + 'action_config': V2RuleAuthAction; } /** * * @export - * @interface V2RuleFunctionAction + * @interface V2RuleAuthAction */ -export interface V2RuleFunctionAction { +export interface V2RuleAuthAction { /** - * Function UUID + * Authentication username * @type {string} - * @memberof V2RuleFunctionAction + * @memberof V2RuleAuthAction */ - 'fn_uuid': string; + 'auth_user': string; + /** + * Authentication password + * @type {string} + * @memberof V2RuleAuthAction + */ + 'auth_pass': string; } /** * * @export - * @interface V2RuleFunctionRequest + * @interface V2RuleAuthRequest */ -export interface V2RuleFunctionRequest { +export interface V2RuleAuthRequest { /** * Domain patterns (default: any) * @type {Array} - * @memberof V2RuleFunctionRequest + * @memberof V2RuleAuthRequest */ 'domain': Array; /** * Rule name * @type {string} - * @memberof V2RuleFunctionRequest + * @memberof V2RuleAuthRequest */ 'name'?: string; /** * Rule UUID * @type {string} - * @memberof V2RuleFunctionRequest + * @memberof V2RuleAuthRequest */ 'uuid'?: string; /** * Rule weight * @type {number} - * @memberof V2RuleFunctionRequest + * @memberof V2RuleAuthRequest */ 'weight'?: number; /** * Whether rule is disabled * @type {boolean} - * @memberof V2RuleFunctionRequest + * @memberof V2RuleAuthRequest */ 'disabled'?: boolean; /** * URL patterns * @type {Array} - * @memberof V2RuleFunctionRequest + * @memberof V2RuleAuthRequest */ 'url': Array; /** * Country filter type (country_is, country_is_not, any) * @type {string} - * @memberof V2RuleFunctionRequest + * @memberof V2RuleAuthRequest */ 'country'?: string; /** * Allowed countries * @type {Array} - * @memberof V2RuleFunctionRequest + * @memberof V2RuleAuthRequest */ 'country_is'?: Array; /** * Excluded countries * @type {Array} - * @memberof V2RuleFunctionRequest + * @memberof V2RuleAuthRequest */ 'country_is_not'?: Array; /** * Method filter type (method_is, method_is_not, any) * @type {string} - * @memberof V2RuleFunctionRequest + * @memberof V2RuleAuthRequest */ 'method'?: string; /** * Allowed HTTP methods * @type {Array} - * @memberof V2RuleFunctionRequest + * @memberof V2RuleAuthRequest */ 'method_is'?: Array; /** * Excluded HTTP methods * @type {Array} - * @memberof V2RuleFunctionRequest + * @memberof V2RuleAuthRequest */ 'method_is_not'?: Array; /** * IP filter type (ip_is, ip_is_not, any) * @type {string} - * @memberof V2RuleFunctionRequest + * @memberof V2RuleAuthRequest */ 'ip'?: string; /** * Allowed IP addresses * @type {Array} - * @memberof V2RuleFunctionRequest + * @memberof V2RuleAuthRequest */ 'ip_is'?: Array; /** * Excluded IP addresses * @type {Array} - * @memberof V2RuleFunctionRequest + * @memberof V2RuleAuthRequest */ 'ip_is_not'?: Array; /** - * Function UUID + * Authentication username * @type {string} - * @memberof V2RuleFunctionRequest + * @memberof V2RuleAuthRequest */ - 'fn_uuid': string; + 'auth_user': string; + /** + * Authentication password + * @type {string} + * @memberof V2RuleAuthRequest + */ + 'auth_pass': string; } /** * * @export - * @interface V2RuleHeader + * @interface V2RuleBotChallenge */ -export interface V2RuleHeader { +export interface V2RuleBotChallenge { /** * Rule name * @type {string} - * @memberof V2RuleHeader + * @memberof V2RuleBotChallenge */ 'name'?: string; /** * Rule UUID * @type {string} - * @memberof V2RuleHeader + * @memberof V2RuleBotChallenge */ 'uuid': string; /** * Rule ID * @type {string} - * @memberof V2RuleHeader + * @memberof V2RuleBotChallenge */ 'rule_id'?: string; /** * Rule weight * @type {number} - * @memberof V2RuleHeader + * @memberof V2RuleBotChallenge */ 'weight'?: number; /** * URL patterns * @type {Array} - * @memberof V2RuleHeader + * @memberof V2RuleBotChallenge */ 'url'?: Array; /** * Domain patterns * @type {Array} - * @memberof V2RuleHeader + * @memberof V2RuleBotChallenge */ 'domain'?: Array; /** * Whether rule is disabled * @type {boolean} - * @memberof V2RuleHeader + * @memberof V2RuleBotChallenge */ 'disabled': boolean; /** * Only apply with cookie * @type {string} - * @memberof V2RuleHeader + * @memberof V2RuleBotChallenge */ 'only_with_cookie'?: string; /** * HTTP method * @type {string} - * @memberof V2RuleHeader + * @memberof V2RuleBotChallenge */ 'method'?: string; /** * Allowed HTTP methods * @type {Array} - * @memberof V2RuleHeader + * @memberof V2RuleBotChallenge */ 'method_is'?: Array; /** * Excluded HTTP methods * @type {Array} - * @memberof V2RuleHeader + * @memberof V2RuleBotChallenge */ 'method_is_not'?: Array; /** * IP address * @type {string} - * @memberof V2RuleHeader + * @memberof V2RuleBotChallenge */ 'ip'?: string; /** * Allowed IP addresses * @type {Array} - * @memberof V2RuleHeader + * @memberof V2RuleBotChallenge */ 'ip_is'?: Array; /** * Excluded IP addresses * @type {Array} - * @memberof V2RuleHeader + * @memberof V2RuleBotChallenge */ 'ip_is_not'?: Array; /** * Country code * @type {string} - * @memberof V2RuleHeader + * @memberof V2RuleBotChallenge */ 'country'?: string; /** * Allowed countries * @type {Array} - * @memberof V2RuleHeader + * @memberof V2RuleBotChallenge */ 'country_is'?: Array; /** * Excluded countries * @type {Array} - * @memberof V2RuleHeader + * @memberof V2RuleBotChallenge */ 'country_is_not'?: Array; /** * Rule action * @type {string} - * @memberof V2RuleHeader + * @memberof V2RuleBotChallenge */ 'action': string; /** * - * @type {V2RuleHeaderAction} - * @memberof V2RuleHeader + * @type {V2RuleBotChallengeAction} + * @memberof V2RuleBotChallenge */ - 'action_config': V2RuleHeaderAction; + 'action_config': V2RuleBotChallengeAction; } /** * * @export - * @interface V2RuleHeaderAction + * @interface V2RuleBotChallengeAction */ -export interface V2RuleHeaderAction { +export interface V2RuleBotChallengeAction { /** - * Headers to set - * @type {{ [key: string]: string; }} - * @memberof V2RuleHeaderAction + * Challenge type (invisible or checkbox) + * @type {string} + * @memberof V2RuleBotChallengeAction */ - 'headers': { [key: string]: string; }; + 'robot_challenge_type': string; + /** + * Verification TTL in seconds + * @type {number} + * @memberof V2RuleBotChallengeAction + */ + 'robot_challenge_verification_ttl'?: number; + /** + * Challenge TTL in seconds + * @type {number} + * @memberof V2RuleBotChallengeAction + */ + 'robot_challenge_challenge_ttl'?: number; } /** * * @export - * @interface V2RuleHeaderRequest + * @interface V2RuleBotChallengeRequest */ -export interface V2RuleHeaderRequest { +export interface V2RuleBotChallengeRequest { /** * Domain patterns (default: any) * @type {Array} - * @memberof V2RuleHeaderRequest + * @memberof V2RuleBotChallengeRequest */ 'domain': Array; /** * Rule name * @type {string} - * @memberof V2RuleHeaderRequest + * @memberof V2RuleBotChallengeRequest */ 'name'?: string; /** * Rule UUID * @type {string} - * @memberof V2RuleHeaderRequest + * @memberof V2RuleBotChallengeRequest */ 'uuid'?: string; /** * Rule weight * @type {number} - * @memberof V2RuleHeaderRequest + * @memberof V2RuleBotChallengeRequest */ 'weight'?: number; /** * Whether rule is disabled * @type {boolean} - * @memberof V2RuleHeaderRequest + * @memberof V2RuleBotChallengeRequest */ 'disabled'?: boolean; /** * URL patterns * @type {Array} - * @memberof V2RuleHeaderRequest + * @memberof V2RuleBotChallengeRequest */ 'url': Array; /** * Country filter type (country_is, country_is_not, any) * @type {string} - * @memberof V2RuleHeaderRequest + * @memberof V2RuleBotChallengeRequest */ 'country'?: string; /** * Allowed countries * @type {Array} - * @memberof V2RuleHeaderRequest + * @memberof V2RuleBotChallengeRequest */ 'country_is'?: Array; /** * Excluded countries * @type {Array} - * @memberof V2RuleHeaderRequest + * @memberof V2RuleBotChallengeRequest */ 'country_is_not'?: Array; /** * Method filter type (method_is, method_is_not, any) * @type {string} - * @memberof V2RuleHeaderRequest + * @memberof V2RuleBotChallengeRequest */ 'method'?: string; /** * Allowed HTTP methods * @type {Array} - * @memberof V2RuleHeaderRequest + * @memberof V2RuleBotChallengeRequest */ 'method_is'?: Array; /** * Excluded HTTP methods * @type {Array} - * @memberof V2RuleHeaderRequest + * @memberof V2RuleBotChallengeRequest */ 'method_is_not'?: Array; /** * IP filter type (ip_is, ip_is_not, any) * @type {string} - * @memberof V2RuleHeaderRequest + * @memberof V2RuleBotChallengeRequest */ 'ip'?: string; /** * Allowed IP addresses * @type {Array} - * @memberof V2RuleHeaderRequest + * @memberof V2RuleBotChallengeRequest */ 'ip_is'?: Array; /** * Excluded IP addresses * @type {Array} - * @memberof V2RuleHeaderRequest + * @memberof V2RuleBotChallengeRequest */ 'ip_is_not'?: Array; /** - * Headers to set - * @type {{ [key: string]: string; }} - * @memberof V2RuleHeaderRequest + * Challenge type (invisible or checkbox) + * @type {string} + * @memberof V2RuleBotChallengeRequest */ - 'headers': { [key: string]: string; }; + 'robot_challenge_type': string; + /** + * Verification TTL in seconds + * @type {number} + * @memberof V2RuleBotChallengeRequest + */ + 'robot_challenge_verification_ttl'?: number; + /** + * Challenge TTL in seconds + * @type {number} + * @memberof V2RuleBotChallengeRequest + */ + 'robot_challenge_challenge_ttl'?: number; } /** * * @export - * @interface V2RuleProxy + * @interface V2RuleContentFilter */ -export interface V2RuleProxy { +export interface V2RuleContentFilter { /** * Rule name * @type {string} - * @memberof V2RuleProxy + * @memberof V2RuleContentFilter */ 'name'?: string; /** * Rule UUID * @type {string} - * @memberof V2RuleProxy + * @memberof V2RuleContentFilter */ 'uuid': string; /** * Rule ID * @type {string} - * @memberof V2RuleProxy + * @memberof V2RuleContentFilter */ 'rule_id'?: string; /** * Rule weight * @type {number} - * @memberof V2RuleProxy + * @memberof V2RuleContentFilter */ 'weight'?: number; /** * URL patterns * @type {Array} - * @memberof V2RuleProxy + * @memberof V2RuleContentFilter */ 'url'?: Array; /** * Domain patterns * @type {Array} - * @memberof V2RuleProxy + * @memberof V2RuleContentFilter */ 'domain'?: Array; /** * Whether rule is disabled * @type {boolean} - * @memberof V2RuleProxy + * @memberof V2RuleContentFilter */ 'disabled': boolean; /** * Only apply with cookie * @type {string} - * @memberof V2RuleProxy + * @memberof V2RuleContentFilter */ 'only_with_cookie'?: string; /** * HTTP method * @type {string} - * @memberof V2RuleProxy + * @memberof V2RuleContentFilter */ 'method'?: string; /** * Allowed HTTP methods * @type {Array} - * @memberof V2RuleProxy + * @memberof V2RuleContentFilter */ 'method_is'?: Array; /** * Excluded HTTP methods * @type {Array} - * @memberof V2RuleProxy + * @memberof V2RuleContentFilter */ 'method_is_not'?: Array; /** * IP address * @type {string} - * @memberof V2RuleProxy + * @memberof V2RuleContentFilter */ 'ip'?: string; /** * Allowed IP addresses * @type {Array} - * @memberof V2RuleProxy + * @memberof V2RuleContentFilter */ 'ip_is'?: Array; /** * Excluded IP addresses * @type {Array} - * @memberof V2RuleProxy + * @memberof V2RuleContentFilter */ 'ip_is_not'?: Array; /** * Country code * @type {string} - * @memberof V2RuleProxy + * @memberof V2RuleContentFilter */ 'country'?: string; /** * Allowed countries * @type {Array} - * @memberof V2RuleProxy + * @memberof V2RuleContentFilter */ 'country_is'?: Array; /** * Excluded countries * @type {Array} - * @memberof V2RuleProxy + * @memberof V2RuleContentFilter */ 'country_is_not'?: Array; /** * Rule action * @type {string} - * @memberof V2RuleProxy + * @memberof V2RuleContentFilter */ 'action': string; /** * - * @type {V2RuleProxyAction} - * @memberof V2RuleProxy + * @type {V2RuleContentFilterAction} + * @memberof V2RuleContentFilter */ - 'action_config': V2RuleProxyAction; + 'action_config': V2RuleContentFilterAction; } /** * * @export - * @interface V2RuleProxyAction + * @interface V2RuleContentFilterAction */ -export interface V2RuleProxyAction { +export interface V2RuleContentFilterAction { /** - * Target URL to proxy to + * Function UUID * @type {string} - * @memberof V2RuleProxyAction + * @memberof V2RuleContentFilterAction */ - 'to': string; + 'fn_uuid': string; +} +/** + * + * @export + * @interface V2RuleContentFilterRequest + */ +export interface V2RuleContentFilterRequest { /** - * Host header override - * @type {string} - * @memberof V2RuleProxyAction + * Domain patterns (default: any) + * @type {Array} + * @memberof V2RuleContentFilterRequest */ - 'host'?: string; + 'domain': Array; /** - * Basic auth username + * Rule name * @type {string} - * @memberof V2RuleProxyAction + * @memberof V2RuleContentFilterRequest */ - 'auth_user'?: string; + 'name'?: string; /** - * Basic auth password + * Rule UUID * @type {string} - * @memberof V2RuleProxyAction + * @memberof V2RuleContentFilterRequest */ - 'auth_pass'?: string; + 'uuid'?: string; /** - * Disable SSL verification - * @type {boolean} - * @memberof V2RuleProxyAction + * Rule weight + * @type {number} + * @memberof V2RuleContentFilterRequest */ - 'disable_ssl_verify'?: boolean; + 'weight'?: number; /** - * Cache lifetime - * @type {string} - * @memberof V2RuleProxyAction + * Whether rule is disabled + * @type {boolean} + * @memberof V2RuleContentFilterRequest */ - 'cache_lifetime'?: string | null; + 'disabled'?: boolean; /** - * Only proxy 404 responses - * @type {boolean} - * @memberof V2RuleProxyAction + * URL patterns + * @type {Array} + * @memberof V2RuleContentFilterRequest */ - 'only_proxy_404'?: boolean; + 'url': Array; /** - * Headers to inject - * @type {{ [key: string]: string; }} - * @memberof V2RuleProxyAction + * Country filter type (country_is, country_is_not, any) + * @type {string} + * @memberof V2RuleContentFilterRequest */ - 'inject_headers'?: { [key: string]: string; } | null; + 'country'?: string; /** - * Headers to strip from response + * Allowed countries * @type {Array} - * @memberof V2RuleProxyAction + * @memberof V2RuleContentFilterRequest */ - 'proxy_strip_headers'?: Array; + 'country_is'?: Array; /** - * Headers to strip from request + * Excluded countries * @type {Array} - * @memberof V2RuleProxyAction + * @memberof V2RuleContentFilterRequest */ - 'proxy_strip_request_headers'?: Array; + 'country_is_not'?: Array; /** - * Origin timeout + * Method filter type (method_is, method_is_not, any) * @type {string} - * @memberof V2RuleProxyAction + * @memberof V2RuleContentFilterRequest */ - 'origin_timeout'?: string; + 'method'?: string; /** - * Enable failover mode - * @type {boolean} - * @memberof V2RuleProxyAction + * Allowed HTTP methods + * @type {Array} + * @memberof V2RuleContentFilterRequest */ - 'failover_mode'?: boolean; + 'method_is'?: Array; /** - * Failover TTFB threshold + * Excluded HTTP methods + * @type {Array} + * @memberof V2RuleContentFilterRequest + */ + 'method_is_not'?: Array; + /** + * IP filter type (ip_is, ip_is_not, any) * @type {string} - * @memberof V2RuleProxyAction + * @memberof V2RuleContentFilterRequest */ - 'failover_origin_ttfb'?: string; + 'ip'?: string; /** - * Status codes for failover (default: 200,404,301,302,304) + * Allowed IP addresses * @type {Array} - * @memberof V2RuleProxyAction + * @memberof V2RuleContentFilterRequest */ - 'failover_origin_status_codes'?: Array; + 'ip_is'?: Array; /** - * Failover cache lifetime - * @type {string} - * @memberof V2RuleProxyAction + * Excluded IP addresses + * @type {Array} + * @memberof V2RuleContentFilterRequest */ - 'failover_lifetime'?: string; + 'ip_is_not'?: Array; /** - * Notification type (none, slack) + * Function UUID * @type {string} - * @memberof V2RuleProxyAction + * @memberof V2RuleContentFilterRequest */ - 'notify'?: V2RuleProxyActionNotifyEnum; + 'fn_uuid': string; +} +/** + * + * @export + * @interface V2RuleCustomResponse + */ +export interface V2RuleCustomResponse { /** - * - * @type {V2RuleProxyActionNotifyConfig} - * @memberof V2RuleProxyAction + * Rule name + * @type {string} + * @memberof V2RuleCustomResponse */ - 'notify_config'?: V2RuleProxyActionNotifyConfig | null; + 'name'?: string; /** - * WAF enabled - * @type {boolean} - * @memberof V2RuleProxyAction + * Rule UUID + * @type {string} + * @memberof V2RuleCustomResponse */ - 'waf_enabled'?: boolean; + 'uuid': string; /** - * - * @type {WafConfig} - * @memberof V2RuleProxyAction + * Rule ID + * @type {string} + * @memberof V2RuleCustomResponse */ - 'waf_config'?: WafConfig | null; + 'rule_id'?: string; /** - * Proxy alert enabled - * @type {boolean} - * @memberof V2RuleProxyAction + * Rule weight + * @type {number} + * @memberof V2RuleCustomResponse */ - 'proxy_alert_enabled'?: boolean; + 'weight'?: number; /** - * Proxy inline function enabled - * @type {boolean} - * @memberof V2RuleProxyAction + * URL patterns + * @type {Array} + * @memberof V2RuleCustomResponse */ - 'proxy_inline_fn_enabled'?: boolean; + 'url'?: Array; /** - * Enable Quant Cloud application proxy mode + * Domain patterns + * @type {Array} + * @memberof V2RuleCustomResponse + */ + 'domain'?: Array; + /** + * Whether rule is disabled * @type {boolean} - * @memberof V2RuleProxyAction + * @memberof V2RuleCustomResponse */ - 'application_proxy'?: boolean; + 'disabled': boolean; /** - * Quant Cloud application name (required when application_proxy is true) + * Only apply with cookie * @type {string} - * @memberof V2RuleProxyAction + * @memberof V2RuleCustomResponse */ - 'application_name'?: string; + 'only_with_cookie'?: string; /** - * Quant Cloud application environment (required when application_proxy is true) + * HTTP method * @type {string} - * @memberof V2RuleProxyAction + * @memberof V2RuleCustomResponse */ - 'application_environment'?: string; + 'method'?: string; /** - * Quant Cloud application container (required when application_proxy is true) + * Allowed HTTP methods + * @type {Array} + * @memberof V2RuleCustomResponse + */ + 'method_is'?: Array; + /** + * Excluded HTTP methods + * @type {Array} + * @memberof V2RuleCustomResponse + */ + 'method_is_not'?: Array; + /** + * IP address * @type {string} - * @memberof V2RuleProxyAction + * @memberof V2RuleCustomResponse */ - 'application_container'?: string; + 'ip'?: string; /** - * Quant Cloud application port (required when application_proxy is true) - * @type {number} - * @memberof V2RuleProxyAction + * Allowed IP addresses + * @type {Array} + * @memberof V2RuleCustomResponse */ - 'application_port'?: number; + 'ip_is'?: Array; /** - * - * @type {V2RuleProxyActionQuantCloudSelection} - * @memberof V2RuleProxyAction + * Excluded IP addresses + * @type {Array} + * @memberof V2RuleCustomResponse */ - 'quant_cloud_selection'?: V2RuleProxyActionQuantCloudSelection | null; + 'ip_is_not'?: Array; /** - * Static error page content (HTML) to serve on origin errors + * Country code * @type {string} - * @memberof V2RuleProxyAction + * @memberof V2RuleCustomResponse */ - 'static_error_page'?: string | null; + 'country'?: string; /** - * Origin status codes that trigger static error page + * Allowed countries * @type {Array} - * @memberof V2RuleProxyAction + * @memberof V2RuleCustomResponse */ - 'static_error_page_status_codes'?: Array; -} - -export const V2RuleProxyActionNotifyEnum = { - None: 'none', - Slack: 'slack' -} as const; - -export type V2RuleProxyActionNotifyEnum = typeof V2RuleProxyActionNotifyEnum[keyof typeof V2RuleProxyActionNotifyEnum]; - -/** - * Notification configuration (required when notify is slack) - * @export - * @interface V2RuleProxyActionNotifyConfig - */ -export interface V2RuleProxyActionNotifyConfig { + 'country_is'?: Array; /** - * Slack webhook URL - * @type {string} - * @memberof V2RuleProxyActionNotifyConfig + * Excluded countries + * @type {Array} + * @memberof V2RuleCustomResponse */ - 'webhook_url'?: string; -} -/** - * Quant Cloud application proxy selection (populated automatically when application_proxy is enabled) - * @export - * @interface V2RuleProxyActionQuantCloudSelection - */ -export interface V2RuleProxyActionQuantCloudSelection { + 'country_is_not'?: Array; /** - * Application name + * Rule action * @type {string} - * @memberof V2RuleProxyActionQuantCloudSelection + * @memberof V2RuleCustomResponse */ - 'app'?: string; + 'action': string; /** - * Environment name - * @type {string} - * @memberof V2RuleProxyActionQuantCloudSelection + * + * @type {V2RuleCustomResponseAction} + * @memberof V2RuleCustomResponse */ - 'env'?: string; + 'action_config'?: V2RuleCustomResponseAction; +} +/** + * + * @export + * @interface V2RuleCustomResponseAction + */ +export interface V2RuleCustomResponseAction { /** - * Container name + * Custom response body content * @type {string} - * @memberof V2RuleProxyActionQuantCloudSelection + * @memberof V2RuleCustomResponseAction */ - 'container'?: string; + 'custom_response_body': string; /** - * Container port + * HTTP status code for custom response * @type {number} - * @memberof V2RuleProxyActionQuantCloudSelection + * @memberof V2RuleCustomResponseAction */ - 'port'?: number; + 'custom_response_status_code'?: number; } /** * * @export - * @interface V2RuleProxyRequest + * @interface V2RuleCustomResponseRequest */ -export interface V2RuleProxyRequest { +export interface V2RuleCustomResponseRequest { /** * Domain patterns (default: any) * @type {Array} - * @memberof V2RuleProxyRequest + * @memberof V2RuleCustomResponseRequest */ 'domain': Array; /** * Rule name * @type {string} - * @memberof V2RuleProxyRequest + * @memberof V2RuleCustomResponseRequest */ 'name'?: string; /** * Rule UUID * @type {string} - * @memberof V2RuleProxyRequest + * @memberof V2RuleCustomResponseRequest */ 'uuid'?: string; /** * Rule weight * @type {number} - * @memberof V2RuleProxyRequest + * @memberof V2RuleCustomResponseRequest */ 'weight'?: number; /** * Whether rule is disabled * @type {boolean} - * @memberof V2RuleProxyRequest + * @memberof V2RuleCustomResponseRequest */ 'disabled'?: boolean; /** * URL patterns * @type {Array} - * @memberof V2RuleProxyRequest + * @memberof V2RuleCustomResponseRequest */ 'url': Array; /** * Country filter type (country_is, country_is_not, any) * @type {string} - * @memberof V2RuleProxyRequest + * @memberof V2RuleCustomResponseRequest */ 'country'?: string; /** * Allowed countries * @type {Array} - * @memberof V2RuleProxyRequest + * @memberof V2RuleCustomResponseRequest */ 'country_is'?: Array; /** * Excluded countries * @type {Array} - * @memberof V2RuleProxyRequest + * @memberof V2RuleCustomResponseRequest */ 'country_is_not'?: Array; /** * Method filter type (method_is, method_is_not, any) * @type {string} - * @memberof V2RuleProxyRequest + * @memberof V2RuleCustomResponseRequest */ 'method'?: string; /** * Allowed HTTP methods * @type {Array} - * @memberof V2RuleProxyRequest + * @memberof V2RuleCustomResponseRequest */ 'method_is'?: Array; /** * Excluded HTTP methods * @type {Array} - * @memberof V2RuleProxyRequest + * @memberof V2RuleCustomResponseRequest */ 'method_is_not'?: Array; /** * IP filter type (ip_is, ip_is_not, any) * @type {string} - * @memberof V2RuleProxyRequest + * @memberof V2RuleCustomResponseRequest */ 'ip'?: string; /** * Allowed IP addresses * @type {Array} - * @memberof V2RuleProxyRequest + * @memberof V2RuleCustomResponseRequest */ 'ip_is'?: Array; /** * Excluded IP addresses * @type {Array} - * @memberof V2RuleProxyRequest + * @memberof V2RuleCustomResponseRequest */ 'ip_is_not'?: Array; /** - * Target URL to proxy to + * Custom response body content * @type {string} - * @memberof V2RuleProxyRequest + * @memberof V2RuleCustomResponseRequest */ - 'to': string; + 'custom_response_body': string; /** - * Host header override - * @type {string} - * @memberof V2RuleProxyRequest + * HTTP status code for custom response + * @type {number} + * @memberof V2RuleCustomResponseRequest */ - 'host'?: string; + 'custom_response_status_code'?: number; /** - * Basic auth username - * @type {string} - * @memberof V2RuleProxyRequest + * Legacy field for status code (deprecated) + * @type {number} + * @memberof V2RuleCustomResponseRequest */ - 'auth_user'?: string; + 'status_code'?: number; /** - * Basic auth password + * Legacy field for response body (deprecated) * @type {string} - * @memberof V2RuleProxyRequest + * @memberof V2RuleCustomResponseRequest */ - 'auth_pass'?: string; + 'body'?: string; +} +/** + * + * @export + * @interface V2RuleFunction + */ +export interface V2RuleFunction { /** - * Disable SSL verification - * @type {boolean} - * @memberof V2RuleProxyRequest + * Rule name + * @type {string} + * @memberof V2RuleFunction */ - 'disable_ssl_verify'?: boolean; + 'name'?: string; /** - * Cache lifetime + * Rule UUID * @type {string} - * @memberof V2RuleProxyRequest + * @memberof V2RuleFunction */ - 'cache_lifetime'?: string | null; + 'uuid': string; /** - * Only proxy 404 responses - * @type {boolean} - * @memberof V2RuleProxyRequest + * Rule ID + * @type {string} + * @memberof V2RuleFunction */ - 'only_proxy_404'?: boolean; + 'rule_id'?: string; /** - * Headers to inject - * @type {{ [key: string]: string; }} - * @memberof V2RuleProxyRequest + * Rule weight + * @type {number} + * @memberof V2RuleFunction */ - 'inject_headers'?: { [key: string]: string; } | null; + 'weight'?: number; /** - * Headers to strip from response + * URL patterns * @type {Array} - * @memberof V2RuleProxyRequest + * @memberof V2RuleFunction */ - 'proxy_strip_headers'?: Array; + 'url'?: Array; /** - * Headers to strip from request + * Domain patterns * @type {Array} - * @memberof V2RuleProxyRequest - */ - 'proxy_strip_request_headers'?: Array; - /** - * Origin timeout - * @type {string} - * @memberof V2RuleProxyRequest - */ - 'origin_timeout'?: string; - /** - * Enable failover mode - * @type {boolean} - * @memberof V2RuleProxyRequest - */ - 'failover_mode'?: boolean; - /** - * Failover TTFB threshold in milliseconds - * @type {string} - * @memberof V2RuleProxyRequest - */ - 'failover_origin_ttfb'?: string; - /** - * Origin status codes that trigger failover - * @type {Array} - * @memberof V2RuleProxyRequest - */ - 'failover_origin_status_codes'?: Array; - /** - * Failover cache lifetime in seconds - * @type {string} - * @memberof V2RuleProxyRequest - */ - 'failover_lifetime'?: string; - /** - * Proxy alert enabled - * @type {boolean} - * @memberof V2RuleProxyRequest - */ - 'proxy_alert_enabled'?: boolean; - /** - * WAF enabled - * @type {boolean} - * @memberof V2RuleProxyRequest - */ - 'waf_enabled'?: boolean; - /** - * - * @type {WafConfig} - * @memberof V2RuleProxyRequest - */ - 'waf_config'?: WafConfig | null; - /** - * Enable Quant Cloud application proxy mode - * @type {boolean} - * @memberof V2RuleProxyRequest - */ - 'application_proxy'?: boolean; - /** - * Quant Cloud application name (required when application_proxy is true) - * @type {string} - * @memberof V2RuleProxyRequest - */ - 'application_name'?: string; - /** - * Quant Cloud application environment (required when application_proxy is true) - * @type {string} - * @memberof V2RuleProxyRequest - */ - 'application_environment'?: string; - /** - * Quant Cloud application container (required when application_proxy is true) - * @type {string} - * @memberof V2RuleProxyRequest - */ - 'application_container'?: string; - /** - * Quant Cloud application port (required when application_proxy is true) - * @type {number} - * @memberof V2RuleProxyRequest - */ - 'application_port'?: number; - /** - * Static error page content (HTML) to serve on origin errors - * @type {string} - * @memberof V2RuleProxyRequest - */ - 'static_error_page'?: string | null; - /** - * Origin status codes that trigger static error page - * @type {Array} - * @memberof V2RuleProxyRequest - */ - 'static_error_page_status_codes'?: Array; -} -/** - * - * @export - * @interface V2RuleRedirect - */ -export interface V2RuleRedirect { - /** - * Rule name - * @type {string} - * @memberof V2RuleRedirect - */ - 'name'?: string; - /** - * Rule UUID - * @type {string} - * @memberof V2RuleRedirect - */ - 'uuid': string; - /** - * Rule ID - * @type {string} - * @memberof V2RuleRedirect - */ - 'rule_id'?: string; - /** - * Rule weight - * @type {number} - * @memberof V2RuleRedirect - */ - 'weight'?: number; - /** - * URL patterns - * @type {Array} - * @memberof V2RuleRedirect - */ - 'url'?: Array; - /** - * Domain patterns - * @type {Array} - * @memberof V2RuleRedirect + * @memberof V2RuleFunction */ 'domain'?: Array; /** * Whether rule is disabled * @type {boolean} - * @memberof V2RuleRedirect + * @memberof V2RuleFunction */ 'disabled': boolean; /** * Only apply with cookie * @type {string} - * @memberof V2RuleRedirect + * @memberof V2RuleFunction */ 'only_with_cookie'?: string; /** * HTTP method * @type {string} - * @memberof V2RuleRedirect + * @memberof V2RuleFunction */ 'method'?: string; /** * Allowed HTTP methods * @type {Array} - * @memberof V2RuleRedirect + * @memberof V2RuleFunction */ 'method_is'?: Array; /** * Excluded HTTP methods * @type {Array} - * @memberof V2RuleRedirect + * @memberof V2RuleFunction */ 'method_is_not'?: Array; /** * IP address * @type {string} - * @memberof V2RuleRedirect + * @memberof V2RuleFunction */ 'ip'?: string; /** * Allowed IP addresses * @type {Array} - * @memberof V2RuleRedirect + * @memberof V2RuleFunction */ 'ip_is'?: Array; /** * Excluded IP addresses * @type {Array} - * @memberof V2RuleRedirect + * @memberof V2RuleFunction */ 'ip_is_not'?: Array; /** * Country code * @type {string} - * @memberof V2RuleRedirect + * @memberof V2RuleFunction */ 'country'?: string; /** * Allowed countries * @type {Array} - * @memberof V2RuleRedirect + * @memberof V2RuleFunction */ 'country_is'?: Array; /** * Excluded countries * @type {Array} - * @memberof V2RuleRedirect + * @memberof V2RuleFunction */ 'country_is_not'?: Array; /** * Rule action * @type {string} - * @memberof V2RuleRedirect + * @memberof V2RuleFunction */ 'action': string; /** * - * @type {V2RuleRedirectAction} - * @memberof V2RuleRedirect + * @type {V2RuleFunctionAction} + * @memberof V2RuleFunction */ - 'action_config'?: V2RuleRedirectAction; + 'action_config': V2RuleFunctionAction; } /** * * @export - * @interface V2RuleRedirectAction + * @interface V2RuleFunctionAction */ -export interface V2RuleRedirectAction { - /** - * Redirect destination URL - * @type {string} - * @memberof V2RuleRedirectAction - */ - 'to': string; +export interface V2RuleFunctionAction { /** - * HTTP status code for redirect + * Function UUID * @type {string} - * @memberof V2RuleRedirectAction + * @memberof V2RuleFunctionAction */ - 'status_code'?: string; + 'fn_uuid': string; } /** * * @export - * @interface V2RuleRedirectRequest + * @interface V2RuleFunctionRequest */ -export interface V2RuleRedirectRequest { +export interface V2RuleFunctionRequest { /** * Domain patterns (default: any) * @type {Array} - * @memberof V2RuleRedirectRequest + * @memberof V2RuleFunctionRequest */ 'domain': Array; /** * Rule name * @type {string} - * @memberof V2RuleRedirectRequest + * @memberof V2RuleFunctionRequest */ 'name'?: string; /** * Rule UUID * @type {string} - * @memberof V2RuleRedirectRequest + * @memberof V2RuleFunctionRequest */ 'uuid'?: string; /** * Rule weight * @type {number} - * @memberof V2RuleRedirectRequest + * @memberof V2RuleFunctionRequest */ 'weight'?: number; /** * Whether rule is disabled * @type {boolean} - * @memberof V2RuleRedirectRequest + * @memberof V2RuleFunctionRequest */ 'disabled'?: boolean; /** * URL patterns * @type {Array} - * @memberof V2RuleRedirectRequest + * @memberof V2RuleFunctionRequest */ 'url': Array; /** * Country filter type (country_is, country_is_not, any) * @type {string} - * @memberof V2RuleRedirectRequest + * @memberof V2RuleFunctionRequest */ 'country'?: string; /** * Allowed countries * @type {Array} - * @memberof V2RuleRedirectRequest + * @memberof V2RuleFunctionRequest */ 'country_is'?: Array; /** * Excluded countries * @type {Array} - * @memberof V2RuleRedirectRequest + * @memberof V2RuleFunctionRequest */ 'country_is_not'?: Array; /** * Method filter type (method_is, method_is_not, any) * @type {string} - * @memberof V2RuleRedirectRequest + * @memberof V2RuleFunctionRequest */ 'method'?: string; /** * Allowed HTTP methods * @type {Array} - * @memberof V2RuleRedirectRequest + * @memberof V2RuleFunctionRequest */ 'method_is'?: Array; /** * Excluded HTTP methods * @type {Array} - * @memberof V2RuleRedirectRequest + * @memberof V2RuleFunctionRequest */ 'method_is_not'?: Array; /** * IP filter type (ip_is, ip_is_not, any) * @type {string} - * @memberof V2RuleRedirectRequest + * @memberof V2RuleFunctionRequest */ 'ip'?: string; /** * Allowed IP addresses * @type {Array} - * @memberof V2RuleRedirectRequest + * @memberof V2RuleFunctionRequest */ 'ip_is'?: Array; /** * Excluded IP addresses * @type {Array} - * @memberof V2RuleRedirectRequest + * @memberof V2RuleFunctionRequest */ 'ip_is_not'?: Array; /** - * Redirect destination URL - * @type {string} - * @memberof V2RuleRedirectRequest - */ - 'redirect_to': string; - /** - * HTTP status code for redirect + * Function UUID * @type {string} - * @memberof V2RuleRedirectRequest + * @memberof V2RuleFunctionRequest */ - 'redirect_code'?: string; + 'fn_uuid': string; } /** * * @export - * @interface V2RuleRequest + * @interface V2RuleHeader */ -export interface V2RuleRequest { - /** - * Domain patterns (default: any) - * @type {Array} - * @memberof V2RuleRequest - */ - 'domain': Array; +export interface V2RuleHeader { /** * Rule name * @type {string} - * @memberof V2RuleRequest + * @memberof V2RuleHeader */ 'name'?: string; /** * Rule UUID * @type {string} - * @memberof V2RuleRequest + * @memberof V2RuleHeader */ - 'uuid'?: string; + 'uuid': string; + /** + * Rule ID + * @type {string} + * @memberof V2RuleHeader + */ + 'rule_id'?: string; /** * Rule weight * @type {number} - * @memberof V2RuleRequest + * @memberof V2RuleHeader */ 'weight'?: number; - /** - * Whether rule is disabled - * @type {boolean} - * @memberof V2RuleRequest - */ - 'disabled'?: boolean; /** * URL patterns * @type {Array} - * @memberof V2RuleRequest - */ - 'url': Array; - /** - * Country filter type (country_is, country_is_not, any) - * @type {string} - * @memberof V2RuleRequest - */ - 'country'?: string; - /** - * Allowed countries - * @type {Array} - * @memberof V2RuleRequest - */ - 'country_is'?: Array; - /** - * Excluded countries - * @type {Array} - * @memberof V2RuleRequest - */ - 'country_is_not'?: Array; - /** - * Method filter type (method_is, method_is_not, any) - * @type {string} - * @memberof V2RuleRequest - */ - 'method'?: string; - /** - * Allowed HTTP methods - * @type {Array} - * @memberof V2RuleRequest - */ - 'method_is'?: Array; - /** - * Excluded HTTP methods - * @type {Array} - * @memberof V2RuleRequest - */ - 'method_is_not'?: Array; - /** - * IP filter type (ip_is, ip_is_not, any) - * @type {string} - * @memberof V2RuleRequest - */ - 'ip'?: string; - /** - * Allowed IP addresses - * @type {Array} - * @memberof V2RuleRequest - */ - 'ip_is'?: Array; - /** - * Excluded IP addresses - * @type {Array} - * @memberof V2RuleRequest - */ - 'ip_is_not'?: Array; -} -/** - * - * @export - * @interface V2RuleServeStatic - */ -export interface V2RuleServeStatic { - /** - * Rule name - * @type {string} - * @memberof V2RuleServeStatic - */ - 'name'?: string; - /** - * Rule UUID - * @type {string} - * @memberof V2RuleServeStatic - */ - 'uuid': string; - /** - * Rule ID - * @type {string} - * @memberof V2RuleServeStatic - */ - 'rule_id'?: string; - /** - * Rule weight - * @type {number} - * @memberof V2RuleServeStatic - */ - 'weight'?: number; - /** - * URL patterns - * @type {Array} - * @memberof V2RuleServeStatic + * @memberof V2RuleHeader */ 'url'?: Array; /** * Domain patterns * @type {Array} - * @memberof V2RuleServeStatic + * @memberof V2RuleHeader */ 'domain'?: Array; /** * Whether rule is disabled * @type {boolean} - * @memberof V2RuleServeStatic + * @memberof V2RuleHeader */ 'disabled': boolean; /** * Only apply with cookie * @type {string} - * @memberof V2RuleServeStatic + * @memberof V2RuleHeader */ 'only_with_cookie'?: string; /** * HTTP method * @type {string} - * @memberof V2RuleServeStatic + * @memberof V2RuleHeader */ 'method'?: string; /** * Allowed HTTP methods * @type {Array} - * @memberof V2RuleServeStatic + * @memberof V2RuleHeader */ 'method_is'?: Array; /** * Excluded HTTP methods * @type {Array} - * @memberof V2RuleServeStatic + * @memberof V2RuleHeader */ 'method_is_not'?: Array; /** * IP address * @type {string} - * @memberof V2RuleServeStatic + * @memberof V2RuleHeader */ 'ip'?: string; /** * Allowed IP addresses * @type {Array} - * @memberof V2RuleServeStatic + * @memberof V2RuleHeader */ 'ip_is'?: Array; /** * Excluded IP addresses * @type {Array} - * @memberof V2RuleServeStatic + * @memberof V2RuleHeader */ 'ip_is_not'?: Array; /** * Country code * @type {string} - * @memberof V2RuleServeStatic + * @memberof V2RuleHeader */ 'country'?: string; /** * Allowed countries * @type {Array} - * @memberof V2RuleServeStatic + * @memberof V2RuleHeader */ 'country_is'?: Array; /** * Excluded countries * @type {Array} - * @memberof V2RuleServeStatic + * @memberof V2RuleHeader */ 'country_is_not'?: Array; /** * Rule action * @type {string} - * @memberof V2RuleServeStatic + * @memberof V2RuleHeader */ 'action': string; /** * - * @type {V2RuleServeStaticAction} - * @memberof V2RuleServeStatic + * @type {V2RuleHeaderAction} + * @memberof V2RuleHeader */ - 'action_config': V2RuleServeStaticAction; + 'action_config': V2RuleHeaderAction; } /** * * @export - * @interface V2RuleServeStaticAction + * @interface V2RuleHeaderAction */ -export interface V2RuleServeStaticAction { +export interface V2RuleHeaderAction { /** - * Path to the static file to serve - * @type {string} - * @memberof V2RuleServeStaticAction + * Headers to set + * @type {{ [key: string]: string; }} + * @memberof V2RuleHeaderAction */ - 'static_file_path': string; + 'headers': { [key: string]: string; }; } /** * * @export - * @interface V2RuleServeStaticRequest + * @interface V2RuleHeaderRequest */ -export interface V2RuleServeStaticRequest { +export interface V2RuleHeaderRequest { /** * Domain patterns (default: any) * @type {Array} - * @memberof V2RuleServeStaticRequest + * @memberof V2RuleHeaderRequest */ 'domain': Array; /** * Rule name * @type {string} - * @memberof V2RuleServeStaticRequest + * @memberof V2RuleHeaderRequest */ 'name'?: string; /** * Rule UUID * @type {string} - * @memberof V2RuleServeStaticRequest + * @memberof V2RuleHeaderRequest */ 'uuid'?: string; /** * Rule weight * @type {number} - * @memberof V2RuleServeStaticRequest + * @memberof V2RuleHeaderRequest */ 'weight'?: number; /** * Whether rule is disabled * @type {boolean} - * @memberof V2RuleServeStaticRequest + * @memberof V2RuleHeaderRequest */ 'disabled'?: boolean; /** * URL patterns * @type {Array} - * @memberof V2RuleServeStaticRequest + * @memberof V2RuleHeaderRequest */ 'url': Array; /** * Country filter type (country_is, country_is_not, any) * @type {string} - * @memberof V2RuleServeStaticRequest + * @memberof V2RuleHeaderRequest */ 'country'?: string; /** * Allowed countries * @type {Array} - * @memberof V2RuleServeStaticRequest + * @memberof V2RuleHeaderRequest */ 'country_is'?: Array; /** * Excluded countries * @type {Array} - * @memberof V2RuleServeStaticRequest + * @memberof V2RuleHeaderRequest */ 'country_is_not'?: Array; /** * Method filter type (method_is, method_is_not, any) * @type {string} - * @memberof V2RuleServeStaticRequest + * @memberof V2RuleHeaderRequest */ 'method'?: string; /** * Allowed HTTP methods * @type {Array} - * @memberof V2RuleServeStaticRequest + * @memberof V2RuleHeaderRequest */ 'method_is'?: Array; /** * Excluded HTTP methods * @type {Array} - * @memberof V2RuleServeStaticRequest + * @memberof V2RuleHeaderRequest */ 'method_is_not'?: Array; /** * IP filter type (ip_is, ip_is_not, any) * @type {string} - * @memberof V2RuleServeStaticRequest + * @memberof V2RuleHeaderRequest */ 'ip'?: string; /** * Allowed IP addresses * @type {Array} - * @memberof V2RuleServeStaticRequest + * @memberof V2RuleHeaderRequest */ 'ip_is'?: Array; /** * Excluded IP addresses * @type {Array} - * @memberof V2RuleServeStaticRequest + * @memberof V2RuleHeaderRequest */ 'ip_is_not'?: Array; /** - * Path to the static file to serve - * @type {string} - * @memberof V2RuleServeStaticRequest + * Headers to set + * @type {{ [key: string]: string; }} + * @memberof V2RuleHeaderRequest */ - 'static_file_path': string; + 'headers': { [key: string]: string; }; } /** * * @export - * @interface V2SecretStore + * @interface V2RuleProxy */ -export interface V2SecretStore { +export interface V2RuleProxy { /** - * Secret store ID + * Rule name * @type {string} - * @memberof V2SecretStore + * @memberof V2RuleProxy */ - 'id': string; + 'name'?: string; /** - * Secret store name + * Rule UUID * @type {string} - * @memberof V2SecretStore + * @memberof V2RuleProxy */ - 'name': string; -} -/** - * - * @export - * @interface V2SecretStoreRequest - */ -export interface V2SecretStoreRequest { + 'uuid': string; /** - * Secret store name + * Rule ID * @type {string} - * @memberof V2SecretStoreRequest + * @memberof V2RuleProxy */ - 'name': string; -} -/** - * - * @export - * @interface V2Store - */ -export interface V2Store { + 'rule_id'?: string; /** - * Store ID - * @type {string} - * @memberof V2Store + * Rule weight + * @type {number} + * @memberof V2RuleProxy */ - 'id': string; + 'weight'?: number; /** - * Store name - * @type {string} - * @memberof V2Store + * URL patterns + * @type {Array} + * @memberof V2RuleProxy */ - 'name': string; -} -/** - * - * @export - * @interface V2StoreItem - */ -export interface V2StoreItem { + 'url'?: Array; /** - * Item key - * @type {string} - * @memberof V2StoreItem + * Domain patterns + * @type {Array} + * @memberof V2RuleProxy */ - 'key': string; + 'domain'?: Array; /** - * Item value (can be JSON string) + * Whether rule is disabled + * @type {boolean} + * @memberof V2RuleProxy + */ + 'disabled': boolean; + /** + * Only apply with cookie * @type {string} - * @memberof V2StoreItem + * @memberof V2RuleProxy */ - 'value': string; -} -/** - * - * @export - * @interface V2StoreItemRequest - */ -export interface V2StoreItemRequest { + 'only_with_cookie'?: string; /** - * Item key + * HTTP method * @type {string} - * @memberof V2StoreItemRequest + * @memberof V2RuleProxy */ - 'key': string; + 'method'?: string; /** - * Item value (can be JSON string) - * @type {string} - * @memberof V2StoreItemRequest + * Allowed HTTP methods + * @type {Array} + * @memberof V2RuleProxy */ - 'value': string; + 'method_is'?: Array; /** - * Store as secret with KMS encryption. Secrets cannot be retrieved via GET operations (returns [ENCRYPTED]). Ideal for API keys, passwords, and credentials. - * @type {boolean} - * @memberof V2StoreItemRequest + * Excluded HTTP methods + * @type {Array} + * @memberof V2RuleProxy */ - 'secret'?: boolean; -} -/** - * - * @export - * @interface V2StoreItemUpdateRequest - */ -export interface V2StoreItemUpdateRequest { + 'method_is_not'?: Array; /** - * Item value (can be JSON string) + * IP address * @type {string} - * @memberof V2StoreItemUpdateRequest + * @memberof V2RuleProxy */ - 'value': string; + 'ip'?: string; /** - * Store as secret with KMS encryption. Note: Encryption status cannot be changed after initial creation - this value is preserved from the original item. - * @type {boolean} - * @memberof V2StoreItemUpdateRequest + * Allowed IP addresses + * @type {Array} + * @memberof V2RuleProxy */ - 'secret'?: boolean; -} -/** - * - * @export - * @interface V2StoreItemsListResponse - */ -export interface V2StoreItemsListResponse { + 'ip_is'?: Array; /** - * List of item keys + * Excluded IP addresses * @type {Array} - * @memberof V2StoreItemsListResponse + * @memberof V2RuleProxy */ - 'data'?: Array; + 'ip_is_not'?: Array; /** - * Cursor for next page of results + * Country code * @type {string} - * @memberof V2StoreItemsListResponse + * @memberof V2RuleProxy */ - 'next_cursor'?: string | null; -} -/** - * - * @export - * @interface V2StoreRequest - */ -export interface V2StoreRequest { + 'country'?: string; /** - * Store name - * @type {string} - * @memberof V2StoreRequest + * Allowed countries + * @type {Array} + * @memberof V2RuleProxy */ - 'name': string; -} -/** - * - * @export - * @interface ValidateCompose200Response - */ -export interface ValidateCompose200Response { + 'country_is'?: Array; /** - * - * @type {string} - * @memberof ValidateCompose200Response + * Excluded countries + * @type {Array} + * @memberof V2RuleProxy */ - 'message': string; + 'country_is_not'?: Array; /** - * The translated internal compose definition format - * @type {object} - * @memberof ValidateCompose200Response + * Rule action + * @type {string} + * @memberof V2RuleProxy */ - 'translatedComposeDefinition': object; + 'action': string; /** - * Optional warnings encountered during translation - * @type {Array} - * @memberof ValidateCompose200Response + * + * @type {V2RuleProxyAction} + * @memberof V2RuleProxy */ - 'translationWarnings'?: Array | null; + 'action_config': V2RuleProxyAction; } /** * * @export - * @interface ValidateCompose422Response + * @interface V2RuleProxyAction */ -export interface ValidateCompose422Response { +export interface V2RuleProxyAction { /** - * + * Target URL to proxy to * @type {string} - * @memberof ValidateCompose422Response + * @memberof V2RuleProxyAction */ - 'error'?: string; -} -/** - * - * @export - * @interface ValidateComposeRequest - */ -export interface ValidateComposeRequest { + 'to': string; /** - * The docker-compose.yml file content as a string + * Host header override * @type {string} - * @memberof ValidateComposeRequest + * @memberof V2RuleProxyAction */ - 'compose': string; + 'host'?: string; /** - * Optional image tag suffix (query parameter takes precedence) + * Basic auth username * @type {string} - * @memberof ValidateComposeRequest + * @memberof V2RuleProxyAction */ - 'imageSuffix'?: string; + 'auth_user'?: string; /** - * Optional application name for context + * Basic auth password * @type {string} - * @memberof ValidateComposeRequest + * @memberof V2RuleProxyAction */ - 'application'?: string; -} -/** - * - * @export - * @interface Variable - */ -export interface Variable { + 'auth_pass'?: string; /** - * - * @type {string} - * @memberof Variable + * Disable SSL verification + * @type {boolean} + * @memberof V2RuleProxyAction */ - 'key'?: string; + 'disable_ssl_verify'?: boolean; /** - * + * Cache lifetime * @type {string} - * @memberof Variable + * @memberof V2RuleProxyAction */ - 'value'?: string; -} -/** - * - * @export - * @interface Volume - */ -export interface Volume { + 'cache_lifetime'?: string | null; /** - * - * @type {string} - * @memberof Volume + * Only proxy 404 responses + * @type {boolean} + * @memberof V2RuleProxyAction */ - 'volumeId'?: string; + 'only_proxy_404'?: boolean; /** - * - * @type {string} - * @memberof Volume + * Headers to inject + * @type {{ [key: string]: string; }} + * @memberof V2RuleProxyAction */ - 'volumeName'?: string; + 'inject_headers'?: { [key: string]: string; } | null; /** - * - * @type {string} - * @memberof Volume + * Headers to strip from response + * @type {Array} + * @memberof V2RuleProxyAction */ - 'description'?: string; + 'proxy_strip_headers'?: Array; /** - * - * @type {string} - * @memberof Volume + * Headers to strip from request + * @type {Array} + * @memberof V2RuleProxyAction */ - 'environmentEfsId'?: string; + 'proxy_strip_request_headers'?: Array; /** - * + * Origin timeout * @type {string} - * @memberof Volume + * @memberof V2RuleProxyAction */ - 'createdAt'?: string; + 'origin_timeout'?: string; /** - * - * @type {string} - * @memberof Volume + * Enable failover mode + * @type {boolean} + * @memberof V2RuleProxyAction */ - 'rootDirectory'?: string; + 'failover_mode'?: boolean; /** - * + * Failover TTFB threshold * @type {string} - * @memberof Volume + * @memberof V2RuleProxyAction */ - 'accessPointId'?: string; + 'failover_origin_ttfb'?: string; /** - * - * @type {string} - * @memberof Volume + * Status codes for failover (default: 200,404,301,302,304) + * @type {Array} + * @memberof V2RuleProxyAction */ - 'accessPointArn'?: string; -} -/** - * Web Application Firewall configuration - * @export - * @interface WafConfig - */ -export interface WafConfig { + 'failover_origin_status_codes'?: Array; /** - * WAF operation mode + * Failover cache lifetime * @type {string} - * @memberof WafConfig + * @memberof V2RuleProxyAction */ - 'mode'?: WafConfigModeEnum; + 'failover_lifetime'?: string; /** - * OWASP paranoia level - * @type {number} - * @memberof WafConfig + * Notification type (none, slack) + * @type {string} + * @memberof V2RuleProxyAction */ - 'paranoia_level'?: number; + 'notify'?: V2RuleProxyActionNotifyEnum; /** - * WAF rule IDs to allow/whitelist - * @type {Array} - * @memberof WafConfig + * + * @type {V2RuleProxyActionNotifyConfig} + * @memberof V2RuleProxyAction */ - 'allow_rules'?: Array; + 'notify_config'?: V2RuleProxyActionNotifyConfig | null; /** - * IP addresses to allow - * @type {Array} - * @memberof WafConfig + * WAF enabled + * @type {boolean} + * @memberof V2RuleProxyAction */ - 'allow_ip'?: Array; + 'waf_enabled'?: boolean; /** - * IP addresses to block - * @type {Array} - * @memberof WafConfig + * + * @type {WafConfig} + * @memberof V2RuleProxyAction */ - 'block_ip'?: Array; + 'waf_config'?: WafConfig | null; /** - * ASN numbers to block - * @type {Array} - * @memberof WafConfig + * Proxy alert enabled + * @type {boolean} + * @memberof V2RuleProxyAction */ - 'block_asn'?: Array; + 'proxy_alert_enabled'?: boolean; /** - * User agent patterns to block - * @type {Array} - * @memberof WafConfig + * Proxy inline function enabled + * @type {boolean} + * @memberof V2RuleProxyAction */ - 'block_ua'?: Array; + 'proxy_inline_fn_enabled'?: boolean; /** - * Referer patterns to block - * @type {Array} - * @memberof WafConfig + * Enable Quant Cloud application proxy mode + * @type {boolean} + * @memberof V2RuleProxyAction */ - 'block_referer'?: Array; + 'application_proxy'?: boolean; /** - * Slack webhook URL for notifications + * Quant Cloud application name (required when application_proxy is true) * @type {string} - * @memberof WafConfig + * @memberof V2RuleProxyAction */ - 'notify_slack'?: string; + 'application_name'?: string; /** - * Minimum hits per minute to trigger Slack notification - * @type {number} - * @memberof WafConfig + * Quant Cloud application environment (required when application_proxy is true) + * @type {string} + * @memberof V2RuleProxyAction */ - 'notify_slack_hits_rpm'?: number; + 'application_environment'?: string; /** - * Email addresses for notifications - * @type {Array} - * @memberof WafConfig + * Quant Cloud application container (required when application_proxy is true) + * @type {string} + * @memberof V2RuleProxyAction */ - 'notify_email'?: Array; + 'application_container'?: string; /** - * - * @type {WafConfigHttpbl} - * @memberof WafConfig + * Quant Cloud application port (required when application_proxy is true) + * @type {number} + * @memberof V2RuleProxyAction */ - 'httpbl'?: WafConfigHttpbl; + 'application_port'?: number; /** * - * @type {WafConfigBlockLists} - * @memberof WafConfig + * @type {V2RuleProxyActionQuantCloudSelection} + * @memberof V2RuleProxyAction */ - 'block_lists'?: WafConfigBlockLists; + 'quant_cloud_selection'?: V2RuleProxyActionQuantCloudSelection | null; /** - * Rate limiting thresholds - * @type {Array} - * @memberof WafConfig + * Static error page content (HTML) to serve on origin errors + * @type {string} + * @memberof V2RuleProxyAction */ - 'thresholds'?: Array; + 'static_error_page'?: string | null; + /** + * Origin status codes that trigger static error page + * @type {Array} + * @memberof V2RuleProxyAction + */ + 'static_error_page_status_codes'?: Array; } -export const WafConfigModeEnum = { - Report: 'report', - Block: 'block' +export const V2RuleProxyActionNotifyEnum = { + None: 'none', + Slack: 'slack' } as const; -export type WafConfigModeEnum = typeof WafConfigModeEnum[keyof typeof WafConfigModeEnum]; +export type V2RuleProxyActionNotifyEnum = typeof V2RuleProxyActionNotifyEnum[keyof typeof V2RuleProxyActionNotifyEnum]; /** - * Enable predefined block lists + * Notification configuration (required when notify is slack) * @export - * @interface WafConfigBlockLists + * @interface V2RuleProxyActionNotifyConfig */ -export interface WafConfigBlockLists { +export interface V2RuleProxyActionNotifyConfig { /** - * Block known bad user agents - * @type {boolean} - * @memberof WafConfigBlockLists + * Slack webhook URL + * @type {string} + * @memberof V2RuleProxyActionNotifyConfig */ - 'user_agent'?: boolean; + 'webhook_url'?: string; +} +/** + * Quant Cloud application proxy selection (populated automatically when application_proxy is enabled) + * @export + * @interface V2RuleProxyActionQuantCloudSelection + */ +export interface V2RuleProxyActionQuantCloudSelection { /** - * Block known bad referers - * @type {boolean} - * @memberof WafConfigBlockLists + * Application name + * @type {string} + * @memberof V2RuleProxyActionQuantCloudSelection */ - 'referer'?: boolean; + 'app'?: string; /** - * Block known bad IPs - * @type {boolean} - * @memberof WafConfigBlockLists + * Environment name + * @type {string} + * @memberof V2RuleProxyActionQuantCloudSelection */ - 'ip'?: boolean; + 'env'?: string; /** - * Block AI crawlers - * @type {boolean} - * @memberof WafConfigBlockLists + * Container name + * @type {string} + * @memberof V2RuleProxyActionQuantCloudSelection */ - 'ai'?: boolean; + 'container'?: string; + /** + * Container port + * @type {number} + * @memberof V2RuleProxyActionQuantCloudSelection + */ + 'port'?: number; } /** - * Project Honey Pot HTTP:BL configuration + * * @export - * @interface WafConfigHttpbl + * @interface V2RuleProxyRequest */ -export interface WafConfigHttpbl { +export interface V2RuleProxyRequest { /** - * Enable HTTP:BL - * @type {boolean} - * @memberof WafConfigHttpbl + * Domain patterns (default: any) + * @type {Array} + * @memberof V2RuleProxyRequest */ - 'httpbl_enabled'?: boolean; + 'domain': Array; /** - * Block suspicious IPs - * @type {boolean} - * @memberof WafConfigHttpbl + * Rule name + * @type {string} + * @memberof V2RuleProxyRequest */ - 'block_suspicious'?: boolean; + 'name'?: string; /** - * Block email harvesters - * @type {boolean} - * @memberof WafConfigHttpbl + * Rule UUID + * @type {string} + * @memberof V2RuleProxyRequest */ - 'block_harvester'?: boolean; + 'uuid'?: string; /** - * Block spam sources - * @type {boolean} - * @memberof WafConfigHttpbl + * Rule weight + * @type {number} + * @memberof V2RuleProxyRequest */ - 'block_spam'?: boolean; + 'weight'?: number; /** - * Block search engines + * Whether rule is disabled * @type {boolean} - * @memberof WafConfigHttpbl + * @memberof V2RuleProxyRequest */ - 'block_search_engine'?: boolean; + 'disabled'?: boolean; /** - * HTTP:BL API key + * URL patterns + * @type {Array} + * @memberof V2RuleProxyRequest + */ + 'url': Array; + /** + * Country filter type (country_is, country_is_not, any) * @type {string} - * @memberof WafConfigHttpbl + * @memberof V2RuleProxyRequest */ - 'httpbl_key'?: string; -} + 'country'?: string; + /** + * Allowed countries + * @type {Array} + * @memberof V2RuleProxyRequest + */ + 'country_is'?: Array; + /** + * Excluded countries + * @type {Array} + * @memberof V2RuleProxyRequest + */ + 'country_is_not'?: Array; + /** + * Method filter type (method_is, method_is_not, any) + * @type {string} + * @memberof V2RuleProxyRequest + */ + 'method'?: string; + /** + * Allowed HTTP methods + * @type {Array} + * @memberof V2RuleProxyRequest + */ + 'method_is'?: Array; + /** + * Excluded HTTP methods + * @type {Array} + * @memberof V2RuleProxyRequest + */ + 'method_is_not'?: Array; + /** + * IP filter type (ip_is, ip_is_not, any) + * @type {string} + * @memberof V2RuleProxyRequest + */ + 'ip'?: string; + /** + * Allowed IP addresses + * @type {Array} + * @memberof V2RuleProxyRequest + */ + 'ip_is'?: Array; + /** + * Excluded IP addresses + * @type {Array} + * @memberof V2RuleProxyRequest + */ + 'ip_is_not'?: Array; + /** + * Target URL to proxy to + * @type {string} + * @memberof V2RuleProxyRequest + */ + 'to': string; + /** + * Host header override + * @type {string} + * @memberof V2RuleProxyRequest + */ + 'host'?: string; + /** + * Basic auth username + * @type {string} + * @memberof V2RuleProxyRequest + */ + 'auth_user'?: string; + /** + * Basic auth password + * @type {string} + * @memberof V2RuleProxyRequest + */ + 'auth_pass'?: string; + /** + * Disable SSL verification + * @type {boolean} + * @memberof V2RuleProxyRequest + */ + 'disable_ssl_verify'?: boolean; + /** + * Cache lifetime + * @type {string} + * @memberof V2RuleProxyRequest + */ + 'cache_lifetime'?: string | null; + /** + * Only proxy 404 responses + * @type {boolean} + * @memberof V2RuleProxyRequest + */ + 'only_proxy_404'?: boolean; + /** + * Headers to inject + * @type {{ [key: string]: string; }} + * @memberof V2RuleProxyRequest + */ + 'inject_headers'?: { [key: string]: string; } | null; + /** + * Headers to strip from response + * @type {Array} + * @memberof V2RuleProxyRequest + */ + 'proxy_strip_headers'?: Array; + /** + * Headers to strip from request + * @type {Array} + * @memberof V2RuleProxyRequest + */ + 'proxy_strip_request_headers'?: Array; + /** + * Origin timeout + * @type {string} + * @memberof V2RuleProxyRequest + */ + 'origin_timeout'?: string; + /** + * Enable failover mode + * @type {boolean} + * @memberof V2RuleProxyRequest + */ + 'failover_mode'?: boolean; + /** + * Failover TTFB threshold in milliseconds + * @type {string} + * @memberof V2RuleProxyRequest + */ + 'failover_origin_ttfb'?: string; + /** + * Origin status codes that trigger failover + * @type {Array} + * @memberof V2RuleProxyRequest + */ + 'failover_origin_status_codes'?: Array; + /** + * Failover cache lifetime in seconds + * @type {string} + * @memberof V2RuleProxyRequest + */ + 'failover_lifetime'?: string; + /** + * Proxy alert enabled + * @type {boolean} + * @memberof V2RuleProxyRequest + */ + 'proxy_alert_enabled'?: boolean; + /** + * WAF enabled + * @type {boolean} + * @memberof V2RuleProxyRequest + */ + 'waf_enabled'?: boolean; + /** + * + * @type {WafConfig} + * @memberof V2RuleProxyRequest + */ + 'waf_config'?: WafConfig | null; + /** + * Enable Quant Cloud application proxy mode + * @type {boolean} + * @memberof V2RuleProxyRequest + */ + 'application_proxy'?: boolean; + /** + * Quant Cloud application name (required when application_proxy is true) + * @type {string} + * @memberof V2RuleProxyRequest + */ + 'application_name'?: string; + /** + * Quant Cloud application environment (required when application_proxy is true) + * @type {string} + * @memberof V2RuleProxyRequest + */ + 'application_environment'?: string; + /** + * Quant Cloud application container (required when application_proxy is true) + * @type {string} + * @memberof V2RuleProxyRequest + */ + 'application_container'?: string; + /** + * Quant Cloud application port (required when application_proxy is true) + * @type {number} + * @memberof V2RuleProxyRequest + */ + 'application_port'?: number; + /** + * Static error page content (HTML) to serve on origin errors + * @type {string} + * @memberof V2RuleProxyRequest + */ + 'static_error_page'?: string | null; + /** + * Origin status codes that trigger static error page + * @type {Array} + * @memberof V2RuleProxyRequest + */ + 'static_error_page_status_codes'?: Array; +} +/** + * + * @export + * @interface V2RuleRedirect + */ +export interface V2RuleRedirect { + /** + * Rule name + * @type {string} + * @memberof V2RuleRedirect + */ + 'name'?: string; + /** + * Rule UUID + * @type {string} + * @memberof V2RuleRedirect + */ + 'uuid': string; + /** + * Rule ID + * @type {string} + * @memberof V2RuleRedirect + */ + 'rule_id'?: string; + /** + * Rule weight + * @type {number} + * @memberof V2RuleRedirect + */ + 'weight'?: number; + /** + * URL patterns + * @type {Array} + * @memberof V2RuleRedirect + */ + 'url'?: Array; + /** + * Domain patterns + * @type {Array} + * @memberof V2RuleRedirect + */ + 'domain'?: Array; + /** + * Whether rule is disabled + * @type {boolean} + * @memberof V2RuleRedirect + */ + 'disabled': boolean; + /** + * Only apply with cookie + * @type {string} + * @memberof V2RuleRedirect + */ + 'only_with_cookie'?: string; + /** + * HTTP method + * @type {string} + * @memberof V2RuleRedirect + */ + 'method'?: string; + /** + * Allowed HTTP methods + * @type {Array} + * @memberof V2RuleRedirect + */ + 'method_is'?: Array; + /** + * Excluded HTTP methods + * @type {Array} + * @memberof V2RuleRedirect + */ + 'method_is_not'?: Array; + /** + * IP address + * @type {string} + * @memberof V2RuleRedirect + */ + 'ip'?: string; + /** + * Allowed IP addresses + * @type {Array} + * @memberof V2RuleRedirect + */ + 'ip_is'?: Array; + /** + * Excluded IP addresses + * @type {Array} + * @memberof V2RuleRedirect + */ + 'ip_is_not'?: Array; + /** + * Country code + * @type {string} + * @memberof V2RuleRedirect + */ + 'country'?: string; + /** + * Allowed countries + * @type {Array} + * @memberof V2RuleRedirect + */ + 'country_is'?: Array; + /** + * Excluded countries + * @type {Array} + * @memberof V2RuleRedirect + */ + 'country_is_not'?: Array; + /** + * Rule action + * @type {string} + * @memberof V2RuleRedirect + */ + 'action': string; + /** + * + * @type {V2RuleRedirectAction} + * @memberof V2RuleRedirect + */ + 'action_config'?: V2RuleRedirectAction; +} +/** + * + * @export + * @interface V2RuleRedirectAction + */ +export interface V2RuleRedirectAction { + /** + * Redirect destination URL + * @type {string} + * @memberof V2RuleRedirectAction + */ + 'to': string; + /** + * HTTP status code for redirect + * @type {string} + * @memberof V2RuleRedirectAction + */ + 'status_code'?: string; +} +/** + * + * @export + * @interface V2RuleRedirectRequest + */ +export interface V2RuleRedirectRequest { + /** + * Domain patterns (default: any) + * @type {Array} + * @memberof V2RuleRedirectRequest + */ + 'domain': Array; + /** + * Rule name + * @type {string} + * @memberof V2RuleRedirectRequest + */ + 'name'?: string; + /** + * Rule UUID + * @type {string} + * @memberof V2RuleRedirectRequest + */ + 'uuid'?: string; + /** + * Rule weight + * @type {number} + * @memberof V2RuleRedirectRequest + */ + 'weight'?: number; + /** + * Whether rule is disabled + * @type {boolean} + * @memberof V2RuleRedirectRequest + */ + 'disabled'?: boolean; + /** + * URL patterns + * @type {Array} + * @memberof V2RuleRedirectRequest + */ + 'url': Array; + /** + * Country filter type (country_is, country_is_not, any) + * @type {string} + * @memberof V2RuleRedirectRequest + */ + 'country'?: string; + /** + * Allowed countries + * @type {Array} + * @memberof V2RuleRedirectRequest + */ + 'country_is'?: Array; + /** + * Excluded countries + * @type {Array} + * @memberof V2RuleRedirectRequest + */ + 'country_is_not'?: Array; + /** + * Method filter type (method_is, method_is_not, any) + * @type {string} + * @memberof V2RuleRedirectRequest + */ + 'method'?: string; + /** + * Allowed HTTP methods + * @type {Array} + * @memberof V2RuleRedirectRequest + */ + 'method_is'?: Array; + /** + * Excluded HTTP methods + * @type {Array} + * @memberof V2RuleRedirectRequest + */ + 'method_is_not'?: Array; + /** + * IP filter type (ip_is, ip_is_not, any) + * @type {string} + * @memberof V2RuleRedirectRequest + */ + 'ip'?: string; + /** + * Allowed IP addresses + * @type {Array} + * @memberof V2RuleRedirectRequest + */ + 'ip_is'?: Array; + /** + * Excluded IP addresses + * @type {Array} + * @memberof V2RuleRedirectRequest + */ + 'ip_is_not'?: Array; + /** + * Redirect destination URL + * @type {string} + * @memberof V2RuleRedirectRequest + */ + 'redirect_to': string; + /** + * HTTP status code for redirect + * @type {string} + * @memberof V2RuleRedirectRequest + */ + 'redirect_code'?: string; +} +/** + * + * @export + * @interface V2RuleRequest + */ +export interface V2RuleRequest { + /** + * Domain patterns (default: any) + * @type {Array} + * @memberof V2RuleRequest + */ + 'domain': Array; + /** + * Rule name + * @type {string} + * @memberof V2RuleRequest + */ + 'name'?: string; + /** + * Rule UUID + * @type {string} + * @memberof V2RuleRequest + */ + 'uuid'?: string; + /** + * Rule weight + * @type {number} + * @memberof V2RuleRequest + */ + 'weight'?: number; + /** + * Whether rule is disabled + * @type {boolean} + * @memberof V2RuleRequest + */ + 'disabled'?: boolean; + /** + * URL patterns + * @type {Array} + * @memberof V2RuleRequest + */ + 'url': Array; + /** + * Country filter type (country_is, country_is_not, any) + * @type {string} + * @memberof V2RuleRequest + */ + 'country'?: string; + /** + * Allowed countries + * @type {Array} + * @memberof V2RuleRequest + */ + 'country_is'?: Array; + /** + * Excluded countries + * @type {Array} + * @memberof V2RuleRequest + */ + 'country_is_not'?: Array; + /** + * Method filter type (method_is, method_is_not, any) + * @type {string} + * @memberof V2RuleRequest + */ + 'method'?: string; + /** + * Allowed HTTP methods + * @type {Array} + * @memberof V2RuleRequest + */ + 'method_is'?: Array; + /** + * Excluded HTTP methods + * @type {Array} + * @memberof V2RuleRequest + */ + 'method_is_not'?: Array; + /** + * IP filter type (ip_is, ip_is_not, any) + * @type {string} + * @memberof V2RuleRequest + */ + 'ip'?: string; + /** + * Allowed IP addresses + * @type {Array} + * @memberof V2RuleRequest + */ + 'ip_is'?: Array; + /** + * Excluded IP addresses + * @type {Array} + * @memberof V2RuleRequest + */ + 'ip_is_not'?: Array; +} +/** + * + * @export + * @interface V2RuleServeStatic + */ +export interface V2RuleServeStatic { + /** + * Rule name + * @type {string} + * @memberof V2RuleServeStatic + */ + 'name'?: string; + /** + * Rule UUID + * @type {string} + * @memberof V2RuleServeStatic + */ + 'uuid': string; + /** + * Rule ID + * @type {string} + * @memberof V2RuleServeStatic + */ + 'rule_id'?: string; + /** + * Rule weight + * @type {number} + * @memberof V2RuleServeStatic + */ + 'weight'?: number; + /** + * URL patterns + * @type {Array} + * @memberof V2RuleServeStatic + */ + 'url'?: Array; + /** + * Domain patterns + * @type {Array} + * @memberof V2RuleServeStatic + */ + 'domain'?: Array; + /** + * Whether rule is disabled + * @type {boolean} + * @memberof V2RuleServeStatic + */ + 'disabled': boolean; + /** + * Only apply with cookie + * @type {string} + * @memberof V2RuleServeStatic + */ + 'only_with_cookie'?: string; + /** + * HTTP method + * @type {string} + * @memberof V2RuleServeStatic + */ + 'method'?: string; + /** + * Allowed HTTP methods + * @type {Array} + * @memberof V2RuleServeStatic + */ + 'method_is'?: Array; + /** + * Excluded HTTP methods + * @type {Array} + * @memberof V2RuleServeStatic + */ + 'method_is_not'?: Array; + /** + * IP address + * @type {string} + * @memberof V2RuleServeStatic + */ + 'ip'?: string; + /** + * Allowed IP addresses + * @type {Array} + * @memberof V2RuleServeStatic + */ + 'ip_is'?: Array; + /** + * Excluded IP addresses + * @type {Array} + * @memberof V2RuleServeStatic + */ + 'ip_is_not'?: Array; + /** + * Country code + * @type {string} + * @memberof V2RuleServeStatic + */ + 'country'?: string; + /** + * Allowed countries + * @type {Array} + * @memberof V2RuleServeStatic + */ + 'country_is'?: Array; + /** + * Excluded countries + * @type {Array} + * @memberof V2RuleServeStatic + */ + 'country_is_not'?: Array; + /** + * Rule action + * @type {string} + * @memberof V2RuleServeStatic + */ + 'action': string; + /** + * + * @type {V2RuleServeStaticAction} + * @memberof V2RuleServeStatic + */ + 'action_config': V2RuleServeStaticAction; +} +/** + * + * @export + * @interface V2RuleServeStaticAction + */ +export interface V2RuleServeStaticAction { + /** + * Path to the static file to serve + * @type {string} + * @memberof V2RuleServeStaticAction + */ + 'static_file_path': string; +} +/** + * + * @export + * @interface V2RuleServeStaticRequest + */ +export interface V2RuleServeStaticRequest { + /** + * Domain patterns (default: any) + * @type {Array} + * @memberof V2RuleServeStaticRequest + */ + 'domain': Array; + /** + * Rule name + * @type {string} + * @memberof V2RuleServeStaticRequest + */ + 'name'?: string; + /** + * Rule UUID + * @type {string} + * @memberof V2RuleServeStaticRequest + */ + 'uuid'?: string; + /** + * Rule weight + * @type {number} + * @memberof V2RuleServeStaticRequest + */ + 'weight'?: number; + /** + * Whether rule is disabled + * @type {boolean} + * @memberof V2RuleServeStaticRequest + */ + 'disabled'?: boolean; + /** + * URL patterns + * @type {Array} + * @memberof V2RuleServeStaticRequest + */ + 'url': Array; + /** + * Country filter type (country_is, country_is_not, any) + * @type {string} + * @memberof V2RuleServeStaticRequest + */ + 'country'?: string; + /** + * Allowed countries + * @type {Array} + * @memberof V2RuleServeStaticRequest + */ + 'country_is'?: Array; + /** + * Excluded countries + * @type {Array} + * @memberof V2RuleServeStaticRequest + */ + 'country_is_not'?: Array; + /** + * Method filter type (method_is, method_is_not, any) + * @type {string} + * @memberof V2RuleServeStaticRequest + */ + 'method'?: string; + /** + * Allowed HTTP methods + * @type {Array} + * @memberof V2RuleServeStaticRequest + */ + 'method_is'?: Array; + /** + * Excluded HTTP methods + * @type {Array} + * @memberof V2RuleServeStaticRequest + */ + 'method_is_not'?: Array; + /** + * IP filter type (ip_is, ip_is_not, any) + * @type {string} + * @memberof V2RuleServeStaticRequest + */ + 'ip'?: string; + /** + * Allowed IP addresses + * @type {Array} + * @memberof V2RuleServeStaticRequest + */ + 'ip_is'?: Array; + /** + * Excluded IP addresses + * @type {Array} + * @memberof V2RuleServeStaticRequest + */ + 'ip_is_not'?: Array; + /** + * Path to the static file to serve + * @type {string} + * @memberof V2RuleServeStaticRequest + */ + 'static_file_path': string; +} +/** + * + * @export + * @interface V2SecretStore + */ +export interface V2SecretStore { + /** + * Secret store ID + * @type {string} + * @memberof V2SecretStore + */ + 'id': string; + /** + * Secret store name + * @type {string} + * @memberof V2SecretStore + */ + 'name': string; +} +/** + * + * @export + * @interface V2SecretStoreRequest + */ +export interface V2SecretStoreRequest { + /** + * Secret store name + * @type {string} + * @memberof V2SecretStoreRequest + */ + 'name': string; +} +/** + * + * @export + * @interface V2Store + */ +export interface V2Store { + /** + * Store ID + * @type {string} + * @memberof V2Store + */ + 'id': string; + /** + * Store name + * @type {string} + * @memberof V2Store + */ + 'name': string; +} +/** + * + * @export + * @interface V2StoreItem + */ +export interface V2StoreItem { + /** + * Item key + * @type {string} + * @memberof V2StoreItem + */ + 'key': string; + /** + * Item value (can be JSON string) + * @type {string} + * @memberof V2StoreItem + */ + 'value': string; +} +/** + * + * @export + * @interface V2StoreItemRequest + */ +export interface V2StoreItemRequest { + /** + * Item key + * @type {string} + * @memberof V2StoreItemRequest + */ + 'key': string; + /** + * Item value (can be JSON string) + * @type {string} + * @memberof V2StoreItemRequest + */ + 'value': string; + /** + * Store as secret with KMS encryption. Secrets cannot be retrieved via GET operations (returns [ENCRYPTED]). Ideal for API keys, passwords, and credentials. + * @type {boolean} + * @memberof V2StoreItemRequest + */ + 'secret'?: boolean; +} +/** + * + * @export + * @interface V2StoreItemUpdateRequest + */ +export interface V2StoreItemUpdateRequest { + /** + * Item value (can be JSON string) + * @type {string} + * @memberof V2StoreItemUpdateRequest + */ + 'value': string; + /** + * Store as secret with KMS encryption. Note: Encryption status cannot be changed after initial creation - this value is preserved from the original item. + * @type {boolean} + * @memberof V2StoreItemUpdateRequest + */ + 'secret'?: boolean; +} +/** + * + * @export + * @interface V2StoreItemsListResponse + */ +export interface V2StoreItemsListResponse { + /** + * List of item keys + * @type {Array} + * @memberof V2StoreItemsListResponse + */ + 'data'?: Array; + /** + * Cursor for next page of results + * @type {string} + * @memberof V2StoreItemsListResponse + */ + 'next_cursor'?: string | null; +} +/** + * + * @export + * @interface V2StoreRequest + */ +export interface V2StoreRequest { + /** + * Store name + * @type {string} + * @memberof V2StoreRequest + */ + 'name': string; +} +/** + * + * @export + * @interface ValidateCompose200Response + */ +export interface ValidateCompose200Response { + /** + * + * @type {string} + * @memberof ValidateCompose200Response + */ + 'message': string; + /** + * The translated internal compose definition format + * @type {object} + * @memberof ValidateCompose200Response + */ + 'translatedComposeDefinition': object; + /** + * Optional warnings encountered during translation + * @type {Array} + * @memberof ValidateCompose200Response + */ + 'translationWarnings'?: Array | null; +} +/** + * + * @export + * @interface ValidateCompose422Response + */ +export interface ValidateCompose422Response { + /** + * + * @type {string} + * @memberof ValidateCompose422Response + */ + 'error'?: string; +} +/** + * + * @export + * @interface ValidateComposeRequest + */ +export interface ValidateComposeRequest { + /** + * The docker-compose.yml file content as a string + * @type {string} + * @memberof ValidateComposeRequest + */ + 'compose': string; + /** + * Optional image tag suffix (query parameter takes precedence) + * @type {string} + * @memberof ValidateComposeRequest + */ + 'imageSuffix'?: string; + /** + * Optional application name for context + * @type {string} + * @memberof ValidateComposeRequest + */ + 'application'?: string; +} +/** + * + * @export + * @interface Variable + */ +export interface Variable { + /** + * + * @type {string} + * @memberof Variable + */ + 'key'?: string; + /** + * + * @type {string} + * @memberof Variable + */ + 'value'?: string; +} +/** + * + * @export + * @interface Volume + */ +export interface Volume { + /** + * + * @type {string} + * @memberof Volume + */ + 'volumeId'?: string; + /** + * + * @type {string} + * @memberof Volume + */ + 'volumeName'?: string; + /** + * + * @type {string} + * @memberof Volume + */ + 'description'?: string; + /** + * + * @type {string} + * @memberof Volume + */ + 'environmentEfsId'?: string; + /** + * + * @type {string} + * @memberof Volume + */ + 'createdAt'?: string; + /** + * + * @type {string} + * @memberof Volume + */ + 'rootDirectory'?: string; + /** + * + * @type {string} + * @memberof Volume + */ + 'accessPointId'?: string; + /** + * + * @type {string} + * @memberof Volume + */ + 'accessPointArn'?: string; +} +/** + * Web Application Firewall configuration + * @export + * @interface WafConfig + */ +export interface WafConfig { + /** + * WAF operation mode + * @type {string} + * @memberof WafConfig + */ + 'mode'?: WafConfigModeEnum; + /** + * OWASP paranoia level + * @type {number} + * @memberof WafConfig + */ + 'paranoia_level'?: number; + /** + * WAF rule IDs to allow/whitelist + * @type {Array} + * @memberof WafConfig + */ + 'allow_rules'?: Array; + /** + * IP addresses to allow + * @type {Array} + * @memberof WafConfig + */ + 'allow_ip'?: Array; + /** + * IP addresses to block + * @type {Array} + * @memberof WafConfig + */ + 'block_ip'?: Array; + /** + * ASN numbers to block + * @type {Array} + * @memberof WafConfig + */ + 'block_asn'?: Array; + /** + * User agent patterns to block + * @type {Array} + * @memberof WafConfig + */ + 'block_ua'?: Array; + /** + * Referer patterns to block + * @type {Array} + * @memberof WafConfig + */ + 'block_referer'?: Array; + /** + * Slack webhook URL for notifications + * @type {string} + * @memberof WafConfig + */ + 'notify_slack'?: string; + /** + * Minimum hits per minute to trigger Slack notification + * @type {number} + * @memberof WafConfig + */ + 'notify_slack_hits_rpm'?: number; + /** + * Email addresses for notifications + * @type {Array} + * @memberof WafConfig + */ + 'notify_email'?: Array; + /** + * + * @type {WafConfigHttpbl} + * @memberof WafConfig + */ + 'httpbl'?: WafConfigHttpbl; + /** + * + * @type {WafConfigBlockLists} + * @memberof WafConfig + */ + 'block_lists'?: WafConfigBlockLists; + /** + * Rate limiting thresholds + * @type {Array} + * @memberof WafConfig + */ + 'thresholds'?: Array; +} + +export const WafConfigModeEnum = { + Report: 'report', + Block: 'block' +} as const; + +export type WafConfigModeEnum = typeof WafConfigModeEnum[keyof typeof WafConfigModeEnum]; + +/** + * Enable predefined block lists + * @export + * @interface WafConfigBlockLists + */ +export interface WafConfigBlockLists { + /** + * Block known bad user agents + * @type {boolean} + * @memberof WafConfigBlockLists + */ + 'user_agent'?: boolean; + /** + * Block known bad referers + * @type {boolean} + * @memberof WafConfigBlockLists + */ + 'referer'?: boolean; + /** + * Block known bad IPs + * @type {boolean} + * @memberof WafConfigBlockLists + */ + 'ip'?: boolean; + /** + * Block AI crawlers + * @type {boolean} + * @memberof WafConfigBlockLists + */ + 'ai'?: boolean; +} +/** + * Project Honey Pot HTTP:BL configuration + * @export + * @interface WafConfigHttpbl + */ +export interface WafConfigHttpbl { + /** + * Enable HTTP:BL + * @type {boolean} + * @memberof WafConfigHttpbl + */ + 'httpbl_enabled'?: boolean; + /** + * Block suspicious IPs + * @type {boolean} + * @memberof WafConfigHttpbl + */ + 'block_suspicious'?: boolean; + /** + * Block email harvesters + * @type {boolean} + * @memberof WafConfigHttpbl + */ + 'block_harvester'?: boolean; + /** + * Block spam sources + * @type {boolean} + * @memberof WafConfigHttpbl + */ + 'block_spam'?: boolean; + /** + * Block search engines + * @type {boolean} + * @memberof WafConfigHttpbl + */ + 'block_search_engine'?: boolean; + /** + * HTTP:BL API key + * @type {string} + * @memberof WafConfigHttpbl + */ + 'httpbl_key'?: string; +} +/** + * + * @export + * @interface WafConfigThresholdsInner + */ +export interface WafConfigThresholdsInner { + /** + * Threshold type + * @type {string} + * @memberof WafConfigThresholdsInner + */ + 'type'?: WafConfigThresholdsInnerTypeEnum; + /** + * Requests per second limit (for ip/header) + * @type {number} + * @memberof WafConfigThresholdsInner + */ + 'rps'?: number; + /** + * Hit count limit (for waf_hit_by_ip) + * @type {number} + * @memberof WafConfigThresholdsInner + */ + 'hits'?: number; + /** + * Time window in minutes (for waf_hit_by_ip) + * @type {number} + * @memberof WafConfigThresholdsInner + */ + 'minutes'?: number; + /** + * Cooldown period in seconds + * @type {number} + * @memberof WafConfigThresholdsInner + */ + 'cooldown'?: number; + /** + * Threshold enforcement mode + * @type {string} + * @memberof WafConfigThresholdsInner + */ + 'mode'?: WafConfigThresholdsInnerModeEnum; + /** + * Header name (for header type) + * @type {string} + * @memberof WafConfigThresholdsInner + */ + 'value'?: string | null; + /** + * Slack webhook for this threshold + * @type {string} + * @memberof WafConfigThresholdsInner + */ + 'notify_slack'?: string | null; +} + +export const WafConfigThresholdsInnerTypeEnum = { + Ip: 'ip', + Header: 'header', + WafHitByIp: 'waf_hit_by_ip' +} as const; + +export type WafConfigThresholdsInnerTypeEnum = typeof WafConfigThresholdsInnerTypeEnum[keyof typeof WafConfigThresholdsInnerTypeEnum]; +export const WafConfigThresholdsInnerModeEnum = { + Disabled: 'disabled', + Report: 'report', + Block: 'block' +} as const; + +export type WafConfigThresholdsInnerModeEnum = typeof WafConfigThresholdsInnerModeEnum[keyof typeof WafConfigThresholdsInnerModeEnum]; + + +/** + * AIAgentsApi - axios parameter creator + * @export + */ +export const AIAgentsApiAxiosParamCreator = function (configuration?: Configuration) { + return { + /** + * Initiates a chat session with a specific AI agent. The agent\'s configuration (system prompt, temperature, model, allowed tools) is automatically applied. * * **Key Features:** * - **Session Management**: Automatic session creation and state tracking * - **Multi-turn Conversations**: Full conversation history maintained server-side * - Agent\'s system prompt is prepended to conversation * - Only agent\'s allowed tools are available * - All tools are auto-executed on cloud (no client confirmation needed) * - Temperature and model from agent config * - Supports sync, streaming, and async modes * * **Execution Modes:** * - **Sync Mode** (default): Standard JSON response, waits for completion * - **Streaming Mode**: Set `stream: true` for SSE token-by-token responses * - **Async Mode**: Set `async: true` for long-running tasks with polling * * **Async/Durable Mode (`async: true`):** * - Returns immediately with `requestId` and `pollUrl` (HTTP 202) * - Uses AWS Lambda Durable Functions for long-running agent tasks * - All tools are auto-executed on cloud (no `waiting_callback` state) * - Poll `/ai/chat/executions/{requestId}` for status * - Ideal for agents with slow tools (image generation, web search, etc.) * * **Session Support:** * - Omit `sessionId` to create a new session automatically * - Include `sessionId` to continue an existing conversation * - Sessions expire after 60 minutes of inactivity * - Sessions work in all modes (sync, streaming, async) * - Use `/sessions/{sessionId}` to retrieve full conversation history + * @summary Chat with AI Agent + * @param {string} organisation The organisation ID + * @param {string} agentId The agent ID + * @param {ChatWithAIAgentRequest} chatWithAIAgentRequest + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + chatWithAIAgent: async (organisation: string, agentId: string, chatWithAIAgentRequest: ChatWithAIAgentRequest, options: RawAxiosRequestConfig = {}): Promise => { + // verify required parameter 'organisation' is not null or undefined + assertParamExists('chatWithAIAgent', 'organisation', organisation) + // verify required parameter 'agentId' is not null or undefined + assertParamExists('chatWithAIAgent', 'agentId', agentId) + // verify required parameter 'chatWithAIAgentRequest' is not null or undefined + assertParamExists('chatWithAIAgent', 'chatWithAIAgentRequest', chatWithAIAgentRequest) + const localVarPath = `/api/v3/organizations/{organisation}/ai/agents/{agentId}/chat` + .replace(`{${"organisation"}}`, encodeURIComponent(String(organisation))) + .replace(`{${"agentId"}}`, encodeURIComponent(String(agentId))); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options}; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + // authentication BearerAuth required + // http bearer authentication required + await setBearerAuthToObject(localVarHeaderParameter, configuration) + + + + localVarHeaderParameter['Content-Type'] = 'application/json'; + + setSearchParams(localVarUrlObj, localVarQueryParameter); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + localVarRequestOptions.data = serializeDataIfNeeded(chatWithAIAgentRequest, localVarRequestOptions, configuration) + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * Creates a new AI agent with specific configuration, system prompt, and tool permissions. * * **Agent Configuration:** * - **System Prompt**: Instructions that guide the agent\'s behavior * - **Model**: Which foundation model to use (e.g., \'amazon.nova-pro-v1:0\') * - **Temperature**: Creativity level (0-1) * - **Allowed Tools**: Which tools the agent can auto-execute * - **Allowed Collections**: Vector DB collections for RAG * - **Group**: Optional categorization (e.g., \'development\', \'compliance\') * * **Auto-Execution:** * All tools are automatically executed when an agent requests them (no client confirmation needed). + * @summary Create AI Agent + * @param {string} organisation The organisation ID + * @param {CreateAIAgentRequest} createAIAgentRequest + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + createAIAgent: async (organisation: string, createAIAgentRequest: CreateAIAgentRequest, options: RawAxiosRequestConfig = {}): Promise => { + // verify required parameter 'organisation' is not null or undefined + assertParamExists('createAIAgent', 'organisation', organisation) + // verify required parameter 'createAIAgentRequest' is not null or undefined + assertParamExists('createAIAgent', 'createAIAgentRequest', createAIAgentRequest) + const localVarPath = `/api/v3/organizations/{organisation}/ai/agents` + .replace(`{${"organisation"}}`, encodeURIComponent(String(organisation))); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options}; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + // authentication BearerAuth required + // http bearer authentication required + await setBearerAuthToObject(localVarHeaderParameter, configuration) + + + + localVarHeaderParameter['Content-Type'] = 'application/json'; + + setSearchParams(localVarUrlObj, localVarQueryParameter); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + localVarRequestOptions.data = serializeDataIfNeeded(createAIAgentRequest, localVarRequestOptions, configuration) + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * Permanently deletes an AI agent. This action cannot be undone. + * @summary Delete Agent + * @param {string} organisation The organisation ID + * @param {string} agentId The agent ID + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + deleteAIAgent: async (organisation: string, agentId: string, options: RawAxiosRequestConfig = {}): Promise => { + // verify required parameter 'organisation' is not null or undefined + assertParamExists('deleteAIAgent', 'organisation', organisation) + // verify required parameter 'agentId' is not null or undefined + assertParamExists('deleteAIAgent', 'agentId', agentId) + const localVarPath = `/api/v3/organizations/{organisation}/ai/agents/{agentId}` + .replace(`{${"organisation"}}`, encodeURIComponent(String(organisation))) + .replace(`{${"agentId"}}`, encodeURIComponent(String(agentId))); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: 'DELETE', ...baseOptions, ...options}; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + // authentication BearerAuth required + // http bearer authentication required + await setBearerAuthToObject(localVarHeaderParameter, configuration) + + + + setSearchParams(localVarUrlObj, localVarQueryParameter); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * Retrieves detailed configuration for a specific AI agent. + * @summary Get Agent Details + * @param {string} organisation The organisation ID + * @param {string} agentId The agent ID + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + getAIAgent: async (organisation: string, agentId: string, options: RawAxiosRequestConfig = {}): Promise => { + // verify required parameter 'organisation' is not null or undefined + assertParamExists('getAIAgent', 'organisation', organisation) + // verify required parameter 'agentId' is not null or undefined + assertParamExists('getAIAgent', 'agentId', agentId) + const localVarPath = `/api/v3/organizations/{organisation}/ai/agents/{agentId}` + .replace(`{${"organisation"}}`, encodeURIComponent(String(organisation))) + .replace(`{${"agentId"}}`, encodeURIComponent(String(agentId))); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options}; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + // authentication BearerAuth required + // http bearer authentication required + await setBearerAuthToObject(localVarHeaderParameter, configuration) + + + + setSearchParams(localVarUrlObj, localVarQueryParameter); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * Lists all AI agents for an organization. Agents are pre-configured AI assistants with specific system prompts, model settings, and tool permissions. * * **Features:** * - Filter by group (e.g., \'development\', \'compliance\') * - Organization-scoped * - Returns agent configurations without execution history + * @summary List AI Agents + * @param {string} organisation The organisation ID + * @param {string} [group] Optional group filter (e.g., \'development\', \'compliance\') + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + listAIAgents: async (organisation: string, group?: string, options: RawAxiosRequestConfig = {}): Promise => { + // verify required parameter 'organisation' is not null or undefined + assertParamExists('listAIAgents', 'organisation', organisation) + const localVarPath = `/api/v3/organizations/{organisation}/ai/agents` + .replace(`{${"organisation"}}`, encodeURIComponent(String(organisation))); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options}; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + // authentication BearerAuth required + // http bearer authentication required + await setBearerAuthToObject(localVarHeaderParameter, configuration) + + if (group !== undefined) { + localVarQueryParameter['group'] = group; + } + + + + setSearchParams(localVarUrlObj, localVarQueryParameter); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * Updates an existing AI agent configuration. All fields except agentId, organizationId, createdAt, and createdBy can be updated. + * @summary Update Agent + * @param {string} organisation The organisation ID + * @param {string} agentId The agent ID + * @param {UpdateAIAgentRequest} updateAIAgentRequest + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + updateAIAgent: async (organisation: string, agentId: string, updateAIAgentRequest: UpdateAIAgentRequest, options: RawAxiosRequestConfig = {}): Promise => { + // verify required parameter 'organisation' is not null or undefined + assertParamExists('updateAIAgent', 'organisation', organisation) + // verify required parameter 'agentId' is not null or undefined + assertParamExists('updateAIAgent', 'agentId', agentId) + // verify required parameter 'updateAIAgentRequest' is not null or undefined + assertParamExists('updateAIAgent', 'updateAIAgentRequest', updateAIAgentRequest) + const localVarPath = `/api/v3/organizations/{organisation}/ai/agents/{agentId}` + .replace(`{${"organisation"}}`, encodeURIComponent(String(organisation))) + .replace(`{${"agentId"}}`, encodeURIComponent(String(agentId))); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: 'PUT', ...baseOptions, ...options}; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + // authentication BearerAuth required + // http bearer authentication required + await setBearerAuthToObject(localVarHeaderParameter, configuration) + + + + localVarHeaderParameter['Content-Type'] = 'application/json'; + + setSearchParams(localVarUrlObj, localVarQueryParameter); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + localVarRequestOptions.data = serializeDataIfNeeded(updateAIAgentRequest, localVarRequestOptions, configuration) + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + } +}; + +/** + * AIAgentsApi - functional programming interface + * @export + */ +export const AIAgentsApiFp = function(configuration?: Configuration) { + const localVarAxiosParamCreator = AIAgentsApiAxiosParamCreator(configuration) + return { + /** + * Initiates a chat session with a specific AI agent. The agent\'s configuration (system prompt, temperature, model, allowed tools) is automatically applied. * * **Key Features:** * - **Session Management**: Automatic session creation and state tracking * - **Multi-turn Conversations**: Full conversation history maintained server-side * - Agent\'s system prompt is prepended to conversation * - Only agent\'s allowed tools are available * - All tools are auto-executed on cloud (no client confirmation needed) * - Temperature and model from agent config * - Supports sync, streaming, and async modes * * **Execution Modes:** * - **Sync Mode** (default): Standard JSON response, waits for completion * - **Streaming Mode**: Set `stream: true` for SSE token-by-token responses * - **Async Mode**: Set `async: true` for long-running tasks with polling * * **Async/Durable Mode (`async: true`):** * - Returns immediately with `requestId` and `pollUrl` (HTTP 202) * - Uses AWS Lambda Durable Functions for long-running agent tasks * - All tools are auto-executed on cloud (no `waiting_callback` state) * - Poll `/ai/chat/executions/{requestId}` for status * - Ideal for agents with slow tools (image generation, web search, etc.) * * **Session Support:** * - Omit `sessionId` to create a new session automatically * - Include `sessionId` to continue an existing conversation * - Sessions expire after 60 minutes of inactivity * - Sessions work in all modes (sync, streaming, async) * - Use `/sessions/{sessionId}` to retrieve full conversation history + * @summary Chat with AI Agent + * @param {string} organisation The organisation ID + * @param {string} agentId The agent ID + * @param {ChatWithAIAgentRequest} chatWithAIAgentRequest + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async chatWithAIAgent(organisation: string, agentId: string, chatWithAIAgentRequest: ChatWithAIAgentRequest, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.chatWithAIAgent(organisation, agentId, chatWithAIAgentRequest, options); + const localVarOperationServerIndex = configuration?.serverIndex ?? 0; + const localVarOperationServerBasePath = operationServerMap['AIAgentsApi.chatWithAIAgent']?.[localVarOperationServerIndex]?.url; + return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath); + }, + /** + * Creates a new AI agent with specific configuration, system prompt, and tool permissions. * * **Agent Configuration:** * - **System Prompt**: Instructions that guide the agent\'s behavior * - **Model**: Which foundation model to use (e.g., \'amazon.nova-pro-v1:0\') * - **Temperature**: Creativity level (0-1) * - **Allowed Tools**: Which tools the agent can auto-execute * - **Allowed Collections**: Vector DB collections for RAG * - **Group**: Optional categorization (e.g., \'development\', \'compliance\') * * **Auto-Execution:** * All tools are automatically executed when an agent requests them (no client confirmation needed). + * @summary Create AI Agent + * @param {string} organisation The organisation ID + * @param {CreateAIAgentRequest} createAIAgentRequest + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async createAIAgent(organisation: string, createAIAgentRequest: CreateAIAgentRequest, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.createAIAgent(organisation, createAIAgentRequest, options); + const localVarOperationServerIndex = configuration?.serverIndex ?? 0; + const localVarOperationServerBasePath = operationServerMap['AIAgentsApi.createAIAgent']?.[localVarOperationServerIndex]?.url; + return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath); + }, + /** + * Permanently deletes an AI agent. This action cannot be undone. + * @summary Delete Agent + * @param {string} organisation The organisation ID + * @param {string} agentId The agent ID + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async deleteAIAgent(organisation: string, agentId: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.deleteAIAgent(organisation, agentId, options); + const localVarOperationServerIndex = configuration?.serverIndex ?? 0; + const localVarOperationServerBasePath = operationServerMap['AIAgentsApi.deleteAIAgent']?.[localVarOperationServerIndex]?.url; + return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath); + }, + /** + * Retrieves detailed configuration for a specific AI agent. + * @summary Get Agent Details + * @param {string} organisation The organisation ID + * @param {string} agentId The agent ID + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async getAIAgent(organisation: string, agentId: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.getAIAgent(organisation, agentId, options); + const localVarOperationServerIndex = configuration?.serverIndex ?? 0; + const localVarOperationServerBasePath = operationServerMap['AIAgentsApi.getAIAgent']?.[localVarOperationServerIndex]?.url; + return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath); + }, + /** + * Lists all AI agents for an organization. Agents are pre-configured AI assistants with specific system prompts, model settings, and tool permissions. * * **Features:** * - Filter by group (e.g., \'development\', \'compliance\') * - Organization-scoped * - Returns agent configurations without execution history + * @summary List AI Agents + * @param {string} organisation The organisation ID + * @param {string} [group] Optional group filter (e.g., \'development\', \'compliance\') + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async listAIAgents(organisation: string, group?: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.listAIAgents(organisation, group, options); + const localVarOperationServerIndex = configuration?.serverIndex ?? 0; + const localVarOperationServerBasePath = operationServerMap['AIAgentsApi.listAIAgents']?.[localVarOperationServerIndex]?.url; + return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath); + }, + /** + * Updates an existing AI agent configuration. All fields except agentId, organizationId, createdAt, and createdBy can be updated. + * @summary Update Agent + * @param {string} organisation The organisation ID + * @param {string} agentId The agent ID + * @param {UpdateAIAgentRequest} updateAIAgentRequest + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async updateAIAgent(organisation: string, agentId: string, updateAIAgentRequest: UpdateAIAgentRequest, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.updateAIAgent(organisation, agentId, updateAIAgentRequest, options); + const localVarOperationServerIndex = configuration?.serverIndex ?? 0; + const localVarOperationServerBasePath = operationServerMap['AIAgentsApi.updateAIAgent']?.[localVarOperationServerIndex]?.url; + return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath); + }, + } +}; + +/** + * AIAgentsApi - factory interface + * @export + */ +export const AIAgentsApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) { + const localVarFp = AIAgentsApiFp(configuration) + return { + /** + * Initiates a chat session with a specific AI agent. The agent\'s configuration (system prompt, temperature, model, allowed tools) is automatically applied. * * **Key Features:** * - **Session Management**: Automatic session creation and state tracking * - **Multi-turn Conversations**: Full conversation history maintained server-side * - Agent\'s system prompt is prepended to conversation * - Only agent\'s allowed tools are available * - All tools are auto-executed on cloud (no client confirmation needed) * - Temperature and model from agent config * - Supports sync, streaming, and async modes * * **Execution Modes:** * - **Sync Mode** (default): Standard JSON response, waits for completion * - **Streaming Mode**: Set `stream: true` for SSE token-by-token responses * - **Async Mode**: Set `async: true` for long-running tasks with polling * * **Async/Durable Mode (`async: true`):** * - Returns immediately with `requestId` and `pollUrl` (HTTP 202) * - Uses AWS Lambda Durable Functions for long-running agent tasks * - All tools are auto-executed on cloud (no `waiting_callback` state) * - Poll `/ai/chat/executions/{requestId}` for status * - Ideal for agents with slow tools (image generation, web search, etc.) * * **Session Support:** * - Omit `sessionId` to create a new session automatically * - Include `sessionId` to continue an existing conversation * - Sessions expire after 60 minutes of inactivity * - Sessions work in all modes (sync, streaming, async) * - Use `/sessions/{sessionId}` to retrieve full conversation history + * @summary Chat with AI Agent + * @param {string} organisation The organisation ID + * @param {string} agentId The agent ID + * @param {ChatWithAIAgentRequest} chatWithAIAgentRequest + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + chatWithAIAgent(organisation: string, agentId: string, chatWithAIAgentRequest: ChatWithAIAgentRequest, options?: RawAxiosRequestConfig): AxiosPromise { + return localVarFp.chatWithAIAgent(organisation, agentId, chatWithAIAgentRequest, options).then((request) => request(axios, basePath)); + }, + /** + * Creates a new AI agent with specific configuration, system prompt, and tool permissions. * * **Agent Configuration:** * - **System Prompt**: Instructions that guide the agent\'s behavior * - **Model**: Which foundation model to use (e.g., \'amazon.nova-pro-v1:0\') * - **Temperature**: Creativity level (0-1) * - **Allowed Tools**: Which tools the agent can auto-execute * - **Allowed Collections**: Vector DB collections for RAG * - **Group**: Optional categorization (e.g., \'development\', \'compliance\') * * **Auto-Execution:** * All tools are automatically executed when an agent requests them (no client confirmation needed). + * @summary Create AI Agent + * @param {string} organisation The organisation ID + * @param {CreateAIAgentRequest} createAIAgentRequest + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + createAIAgent(organisation: string, createAIAgentRequest: CreateAIAgentRequest, options?: RawAxiosRequestConfig): AxiosPromise { + return localVarFp.createAIAgent(organisation, createAIAgentRequest, options).then((request) => request(axios, basePath)); + }, + /** + * Permanently deletes an AI agent. This action cannot be undone. + * @summary Delete Agent + * @param {string} organisation The organisation ID + * @param {string} agentId The agent ID + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + deleteAIAgent(organisation: string, agentId: string, options?: RawAxiosRequestConfig): AxiosPromise { + return localVarFp.deleteAIAgent(organisation, agentId, options).then((request) => request(axios, basePath)); + }, + /** + * Retrieves detailed configuration for a specific AI agent. + * @summary Get Agent Details + * @param {string} organisation The organisation ID + * @param {string} agentId The agent ID + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + getAIAgent(organisation: string, agentId: string, options?: RawAxiosRequestConfig): AxiosPromise { + return localVarFp.getAIAgent(organisation, agentId, options).then((request) => request(axios, basePath)); + }, + /** + * Lists all AI agents for an organization. Agents are pre-configured AI assistants with specific system prompts, model settings, and tool permissions. * * **Features:** * - Filter by group (e.g., \'development\', \'compliance\') * - Organization-scoped * - Returns agent configurations without execution history + * @summary List AI Agents + * @param {string} organisation The organisation ID + * @param {string} [group] Optional group filter (e.g., \'development\', \'compliance\') + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + listAIAgents(organisation: string, group?: string, options?: RawAxiosRequestConfig): AxiosPromise { + return localVarFp.listAIAgents(organisation, group, options).then((request) => request(axios, basePath)); + }, + /** + * Updates an existing AI agent configuration. All fields except agentId, organizationId, createdAt, and createdBy can be updated. + * @summary Update Agent + * @param {string} organisation The organisation ID + * @param {string} agentId The agent ID + * @param {UpdateAIAgentRequest} updateAIAgentRequest + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + updateAIAgent(organisation: string, agentId: string, updateAIAgentRequest: UpdateAIAgentRequest, options?: RawAxiosRequestConfig): AxiosPromise { + return localVarFp.updateAIAgent(organisation, agentId, updateAIAgentRequest, options).then((request) => request(axios, basePath)); + }, + }; +}; + +/** + * AIAgentsApi - object-oriented interface + * @export + * @class AIAgentsApi + * @extends {BaseAPI} + */ +export class AIAgentsApi extends BaseAPI { + /** + * Initiates a chat session with a specific AI agent. The agent\'s configuration (system prompt, temperature, model, allowed tools) is automatically applied. * * **Key Features:** * - **Session Management**: Automatic session creation and state tracking * - **Multi-turn Conversations**: Full conversation history maintained server-side * - Agent\'s system prompt is prepended to conversation * - Only agent\'s allowed tools are available * - All tools are auto-executed on cloud (no client confirmation needed) * - Temperature and model from agent config * - Supports sync, streaming, and async modes * * **Execution Modes:** * - **Sync Mode** (default): Standard JSON response, waits for completion * - **Streaming Mode**: Set `stream: true` for SSE token-by-token responses * - **Async Mode**: Set `async: true` for long-running tasks with polling * * **Async/Durable Mode (`async: true`):** * - Returns immediately with `requestId` and `pollUrl` (HTTP 202) * - Uses AWS Lambda Durable Functions for long-running agent tasks * - All tools are auto-executed on cloud (no `waiting_callback` state) * - Poll `/ai/chat/executions/{requestId}` for status * - Ideal for agents with slow tools (image generation, web search, etc.) * * **Session Support:** * - Omit `sessionId` to create a new session automatically * - Include `sessionId` to continue an existing conversation * - Sessions expire after 60 minutes of inactivity * - Sessions work in all modes (sync, streaming, async) * - Use `/sessions/{sessionId}` to retrieve full conversation history + * @summary Chat with AI Agent + * @param {string} organisation The organisation ID + * @param {string} agentId The agent ID + * @param {ChatWithAIAgentRequest} chatWithAIAgentRequest + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof AIAgentsApi + */ + public chatWithAIAgent(organisation: string, agentId: string, chatWithAIAgentRequest: ChatWithAIAgentRequest, options?: RawAxiosRequestConfig) { + return AIAgentsApiFp(this.configuration).chatWithAIAgent(organisation, agentId, chatWithAIAgentRequest, options).then((request) => request(this.axios, this.basePath)); + } + + /** + * Creates a new AI agent with specific configuration, system prompt, and tool permissions. * * **Agent Configuration:** * - **System Prompt**: Instructions that guide the agent\'s behavior * - **Model**: Which foundation model to use (e.g., \'amazon.nova-pro-v1:0\') * - **Temperature**: Creativity level (0-1) * - **Allowed Tools**: Which tools the agent can auto-execute * - **Allowed Collections**: Vector DB collections for RAG * - **Group**: Optional categorization (e.g., \'development\', \'compliance\') * * **Auto-Execution:** * All tools are automatically executed when an agent requests them (no client confirmation needed). + * @summary Create AI Agent + * @param {string} organisation The organisation ID + * @param {CreateAIAgentRequest} createAIAgentRequest + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof AIAgentsApi + */ + public createAIAgent(organisation: string, createAIAgentRequest: CreateAIAgentRequest, options?: RawAxiosRequestConfig) { + return AIAgentsApiFp(this.configuration).createAIAgent(organisation, createAIAgentRequest, options).then((request) => request(this.axios, this.basePath)); + } + + /** + * Permanently deletes an AI agent. This action cannot be undone. + * @summary Delete Agent + * @param {string} organisation The organisation ID + * @param {string} agentId The agent ID + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof AIAgentsApi + */ + public deleteAIAgent(organisation: string, agentId: string, options?: RawAxiosRequestConfig) { + return AIAgentsApiFp(this.configuration).deleteAIAgent(organisation, agentId, options).then((request) => request(this.axios, this.basePath)); + } + + /** + * Retrieves detailed configuration for a specific AI agent. + * @summary Get Agent Details + * @param {string} organisation The organisation ID + * @param {string} agentId The agent ID + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof AIAgentsApi + */ + public getAIAgent(organisation: string, agentId: string, options?: RawAxiosRequestConfig) { + return AIAgentsApiFp(this.configuration).getAIAgent(organisation, agentId, options).then((request) => request(this.axios, this.basePath)); + } + + /** + * Lists all AI agents for an organization. Agents are pre-configured AI assistants with specific system prompts, model settings, and tool permissions. * * **Features:** * - Filter by group (e.g., \'development\', \'compliance\') * - Organization-scoped * - Returns agent configurations without execution history + * @summary List AI Agents + * @param {string} organisation The organisation ID + * @param {string} [group] Optional group filter (e.g., \'development\', \'compliance\') + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof AIAgentsApi + */ + public listAIAgents(organisation: string, group?: string, options?: RawAxiosRequestConfig) { + return AIAgentsApiFp(this.configuration).listAIAgents(organisation, group, options).then((request) => request(this.axios, this.basePath)); + } + + /** + * Updates an existing AI agent configuration. All fields except agentId, organizationId, createdAt, and createdBy can be updated. + * @summary Update Agent + * @param {string} organisation The organisation ID + * @param {string} agentId The agent ID + * @param {UpdateAIAgentRequest} updateAIAgentRequest + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof AIAgentsApi + */ + public updateAIAgent(organisation: string, agentId: string, updateAIAgentRequest: UpdateAIAgentRequest, options?: RawAxiosRequestConfig) { + return AIAgentsApiFp(this.configuration).updateAIAgent(organisation, agentId, updateAIAgentRequest, options).then((request) => request(this.axios, this.basePath)); + } +} + + + +/** + * AICustomToolsApi - axios parameter creator + * @export + */ +export const AICustomToolsApiAxiosParamCreator = function (configuration?: Configuration) { + return { + /** + * Registers a custom edge function as a tool that AI models can invoke. This enables customers to create their own tools backed by edge functions. * * **Edge Function Contract:** * - Edge functions must accept POST requests with JSON payload * - Expected request format: `{ \'toolName\': \'...\', \'input\': {...}, \'orgId\': \'...\' }` * - Must return JSON response with either `result` or `error` field * * **Async Tools:** * Set `isAsync: true` for operations >5 seconds. The edge function should return `{ executionId: \'...\' }` and the AI will poll for completion. + * @summary Register Custom Edge Function Tool + * @param {string} organisation The organisation ID + * @param {CreateCustomToolRequest} createCustomToolRequest + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + createCustomTool: async (organisation: string, createCustomToolRequest: CreateCustomToolRequest, options: RawAxiosRequestConfig = {}): Promise => { + // verify required parameter 'organisation' is not null or undefined + assertParamExists('createCustomTool', 'organisation', organisation) + // verify required parameter 'createCustomToolRequest' is not null or undefined + assertParamExists('createCustomTool', 'createCustomToolRequest', createCustomToolRequest) + const localVarPath = `/api/v3/organizations/{organisation}/ai/custom-tools` + .replace(`{${"organisation"}}`, encodeURIComponent(String(organisation))); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options}; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + // authentication BearerAuth required + // http bearer authentication required + await setBearerAuthToObject(localVarHeaderParameter, configuration) + + + + localVarHeaderParameter['Content-Type'] = 'application/json'; + + setSearchParams(localVarUrlObj, localVarQueryParameter); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + localVarRequestOptions.data = serializeDataIfNeeded(createCustomToolRequest, localVarRequestOptions, configuration) + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * Deletes a custom tool registration. The underlying edge function is not affected. + * @summary Delete Custom Tool + * @param {string} organisation The organisation ID + * @param {string} toolName The tool name to delete + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + deleteCustomTool: async (organisation: string, toolName: string, options: RawAxiosRequestConfig = {}): Promise => { + // verify required parameter 'organisation' is not null or undefined + assertParamExists('deleteCustomTool', 'organisation', organisation) + // verify required parameter 'toolName' is not null or undefined + assertParamExists('deleteCustomTool', 'toolName', toolName) + const localVarPath = `/api/v3/organizations/{organisation}/ai/custom-tools/{toolName}` + .replace(`{${"organisation"}}`, encodeURIComponent(String(organisation))) + .replace(`{${"toolName"}}`, encodeURIComponent(String(toolName))); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: 'DELETE', ...baseOptions, ...options}; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + // authentication BearerAuth required + // http bearer authentication required + await setBearerAuthToObject(localVarHeaderParameter, configuration) + + + + setSearchParams(localVarUrlObj, localVarQueryParameter); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * Lists all registered custom edge function tools for an organization. + * @summary List Custom Tools + * @param {string} organisation The organisation ID + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + listCustomTools: async (organisation: string, options: RawAxiosRequestConfig = {}): Promise => { + // verify required parameter 'organisation' is not null or undefined + assertParamExists('listCustomTools', 'organisation', organisation) + const localVarPath = `/api/v3/organizations/{organisation}/ai/custom-tools` + .replace(`{${"organisation"}}`, encodeURIComponent(String(organisation))); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options}; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + // authentication BearerAuth required + // http bearer authentication required + await setBearerAuthToObject(localVarHeaderParameter, configuration) + + + + setSearchParams(localVarUrlObj, localVarQueryParameter); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + } +}; + +/** + * AICustomToolsApi - functional programming interface + * @export + */ +export const AICustomToolsApiFp = function(configuration?: Configuration) { + const localVarAxiosParamCreator = AICustomToolsApiAxiosParamCreator(configuration) + return { + /** + * Registers a custom edge function as a tool that AI models can invoke. This enables customers to create their own tools backed by edge functions. * * **Edge Function Contract:** * - Edge functions must accept POST requests with JSON payload * - Expected request format: `{ \'toolName\': \'...\', \'input\': {...}, \'orgId\': \'...\' }` * - Must return JSON response with either `result` or `error` field * * **Async Tools:** * Set `isAsync: true` for operations >5 seconds. The edge function should return `{ executionId: \'...\' }` and the AI will poll for completion. + * @summary Register Custom Edge Function Tool + * @param {string} organisation The organisation ID + * @param {CreateCustomToolRequest} createCustomToolRequest + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async createCustomTool(organisation: string, createCustomToolRequest: CreateCustomToolRequest, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.createCustomTool(organisation, createCustomToolRequest, options); + const localVarOperationServerIndex = configuration?.serverIndex ?? 0; + const localVarOperationServerBasePath = operationServerMap['AICustomToolsApi.createCustomTool']?.[localVarOperationServerIndex]?.url; + return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath); + }, + /** + * Deletes a custom tool registration. The underlying edge function is not affected. + * @summary Delete Custom Tool + * @param {string} organisation The organisation ID + * @param {string} toolName The tool name to delete + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async deleteCustomTool(organisation: string, toolName: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.deleteCustomTool(organisation, toolName, options); + const localVarOperationServerIndex = configuration?.serverIndex ?? 0; + const localVarOperationServerBasePath = operationServerMap['AICustomToolsApi.deleteCustomTool']?.[localVarOperationServerIndex]?.url; + return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath); + }, + /** + * Lists all registered custom edge function tools for an organization. + * @summary List Custom Tools + * @param {string} organisation The organisation ID + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async listCustomTools(organisation: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.listCustomTools(organisation, options); + const localVarOperationServerIndex = configuration?.serverIndex ?? 0; + const localVarOperationServerBasePath = operationServerMap['AICustomToolsApi.listCustomTools']?.[localVarOperationServerIndex]?.url; + return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath); + }, + } +}; + +/** + * AICustomToolsApi - factory interface + * @export + */ +export const AICustomToolsApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) { + const localVarFp = AICustomToolsApiFp(configuration) + return { + /** + * Registers a custom edge function as a tool that AI models can invoke. This enables customers to create their own tools backed by edge functions. * * **Edge Function Contract:** * - Edge functions must accept POST requests with JSON payload * - Expected request format: `{ \'toolName\': \'...\', \'input\': {...}, \'orgId\': \'...\' }` * - Must return JSON response with either `result` or `error` field * * **Async Tools:** * Set `isAsync: true` for operations >5 seconds. The edge function should return `{ executionId: \'...\' }` and the AI will poll for completion. + * @summary Register Custom Edge Function Tool + * @param {string} organisation The organisation ID + * @param {CreateCustomToolRequest} createCustomToolRequest + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + createCustomTool(organisation: string, createCustomToolRequest: CreateCustomToolRequest, options?: RawAxiosRequestConfig): AxiosPromise { + return localVarFp.createCustomTool(organisation, createCustomToolRequest, options).then((request) => request(axios, basePath)); + }, + /** + * Deletes a custom tool registration. The underlying edge function is not affected. + * @summary Delete Custom Tool + * @param {string} organisation The organisation ID + * @param {string} toolName The tool name to delete + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + deleteCustomTool(organisation: string, toolName: string, options?: RawAxiosRequestConfig): AxiosPromise { + return localVarFp.deleteCustomTool(organisation, toolName, options).then((request) => request(axios, basePath)); + }, + /** + * Lists all registered custom edge function tools for an organization. + * @summary List Custom Tools + * @param {string} organisation The organisation ID + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + listCustomTools(organisation: string, options?: RawAxiosRequestConfig): AxiosPromise { + return localVarFp.listCustomTools(organisation, options).then((request) => request(axios, basePath)); + }, + }; +}; + +/** + * AICustomToolsApi - object-oriented interface + * @export + * @class AICustomToolsApi + * @extends {BaseAPI} + */ +export class AICustomToolsApi extends BaseAPI { + /** + * Registers a custom edge function as a tool that AI models can invoke. This enables customers to create their own tools backed by edge functions. * * **Edge Function Contract:** * - Edge functions must accept POST requests with JSON payload * - Expected request format: `{ \'toolName\': \'...\', \'input\': {...}, \'orgId\': \'...\' }` * - Must return JSON response with either `result` or `error` field * * **Async Tools:** * Set `isAsync: true` for operations >5 seconds. The edge function should return `{ executionId: \'...\' }` and the AI will poll for completion. + * @summary Register Custom Edge Function Tool + * @param {string} organisation The organisation ID + * @param {CreateCustomToolRequest} createCustomToolRequest + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof AICustomToolsApi + */ + public createCustomTool(organisation: string, createCustomToolRequest: CreateCustomToolRequest, options?: RawAxiosRequestConfig) { + return AICustomToolsApiFp(this.configuration).createCustomTool(organisation, createCustomToolRequest, options).then((request) => request(this.axios, this.basePath)); + } + + /** + * Deletes a custom tool registration. The underlying edge function is not affected. + * @summary Delete Custom Tool + * @param {string} organisation The organisation ID + * @param {string} toolName The tool name to delete + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof AICustomToolsApi + */ + public deleteCustomTool(organisation: string, toolName: string, options?: RawAxiosRequestConfig) { + return AICustomToolsApiFp(this.configuration).deleteCustomTool(organisation, toolName, options).then((request) => request(this.axios, this.basePath)); + } + + /** + * Lists all registered custom edge function tools for an organization. + * @summary List Custom Tools + * @param {string} organisation The organisation ID + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof AICustomToolsApi + */ + public listCustomTools(organisation: string, options?: RawAxiosRequestConfig) { + return AICustomToolsApiFp(this.configuration).listCustomTools(organisation, options).then((request) => request(this.axios, this.basePath)); + } +} + + + +/** + * AIFileStorageApi - axios parameter creator + * @export + */ +export const AIFileStorageApiAxiosParamCreator = function (configuration?: Configuration) { + return { + /** + * Deletes a file from S3 storage. + * @summary Delete File + * @param {string} organisation The organisation ID + * @param {string} fileId The file ID + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + deleteFile: async (organisation: string, fileId: string, options: RawAxiosRequestConfig = {}): Promise => { + // verify required parameter 'organisation' is not null or undefined + assertParamExists('deleteFile', 'organisation', organisation) + // verify required parameter 'fileId' is not null or undefined + assertParamExists('deleteFile', 'fileId', fileId) + const localVarPath = `/api/v3/organizations/{organisation}/ai/files/{fileId}` + .replace(`{${"organisation"}}`, encodeURIComponent(String(organisation))) + .replace(`{${"fileId"}}`, encodeURIComponent(String(fileId))); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: 'DELETE', ...baseOptions, ...options}; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + // authentication BearerAuth required + // http bearer authentication required + await setBearerAuthToObject(localVarHeaderParameter, configuration) + + + + setSearchParams(localVarUrlObj, localVarQueryParameter); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * Retrieves file metadata and a presigned download URL (valid for 1 hour). + * @summary Get File + * @param {string} organisation The organisation ID + * @param {string} fileId The file ID + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + getFile: async (organisation: string, fileId: string, options: RawAxiosRequestConfig = {}): Promise => { + // verify required parameter 'organisation' is not null or undefined + assertParamExists('getFile', 'organisation', organisation) + // verify required parameter 'fileId' is not null or undefined + assertParamExists('getFile', 'fileId', fileId) + const localVarPath = `/api/v3/organizations/{organisation}/ai/files/{fileId}` + .replace(`{${"organisation"}}`, encodeURIComponent(String(organisation))) + .replace(`{${"fileId"}}`, encodeURIComponent(String(fileId))); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options}; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + // authentication BearerAuth required + // http bearer authentication required + await setBearerAuthToObject(localVarHeaderParameter, configuration) + + + + setSearchParams(localVarUrlObj, localVarQueryParameter); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * Lists files stored in S3 for this organization with optional metadata filtering and pagination. + * @summary List Files + * @param {string} organisation The organisation ID + * @param {string} [filter] JSON-encoded metadata filter. Supports exact match and array contains filters. + * @param {number} [limit] Maximum files to return + * @param {string} [cursor] Pagination cursor from previous response + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + listFiles: async (organisation: string, filter?: string, limit?: number, cursor?: string, options: RawAxiosRequestConfig = {}): Promise => { + // verify required parameter 'organisation' is not null or undefined + assertParamExists('listFiles', 'organisation', organisation) + const localVarPath = `/api/v3/organizations/{organisation}/ai/files` + .replace(`{${"organisation"}}`, encodeURIComponent(String(organisation))); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options}; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + // authentication BearerAuth required + // http bearer authentication required + await setBearerAuthToObject(localVarHeaderParameter, configuration) + + if (filter !== undefined) { + localVarQueryParameter['filter'] = filter; + } + + if (limit !== undefined) { + localVarQueryParameter['limit'] = limit; + } + + if (cursor !== undefined) { + localVarQueryParameter['cursor'] = cursor; + } + + + + setSearchParams(localVarUrlObj, localVarQueryParameter); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * Uploads a file to S3 storage for later retrieval. * * **Two Upload Modes:** * * 1. **Direct Upload (≤7MB):** Send base64-encoded content in request body. * * 2. **Presigned URL Upload (any size):** Set `requestUploadUrl: true` to get a presigned S3 PUT URL, then upload directly to S3. * * **Supported Content Types:** * - Images: image/png, image/jpeg, image/gif, image/webp, image/svg+xml * - Documents: application/pdf, text/plain, text/markdown, text/html * - Code: text/javascript, application/json, text/css, text/yaml * - Archives: application/zip, application/gzip * - Video: video/mp4, video/webm (use presigned URL for large files) * * **Metadata:** * Attach any custom metadata for filtering. `artifactType` is auto-populated from contentType if not provided. + * @summary Upload File to S3 + * @param {string} organisation The organisation ID + * @param {UploadFileRequest} uploadFileRequest + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + uploadFile: async (organisation: string, uploadFileRequest: UploadFileRequest, options: RawAxiosRequestConfig = {}): Promise => { + // verify required parameter 'organisation' is not null or undefined + assertParamExists('uploadFile', 'organisation', organisation) + // verify required parameter 'uploadFileRequest' is not null or undefined + assertParamExists('uploadFile', 'uploadFileRequest', uploadFileRequest) + const localVarPath = `/api/v3/organizations/{organisation}/ai/files` + .replace(`{${"organisation"}}`, encodeURIComponent(String(organisation))); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options}; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + // authentication BearerAuth required + // http bearer authentication required + await setBearerAuthToObject(localVarHeaderParameter, configuration) + + + + localVarHeaderParameter['Content-Type'] = 'application/json'; + + setSearchParams(localVarUrlObj, localVarQueryParameter); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + localVarRequestOptions.data = serializeDataIfNeeded(uploadFileRequest, localVarRequestOptions, configuration) + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + } +}; + +/** + * AIFileStorageApi - functional programming interface + * @export + */ +export const AIFileStorageApiFp = function(configuration?: Configuration) { + const localVarAxiosParamCreator = AIFileStorageApiAxiosParamCreator(configuration) + return { + /** + * Deletes a file from S3 storage. + * @summary Delete File + * @param {string} organisation The organisation ID + * @param {string} fileId The file ID + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async deleteFile(organisation: string, fileId: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.deleteFile(organisation, fileId, options); + const localVarOperationServerIndex = configuration?.serverIndex ?? 0; + const localVarOperationServerBasePath = operationServerMap['AIFileStorageApi.deleteFile']?.[localVarOperationServerIndex]?.url; + return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath); + }, + /** + * Retrieves file metadata and a presigned download URL (valid for 1 hour). + * @summary Get File + * @param {string} organisation The organisation ID + * @param {string} fileId The file ID + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async getFile(organisation: string, fileId: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.getFile(organisation, fileId, options); + const localVarOperationServerIndex = configuration?.serverIndex ?? 0; + const localVarOperationServerBasePath = operationServerMap['AIFileStorageApi.getFile']?.[localVarOperationServerIndex]?.url; + return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath); + }, + /** + * Lists files stored in S3 for this organization with optional metadata filtering and pagination. + * @summary List Files + * @param {string} organisation The organisation ID + * @param {string} [filter] JSON-encoded metadata filter. Supports exact match and array contains filters. + * @param {number} [limit] Maximum files to return + * @param {string} [cursor] Pagination cursor from previous response + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async listFiles(organisation: string, filter?: string, limit?: number, cursor?: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.listFiles(organisation, filter, limit, cursor, options); + const localVarOperationServerIndex = configuration?.serverIndex ?? 0; + const localVarOperationServerBasePath = operationServerMap['AIFileStorageApi.listFiles']?.[localVarOperationServerIndex]?.url; + return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath); + }, + /** + * Uploads a file to S3 storage for later retrieval. * * **Two Upload Modes:** * * 1. **Direct Upload (≤7MB):** Send base64-encoded content in request body. * * 2. **Presigned URL Upload (any size):** Set `requestUploadUrl: true` to get a presigned S3 PUT URL, then upload directly to S3. * * **Supported Content Types:** * - Images: image/png, image/jpeg, image/gif, image/webp, image/svg+xml * - Documents: application/pdf, text/plain, text/markdown, text/html * - Code: text/javascript, application/json, text/css, text/yaml * - Archives: application/zip, application/gzip * - Video: video/mp4, video/webm (use presigned URL for large files) * * **Metadata:** * Attach any custom metadata for filtering. `artifactType` is auto-populated from contentType if not provided. + * @summary Upload File to S3 + * @param {string} organisation The organisation ID + * @param {UploadFileRequest} uploadFileRequest + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async uploadFile(organisation: string, uploadFileRequest: UploadFileRequest, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.uploadFile(organisation, uploadFileRequest, options); + const localVarOperationServerIndex = configuration?.serverIndex ?? 0; + const localVarOperationServerBasePath = operationServerMap['AIFileStorageApi.uploadFile']?.[localVarOperationServerIndex]?.url; + return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath); + }, + } +}; + +/** + * AIFileStorageApi - factory interface + * @export + */ +export const AIFileStorageApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) { + const localVarFp = AIFileStorageApiFp(configuration) + return { + /** + * Deletes a file from S3 storage. + * @summary Delete File + * @param {string} organisation The organisation ID + * @param {string} fileId The file ID + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + deleteFile(organisation: string, fileId: string, options?: RawAxiosRequestConfig): AxiosPromise { + return localVarFp.deleteFile(organisation, fileId, options).then((request) => request(axios, basePath)); + }, + /** + * Retrieves file metadata and a presigned download URL (valid for 1 hour). + * @summary Get File + * @param {string} organisation The organisation ID + * @param {string} fileId The file ID + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + getFile(organisation: string, fileId: string, options?: RawAxiosRequestConfig): AxiosPromise { + return localVarFp.getFile(organisation, fileId, options).then((request) => request(axios, basePath)); + }, + /** + * Lists files stored in S3 for this organization with optional metadata filtering and pagination. + * @summary List Files + * @param {string} organisation The organisation ID + * @param {string} [filter] JSON-encoded metadata filter. Supports exact match and array contains filters. + * @param {number} [limit] Maximum files to return + * @param {string} [cursor] Pagination cursor from previous response + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + listFiles(organisation: string, filter?: string, limit?: number, cursor?: string, options?: RawAxiosRequestConfig): AxiosPromise { + return localVarFp.listFiles(organisation, filter, limit, cursor, options).then((request) => request(axios, basePath)); + }, + /** + * Uploads a file to S3 storage for later retrieval. * * **Two Upload Modes:** * * 1. **Direct Upload (≤7MB):** Send base64-encoded content in request body. * * 2. **Presigned URL Upload (any size):** Set `requestUploadUrl: true` to get a presigned S3 PUT URL, then upload directly to S3. * * **Supported Content Types:** * - Images: image/png, image/jpeg, image/gif, image/webp, image/svg+xml * - Documents: application/pdf, text/plain, text/markdown, text/html * - Code: text/javascript, application/json, text/css, text/yaml * - Archives: application/zip, application/gzip * - Video: video/mp4, video/webm (use presigned URL for large files) * * **Metadata:** * Attach any custom metadata for filtering. `artifactType` is auto-populated from contentType if not provided. + * @summary Upload File to S3 + * @param {string} organisation The organisation ID + * @param {UploadFileRequest} uploadFileRequest + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + uploadFile(organisation: string, uploadFileRequest: UploadFileRequest, options?: RawAxiosRequestConfig): AxiosPromise { + return localVarFp.uploadFile(organisation, uploadFileRequest, options).then((request) => request(axios, basePath)); + }, + }; +}; + /** - * + * AIFileStorageApi - object-oriented interface * @export - * @interface WafConfigThresholdsInner + * @class AIFileStorageApi + * @extends {BaseAPI} */ -export interface WafConfigThresholdsInner { - /** - * Threshold type - * @type {string} - * @memberof WafConfigThresholdsInner - */ - 'type'?: WafConfigThresholdsInnerTypeEnum; - /** - * Requests per second limit (for ip/header) - * @type {number} - * @memberof WafConfigThresholdsInner - */ - 'rps'?: number; - /** - * Hit count limit (for waf_hit_by_ip) - * @type {number} - * @memberof WafConfigThresholdsInner - */ - 'hits'?: number; - /** - * Time window in minutes (for waf_hit_by_ip) - * @type {number} - * @memberof WafConfigThresholdsInner - */ - 'minutes'?: number; +export class AIFileStorageApi extends BaseAPI { /** - * Cooldown period in seconds - * @type {number} - * @memberof WafConfigThresholdsInner + * Deletes a file from S3 storage. + * @summary Delete File + * @param {string} organisation The organisation ID + * @param {string} fileId The file ID + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof AIFileStorageApi */ - 'cooldown'?: number; + public deleteFile(organisation: string, fileId: string, options?: RawAxiosRequestConfig) { + return AIFileStorageApiFp(this.configuration).deleteFile(organisation, fileId, options).then((request) => request(this.axios, this.basePath)); + } + /** - * Threshold enforcement mode - * @type {string} - * @memberof WafConfigThresholdsInner + * Retrieves file metadata and a presigned download URL (valid for 1 hour). + * @summary Get File + * @param {string} organisation The organisation ID + * @param {string} fileId The file ID + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof AIFileStorageApi */ - 'mode'?: WafConfigThresholdsInnerModeEnum; + public getFile(organisation: string, fileId: string, options?: RawAxiosRequestConfig) { + return AIFileStorageApiFp(this.configuration).getFile(organisation, fileId, options).then((request) => request(this.axios, this.basePath)); + } + /** - * Header name (for header type) - * @type {string} - * @memberof WafConfigThresholdsInner + * Lists files stored in S3 for this organization with optional metadata filtering and pagination. + * @summary List Files + * @param {string} organisation The organisation ID + * @param {string} [filter] JSON-encoded metadata filter. Supports exact match and array contains filters. + * @param {number} [limit] Maximum files to return + * @param {string} [cursor] Pagination cursor from previous response + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof AIFileStorageApi */ - 'value'?: string | null; + public listFiles(organisation: string, filter?: string, limit?: number, cursor?: string, options?: RawAxiosRequestConfig) { + return AIFileStorageApiFp(this.configuration).listFiles(organisation, filter, limit, cursor, options).then((request) => request(this.axios, this.basePath)); + } + /** - * Slack webhook for this threshold - * @type {string} - * @memberof WafConfigThresholdsInner + * Uploads a file to S3 storage for later retrieval. * * **Two Upload Modes:** * * 1. **Direct Upload (≤7MB):** Send base64-encoded content in request body. * * 2. **Presigned URL Upload (any size):** Set `requestUploadUrl: true` to get a presigned S3 PUT URL, then upload directly to S3. * * **Supported Content Types:** * - Images: image/png, image/jpeg, image/gif, image/webp, image/svg+xml * - Documents: application/pdf, text/plain, text/markdown, text/html * - Code: text/javascript, application/json, text/css, text/yaml * - Archives: application/zip, application/gzip * - Video: video/mp4, video/webm (use presigned URL for large files) * * **Metadata:** * Attach any custom metadata for filtering. `artifactType` is auto-populated from contentType if not provided. + * @summary Upload File to S3 + * @param {string} organisation The organisation ID + * @param {UploadFileRequest} uploadFileRequest + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof AIFileStorageApi */ - 'notify_slack'?: string | null; + public uploadFile(organisation: string, uploadFileRequest: UploadFileRequest, options?: RawAxiosRequestConfig) { + return AIFileStorageApiFp(this.configuration).uploadFile(organisation, uploadFileRequest, options).then((request) => request(this.axios, this.basePath)); + } } -export const WafConfigThresholdsInnerTypeEnum = { - Ip: 'ip', - Header: 'header', - WafHitByIp: 'waf_hit_by_ip' -} as const; - -export type WafConfigThresholdsInnerTypeEnum = typeof WafConfigThresholdsInnerTypeEnum[keyof typeof WafConfigThresholdsInnerTypeEnum]; -export const WafConfigThresholdsInnerModeEnum = { - Disabled: 'disabled', - Report: 'report', - Block: 'block' -} as const; - -export type WafConfigThresholdsInnerModeEnum = typeof WafConfigThresholdsInnerModeEnum[keyof typeof WafConfigThresholdsInnerModeEnum]; /** - * AIAgentsApi - axios parameter creator + * AIInferenceApi - axios parameter creator * @export */ -export const AIAgentsApiAxiosParamCreator = function (configuration?: Configuration) { +export const AIInferenceApiAxiosParamCreator = function (configuration?: Configuration) { return { /** - * Initiates a chat session with a specific AI agent. The agent\'s configuration (system prompt, temperature, model, allowed tools) is automatically applied. * * **Key Features:** * - **Session Management**: Automatic session creation and state tracking * - **Multi-turn Conversations**: Full conversation history maintained server-side * - Agent\'s system prompt is prepended to conversation * - Only agent\'s allowed tools are available * - All tools are auto-executed (no client confirmation) * - Temperature and model from agent config * * **Session Support:** * - Omit `sessionId` to create a new session automatically * - Include `sessionId` to continue an existing conversation * - Sessions expire after 60 minutes of inactivity * - Use `/sessions/{sessionId}` to retrieve full conversation history - * @summary Chat with AI Agent + * Sends requests to the AI API Gateway endpoint which buffers responses. Supports text, images, videos, and documents via base64 encoding. * * **Execution Modes:** * - **Sync Mode** (default): Standard JSON response, waits for completion (200 response) * - **Async Mode**: Set `async: true` for long-running tasks with polling (202 response) * * **Async/Durable Mode (`async: true`):** * - Returns immediately with `requestId` and `pollUrl` (HTTP 202) * - Uses AWS Lambda Durable Functions for long-running inference * - Supports client-executed tools via `waiting_callback` state * - Poll `/ai/chat/executions/{requestId}` for status * - Submit client tool results via `/ai/chat/callback` * - Ideal for complex prompts, large contexts, or client-side tools * * **Multimodal Support:** * - **Text**: Simple string content * - **Images**: Base64-encoded PNG, JPEG, GIF, WebP (up to 25MB) * - **Videos**: Base64-encoded MP4, MOV, WebM, etc. (up to 25MB) * - **Documents**: Base64-encoded PDF, DOCX, CSV, etc. (up to 25MB) * * **Supported Models (Multimodal):** * - **Claude 4.5 Series**: Sonnet 4.5, Haiku 4.5, Opus 4.5 (images, up to 20 per request) * - **Claude 3.5 Series**: Sonnet v1/v2 (images, up to 20 per request) * - **Amazon Nova**: Lite, Pro, Micro (images, videos, documents) * * **Usage Tips:** * - Use base64 encoding for images/videos < 5-10MB * - Place media before text prompts for best results * - Label multiple media files (e.g., \'Image 1:\', \'Image 2:\') * - Maximum 25MB total payload size * * **Response Patterns:** * - **Text-only**: Returns simple text response when no tools requested * - **Single tool**: Returns `toolUse` object when AI requests one tool * - **Multiple tools**: Returns `toolUse` array when AI requests multiple tools * - **Auto-execute sync**: Automatically executes tool and returns final text response * - **Auto-execute async**: Returns toolUse with `executionId` and `status` for polling + * @summary Chat inference via API Gateway (buffered responses) with multimodal support * @param {string} organisation The organisation ID - * @param {string} agentId The agent ID - * @param {ChatWithAIAgentRequest} chatWithAIAgentRequest + * @param {ChatInferenceRequest} chatInferenceRequest Chat request with optional multimodal content blocks * @param {*} [options] Override http request option. * @throws {RequiredError} */ - chatWithAIAgent: async (organisation: string, agentId: string, chatWithAIAgentRequest: ChatWithAIAgentRequest, options: RawAxiosRequestConfig = {}): Promise => { + chatInference: async (organisation: string, chatInferenceRequest: ChatInferenceRequest, options: RawAxiosRequestConfig = {}): Promise => { // verify required parameter 'organisation' is not null or undefined - assertParamExists('chatWithAIAgent', 'organisation', organisation) - // verify required parameter 'agentId' is not null or undefined - assertParamExists('chatWithAIAgent', 'agentId', agentId) - // verify required parameter 'chatWithAIAgentRequest' is not null or undefined - assertParamExists('chatWithAIAgent', 'chatWithAIAgentRequest', chatWithAIAgentRequest) - const localVarPath = `/api/v3/organizations/{organisation}/ai/agents/{agentId}/chat` - .replace(`{${"organisation"}}`, encodeURIComponent(String(organisation))) - .replace(`{${"agentId"}}`, encodeURIComponent(String(agentId))); + assertParamExists('chatInference', 'organisation', organisation) + // verify required parameter 'chatInferenceRequest' is not null or undefined + assertParamExists('chatInference', 'chatInferenceRequest', chatInferenceRequest) + const localVarPath = `/api/v3/organizations/{organisation}/ai/chat` + .replace(`{${"organisation"}}`, encodeURIComponent(String(organisation))); // use dummy base URL string because the URL constructor only accepts absolute URLs. const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); let baseOptions; @@ -10990,7 +13732,7 @@ export const AIAgentsApiAxiosParamCreator = function (configuration?: Configurat setSearchParams(localVarUrlObj, localVarQueryParameter); let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; - localVarRequestOptions.data = serializeDataIfNeeded(chatWithAIAgentRequest, localVarRequestOptions, configuration) + localVarRequestOptions.data = serializeDataIfNeeded(chatInferenceRequest, localVarRequestOptions, configuration) return { url: toPathString(localVarUrlObj), @@ -10998,19 +13740,19 @@ export const AIAgentsApiAxiosParamCreator = function (configuration?: Configurat }; }, /** - * Creates a new AI agent with specific configuration, system prompt, and tool permissions. * * **Agent Configuration:** * - **System Prompt**: Instructions that guide the agent\'s behavior * - **Model**: Which foundation model to use (e.g., \'amazon.nova-pro-v1:0\') * - **Temperature**: Creativity level (0-1) * - **Allowed Tools**: Which tools the agent can auto-execute * - **Allowed Collections**: Vector DB collections for RAG * - **Group**: Optional categorization (e.g., \'development\', \'compliance\') * * **Auto-Execution:** * All tools are automatically executed when an agent requests them (no client confirmation needed). - * @summary Create AI Agent + * Streams responses from the AI streaming subdomain using Server-Sent Events (SSE). Tokens are streamed in real-time as they are generated. * * **Execution Modes:** * - **Streaming Mode** (default): Real-time SSE token-by-token responses * - **Async Mode**: Set `async: true` for long-running tasks with polling (202 response) * * **Async/Durable Mode (`async: true`):** * - Returns immediately with `requestId` and `pollUrl` (HTTP 202) * - Uses AWS Lambda Durable Functions for long-running inference * - Supports client-executed tools via `waiting_callback` state * - Poll `/ai/chat/executions/{requestId}` for status * - Submit client tool results via `/ai/chat/callback` * * **Multimodal Support:** * - **Text**: Simple string content * - **Images**: Base64-encoded PNG, JPEG, GIF, WebP (up to 25MB) * - **Videos**: Base64-encoded MP4, MOV, WebM, etc. (up to 25MB) * - **Documents**: Base64-encoded PDF, DOCX, CSV, etc. (up to 25MB) * * **Supported Models (Multimodal):** * - **Claude 4.5 Series**: Sonnet 4.5, Haiku 4.5, Opus 4.5 (images, up to 20 per request) * - **Claude 3.5 Series**: Sonnet v1/v2 (images, up to 20 per request) * - **Amazon Nova**: Lite, Pro, Micro (images, videos, documents) * * **Usage Tips:** * - Use base64 encoding for images/videos < 5-10MB * - Place media before text prompts for best results * - Label multiple media files (e.g., \'Image 1:\', \'Image 2:\') * - Maximum 25MB total payload size * - Streaming works with all content types (text, image, video, document) + * @summary Chat inference via streaming endpoint (true HTTP streaming) with multimodal support * @param {string} organisation The organisation ID - * @param {CreateAIAgentRequest} createAIAgentRequest + * @param {ChatInferenceStreamRequest} chatInferenceStreamRequest Chat request with optional multimodal content blocks * @param {*} [options] Override http request option. * @throws {RequiredError} */ - createAIAgent: async (organisation: string, createAIAgentRequest: CreateAIAgentRequest, options: RawAxiosRequestConfig = {}): Promise => { + chatInferenceStream: async (organisation: string, chatInferenceStreamRequest: ChatInferenceStreamRequest, options: RawAxiosRequestConfig = {}): Promise => { // verify required parameter 'organisation' is not null or undefined - assertParamExists('createAIAgent', 'organisation', organisation) - // verify required parameter 'createAIAgentRequest' is not null or undefined - assertParamExists('createAIAgent', 'createAIAgentRequest', createAIAgentRequest) - const localVarPath = `/api/v3/organizations/{organisation}/ai/agents` + assertParamExists('chatInferenceStream', 'organisation', organisation) + // verify required parameter 'chatInferenceStreamRequest' is not null or undefined + assertParamExists('chatInferenceStream', 'chatInferenceStreamRequest', chatInferenceStreamRequest) + const localVarPath = `/api/v3/organizations/{organisation}/ai/chat/stream` .replace(`{${"organisation"}}`, encodeURIComponent(String(organisation))); // use dummy base URL string because the URL constructor only accepts absolute URLs. const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); @@ -11034,7 +13776,7 @@ export const AIAgentsApiAxiosParamCreator = function (configuration?: Configurat setSearchParams(localVarUrlObj, localVarQueryParameter); let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; - localVarRequestOptions.data = serializeDataIfNeeded(createAIAgentRequest, localVarRequestOptions, configuration) + localVarRequestOptions.data = serializeDataIfNeeded(chatInferenceStreamRequest, localVarRequestOptions, configuration) return { url: toPathString(localVarUrlObj), @@ -11042,21 +13784,20 @@ export const AIAgentsApiAxiosParamCreator = function (configuration?: Configurat }; }, /** - * Permanently deletes an AI agent. This action cannot be undone. - * @summary Delete Agent + * Generates vector embeddings for text content using embedding models. Used for semantic search, document similarity, and RAG applications. * * **Features:** * - Single text or batch processing (up to 100 texts) * - Configurable dimensions (256, 512, 1024, 8192 for Titan v2) * - Optional normalization to unit length * - Usage tracking for billing * * **Use Cases:** * - Semantic search across documents * - Similarity matching for content recommendations * - RAG (Retrieval-Augmented Generation) pipelines * - Clustering and classification * * **Available Embedding Models:** * - amazon.titan-embed-text-v2:0 (default, supports 256-8192 dimensions) * - amazon.titan-embed-text-v1:0 (1536 dimensions fixed) + * @summary Generate text embeddings for semantic search and RAG applications * @param {string} organisation The organisation ID - * @param {string} agentId The agent ID + * @param {EmbeddingsRequest} embeddingsRequest Embedding request with single or multiple texts * @param {*} [options] Override http request option. * @throws {RequiredError} */ - deleteAIAgent: async (organisation: string, agentId: string, options: RawAxiosRequestConfig = {}): Promise => { + embeddings: async (organisation: string, embeddingsRequest: EmbeddingsRequest, options: RawAxiosRequestConfig = {}): Promise => { // verify required parameter 'organisation' is not null or undefined - assertParamExists('deleteAIAgent', 'organisation', organisation) - // verify required parameter 'agentId' is not null or undefined - assertParamExists('deleteAIAgent', 'agentId', agentId) - const localVarPath = `/api/v3/organizations/{organisation}/ai/agents/{agentId}` - .replace(`{${"organisation"}}`, encodeURIComponent(String(organisation))) - .replace(`{${"agentId"}}`, encodeURIComponent(String(agentId))); + assertParamExists('embeddings', 'organisation', organisation) + // verify required parameter 'embeddingsRequest' is not null or undefined + assertParamExists('embeddings', 'embeddingsRequest', embeddingsRequest) + const localVarPath = `/api/v3/organizations/{organisation}/ai/embeddings` + .replace(`{${"organisation"}}`, encodeURIComponent(String(organisation))); // use dummy base URL string because the URL constructor only accepts absolute URLs. const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); let baseOptions; @@ -11064,7 +13805,7 @@ export const AIAgentsApiAxiosParamCreator = function (configuration?: Configurat baseOptions = configuration.baseOptions; } - const localVarRequestOptions = { method: 'DELETE', ...baseOptions, ...options}; + const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options}; const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; @@ -11074,9 +13815,12 @@ export const AIAgentsApiAxiosParamCreator = function (configuration?: Configurat + localVarHeaderParameter['Content-Type'] = 'application/json'; + setSearchParams(localVarUrlObj, localVarQueryParameter); let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + localVarRequestOptions.data = serializeDataIfNeeded(embeddingsRequest, localVarRequestOptions, configuration) return { url: toPathString(localVarUrlObj), @@ -11084,21 +13828,21 @@ export const AIAgentsApiAxiosParamCreator = function (configuration?: Configurat }; }, /** - * Retrieves detailed configuration for a specific AI agent. - * @summary Get Agent Details + * Poll the status of an async/durable chat execution. * * **When to use:** After starting chat inference with `async: true`, poll this endpoint * to check execution status and retrieve results when complete. * * **Identifier:** Accepts either: * - `requestId` (recommended): The short ID returned from the async request * - `executionArn`: The full AWS Lambda durable execution ARN (must be URL-encoded) * * **Statuses:** * - `pending`: Execution is starting (retry shortly) * - `running`: Execution is in progress * - `waiting_callback`: Execution paused, waiting for client tool results * - `complete`: Execution finished successfully * - `failed`: Execution failed with error * * **Client Tool Callback:** * When status is `waiting_callback`, submit tool results via `POST /ai/chat/callback`. * * **Polling Recommendations:** * - Start with 1 second delay, exponential backoff up to 30 seconds * - Stop polling after 15 minutes (consider failed) + * @summary Get Durable Execution Status * @param {string} organisation The organisation ID - * @param {string} agentId The agent ID + * @param {string} identifier Either the requestId from async response, or full executionArn (URL-encoded) * @param {*} [options] Override http request option. * @throws {RequiredError} */ - getAIAgent: async (organisation: string, agentId: string, options: RawAxiosRequestConfig = {}): Promise => { + getDurableExecutionStatus: async (organisation: string, identifier: string, options: RawAxiosRequestConfig = {}): Promise => { // verify required parameter 'organisation' is not null or undefined - assertParamExists('getAIAgent', 'organisation', organisation) - // verify required parameter 'agentId' is not null or undefined - assertParamExists('getAIAgent', 'agentId', agentId) - const localVarPath = `/api/v3/organizations/{organisation}/ai/agents/{agentId}` + assertParamExists('getDurableExecutionStatus', 'organisation', organisation) + // verify required parameter 'identifier' is not null or undefined + assertParamExists('getDurableExecutionStatus', 'identifier', identifier) + const localVarPath = `/api/v3/organizations/{organisation}/ai/chat/executions/{identifier}` .replace(`{${"organisation"}}`, encodeURIComponent(String(organisation))) - .replace(`{${"agentId"}}`, encodeURIComponent(String(agentId))); + .replace(`{${"identifier"}}`, encodeURIComponent(String(identifier))); // use dummy base URL string because the URL constructor only accepts absolute URLs. const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); let baseOptions; @@ -11126,17 +13870,19 @@ export const AIAgentsApiAxiosParamCreator = function (configuration?: Configurat }; }, /** - * Lists all AI agents for an organization. Agents are pre-configured AI assistants with specific system prompts, model settings, and tool permissions. * * **Features:** * - Filter by group (e.g., \'development\', \'compliance\') * - Organization-scoped * - Returns agent configurations without execution history - * @summary List AI Agents + * Generates images using Amazon Nova Canvas image generation model. * * **Region Restriction:** Nova Canvas is ONLY available in: * - `us-east-1` (US East, N. Virginia) * - `ap-northeast-1` (Asia Pacific, Tokyo) * - `eu-west-1` (Europe, Ireland) * ❌ NOT available in `ap-southeast-2` (Sydney) * * **Supported Task Types:** * - **TEXT_IMAGE**: Basic text-to-image generation * - **TEXT_IMAGE with Conditioning**: Layout-guided generation using edge detection or segmentation * - **COLOR_GUIDED_GENERATION**: Generate images with specific color palettes * - **IMAGE_VARIATION**: Create variations of existing images * - **INPAINTING**: Fill masked areas in images * - **OUTPAINTING**: Extend images beyond their borders * - **BACKGROUND_REMOVAL**: Remove backgrounds from images * - **VIRTUAL_TRY_ON**: Try on garments/objects on people * * **Quality Options:** * - **standard**: Faster generation, lower cost * - **premium**: Higher quality, slower generation * * **Timeout:** Image generation can take up to 5 minutes + * @summary Generate images with Amazon Nova Canvas * @param {string} organisation The organisation ID - * @param {string} [group] Optional group filter (e.g., \'development\', \'compliance\') + * @param {ImageGenerationRequest} imageGenerationRequest Image generation request * @param {*} [options] Override http request option. * @throws {RequiredError} */ - listAIAgents: async (organisation: string, group?: string, options: RawAxiosRequestConfig = {}): Promise => { + imageGeneration: async (organisation: string, imageGenerationRequest: ImageGenerationRequest, options: RawAxiosRequestConfig = {}): Promise => { // verify required parameter 'organisation' is not null or undefined - assertParamExists('listAIAgents', 'organisation', organisation) - const localVarPath = `/api/v3/organizations/{organisation}/ai/agents` + assertParamExists('imageGeneration', 'organisation', organisation) + // verify required parameter 'imageGenerationRequest' is not null or undefined + assertParamExists('imageGeneration', 'imageGenerationRequest', imageGenerationRequest) + const localVarPath = `/api/v3/organizations/{organisation}/ai/image-generation` .replace(`{${"organisation"}}`, encodeURIComponent(String(organisation))); // use dummy base URL string because the URL constructor only accepts absolute URLs. const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); @@ -11145,7 +13891,7 @@ export const AIAgentsApiAxiosParamCreator = function (configuration?: Configurat baseOptions = configuration.baseOptions; } - const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options}; + const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options}; const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; @@ -11153,15 +13899,14 @@ export const AIAgentsApiAxiosParamCreator = function (configuration?: Configurat // http bearer authentication required await setBearerAuthToObject(localVarHeaderParameter, configuration) - if (group !== undefined) { - localVarQueryParameter['group'] = group; - } - + localVarHeaderParameter['Content-Type'] = 'application/json'; + setSearchParams(localVarUrlObj, localVarQueryParameter); let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + localVarRequestOptions.data = serializeDataIfNeeded(imageGenerationRequest, localVarRequestOptions, configuration) return { url: toPathString(localVarUrlObj), @@ -11169,24 +13914,20 @@ export const AIAgentsApiAxiosParamCreator = function (configuration?: Configurat }; }, /** - * Updates an existing AI agent configuration. All fields except agentId, organizationId, createdAt, and createdBy can be updated. - * @summary Update Agent + * Submit tool execution results to resume a suspended durable execution. * * **When to use:** When polling the execution status returns `waiting_callback`, use this endpoint * to submit the results of client-executed tools. The execution will then resume. * * **Flow:** * 1. Start async chat with client-executed tools (`autoExecute: []` or tools not in autoExecute list) * 2. Poll status until `waiting_callback` * 3. Execute tools locally using `pendingTools` from status response * 4. Submit results here with the `callbackId` * 5. Poll status until `complete` * * **Important:** Each `callbackId` can only be used once. After submission, poll the execution * status to see the updated state. + * @summary Submit Client Tool Results (Callback) * @param {string} organisation The organisation ID - * @param {string} agentId The agent ID - * @param {UpdateAIAgentRequest} updateAIAgentRequest + * @param {SubmitToolCallbackRequest} submitToolCallbackRequest * @param {*} [options] Override http request option. * @throws {RequiredError} */ - updateAIAgent: async (organisation: string, agentId: string, updateAIAgentRequest: UpdateAIAgentRequest, options: RawAxiosRequestConfig = {}): Promise => { + submitToolCallback: async (organisation: string, submitToolCallbackRequest: SubmitToolCallbackRequest, options: RawAxiosRequestConfig = {}): Promise => { // verify required parameter 'organisation' is not null or undefined - assertParamExists('updateAIAgent', 'organisation', organisation) - // verify required parameter 'agentId' is not null or undefined - assertParamExists('updateAIAgent', 'agentId', agentId) - // verify required parameter 'updateAIAgentRequest' is not null or undefined - assertParamExists('updateAIAgent', 'updateAIAgentRequest', updateAIAgentRequest) - const localVarPath = `/api/v3/organizations/{organisation}/ai/agents/{agentId}` - .replace(`{${"organisation"}}`, encodeURIComponent(String(organisation))) - .replace(`{${"agentId"}}`, encodeURIComponent(String(agentId))); + assertParamExists('submitToolCallback', 'organisation', organisation) + // verify required parameter 'submitToolCallbackRequest' is not null or undefined + assertParamExists('submitToolCallback', 'submitToolCallbackRequest', submitToolCallbackRequest) + const localVarPath = `/api/v3/organizations/{organisation}/ai/chat/callback` + .replace(`{${"organisation"}}`, encodeURIComponent(String(organisation))); // use dummy base URL string because the URL constructor only accepts absolute URLs. const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); let baseOptions; @@ -11194,7 +13935,7 @@ export const AIAgentsApiAxiosParamCreator = function (configuration?: Configurat baseOptions = configuration.baseOptions; } - const localVarRequestOptions = { method: 'PUT', ...baseOptions, ...options}; + const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options}; const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; @@ -11209,7 +13950,7 @@ export const AIAgentsApiAxiosParamCreator = function (configuration?: Configurat setSearchParams(localVarUrlObj, localVarQueryParameter); let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; - localVarRequestOptions.data = serializeDataIfNeeded(updateAIAgentRequest, localVarRequestOptions, configuration) + localVarRequestOptions.data = serializeDataIfNeeded(submitToolCallbackRequest, localVarRequestOptions, configuration) return { url: toPathString(localVarUrlObj), @@ -11220,290 +13961,285 @@ export const AIAgentsApiAxiosParamCreator = function (configuration?: Configurat }; /** - * AIAgentsApi - functional programming interface + * AIInferenceApi - functional programming interface * @export */ -export const AIAgentsApiFp = function(configuration?: Configuration) { - const localVarAxiosParamCreator = AIAgentsApiAxiosParamCreator(configuration) +export const AIInferenceApiFp = function(configuration?: Configuration) { + const localVarAxiosParamCreator = AIInferenceApiAxiosParamCreator(configuration) return { /** - * Initiates a chat session with a specific AI agent. The agent\'s configuration (system prompt, temperature, model, allowed tools) is automatically applied. * * **Key Features:** * - **Session Management**: Automatic session creation and state tracking * - **Multi-turn Conversations**: Full conversation history maintained server-side * - Agent\'s system prompt is prepended to conversation * - Only agent\'s allowed tools are available * - All tools are auto-executed (no client confirmation) * - Temperature and model from agent config * * **Session Support:** * - Omit `sessionId` to create a new session automatically * - Include `sessionId` to continue an existing conversation * - Sessions expire after 60 minutes of inactivity * - Use `/sessions/{sessionId}` to retrieve full conversation history - * @summary Chat with AI Agent + * Sends requests to the AI API Gateway endpoint which buffers responses. Supports text, images, videos, and documents via base64 encoding. * * **Execution Modes:** * - **Sync Mode** (default): Standard JSON response, waits for completion (200 response) * - **Async Mode**: Set `async: true` for long-running tasks with polling (202 response) * * **Async/Durable Mode (`async: true`):** * - Returns immediately with `requestId` and `pollUrl` (HTTP 202) * - Uses AWS Lambda Durable Functions for long-running inference * - Supports client-executed tools via `waiting_callback` state * - Poll `/ai/chat/executions/{requestId}` for status * - Submit client tool results via `/ai/chat/callback` * - Ideal for complex prompts, large contexts, or client-side tools * * **Multimodal Support:** * - **Text**: Simple string content * - **Images**: Base64-encoded PNG, JPEG, GIF, WebP (up to 25MB) * - **Videos**: Base64-encoded MP4, MOV, WebM, etc. (up to 25MB) * - **Documents**: Base64-encoded PDF, DOCX, CSV, etc. (up to 25MB) * * **Supported Models (Multimodal):** * - **Claude 4.5 Series**: Sonnet 4.5, Haiku 4.5, Opus 4.5 (images, up to 20 per request) * - **Claude 3.5 Series**: Sonnet v1/v2 (images, up to 20 per request) * - **Amazon Nova**: Lite, Pro, Micro (images, videos, documents) * * **Usage Tips:** * - Use base64 encoding for images/videos < 5-10MB * - Place media before text prompts for best results * - Label multiple media files (e.g., \'Image 1:\', \'Image 2:\') * - Maximum 25MB total payload size * * **Response Patterns:** * - **Text-only**: Returns simple text response when no tools requested * - **Single tool**: Returns `toolUse` object when AI requests one tool * - **Multiple tools**: Returns `toolUse` array when AI requests multiple tools * - **Auto-execute sync**: Automatically executes tool and returns final text response * - **Auto-execute async**: Returns toolUse with `executionId` and `status` for polling + * @summary Chat inference via API Gateway (buffered responses) with multimodal support * @param {string} organisation The organisation ID - * @param {string} agentId The agent ID - * @param {ChatWithAIAgentRequest} chatWithAIAgentRequest + * @param {ChatInferenceRequest} chatInferenceRequest Chat request with optional multimodal content blocks * @param {*} [options] Override http request option. * @throws {RequiredError} */ - async chatWithAIAgent(organisation: string, agentId: string, chatWithAIAgentRequest: ChatWithAIAgentRequest, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { - const localVarAxiosArgs = await localVarAxiosParamCreator.chatWithAIAgent(organisation, agentId, chatWithAIAgentRequest, options); + async chatInference(organisation: string, chatInferenceRequest: ChatInferenceRequest, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.chatInference(organisation, chatInferenceRequest, options); const localVarOperationServerIndex = configuration?.serverIndex ?? 0; - const localVarOperationServerBasePath = operationServerMap['AIAgentsApi.chatWithAIAgent']?.[localVarOperationServerIndex]?.url; + const localVarOperationServerBasePath = operationServerMap['AIInferenceApi.chatInference']?.[localVarOperationServerIndex]?.url; return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath); }, /** - * Creates a new AI agent with specific configuration, system prompt, and tool permissions. * * **Agent Configuration:** * - **System Prompt**: Instructions that guide the agent\'s behavior * - **Model**: Which foundation model to use (e.g., \'amazon.nova-pro-v1:0\') * - **Temperature**: Creativity level (0-1) * - **Allowed Tools**: Which tools the agent can auto-execute * - **Allowed Collections**: Vector DB collections for RAG * - **Group**: Optional categorization (e.g., \'development\', \'compliance\') * * **Auto-Execution:** * All tools are automatically executed when an agent requests them (no client confirmation needed). - * @summary Create AI Agent + * Streams responses from the AI streaming subdomain using Server-Sent Events (SSE). Tokens are streamed in real-time as they are generated. * * **Execution Modes:** * - **Streaming Mode** (default): Real-time SSE token-by-token responses * - **Async Mode**: Set `async: true` for long-running tasks with polling (202 response) * * **Async/Durable Mode (`async: true`):** * - Returns immediately with `requestId` and `pollUrl` (HTTP 202) * - Uses AWS Lambda Durable Functions for long-running inference * - Supports client-executed tools via `waiting_callback` state * - Poll `/ai/chat/executions/{requestId}` for status * - Submit client tool results via `/ai/chat/callback` * * **Multimodal Support:** * - **Text**: Simple string content * - **Images**: Base64-encoded PNG, JPEG, GIF, WebP (up to 25MB) * - **Videos**: Base64-encoded MP4, MOV, WebM, etc. (up to 25MB) * - **Documents**: Base64-encoded PDF, DOCX, CSV, etc. (up to 25MB) * * **Supported Models (Multimodal):** * - **Claude 4.5 Series**: Sonnet 4.5, Haiku 4.5, Opus 4.5 (images, up to 20 per request) * - **Claude 3.5 Series**: Sonnet v1/v2 (images, up to 20 per request) * - **Amazon Nova**: Lite, Pro, Micro (images, videos, documents) * * **Usage Tips:** * - Use base64 encoding for images/videos < 5-10MB * - Place media before text prompts for best results * - Label multiple media files (e.g., \'Image 1:\', \'Image 2:\') * - Maximum 25MB total payload size * - Streaming works with all content types (text, image, video, document) + * @summary Chat inference via streaming endpoint (true HTTP streaming) with multimodal support * @param {string} organisation The organisation ID - * @param {CreateAIAgentRequest} createAIAgentRequest + * @param {ChatInferenceStreamRequest} chatInferenceStreamRequest Chat request with optional multimodal content blocks * @param {*} [options] Override http request option. * @throws {RequiredError} */ - async createAIAgent(organisation: string, createAIAgentRequest: CreateAIAgentRequest, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { - const localVarAxiosArgs = await localVarAxiosParamCreator.createAIAgent(organisation, createAIAgentRequest, options); + async chatInferenceStream(organisation: string, chatInferenceStreamRequest: ChatInferenceStreamRequest, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.chatInferenceStream(organisation, chatInferenceStreamRequest, options); const localVarOperationServerIndex = configuration?.serverIndex ?? 0; - const localVarOperationServerBasePath = operationServerMap['AIAgentsApi.createAIAgent']?.[localVarOperationServerIndex]?.url; + const localVarOperationServerBasePath = operationServerMap['AIInferenceApi.chatInferenceStream']?.[localVarOperationServerIndex]?.url; return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath); }, /** - * Permanently deletes an AI agent. This action cannot be undone. - * @summary Delete Agent + * Generates vector embeddings for text content using embedding models. Used for semantic search, document similarity, and RAG applications. * * **Features:** * - Single text or batch processing (up to 100 texts) * - Configurable dimensions (256, 512, 1024, 8192 for Titan v2) * - Optional normalization to unit length * - Usage tracking for billing * * **Use Cases:** * - Semantic search across documents * - Similarity matching for content recommendations * - RAG (Retrieval-Augmented Generation) pipelines * - Clustering and classification * * **Available Embedding Models:** * - amazon.titan-embed-text-v2:0 (default, supports 256-8192 dimensions) * - amazon.titan-embed-text-v1:0 (1536 dimensions fixed) + * @summary Generate text embeddings for semantic search and RAG applications * @param {string} organisation The organisation ID - * @param {string} agentId The agent ID + * @param {EmbeddingsRequest} embeddingsRequest Embedding request with single or multiple texts * @param {*} [options] Override http request option. * @throws {RequiredError} */ - async deleteAIAgent(organisation: string, agentId: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { - const localVarAxiosArgs = await localVarAxiosParamCreator.deleteAIAgent(organisation, agentId, options); + async embeddings(organisation: string, embeddingsRequest: EmbeddingsRequest, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.embeddings(organisation, embeddingsRequest, options); const localVarOperationServerIndex = configuration?.serverIndex ?? 0; - const localVarOperationServerBasePath = operationServerMap['AIAgentsApi.deleteAIAgent']?.[localVarOperationServerIndex]?.url; + const localVarOperationServerBasePath = operationServerMap['AIInferenceApi.embeddings']?.[localVarOperationServerIndex]?.url; return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath); }, /** - * Retrieves detailed configuration for a specific AI agent. - * @summary Get Agent Details + * Poll the status of an async/durable chat execution. * * **When to use:** After starting chat inference with `async: true`, poll this endpoint * to check execution status and retrieve results when complete. * * **Identifier:** Accepts either: * - `requestId` (recommended): The short ID returned from the async request * - `executionArn`: The full AWS Lambda durable execution ARN (must be URL-encoded) * * **Statuses:** * - `pending`: Execution is starting (retry shortly) * - `running`: Execution is in progress * - `waiting_callback`: Execution paused, waiting for client tool results * - `complete`: Execution finished successfully * - `failed`: Execution failed with error * * **Client Tool Callback:** * When status is `waiting_callback`, submit tool results via `POST /ai/chat/callback`. * * **Polling Recommendations:** * - Start with 1 second delay, exponential backoff up to 30 seconds * - Stop polling after 15 minutes (consider failed) + * @summary Get Durable Execution Status * @param {string} organisation The organisation ID - * @param {string} agentId The agent ID + * @param {string} identifier Either the requestId from async response, or full executionArn (URL-encoded) * @param {*} [options] Override http request option. * @throws {RequiredError} */ - async getAIAgent(organisation: string, agentId: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { - const localVarAxiosArgs = await localVarAxiosParamCreator.getAIAgent(organisation, agentId, options); + async getDurableExecutionStatus(organisation: string, identifier: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.getDurableExecutionStatus(organisation, identifier, options); const localVarOperationServerIndex = configuration?.serverIndex ?? 0; - const localVarOperationServerBasePath = operationServerMap['AIAgentsApi.getAIAgent']?.[localVarOperationServerIndex]?.url; + const localVarOperationServerBasePath = operationServerMap['AIInferenceApi.getDurableExecutionStatus']?.[localVarOperationServerIndex]?.url; return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath); }, /** - * Lists all AI agents for an organization. Agents are pre-configured AI assistants with specific system prompts, model settings, and tool permissions. * * **Features:** * - Filter by group (e.g., \'development\', \'compliance\') * - Organization-scoped * - Returns agent configurations without execution history - * @summary List AI Agents + * Generates images using Amazon Nova Canvas image generation model. * * **Region Restriction:** Nova Canvas is ONLY available in: * - `us-east-1` (US East, N. Virginia) * - `ap-northeast-1` (Asia Pacific, Tokyo) * - `eu-west-1` (Europe, Ireland) * ❌ NOT available in `ap-southeast-2` (Sydney) * * **Supported Task Types:** * - **TEXT_IMAGE**: Basic text-to-image generation * - **TEXT_IMAGE with Conditioning**: Layout-guided generation using edge detection or segmentation * - **COLOR_GUIDED_GENERATION**: Generate images with specific color palettes * - **IMAGE_VARIATION**: Create variations of existing images * - **INPAINTING**: Fill masked areas in images * - **OUTPAINTING**: Extend images beyond their borders * - **BACKGROUND_REMOVAL**: Remove backgrounds from images * - **VIRTUAL_TRY_ON**: Try on garments/objects on people * * **Quality Options:** * - **standard**: Faster generation, lower cost * - **premium**: Higher quality, slower generation * * **Timeout:** Image generation can take up to 5 minutes + * @summary Generate images with Amazon Nova Canvas * @param {string} organisation The organisation ID - * @param {string} [group] Optional group filter (e.g., \'development\', \'compliance\') + * @param {ImageGenerationRequest} imageGenerationRequest Image generation request * @param {*} [options] Override http request option. * @throws {RequiredError} */ - async listAIAgents(organisation: string, group?: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { - const localVarAxiosArgs = await localVarAxiosParamCreator.listAIAgents(organisation, group, options); + async imageGeneration(organisation: string, imageGenerationRequest: ImageGenerationRequest, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.imageGeneration(organisation, imageGenerationRequest, options); const localVarOperationServerIndex = configuration?.serverIndex ?? 0; - const localVarOperationServerBasePath = operationServerMap['AIAgentsApi.listAIAgents']?.[localVarOperationServerIndex]?.url; + const localVarOperationServerBasePath = operationServerMap['AIInferenceApi.imageGeneration']?.[localVarOperationServerIndex]?.url; return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath); }, /** - * Updates an existing AI agent configuration. All fields except agentId, organizationId, createdAt, and createdBy can be updated. - * @summary Update Agent + * Submit tool execution results to resume a suspended durable execution. * * **When to use:** When polling the execution status returns `waiting_callback`, use this endpoint * to submit the results of client-executed tools. The execution will then resume. * * **Flow:** * 1. Start async chat with client-executed tools (`autoExecute: []` or tools not in autoExecute list) * 2. Poll status until `waiting_callback` * 3. Execute tools locally using `pendingTools` from status response * 4. Submit results here with the `callbackId` * 5. Poll status until `complete` * * **Important:** Each `callbackId` can only be used once. After submission, poll the execution * status to see the updated state. + * @summary Submit Client Tool Results (Callback) * @param {string} organisation The organisation ID - * @param {string} agentId The agent ID - * @param {UpdateAIAgentRequest} updateAIAgentRequest + * @param {SubmitToolCallbackRequest} submitToolCallbackRequest * @param {*} [options] Override http request option. * @throws {RequiredError} */ - async updateAIAgent(organisation: string, agentId: string, updateAIAgentRequest: UpdateAIAgentRequest, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { - const localVarAxiosArgs = await localVarAxiosParamCreator.updateAIAgent(organisation, agentId, updateAIAgentRequest, options); + async submitToolCallback(organisation: string, submitToolCallbackRequest: SubmitToolCallbackRequest, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.submitToolCallback(organisation, submitToolCallbackRequest, options); const localVarOperationServerIndex = configuration?.serverIndex ?? 0; - const localVarOperationServerBasePath = operationServerMap['AIAgentsApi.updateAIAgent']?.[localVarOperationServerIndex]?.url; + const localVarOperationServerBasePath = operationServerMap['AIInferenceApi.submitToolCallback']?.[localVarOperationServerIndex]?.url; return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath); }, } }; /** - * AIAgentsApi - factory interface + * AIInferenceApi - factory interface * @export */ -export const AIAgentsApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) { - const localVarFp = AIAgentsApiFp(configuration) +export const AIInferenceApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) { + const localVarFp = AIInferenceApiFp(configuration) return { /** - * Initiates a chat session with a specific AI agent. The agent\'s configuration (system prompt, temperature, model, allowed tools) is automatically applied. * * **Key Features:** * - **Session Management**: Automatic session creation and state tracking * - **Multi-turn Conversations**: Full conversation history maintained server-side * - Agent\'s system prompt is prepended to conversation * - Only agent\'s allowed tools are available * - All tools are auto-executed (no client confirmation) * - Temperature and model from agent config * * **Session Support:** * - Omit `sessionId` to create a new session automatically * - Include `sessionId` to continue an existing conversation * - Sessions expire after 60 minutes of inactivity * - Use `/sessions/{sessionId}` to retrieve full conversation history - * @summary Chat with AI Agent + * Sends requests to the AI API Gateway endpoint which buffers responses. Supports text, images, videos, and documents via base64 encoding. * * **Execution Modes:** * - **Sync Mode** (default): Standard JSON response, waits for completion (200 response) * - **Async Mode**: Set `async: true` for long-running tasks with polling (202 response) * * **Async/Durable Mode (`async: true`):** * - Returns immediately with `requestId` and `pollUrl` (HTTP 202) * - Uses AWS Lambda Durable Functions for long-running inference * - Supports client-executed tools via `waiting_callback` state * - Poll `/ai/chat/executions/{requestId}` for status * - Submit client tool results via `/ai/chat/callback` * - Ideal for complex prompts, large contexts, or client-side tools * * **Multimodal Support:** * - **Text**: Simple string content * - **Images**: Base64-encoded PNG, JPEG, GIF, WebP (up to 25MB) * - **Videos**: Base64-encoded MP4, MOV, WebM, etc. (up to 25MB) * - **Documents**: Base64-encoded PDF, DOCX, CSV, etc. (up to 25MB) * * **Supported Models (Multimodal):** * - **Claude 4.5 Series**: Sonnet 4.5, Haiku 4.5, Opus 4.5 (images, up to 20 per request) * - **Claude 3.5 Series**: Sonnet v1/v2 (images, up to 20 per request) * - **Amazon Nova**: Lite, Pro, Micro (images, videos, documents) * * **Usage Tips:** * - Use base64 encoding for images/videos < 5-10MB * - Place media before text prompts for best results * - Label multiple media files (e.g., \'Image 1:\', \'Image 2:\') * - Maximum 25MB total payload size * * **Response Patterns:** * - **Text-only**: Returns simple text response when no tools requested * - **Single tool**: Returns `toolUse` object when AI requests one tool * - **Multiple tools**: Returns `toolUse` array when AI requests multiple tools * - **Auto-execute sync**: Automatically executes tool and returns final text response * - **Auto-execute async**: Returns toolUse with `executionId` and `status` for polling + * @summary Chat inference via API Gateway (buffered responses) with multimodal support * @param {string} organisation The organisation ID - * @param {string} agentId The agent ID - * @param {ChatWithAIAgentRequest} chatWithAIAgentRequest + * @param {ChatInferenceRequest} chatInferenceRequest Chat request with optional multimodal content blocks * @param {*} [options] Override http request option. * @throws {RequiredError} */ - chatWithAIAgent(organisation: string, agentId: string, chatWithAIAgentRequest: ChatWithAIAgentRequest, options?: RawAxiosRequestConfig): AxiosPromise { - return localVarFp.chatWithAIAgent(organisation, agentId, chatWithAIAgentRequest, options).then((request) => request(axios, basePath)); + chatInference(organisation: string, chatInferenceRequest: ChatInferenceRequest, options?: RawAxiosRequestConfig): AxiosPromise { + return localVarFp.chatInference(organisation, chatInferenceRequest, options).then((request) => request(axios, basePath)); }, /** - * Creates a new AI agent with specific configuration, system prompt, and tool permissions. * * **Agent Configuration:** * - **System Prompt**: Instructions that guide the agent\'s behavior * - **Model**: Which foundation model to use (e.g., \'amazon.nova-pro-v1:0\') * - **Temperature**: Creativity level (0-1) * - **Allowed Tools**: Which tools the agent can auto-execute * - **Allowed Collections**: Vector DB collections for RAG * - **Group**: Optional categorization (e.g., \'development\', \'compliance\') * * **Auto-Execution:** * All tools are automatically executed when an agent requests them (no client confirmation needed). - * @summary Create AI Agent + * Streams responses from the AI streaming subdomain using Server-Sent Events (SSE). Tokens are streamed in real-time as they are generated. * * **Execution Modes:** * - **Streaming Mode** (default): Real-time SSE token-by-token responses * - **Async Mode**: Set `async: true` for long-running tasks with polling (202 response) * * **Async/Durable Mode (`async: true`):** * - Returns immediately with `requestId` and `pollUrl` (HTTP 202) * - Uses AWS Lambda Durable Functions for long-running inference * - Supports client-executed tools via `waiting_callback` state * - Poll `/ai/chat/executions/{requestId}` for status * - Submit client tool results via `/ai/chat/callback` * * **Multimodal Support:** * - **Text**: Simple string content * - **Images**: Base64-encoded PNG, JPEG, GIF, WebP (up to 25MB) * - **Videos**: Base64-encoded MP4, MOV, WebM, etc. (up to 25MB) * - **Documents**: Base64-encoded PDF, DOCX, CSV, etc. (up to 25MB) * * **Supported Models (Multimodal):** * - **Claude 4.5 Series**: Sonnet 4.5, Haiku 4.5, Opus 4.5 (images, up to 20 per request) * - **Claude 3.5 Series**: Sonnet v1/v2 (images, up to 20 per request) * - **Amazon Nova**: Lite, Pro, Micro (images, videos, documents) * * **Usage Tips:** * - Use base64 encoding for images/videos < 5-10MB * - Place media before text prompts for best results * - Label multiple media files (e.g., \'Image 1:\', \'Image 2:\') * - Maximum 25MB total payload size * - Streaming works with all content types (text, image, video, document) + * @summary Chat inference via streaming endpoint (true HTTP streaming) with multimodal support * @param {string} organisation The organisation ID - * @param {CreateAIAgentRequest} createAIAgentRequest + * @param {ChatInferenceStreamRequest} chatInferenceStreamRequest Chat request with optional multimodal content blocks * @param {*} [options] Override http request option. * @throws {RequiredError} */ - createAIAgent(organisation: string, createAIAgentRequest: CreateAIAgentRequest, options?: RawAxiosRequestConfig): AxiosPromise { - return localVarFp.createAIAgent(organisation, createAIAgentRequest, options).then((request) => request(axios, basePath)); + chatInferenceStream(organisation: string, chatInferenceStreamRequest: ChatInferenceStreamRequest, options?: RawAxiosRequestConfig): AxiosPromise { + return localVarFp.chatInferenceStream(organisation, chatInferenceStreamRequest, options).then((request) => request(axios, basePath)); }, /** - * Permanently deletes an AI agent. This action cannot be undone. - * @summary Delete Agent + * Generates vector embeddings for text content using embedding models. Used for semantic search, document similarity, and RAG applications. * * **Features:** * - Single text or batch processing (up to 100 texts) * - Configurable dimensions (256, 512, 1024, 8192 for Titan v2) * - Optional normalization to unit length * - Usage tracking for billing * * **Use Cases:** * - Semantic search across documents * - Similarity matching for content recommendations * - RAG (Retrieval-Augmented Generation) pipelines * - Clustering and classification * * **Available Embedding Models:** * - amazon.titan-embed-text-v2:0 (default, supports 256-8192 dimensions) * - amazon.titan-embed-text-v1:0 (1536 dimensions fixed) + * @summary Generate text embeddings for semantic search and RAG applications * @param {string} organisation The organisation ID - * @param {string} agentId The agent ID + * @param {EmbeddingsRequest} embeddingsRequest Embedding request with single or multiple texts * @param {*} [options] Override http request option. * @throws {RequiredError} */ - deleteAIAgent(organisation: string, agentId: string, options?: RawAxiosRequestConfig): AxiosPromise { - return localVarFp.deleteAIAgent(organisation, agentId, options).then((request) => request(axios, basePath)); + embeddings(organisation: string, embeddingsRequest: EmbeddingsRequest, options?: RawAxiosRequestConfig): AxiosPromise { + return localVarFp.embeddings(organisation, embeddingsRequest, options).then((request) => request(axios, basePath)); }, /** - * Retrieves detailed configuration for a specific AI agent. - * @summary Get Agent Details + * Poll the status of an async/durable chat execution. * * **When to use:** After starting chat inference with `async: true`, poll this endpoint * to check execution status and retrieve results when complete. * * **Identifier:** Accepts either: * - `requestId` (recommended): The short ID returned from the async request * - `executionArn`: The full AWS Lambda durable execution ARN (must be URL-encoded) * * **Statuses:** * - `pending`: Execution is starting (retry shortly) * - `running`: Execution is in progress * - `waiting_callback`: Execution paused, waiting for client tool results * - `complete`: Execution finished successfully * - `failed`: Execution failed with error * * **Client Tool Callback:** * When status is `waiting_callback`, submit tool results via `POST /ai/chat/callback`. * * **Polling Recommendations:** * - Start with 1 second delay, exponential backoff up to 30 seconds * - Stop polling after 15 minutes (consider failed) + * @summary Get Durable Execution Status * @param {string} organisation The organisation ID - * @param {string} agentId The agent ID + * @param {string} identifier Either the requestId from async response, or full executionArn (URL-encoded) * @param {*} [options] Override http request option. * @throws {RequiredError} */ - getAIAgent(organisation: string, agentId: string, options?: RawAxiosRequestConfig): AxiosPromise { - return localVarFp.getAIAgent(organisation, agentId, options).then((request) => request(axios, basePath)); + getDurableExecutionStatus(organisation: string, identifier: string, options?: RawAxiosRequestConfig): AxiosPromise { + return localVarFp.getDurableExecutionStatus(organisation, identifier, options).then((request) => request(axios, basePath)); }, /** - * Lists all AI agents for an organization. Agents are pre-configured AI assistants with specific system prompts, model settings, and tool permissions. * * **Features:** * - Filter by group (e.g., \'development\', \'compliance\') * - Organization-scoped * - Returns agent configurations without execution history - * @summary List AI Agents + * Generates images using Amazon Nova Canvas image generation model. * * **Region Restriction:** Nova Canvas is ONLY available in: * - `us-east-1` (US East, N. Virginia) * - `ap-northeast-1` (Asia Pacific, Tokyo) * - `eu-west-1` (Europe, Ireland) * ❌ NOT available in `ap-southeast-2` (Sydney) * * **Supported Task Types:** * - **TEXT_IMAGE**: Basic text-to-image generation * - **TEXT_IMAGE with Conditioning**: Layout-guided generation using edge detection or segmentation * - **COLOR_GUIDED_GENERATION**: Generate images with specific color palettes * - **IMAGE_VARIATION**: Create variations of existing images * - **INPAINTING**: Fill masked areas in images * - **OUTPAINTING**: Extend images beyond their borders * - **BACKGROUND_REMOVAL**: Remove backgrounds from images * - **VIRTUAL_TRY_ON**: Try on garments/objects on people * * **Quality Options:** * - **standard**: Faster generation, lower cost * - **premium**: Higher quality, slower generation * * **Timeout:** Image generation can take up to 5 minutes + * @summary Generate images with Amazon Nova Canvas * @param {string} organisation The organisation ID - * @param {string} [group] Optional group filter (e.g., \'development\', \'compliance\') + * @param {ImageGenerationRequest} imageGenerationRequest Image generation request * @param {*} [options] Override http request option. * @throws {RequiredError} */ - listAIAgents(organisation: string, group?: string, options?: RawAxiosRequestConfig): AxiosPromise { - return localVarFp.listAIAgents(organisation, group, options).then((request) => request(axios, basePath)); + imageGeneration(organisation: string, imageGenerationRequest: ImageGenerationRequest, options?: RawAxiosRequestConfig): AxiosPromise { + return localVarFp.imageGeneration(organisation, imageGenerationRequest, options).then((request) => request(axios, basePath)); }, /** - * Updates an existing AI agent configuration. All fields except agentId, organizationId, createdAt, and createdBy can be updated. - * @summary Update Agent + * Submit tool execution results to resume a suspended durable execution. * * **When to use:** When polling the execution status returns `waiting_callback`, use this endpoint * to submit the results of client-executed tools. The execution will then resume. * * **Flow:** * 1. Start async chat with client-executed tools (`autoExecute: []` or tools not in autoExecute list) * 2. Poll status until `waiting_callback` * 3. Execute tools locally using `pendingTools` from status response * 4. Submit results here with the `callbackId` * 5. Poll status until `complete` * * **Important:** Each `callbackId` can only be used once. After submission, poll the execution * status to see the updated state. + * @summary Submit Client Tool Results (Callback) * @param {string} organisation The organisation ID - * @param {string} agentId The agent ID - * @param {UpdateAIAgentRequest} updateAIAgentRequest + * @param {SubmitToolCallbackRequest} submitToolCallbackRequest * @param {*} [options] Override http request option. * @throws {RequiredError} */ - updateAIAgent(organisation: string, agentId: string, updateAIAgentRequest: UpdateAIAgentRequest, options?: RawAxiosRequestConfig): AxiosPromise { - return localVarFp.updateAIAgent(organisation, agentId, updateAIAgentRequest, options).then((request) => request(axios, basePath)); + submitToolCallback(organisation: string, submitToolCallbackRequest: SubmitToolCallbackRequest, options?: RawAxiosRequestConfig): AxiosPromise { + return localVarFp.submitToolCallback(organisation, submitToolCallbackRequest, options).then((request) => request(axios, basePath)); }, }; }; /** - * AIAgentsApi - object-oriented interface + * AIInferenceApi - object-oriented interface * @export - * @class AIAgentsApi + * @class AIInferenceApi * @extends {BaseAPI} */ -export class AIAgentsApi extends BaseAPI { +export class AIInferenceApi extends BaseAPI { /** - * Initiates a chat session with a specific AI agent. The agent\'s configuration (system prompt, temperature, model, allowed tools) is automatically applied. * * **Key Features:** * - **Session Management**: Automatic session creation and state tracking * - **Multi-turn Conversations**: Full conversation history maintained server-side * - Agent\'s system prompt is prepended to conversation * - Only agent\'s allowed tools are available * - All tools are auto-executed (no client confirmation) * - Temperature and model from agent config * * **Session Support:** * - Omit `sessionId` to create a new session automatically * - Include `sessionId` to continue an existing conversation * - Sessions expire after 60 minutes of inactivity * - Use `/sessions/{sessionId}` to retrieve full conversation history - * @summary Chat with AI Agent + * Sends requests to the AI API Gateway endpoint which buffers responses. Supports text, images, videos, and documents via base64 encoding. * * **Execution Modes:** * - **Sync Mode** (default): Standard JSON response, waits for completion (200 response) * - **Async Mode**: Set `async: true` for long-running tasks with polling (202 response) * * **Async/Durable Mode (`async: true`):** * - Returns immediately with `requestId` and `pollUrl` (HTTP 202) * - Uses AWS Lambda Durable Functions for long-running inference * - Supports client-executed tools via `waiting_callback` state * - Poll `/ai/chat/executions/{requestId}` for status * - Submit client tool results via `/ai/chat/callback` * - Ideal for complex prompts, large contexts, or client-side tools * * **Multimodal Support:** * - **Text**: Simple string content * - **Images**: Base64-encoded PNG, JPEG, GIF, WebP (up to 25MB) * - **Videos**: Base64-encoded MP4, MOV, WebM, etc. (up to 25MB) * - **Documents**: Base64-encoded PDF, DOCX, CSV, etc. (up to 25MB) * * **Supported Models (Multimodal):** * - **Claude 4.5 Series**: Sonnet 4.5, Haiku 4.5, Opus 4.5 (images, up to 20 per request) * - **Claude 3.5 Series**: Sonnet v1/v2 (images, up to 20 per request) * - **Amazon Nova**: Lite, Pro, Micro (images, videos, documents) * * **Usage Tips:** * - Use base64 encoding for images/videos < 5-10MB * - Place media before text prompts for best results * - Label multiple media files (e.g., \'Image 1:\', \'Image 2:\') * - Maximum 25MB total payload size * * **Response Patterns:** * - **Text-only**: Returns simple text response when no tools requested * - **Single tool**: Returns `toolUse` object when AI requests one tool * - **Multiple tools**: Returns `toolUse` array when AI requests multiple tools * - **Auto-execute sync**: Automatically executes tool and returns final text response * - **Auto-execute async**: Returns toolUse with `executionId` and `status` for polling + * @summary Chat inference via API Gateway (buffered responses) with multimodal support * @param {string} organisation The organisation ID - * @param {string} agentId The agent ID - * @param {ChatWithAIAgentRequest} chatWithAIAgentRequest + * @param {ChatInferenceRequest} chatInferenceRequest Chat request with optional multimodal content blocks * @param {*} [options] Override http request option. * @throws {RequiredError} - * @memberof AIAgentsApi + * @memberof AIInferenceApi */ - public chatWithAIAgent(organisation: string, agentId: string, chatWithAIAgentRequest: ChatWithAIAgentRequest, options?: RawAxiosRequestConfig) { - return AIAgentsApiFp(this.configuration).chatWithAIAgent(organisation, agentId, chatWithAIAgentRequest, options).then((request) => request(this.axios, this.basePath)); + public chatInference(organisation: string, chatInferenceRequest: ChatInferenceRequest, options?: RawAxiosRequestConfig) { + return AIInferenceApiFp(this.configuration).chatInference(organisation, chatInferenceRequest, options).then((request) => request(this.axios, this.basePath)); } /** - * Creates a new AI agent with specific configuration, system prompt, and tool permissions. * * **Agent Configuration:** * - **System Prompt**: Instructions that guide the agent\'s behavior * - **Model**: Which foundation model to use (e.g., \'amazon.nova-pro-v1:0\') * - **Temperature**: Creativity level (0-1) * - **Allowed Tools**: Which tools the agent can auto-execute * - **Allowed Collections**: Vector DB collections for RAG * - **Group**: Optional categorization (e.g., \'development\', \'compliance\') * * **Auto-Execution:** * All tools are automatically executed when an agent requests them (no client confirmation needed). - * @summary Create AI Agent + * Streams responses from the AI streaming subdomain using Server-Sent Events (SSE). Tokens are streamed in real-time as they are generated. * * **Execution Modes:** * - **Streaming Mode** (default): Real-time SSE token-by-token responses * - **Async Mode**: Set `async: true` for long-running tasks with polling (202 response) * * **Async/Durable Mode (`async: true`):** * - Returns immediately with `requestId` and `pollUrl` (HTTP 202) * - Uses AWS Lambda Durable Functions for long-running inference * - Supports client-executed tools via `waiting_callback` state * - Poll `/ai/chat/executions/{requestId}` for status * - Submit client tool results via `/ai/chat/callback` * * **Multimodal Support:** * - **Text**: Simple string content * - **Images**: Base64-encoded PNG, JPEG, GIF, WebP (up to 25MB) * - **Videos**: Base64-encoded MP4, MOV, WebM, etc. (up to 25MB) * - **Documents**: Base64-encoded PDF, DOCX, CSV, etc. (up to 25MB) * * **Supported Models (Multimodal):** * - **Claude 4.5 Series**: Sonnet 4.5, Haiku 4.5, Opus 4.5 (images, up to 20 per request) * - **Claude 3.5 Series**: Sonnet v1/v2 (images, up to 20 per request) * - **Amazon Nova**: Lite, Pro, Micro (images, videos, documents) * * **Usage Tips:** * - Use base64 encoding for images/videos < 5-10MB * - Place media before text prompts for best results * - Label multiple media files (e.g., \'Image 1:\', \'Image 2:\') * - Maximum 25MB total payload size * - Streaming works with all content types (text, image, video, document) + * @summary Chat inference via streaming endpoint (true HTTP streaming) with multimodal support * @param {string} organisation The organisation ID - * @param {CreateAIAgentRequest} createAIAgentRequest + * @param {ChatInferenceStreamRequest} chatInferenceStreamRequest Chat request with optional multimodal content blocks * @param {*} [options] Override http request option. * @throws {RequiredError} - * @memberof AIAgentsApi + * @memberof AIInferenceApi */ - public createAIAgent(organisation: string, createAIAgentRequest: CreateAIAgentRequest, options?: RawAxiosRequestConfig) { - return AIAgentsApiFp(this.configuration).createAIAgent(organisation, createAIAgentRequest, options).then((request) => request(this.axios, this.basePath)); + public chatInferenceStream(organisation: string, chatInferenceStreamRequest: ChatInferenceStreamRequest, options?: RawAxiosRequestConfig) { + return AIInferenceApiFp(this.configuration).chatInferenceStream(organisation, chatInferenceStreamRequest, options).then((request) => request(this.axios, this.basePath)); } /** - * Permanently deletes an AI agent. This action cannot be undone. - * @summary Delete Agent + * Generates vector embeddings for text content using embedding models. Used for semantic search, document similarity, and RAG applications. * * **Features:** * - Single text or batch processing (up to 100 texts) * - Configurable dimensions (256, 512, 1024, 8192 for Titan v2) * - Optional normalization to unit length * - Usage tracking for billing * * **Use Cases:** * - Semantic search across documents * - Similarity matching for content recommendations * - RAG (Retrieval-Augmented Generation) pipelines * - Clustering and classification * * **Available Embedding Models:** * - amazon.titan-embed-text-v2:0 (default, supports 256-8192 dimensions) * - amazon.titan-embed-text-v1:0 (1536 dimensions fixed) + * @summary Generate text embeddings for semantic search and RAG applications * @param {string} organisation The organisation ID - * @param {string} agentId The agent ID + * @param {EmbeddingsRequest} embeddingsRequest Embedding request with single or multiple texts * @param {*} [options] Override http request option. * @throws {RequiredError} - * @memberof AIAgentsApi + * @memberof AIInferenceApi */ - public deleteAIAgent(organisation: string, agentId: string, options?: RawAxiosRequestConfig) { - return AIAgentsApiFp(this.configuration).deleteAIAgent(organisation, agentId, options).then((request) => request(this.axios, this.basePath)); + public embeddings(organisation: string, embeddingsRequest: EmbeddingsRequest, options?: RawAxiosRequestConfig) { + return AIInferenceApiFp(this.configuration).embeddings(organisation, embeddingsRequest, options).then((request) => request(this.axios, this.basePath)); } /** - * Retrieves detailed configuration for a specific AI agent. - * @summary Get Agent Details + * Poll the status of an async/durable chat execution. * * **When to use:** After starting chat inference with `async: true`, poll this endpoint * to check execution status and retrieve results when complete. * * **Identifier:** Accepts either: * - `requestId` (recommended): The short ID returned from the async request * - `executionArn`: The full AWS Lambda durable execution ARN (must be URL-encoded) * * **Statuses:** * - `pending`: Execution is starting (retry shortly) * - `running`: Execution is in progress * - `waiting_callback`: Execution paused, waiting for client tool results * - `complete`: Execution finished successfully * - `failed`: Execution failed with error * * **Client Tool Callback:** * When status is `waiting_callback`, submit tool results via `POST /ai/chat/callback`. * * **Polling Recommendations:** * - Start with 1 second delay, exponential backoff up to 30 seconds * - Stop polling after 15 minutes (consider failed) + * @summary Get Durable Execution Status * @param {string} organisation The organisation ID - * @param {string} agentId The agent ID + * @param {string} identifier Either the requestId from async response, or full executionArn (URL-encoded) * @param {*} [options] Override http request option. * @throws {RequiredError} - * @memberof AIAgentsApi + * @memberof AIInferenceApi */ - public getAIAgent(organisation: string, agentId: string, options?: RawAxiosRequestConfig) { - return AIAgentsApiFp(this.configuration).getAIAgent(organisation, agentId, options).then((request) => request(this.axios, this.basePath)); + public getDurableExecutionStatus(organisation: string, identifier: string, options?: RawAxiosRequestConfig) { + return AIInferenceApiFp(this.configuration).getDurableExecutionStatus(organisation, identifier, options).then((request) => request(this.axios, this.basePath)); } /** - * Lists all AI agents for an organization. Agents are pre-configured AI assistants with specific system prompts, model settings, and tool permissions. * * **Features:** * - Filter by group (e.g., \'development\', \'compliance\') * - Organization-scoped * - Returns agent configurations without execution history - * @summary List AI Agents + * Generates images using Amazon Nova Canvas image generation model. * * **Region Restriction:** Nova Canvas is ONLY available in: * - `us-east-1` (US East, N. Virginia) * - `ap-northeast-1` (Asia Pacific, Tokyo) * - `eu-west-1` (Europe, Ireland) * ❌ NOT available in `ap-southeast-2` (Sydney) * * **Supported Task Types:** * - **TEXT_IMAGE**: Basic text-to-image generation * - **TEXT_IMAGE with Conditioning**: Layout-guided generation using edge detection or segmentation * - **COLOR_GUIDED_GENERATION**: Generate images with specific color palettes * - **IMAGE_VARIATION**: Create variations of existing images * - **INPAINTING**: Fill masked areas in images * - **OUTPAINTING**: Extend images beyond their borders * - **BACKGROUND_REMOVAL**: Remove backgrounds from images * - **VIRTUAL_TRY_ON**: Try on garments/objects on people * * **Quality Options:** * - **standard**: Faster generation, lower cost * - **premium**: Higher quality, slower generation * * **Timeout:** Image generation can take up to 5 minutes + * @summary Generate images with Amazon Nova Canvas * @param {string} organisation The organisation ID - * @param {string} [group] Optional group filter (e.g., \'development\', \'compliance\') + * @param {ImageGenerationRequest} imageGenerationRequest Image generation request * @param {*} [options] Override http request option. * @throws {RequiredError} - * @memberof AIAgentsApi + * @memberof AIInferenceApi */ - public listAIAgents(organisation: string, group?: string, options?: RawAxiosRequestConfig) { - return AIAgentsApiFp(this.configuration).listAIAgents(organisation, group, options).then((request) => request(this.axios, this.basePath)); + public imageGeneration(organisation: string, imageGenerationRequest: ImageGenerationRequest, options?: RawAxiosRequestConfig) { + return AIInferenceApiFp(this.configuration).imageGeneration(organisation, imageGenerationRequest, options).then((request) => request(this.axios, this.basePath)); } /** - * Updates an existing AI agent configuration. All fields except agentId, organizationId, createdAt, and createdBy can be updated. - * @summary Update Agent + * Submit tool execution results to resume a suspended durable execution. * * **When to use:** When polling the execution status returns `waiting_callback`, use this endpoint * to submit the results of client-executed tools. The execution will then resume. * * **Flow:** * 1. Start async chat with client-executed tools (`autoExecute: []` or tools not in autoExecute list) * 2. Poll status until `waiting_callback` * 3. Execute tools locally using `pendingTools` from status response * 4. Submit results here with the `callbackId` * 5. Poll status until `complete` * * **Important:** Each `callbackId` can only be used once. After submission, poll the execution * status to see the updated state. + * @summary Submit Client Tool Results (Callback) * @param {string} organisation The organisation ID - * @param {string} agentId The agent ID - * @param {UpdateAIAgentRequest} updateAIAgentRequest + * @param {SubmitToolCallbackRequest} submitToolCallbackRequest * @param {*} [options] Override http request option. * @throws {RequiredError} - * @memberof AIAgentsApi + * @memberof AIInferenceApi */ - public updateAIAgent(organisation: string, agentId: string, updateAIAgentRequest: UpdateAIAgentRequest, options?: RawAxiosRequestConfig) { - return AIAgentsApiFp(this.configuration).updateAIAgent(organisation, agentId, updateAIAgentRequest, options).then((request) => request(this.axios, this.basePath)); + public submitToolCallback(organisation: string, submitToolCallbackRequest: SubmitToolCallbackRequest, options?: RawAxiosRequestConfig) { + return AIInferenceApiFp(this.configuration).submitToolCallback(organisation, submitToolCallbackRequest, options).then((request) => request(this.axios, this.basePath)); } } /** - * AICustomToolsApi - axios parameter creator + * AIModelsApi - axios parameter creator * @export */ -export const AICustomToolsApiAxiosParamCreator = function (configuration?: Configuration) { +export const AIModelsApiAxiosParamCreator = function (configuration?: Configuration) { return { /** - * Registers a custom edge function as a tool that AI models can invoke. This enables customers to create their own tools backed by edge functions. * * **Edge Function Contract:** * - Edge functions must accept POST requests with JSON payload * - Expected request format: `{ \'toolName\': \'...\', \'input\': {...}, \'orgId\': \'...\' }` * - Must return JSON response with either `result` or `error` field * * **Async Tools:** * Set `isAsync: true` for operations >5 seconds. The edge function should return `{ executionId: \'...\' }` and the AI will poll for completion. - * @summary Register Custom Edge Function Tool + * Retrieves detailed information about a specific Bedrock model from the catalog. * * **Features:** * - Complete pricing breakdown (input/output per million tokens) * - Context window and output token limits * - Supported features (chat, vision, streaming, embeddings) * - Model availability and deprecation status * - Release date for version tracking * * **Example Model IDs:** * - `amazon.nova-lite-v1:0` - Default multimodal model * - `anthropic.claude-3-5-sonnet-20241022-v2:0` - Latest Claude * - `amazon.titan-embed-text-v2:0` - Latest embeddings + * @summary Get AI Model Details * @param {string} organisation The organisation ID - * @param {CreateCustomToolRequest} createCustomToolRequest + * @param {string} modelId The model identifier (e.g., amazon.nova-lite-v1:0) * @param {*} [options] Override http request option. * @throws {RequiredError} */ - createCustomTool: async (organisation: string, createCustomToolRequest: CreateCustomToolRequest, options: RawAxiosRequestConfig = {}): Promise => { + getAIModel: async (organisation: string, modelId: string, options: RawAxiosRequestConfig = {}): Promise => { // verify required parameter 'organisation' is not null or undefined - assertParamExists('createCustomTool', 'organisation', organisation) - // verify required parameter 'createCustomToolRequest' is not null or undefined - assertParamExists('createCustomTool', 'createCustomToolRequest', createCustomToolRequest) - const localVarPath = `/api/v3/organizations/{organisation}/ai/custom-tools` - .replace(`{${"organisation"}}`, encodeURIComponent(String(organisation))); + assertParamExists('getAIModel', 'organisation', organisation) + // verify required parameter 'modelId' is not null or undefined + assertParamExists('getAIModel', 'modelId', modelId) + const localVarPath = `/api/v3/organizations/{organisation}/ai/models/{modelId}` + .replace(`{${"organisation"}}`, encodeURIComponent(String(organisation))) + .replace(`{${"modelId"}}`, encodeURIComponent(String(modelId))); // use dummy base URL string because the URL constructor only accepts absolute URLs. const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); let baseOptions; @@ -11511,7 +14247,7 @@ export const AICustomToolsApiAxiosParamCreator = function (configuration?: Confi baseOptions = configuration.baseOptions; } - const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options}; + const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options}; const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; @@ -11521,12 +14257,9 @@ export const AICustomToolsApiAxiosParamCreator = function (configuration?: Confi - localVarHeaderParameter['Content-Type'] = 'application/json'; - setSearchParams(localVarUrlObj, localVarQueryParameter); let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; - localVarRequestOptions.data = serializeDataIfNeeded(createCustomToolRequest, localVarRequestOptions, configuration) return { url: toPathString(localVarUrlObj), @@ -11534,21 +14267,18 @@ export const AICustomToolsApiAxiosParamCreator = function (configuration?: Confi }; }, /** - * Deletes a custom tool registration. The underlying edge function is not affected. - * @summary Delete Custom Tool + * + * @summary List available AI models for an organization * @param {string} organisation The organisation ID - * @param {string} toolName The tool name to delete + * @param {ListAIModelsFeatureEnum} [feature] Filter models by supported feature * @param {*} [options] Override http request option. * @throws {RequiredError} */ - deleteCustomTool: async (organisation: string, toolName: string, options: RawAxiosRequestConfig = {}): Promise => { + listAIModels: async (organisation: string, feature?: ListAIModelsFeatureEnum, options: RawAxiosRequestConfig = {}): Promise => { // verify required parameter 'organisation' is not null or undefined - assertParamExists('deleteCustomTool', 'organisation', organisation) - // verify required parameter 'toolName' is not null or undefined - assertParamExists('deleteCustomTool', 'toolName', toolName) - const localVarPath = `/api/v3/organizations/{organisation}/ai/custom-tools/{toolName}` - .replace(`{${"organisation"}}`, encodeURIComponent(String(organisation))) - .replace(`{${"toolName"}}`, encodeURIComponent(String(toolName))); + assertParamExists('listAIModels', 'organisation', organisation) + const localVarPath = `/api/v3/organizations/{organisation}/ai/models` + .replace(`{${"organisation"}}`, encodeURIComponent(String(organisation))); // use dummy base URL string because the URL constructor only accepts absolute URLs. const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); let baseOptions; @@ -11556,36 +14286,167 @@ export const AICustomToolsApiAxiosParamCreator = function (configuration?: Confi baseOptions = configuration.baseOptions; } - const localVarRequestOptions = { method: 'DELETE', ...baseOptions, ...options}; - const localVarHeaderParameter = {} as any; - const localVarQueryParameter = {} as any; + const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options}; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + // authentication BearerAuth required + // http bearer authentication required + await setBearerAuthToObject(localVarHeaderParameter, configuration) + + if (feature !== undefined) { + localVarQueryParameter['feature'] = feature; + } + + + + setSearchParams(localVarUrlObj, localVarQueryParameter); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + } +}; + +/** + * AIModelsApi - functional programming interface + * @export + */ +export const AIModelsApiFp = function(configuration?: Configuration) { + const localVarAxiosParamCreator = AIModelsApiAxiosParamCreator(configuration) + return { + /** + * Retrieves detailed information about a specific Bedrock model from the catalog. * * **Features:** * - Complete pricing breakdown (input/output per million tokens) * - Context window and output token limits * - Supported features (chat, vision, streaming, embeddings) * - Model availability and deprecation status * - Release date for version tracking * * **Example Model IDs:** * - `amazon.nova-lite-v1:0` - Default multimodal model * - `anthropic.claude-3-5-sonnet-20241022-v2:0` - Latest Claude * - `amazon.titan-embed-text-v2:0` - Latest embeddings + * @summary Get AI Model Details + * @param {string} organisation The organisation ID + * @param {string} modelId The model identifier (e.g., amazon.nova-lite-v1:0) + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async getAIModel(organisation: string, modelId: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.getAIModel(organisation, modelId, options); + const localVarOperationServerIndex = configuration?.serverIndex ?? 0; + const localVarOperationServerBasePath = operationServerMap['AIModelsApi.getAIModel']?.[localVarOperationServerIndex]?.url; + return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath); + }, + /** + * + * @summary List available AI models for an organization + * @param {string} organisation The organisation ID + * @param {ListAIModelsFeatureEnum} [feature] Filter models by supported feature + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async listAIModels(organisation: string, feature?: ListAIModelsFeatureEnum, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.listAIModels(organisation, feature, options); + const localVarOperationServerIndex = configuration?.serverIndex ?? 0; + const localVarOperationServerBasePath = operationServerMap['AIModelsApi.listAIModels']?.[localVarOperationServerIndex]?.url; + return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath); + }, + } +}; + +/** + * AIModelsApi - factory interface + * @export + */ +export const AIModelsApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) { + const localVarFp = AIModelsApiFp(configuration) + return { + /** + * Retrieves detailed information about a specific Bedrock model from the catalog. * * **Features:** * - Complete pricing breakdown (input/output per million tokens) * - Context window and output token limits * - Supported features (chat, vision, streaming, embeddings) * - Model availability and deprecation status * - Release date for version tracking * * **Example Model IDs:** * - `amazon.nova-lite-v1:0` - Default multimodal model * - `anthropic.claude-3-5-sonnet-20241022-v2:0` - Latest Claude * - `amazon.titan-embed-text-v2:0` - Latest embeddings + * @summary Get AI Model Details + * @param {string} organisation The organisation ID + * @param {string} modelId The model identifier (e.g., amazon.nova-lite-v1:0) + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + getAIModel(organisation: string, modelId: string, options?: RawAxiosRequestConfig): AxiosPromise { + return localVarFp.getAIModel(organisation, modelId, options).then((request) => request(axios, basePath)); + }, + /** + * + * @summary List available AI models for an organization + * @param {string} organisation The organisation ID + * @param {ListAIModelsFeatureEnum} [feature] Filter models by supported feature + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + listAIModels(organisation: string, feature?: ListAIModelsFeatureEnum, options?: RawAxiosRequestConfig): AxiosPromise { + return localVarFp.listAIModels(organisation, feature, options).then((request) => request(axios, basePath)); + }, + }; +}; + +/** + * AIModelsApi - object-oriented interface + * @export + * @class AIModelsApi + * @extends {BaseAPI} + */ +export class AIModelsApi extends BaseAPI { + /** + * Retrieves detailed information about a specific Bedrock model from the catalog. * * **Features:** * - Complete pricing breakdown (input/output per million tokens) * - Context window and output token limits * - Supported features (chat, vision, streaming, embeddings) * - Model availability and deprecation status * - Release date for version tracking * * **Example Model IDs:** * - `amazon.nova-lite-v1:0` - Default multimodal model * - `anthropic.claude-3-5-sonnet-20241022-v2:0` - Latest Claude * - `amazon.titan-embed-text-v2:0` - Latest embeddings + * @summary Get AI Model Details + * @param {string} organisation The organisation ID + * @param {string} modelId The model identifier (e.g., amazon.nova-lite-v1:0) + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof AIModelsApi + */ + public getAIModel(organisation: string, modelId: string, options?: RawAxiosRequestConfig) { + return AIModelsApiFp(this.configuration).getAIModel(organisation, modelId, options).then((request) => request(this.axios, this.basePath)); + } - // authentication BearerAuth required - // http bearer authentication required - await setBearerAuthToObject(localVarHeaderParameter, configuration) + /** + * + * @summary List available AI models for an organization + * @param {string} organisation The organisation ID + * @param {ListAIModelsFeatureEnum} [feature] Filter models by supported feature + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof AIModelsApi + */ + public listAIModels(organisation: string, feature?: ListAIModelsFeatureEnum, options?: RawAxiosRequestConfig) { + return AIModelsApiFp(this.configuration).listAIModels(organisation, feature, options).then((request) => request(this.axios, this.basePath)); + } +} +/** + * @export + */ +export const ListAIModelsFeatureEnum = { + Chat: 'chat', + Embeddings: 'embeddings', + Vision: 'vision', + Streaming: 'streaming', + All: 'all' +} as const; +export type ListAIModelsFeatureEnum = typeof ListAIModelsFeatureEnum[keyof typeof ListAIModelsFeatureEnum]; - - setSearchParams(localVarUrlObj, localVarQueryParameter); - let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; - localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; - return { - url: toPathString(localVarUrlObj), - options: localVarRequestOptions, - }; - }, +/** + * AIMonitoringApi - axios parameter creator + * @export + */ +export const AIMonitoringApiAxiosParamCreator = function (configuration?: Configuration) { + return { /** - * Lists all registered custom edge function tools for an organization. - * @summary List Custom Tools + * + * @summary Get AI usage statistics * @param {string} organisation The organisation ID + * @param {string} [month] Month to retrieve statistics for (YYYY-MM format) * @param {*} [options] Override http request option. * @throws {RequiredError} */ - listCustomTools: async (organisation: string, options: RawAxiosRequestConfig = {}): Promise => { + getAIUsageStats: async (organisation: string, month?: string, options: RawAxiosRequestConfig = {}): Promise => { // verify required parameter 'organisation' is not null or undefined - assertParamExists('listCustomTools', 'organisation', organisation) - const localVarPath = `/api/v3/organizations/{organisation}/ai/custom-tools` + assertParamExists('getAIUsageStats', 'organisation', organisation) + const localVarPath = `/api/v3/organizations/{organisation}/ai/usage` .replace(`{${"organisation"}}`, encodeURIComponent(String(organisation))); // use dummy base URL string because the URL constructor only accepts absolute URLs. const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); @@ -11602,6 +14463,10 @@ export const AICustomToolsApiAxiosParamCreator = function (configuration?: Confi // http bearer authentication required await setBearerAuthToObject(localVarHeaderParameter, configuration) + if (month !== undefined) { + localVarQueryParameter['month'] = month; + } + setSearchParams(localVarUrlObj, localVarQueryParameter); @@ -11617,166 +14482,93 @@ export const AICustomToolsApiAxiosParamCreator = function (configuration?: Confi }; /** - * AICustomToolsApi - functional programming interface + * AIMonitoringApi - functional programming interface * @export */ -export const AICustomToolsApiFp = function(configuration?: Configuration) { - const localVarAxiosParamCreator = AICustomToolsApiAxiosParamCreator(configuration) +export const AIMonitoringApiFp = function(configuration?: Configuration) { + const localVarAxiosParamCreator = AIMonitoringApiAxiosParamCreator(configuration) return { /** - * Registers a custom edge function as a tool that AI models can invoke. This enables customers to create their own tools backed by edge functions. * * **Edge Function Contract:** * - Edge functions must accept POST requests with JSON payload * - Expected request format: `{ \'toolName\': \'...\', \'input\': {...}, \'orgId\': \'...\' }` * - Must return JSON response with either `result` or `error` field * * **Async Tools:** * Set `isAsync: true` for operations >5 seconds. The edge function should return `{ executionId: \'...\' }` and the AI will poll for completion. - * @summary Register Custom Edge Function Tool - * @param {string} organisation The organisation ID - * @param {CreateCustomToolRequest} createCustomToolRequest - * @param {*} [options] Override http request option. - * @throws {RequiredError} - */ - async createCustomTool(organisation: string, createCustomToolRequest: CreateCustomToolRequest, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { - const localVarAxiosArgs = await localVarAxiosParamCreator.createCustomTool(organisation, createCustomToolRequest, options); - const localVarOperationServerIndex = configuration?.serverIndex ?? 0; - const localVarOperationServerBasePath = operationServerMap['AICustomToolsApi.createCustomTool']?.[localVarOperationServerIndex]?.url; - return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath); - }, - /** - * Deletes a custom tool registration. The underlying edge function is not affected. - * @summary Delete Custom Tool - * @param {string} organisation The organisation ID - * @param {string} toolName The tool name to delete - * @param {*} [options] Override http request option. - * @throws {RequiredError} - */ - async deleteCustomTool(organisation: string, toolName: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { - const localVarAxiosArgs = await localVarAxiosParamCreator.deleteCustomTool(organisation, toolName, options); - const localVarOperationServerIndex = configuration?.serverIndex ?? 0; - const localVarOperationServerBasePath = operationServerMap['AICustomToolsApi.deleteCustomTool']?.[localVarOperationServerIndex]?.url; - return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath); - }, - /** - * Lists all registered custom edge function tools for an organization. - * @summary List Custom Tools + * + * @summary Get AI usage statistics * @param {string} organisation The organisation ID + * @param {string} [month] Month to retrieve statistics for (YYYY-MM format) * @param {*} [options] Override http request option. * @throws {RequiredError} */ - async listCustomTools(organisation: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { - const localVarAxiosArgs = await localVarAxiosParamCreator.listCustomTools(organisation, options); + async getAIUsageStats(organisation: string, month?: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.getAIUsageStats(organisation, month, options); const localVarOperationServerIndex = configuration?.serverIndex ?? 0; - const localVarOperationServerBasePath = operationServerMap['AICustomToolsApi.listCustomTools']?.[localVarOperationServerIndex]?.url; + const localVarOperationServerBasePath = operationServerMap['AIMonitoringApi.getAIUsageStats']?.[localVarOperationServerIndex]?.url; return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath); }, } }; /** - * AICustomToolsApi - factory interface + * AIMonitoringApi - factory interface * @export */ -export const AICustomToolsApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) { - const localVarFp = AICustomToolsApiFp(configuration) +export const AIMonitoringApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) { + const localVarFp = AIMonitoringApiFp(configuration) return { /** - * Registers a custom edge function as a tool that AI models can invoke. This enables customers to create their own tools backed by edge functions. * * **Edge Function Contract:** * - Edge functions must accept POST requests with JSON payload * - Expected request format: `{ \'toolName\': \'...\', \'input\': {...}, \'orgId\': \'...\' }` * - Must return JSON response with either `result` or `error` field * * **Async Tools:** * Set `isAsync: true` for operations >5 seconds. The edge function should return `{ executionId: \'...\' }` and the AI will poll for completion. - * @summary Register Custom Edge Function Tool - * @param {string} organisation The organisation ID - * @param {CreateCustomToolRequest} createCustomToolRequest - * @param {*} [options] Override http request option. - * @throws {RequiredError} - */ - createCustomTool(organisation: string, createCustomToolRequest: CreateCustomToolRequest, options?: RawAxiosRequestConfig): AxiosPromise { - return localVarFp.createCustomTool(organisation, createCustomToolRequest, options).then((request) => request(axios, basePath)); - }, - /** - * Deletes a custom tool registration. The underlying edge function is not affected. - * @summary Delete Custom Tool - * @param {string} organisation The organisation ID - * @param {string} toolName The tool name to delete - * @param {*} [options] Override http request option. - * @throws {RequiredError} - */ - deleteCustomTool(organisation: string, toolName: string, options?: RawAxiosRequestConfig): AxiosPromise { - return localVarFp.deleteCustomTool(organisation, toolName, options).then((request) => request(axios, basePath)); - }, - /** - * Lists all registered custom edge function tools for an organization. - * @summary List Custom Tools + * + * @summary Get AI usage statistics * @param {string} organisation The organisation ID + * @param {string} [month] Month to retrieve statistics for (YYYY-MM format) * @param {*} [options] Override http request option. * @throws {RequiredError} */ - listCustomTools(organisation: string, options?: RawAxiosRequestConfig): AxiosPromise { - return localVarFp.listCustomTools(organisation, options).then((request) => request(axios, basePath)); + getAIUsageStats(organisation: string, month?: string, options?: RawAxiosRequestConfig): AxiosPromise { + return localVarFp.getAIUsageStats(organisation, month, options).then((request) => request(axios, basePath)); }, }; }; /** - * AICustomToolsApi - object-oriented interface + * AIMonitoringApi - object-oriented interface * @export - * @class AICustomToolsApi + * @class AIMonitoringApi * @extends {BaseAPI} */ -export class AICustomToolsApi extends BaseAPI { - /** - * Registers a custom edge function as a tool that AI models can invoke. This enables customers to create their own tools backed by edge functions. * * **Edge Function Contract:** * - Edge functions must accept POST requests with JSON payload * - Expected request format: `{ \'toolName\': \'...\', \'input\': {...}, \'orgId\': \'...\' }` * - Must return JSON response with either `result` or `error` field * * **Async Tools:** * Set `isAsync: true` for operations >5 seconds. The edge function should return `{ executionId: \'...\' }` and the AI will poll for completion. - * @summary Register Custom Edge Function Tool - * @param {string} organisation The organisation ID - * @param {CreateCustomToolRequest} createCustomToolRequest - * @param {*} [options] Override http request option. - * @throws {RequiredError} - * @memberof AICustomToolsApi - */ - public createCustomTool(organisation: string, createCustomToolRequest: CreateCustomToolRequest, options?: RawAxiosRequestConfig) { - return AICustomToolsApiFp(this.configuration).createCustomTool(organisation, createCustomToolRequest, options).then((request) => request(this.axios, this.basePath)); - } - - /** - * Deletes a custom tool registration. The underlying edge function is not affected. - * @summary Delete Custom Tool - * @param {string} organisation The organisation ID - * @param {string} toolName The tool name to delete - * @param {*} [options] Override http request option. - * @throws {RequiredError} - * @memberof AICustomToolsApi - */ - public deleteCustomTool(organisation: string, toolName: string, options?: RawAxiosRequestConfig) { - return AICustomToolsApiFp(this.configuration).deleteCustomTool(organisation, toolName, options).then((request) => request(this.axios, this.basePath)); - } - +export class AIMonitoringApi extends BaseAPI { /** - * Lists all registered custom edge function tools for an organization. - * @summary List Custom Tools + * + * @summary Get AI usage statistics * @param {string} organisation The organisation ID + * @param {string} [month] Month to retrieve statistics for (YYYY-MM format) * @param {*} [options] Override http request option. * @throws {RequiredError} - * @memberof AICustomToolsApi + * @memberof AIMonitoringApi */ - public listCustomTools(organisation: string, options?: RawAxiosRequestConfig) { - return AICustomToolsApiFp(this.configuration).listCustomTools(organisation, options).then((request) => request(this.axios, this.basePath)); + public getAIUsageStats(organisation: string, month?: string, options?: RawAxiosRequestConfig) { + return AIMonitoringApiFp(this.configuration).getAIUsageStats(organisation, month, options).then((request) => request(this.axios, this.basePath)); } } /** - * AIInferenceApi - axios parameter creator + * AISessionsApi - axios parameter creator * @export */ -export const AIInferenceApiAxiosParamCreator = function (configuration?: Configuration) { +export const AISessionsApiAxiosParamCreator = function (configuration?: Configuration) { return { /** - * Sends requests to the AI API Gateway endpoint which buffers responses. Supports text, images, videos, and documents via base64 encoding. * * **Multimodal Support:** * - **Text**: Simple string content * - **Images**: Base64-encoded PNG, JPEG, GIF, WebP (up to 25MB) * - **Videos**: Base64-encoded MP4, MOV, WebM, etc. (up to 25MB) * - **Documents**: Base64-encoded PDF, DOCX, CSV, etc. (up to 25MB) * * **Supported Models:** * - Amazon Nova Lite, Micro, Pro (all support multimodal) * - Claude models (text only) * * **Usage Tips:** * - Use base64 encoding for images/videos < 5-10MB * - Place media before text prompts for best results * - Label multiple media files (e.g., \'Image 1:\', \'Image 2:\') * - Maximum 25MB total payload size * * **Response Patterns:** * - **Text-only**: Returns simple text response when no tools requested * - **Single tool**: Returns `toolUse` object when AI requests one tool * - **Multiple tools**: Returns `toolUse` array when AI requests multiple tools * - **Auto-execute sync**: Automatically executes tool and returns final text response * - **Auto-execute async**: Returns toolUse with `executionId` and `status` for polling - * @summary Chat inference via API Gateway (buffered responses) with multimodal support + * Creates an AI session with automatic expiration (60 min default, 24h max). Sessions are isolated by organization. Use userId to identify the user creating the session. Use sessionGroup for logical grouping. Use metadata for additional custom data. Filter sessions by userId or sessionGroup when listing. + * @summary Create a new chat session with multi-tenant isolation * @param {string} organisation The organisation ID - * @param {ChatInferenceRequest} chatInferenceRequest Chat request with optional multimodal content blocks + * @param {CreateAISessionRequest} createAISessionRequest * @param {*} [options] Override http request option. * @throws {RequiredError} */ - chatInference: async (organisation: string, chatInferenceRequest: ChatInferenceRequest, options: RawAxiosRequestConfig = {}): Promise => { + createAISession: async (organisation: string, createAISessionRequest: CreateAISessionRequest, options: RawAxiosRequestConfig = {}): Promise => { // verify required parameter 'organisation' is not null or undefined - assertParamExists('chatInference', 'organisation', organisation) - // verify required parameter 'chatInferenceRequest' is not null or undefined - assertParamExists('chatInference', 'chatInferenceRequest', chatInferenceRequest) - const localVarPath = `/api/v3/organizations/{organisation}/ai/chat` + assertParamExists('createAISession', 'organisation', organisation) + // verify required parameter 'createAISessionRequest' is not null or undefined + assertParamExists('createAISession', 'createAISessionRequest', createAISessionRequest) + const localVarPath = `/api/v3/organizations/{organisation}/ai/sessions` .replace(`{${"organisation"}}`, encodeURIComponent(String(organisation))); // use dummy base URL string because the URL constructor only accepts absolute URLs. const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); @@ -11800,7 +14592,7 @@ export const AIInferenceApiAxiosParamCreator = function (configuration?: Configu setSearchParams(localVarUrlObj, localVarQueryParameter); let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; - localVarRequestOptions.data = serializeDataIfNeeded(chatInferenceRequest, localVarRequestOptions, configuration) + localVarRequestOptions.data = serializeDataIfNeeded(createAISessionRequest, localVarRequestOptions, configuration) return { url: toPathString(localVarUrlObj), @@ -11808,20 +14600,21 @@ export const AIInferenceApiAxiosParamCreator = function (configuration?: Configu }; }, /** - * Streams responses from the AI streaming subdomain using Server-Sent Events (SSE). Tokens are streamed in real-time as they are generated. * * **Multimodal Support:** * - **Text**: Simple string content * - **Images**: Base64-encoded PNG, JPEG, GIF, WebP (up to 25MB) * - **Videos**: Base64-encoded MP4, MOV, WebM, etc. (up to 25MB) * - **Documents**: Base64-encoded PDF, DOCX, CSV, etc. (up to 25MB) * * **Supported Models:** * - Amazon Nova Lite, Micro, Pro (all support multimodal) * - Claude models (text only) * * **Usage Tips:** * - Use base64 encoding for images/videos < 5-10MB * - Place media before text prompts for best results * - Label multiple media files (e.g., \'Image 1:\', \'Image 2:\') * - Maximum 25MB total payload size * - Streaming works with all content types (text, image, video, document) - * @summary Chat inference via streaming endpoint (true HTTP streaming) with multimodal support + * + * @summary Delete a chat session * @param {string} organisation The organisation ID - * @param {ChatInferenceStreamRequest} chatInferenceStreamRequest Chat request with optional multimodal content blocks + * @param {string} sessionId The session ID * @param {*} [options] Override http request option. * @throws {RequiredError} */ - chatInferenceStream: async (organisation: string, chatInferenceStreamRequest: ChatInferenceStreamRequest, options: RawAxiosRequestConfig = {}): Promise => { - // verify required parameter 'organisation' is not null or undefined - assertParamExists('chatInferenceStream', 'organisation', organisation) - // verify required parameter 'chatInferenceStreamRequest' is not null or undefined - assertParamExists('chatInferenceStream', 'chatInferenceStreamRequest', chatInferenceStreamRequest) - const localVarPath = `/api/v3/organizations/{organisation}/ai/chat/stream` - .replace(`{${"organisation"}}`, encodeURIComponent(String(organisation))); + deleteAISession: async (organisation: string, sessionId: string, options: RawAxiosRequestConfig = {}): Promise => { + // verify required parameter 'organisation' is not null or undefined + assertParamExists('deleteAISession', 'organisation', organisation) + // verify required parameter 'sessionId' is not null or undefined + assertParamExists('deleteAISession', 'sessionId', sessionId) + const localVarPath = `/api/v3/organizations/{organisation}/ai/sessions/{sessionId}` + .replace(`{${"organisation"}}`, encodeURIComponent(String(organisation))) + .replace(`{${"sessionId"}}`, encodeURIComponent(String(sessionId))); // use dummy base URL string because the URL constructor only accepts absolute URLs. const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); let baseOptions; @@ -11829,7 +14622,7 @@ export const AIInferenceApiAxiosParamCreator = function (configuration?: Configu baseOptions = configuration.baseOptions; } - const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options}; + const localVarRequestOptions = { method: 'DELETE', ...baseOptions, ...options}; const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; @@ -11839,12 +14632,9 @@ export const AIInferenceApiAxiosParamCreator = function (configuration?: Configu - localVarHeaderParameter['Content-Type'] = 'application/json'; - setSearchParams(localVarUrlObj, localVarQueryParameter); let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; - localVarRequestOptions.data = serializeDataIfNeeded(chatInferenceStreamRequest, localVarRequestOptions, configuration) return { url: toPathString(localVarUrlObj), @@ -11852,20 +14642,22 @@ export const AIInferenceApiAxiosParamCreator = function (configuration?: Configu }; }, /** - * Generates vector embeddings for text content using embedding models. Used for semantic search, document similarity, and RAG applications. * * **Features:** * - Single text or batch processing (up to 100 texts) * - Configurable dimensions (256, 512, 1024, 8192 for Titan v2) * - Optional normalization to unit length * - Usage tracking for billing * * **Use Cases:** * - Semantic search across documents * - Similarity matching for content recommendations * - RAG (Retrieval-Augmented Generation) pipelines * - Clustering and classification * * **Available Embedding Models:** * - amazon.titan-embed-text-v2:0 (default, supports 256-8192 dimensions) * - amazon.titan-embed-text-v1:0 (1536 dimensions fixed) - * @summary Generate text embeddings for semantic search and RAG applications + * Extends the expiration time of an active session. Useful for keeping long-running conversations alive. + * @summary Extend Session Expiration * @param {string} organisation The organisation ID - * @param {EmbeddingsRequest} embeddingsRequest Embedding request with single or multiple texts + * @param {string} sessionId The session ID + * @param {ExtendAISessionRequest} [extendAISessionRequest] * @param {*} [options] Override http request option. * @throws {RequiredError} */ - embeddings: async (organisation: string, embeddingsRequest: EmbeddingsRequest, options: RawAxiosRequestConfig = {}): Promise => { + extendAISession: async (organisation: string, sessionId: string, extendAISessionRequest?: ExtendAISessionRequest, options: RawAxiosRequestConfig = {}): Promise => { // verify required parameter 'organisation' is not null or undefined - assertParamExists('embeddings', 'organisation', organisation) - // verify required parameter 'embeddingsRequest' is not null or undefined - assertParamExists('embeddings', 'embeddingsRequest', embeddingsRequest) - const localVarPath = `/api/v3/organizations/{organisation}/ai/embeddings` - .replace(`{${"organisation"}}`, encodeURIComponent(String(organisation))); + assertParamExists('extendAISession', 'organisation', organisation) + // verify required parameter 'sessionId' is not null or undefined + assertParamExists('extendAISession', 'sessionId', sessionId) + const localVarPath = `/api/v3/organizations/{organisation}/ai/sessions/{sessionId}/extend` + .replace(`{${"organisation"}}`, encodeURIComponent(String(organisation))) + .replace(`{${"sessionId"}}`, encodeURIComponent(String(sessionId))); // use dummy base URL string because the URL constructor only accepts absolute URLs. const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); let baseOptions; @@ -11873,7 +14665,7 @@ export const AIInferenceApiAxiosParamCreator = function (configuration?: Configu baseOptions = configuration.baseOptions; } - const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options}; + const localVarRequestOptions = { method: 'PUT', ...baseOptions, ...options}; const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; @@ -11888,7 +14680,7 @@ export const AIInferenceApiAxiosParamCreator = function (configuration?: Configu setSearchParams(localVarUrlObj, localVarQueryParameter); let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; - localVarRequestOptions.data = serializeDataIfNeeded(embeddingsRequest, localVarRequestOptions, configuration) + localVarRequestOptions.data = serializeDataIfNeeded(extendAISessionRequest, localVarRequestOptions, configuration) return { url: toPathString(localVarUrlObj), @@ -11896,20 +14688,21 @@ export const AIInferenceApiAxiosParamCreator = function (configuration?: Configu }; }, /** - * Generates images using Amazon Nova Canvas image generation model. * * **Region Restriction:** Nova Canvas is ONLY available in: * - `us-east-1` (US East, N. Virginia) * - `ap-northeast-1` (Asia Pacific, Tokyo) * - `eu-west-1` (Europe, Ireland) * ❌ NOT available in `ap-southeast-2` (Sydney) * * **Supported Task Types:** * - **TEXT_IMAGE**: Basic text-to-image generation * - **TEXT_IMAGE with Conditioning**: Layout-guided generation using edge detection or segmentation * - **COLOR_GUIDED_GENERATION**: Generate images with specific color palettes * - **IMAGE_VARIATION**: Create variations of existing images * - **INPAINTING**: Fill masked areas in images * - **OUTPAINTING**: Extend images beyond their borders * - **BACKGROUND_REMOVAL**: Remove backgrounds from images * - **VIRTUAL_TRY_ON**: Try on garments/objects on people * * **Quality Options:** * - **standard**: Faster generation, lower cost * - **premium**: Higher quality, slower generation * * **Timeout:** Image generation can take up to 5 minutes - * @summary Generate images with Amazon Nova Canvas + * + * @summary Get a specific chat session * @param {string} organisation The organisation ID - * @param {ImageGenerationRequest} imageGenerationRequest Image generation request + * @param {string} sessionId The session ID * @param {*} [options] Override http request option. * @throws {RequiredError} */ - imageGeneration: async (organisation: string, imageGenerationRequest: ImageGenerationRequest, options: RawAxiosRequestConfig = {}): Promise => { + getAISession: async (organisation: string, sessionId: string, options: RawAxiosRequestConfig = {}): Promise => { // verify required parameter 'organisation' is not null or undefined - assertParamExists('imageGeneration', 'organisation', organisation) - // verify required parameter 'imageGenerationRequest' is not null or undefined - assertParamExists('imageGeneration', 'imageGenerationRequest', imageGenerationRequest) - const localVarPath = `/api/v3/organizations/{organisation}/ai/image-generation` - .replace(`{${"organisation"}}`, encodeURIComponent(String(organisation))); + assertParamExists('getAISession', 'organisation', organisation) + // verify required parameter 'sessionId' is not null or undefined + assertParamExists('getAISession', 'sessionId', sessionId) + const localVarPath = `/api/v3/organizations/{organisation}/ai/sessions/{sessionId}` + .replace(`{${"organisation"}}`, encodeURIComponent(String(organisation))) + .replace(`{${"sessionId"}}`, encodeURIComponent(String(sessionId))); // use dummy base URL string because the URL constructor only accepts absolute URLs. const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); let baseOptions; @@ -11917,7 +14710,7 @@ export const AIInferenceApiAxiosParamCreator = function (configuration?: Configu baseOptions = configuration.baseOptions; } - const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options}; + const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options}; const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; @@ -11927,225 +14720,32 @@ export const AIInferenceApiAxiosParamCreator = function (configuration?: Configu - localVarHeaderParameter['Content-Type'] = 'application/json'; - setSearchParams(localVarUrlObj, localVarQueryParameter); let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; - localVarRequestOptions.data = serializeDataIfNeeded(imageGenerationRequest, localVarRequestOptions, configuration) return { url: toPathString(localVarUrlObj), options: localVarRequestOptions, }; }, - } -}; - -/** - * AIInferenceApi - functional programming interface - * @export - */ -export const AIInferenceApiFp = function(configuration?: Configuration) { - const localVarAxiosParamCreator = AIInferenceApiAxiosParamCreator(configuration) - return { - /** - * Sends requests to the AI API Gateway endpoint which buffers responses. Supports text, images, videos, and documents via base64 encoding. * * **Multimodal Support:** * - **Text**: Simple string content * - **Images**: Base64-encoded PNG, JPEG, GIF, WebP (up to 25MB) * - **Videos**: Base64-encoded MP4, MOV, WebM, etc. (up to 25MB) * - **Documents**: Base64-encoded PDF, DOCX, CSV, etc. (up to 25MB) * * **Supported Models:** * - Amazon Nova Lite, Micro, Pro (all support multimodal) * - Claude models (text only) * * **Usage Tips:** * - Use base64 encoding for images/videos < 5-10MB * - Place media before text prompts for best results * - Label multiple media files (e.g., \'Image 1:\', \'Image 2:\') * - Maximum 25MB total payload size * * **Response Patterns:** * - **Text-only**: Returns simple text response when no tools requested * - **Single tool**: Returns `toolUse` object when AI requests one tool * - **Multiple tools**: Returns `toolUse` array when AI requests multiple tools * - **Auto-execute sync**: Automatically executes tool and returns final text response * - **Auto-execute async**: Returns toolUse with `executionId` and `status` for polling - * @summary Chat inference via API Gateway (buffered responses) with multimodal support - * @param {string} organisation The organisation ID - * @param {ChatInferenceRequest} chatInferenceRequest Chat request with optional multimodal content blocks - * @param {*} [options] Override http request option. - * @throws {RequiredError} - */ - async chatInference(organisation: string, chatInferenceRequest: ChatInferenceRequest, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { - const localVarAxiosArgs = await localVarAxiosParamCreator.chatInference(organisation, chatInferenceRequest, options); - const localVarOperationServerIndex = configuration?.serverIndex ?? 0; - const localVarOperationServerBasePath = operationServerMap['AIInferenceApi.chatInference']?.[localVarOperationServerIndex]?.url; - return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath); - }, - /** - * Streams responses from the AI streaming subdomain using Server-Sent Events (SSE). Tokens are streamed in real-time as they are generated. * * **Multimodal Support:** * - **Text**: Simple string content * - **Images**: Base64-encoded PNG, JPEG, GIF, WebP (up to 25MB) * - **Videos**: Base64-encoded MP4, MOV, WebM, etc. (up to 25MB) * - **Documents**: Base64-encoded PDF, DOCX, CSV, etc. (up to 25MB) * * **Supported Models:** * - Amazon Nova Lite, Micro, Pro (all support multimodal) * - Claude models (text only) * * **Usage Tips:** * - Use base64 encoding for images/videos < 5-10MB * - Place media before text prompts for best results * - Label multiple media files (e.g., \'Image 1:\', \'Image 2:\') * - Maximum 25MB total payload size * - Streaming works with all content types (text, image, video, document) - * @summary Chat inference via streaming endpoint (true HTTP streaming) with multimodal support - * @param {string} organisation The organisation ID - * @param {ChatInferenceStreamRequest} chatInferenceStreamRequest Chat request with optional multimodal content blocks - * @param {*} [options] Override http request option. - * @throws {RequiredError} - */ - async chatInferenceStream(organisation: string, chatInferenceStreamRequest: ChatInferenceStreamRequest, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { - const localVarAxiosArgs = await localVarAxiosParamCreator.chatInferenceStream(organisation, chatInferenceStreamRequest, options); - const localVarOperationServerIndex = configuration?.serverIndex ?? 0; - const localVarOperationServerBasePath = operationServerMap['AIInferenceApi.chatInferenceStream']?.[localVarOperationServerIndex]?.url; - return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath); - }, - /** - * Generates vector embeddings for text content using embedding models. Used for semantic search, document similarity, and RAG applications. * * **Features:** * - Single text or batch processing (up to 100 texts) * - Configurable dimensions (256, 512, 1024, 8192 for Titan v2) * - Optional normalization to unit length * - Usage tracking for billing * * **Use Cases:** * - Semantic search across documents * - Similarity matching for content recommendations * - RAG (Retrieval-Augmented Generation) pipelines * - Clustering and classification * * **Available Embedding Models:** * - amazon.titan-embed-text-v2:0 (default, supports 256-8192 dimensions) * - amazon.titan-embed-text-v1:0 (1536 dimensions fixed) - * @summary Generate text embeddings for semantic search and RAG applications - * @param {string} organisation The organisation ID - * @param {EmbeddingsRequest} embeddingsRequest Embedding request with single or multiple texts - * @param {*} [options] Override http request option. - * @throws {RequiredError} - */ - async embeddings(organisation: string, embeddingsRequest: EmbeddingsRequest, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { - const localVarAxiosArgs = await localVarAxiosParamCreator.embeddings(organisation, embeddingsRequest, options); - const localVarOperationServerIndex = configuration?.serverIndex ?? 0; - const localVarOperationServerBasePath = operationServerMap['AIInferenceApi.embeddings']?.[localVarOperationServerIndex]?.url; - return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath); - }, - /** - * Generates images using Amazon Nova Canvas image generation model. * * **Region Restriction:** Nova Canvas is ONLY available in: * - `us-east-1` (US East, N. Virginia) * - `ap-northeast-1` (Asia Pacific, Tokyo) * - `eu-west-1` (Europe, Ireland) * ❌ NOT available in `ap-southeast-2` (Sydney) * * **Supported Task Types:** * - **TEXT_IMAGE**: Basic text-to-image generation * - **TEXT_IMAGE with Conditioning**: Layout-guided generation using edge detection or segmentation * - **COLOR_GUIDED_GENERATION**: Generate images with specific color palettes * - **IMAGE_VARIATION**: Create variations of existing images * - **INPAINTING**: Fill masked areas in images * - **OUTPAINTING**: Extend images beyond their borders * - **BACKGROUND_REMOVAL**: Remove backgrounds from images * - **VIRTUAL_TRY_ON**: Try on garments/objects on people * * **Quality Options:** * - **standard**: Faster generation, lower cost * - **premium**: Higher quality, slower generation * * **Timeout:** Image generation can take up to 5 minutes - * @summary Generate images with Amazon Nova Canvas - * @param {string} organisation The organisation ID - * @param {ImageGenerationRequest} imageGenerationRequest Image generation request - * @param {*} [options] Override http request option. - * @throws {RequiredError} - */ - async imageGeneration(organisation: string, imageGenerationRequest: ImageGenerationRequest, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { - const localVarAxiosArgs = await localVarAxiosParamCreator.imageGeneration(organisation, imageGenerationRequest, options); - const localVarOperationServerIndex = configuration?.serverIndex ?? 0; - const localVarOperationServerBasePath = operationServerMap['AIInferenceApi.imageGeneration']?.[localVarOperationServerIndex]?.url; - return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath); - }, - } -}; - -/** - * AIInferenceApi - factory interface - * @export - */ -export const AIInferenceApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) { - const localVarFp = AIInferenceApiFp(configuration) - return { - /** - * Sends requests to the AI API Gateway endpoint which buffers responses. Supports text, images, videos, and documents via base64 encoding. * * **Multimodal Support:** * - **Text**: Simple string content * - **Images**: Base64-encoded PNG, JPEG, GIF, WebP (up to 25MB) * - **Videos**: Base64-encoded MP4, MOV, WebM, etc. (up to 25MB) * - **Documents**: Base64-encoded PDF, DOCX, CSV, etc. (up to 25MB) * * **Supported Models:** * - Amazon Nova Lite, Micro, Pro (all support multimodal) * - Claude models (text only) * * **Usage Tips:** * - Use base64 encoding for images/videos < 5-10MB * - Place media before text prompts for best results * - Label multiple media files (e.g., \'Image 1:\', \'Image 2:\') * - Maximum 25MB total payload size * * **Response Patterns:** * - **Text-only**: Returns simple text response when no tools requested * - **Single tool**: Returns `toolUse` object when AI requests one tool * - **Multiple tools**: Returns `toolUse` array when AI requests multiple tools * - **Auto-execute sync**: Automatically executes tool and returns final text response * - **Auto-execute async**: Returns toolUse with `executionId` and `status` for polling - * @summary Chat inference via API Gateway (buffered responses) with multimodal support - * @param {string} organisation The organisation ID - * @param {ChatInferenceRequest} chatInferenceRequest Chat request with optional multimodal content blocks - * @param {*} [options] Override http request option. - * @throws {RequiredError} - */ - chatInference(organisation: string, chatInferenceRequest: ChatInferenceRequest, options?: RawAxiosRequestConfig): AxiosPromise { - return localVarFp.chatInference(organisation, chatInferenceRequest, options).then((request) => request(axios, basePath)); - }, - /** - * Streams responses from the AI streaming subdomain using Server-Sent Events (SSE). Tokens are streamed in real-time as they are generated. * * **Multimodal Support:** * - **Text**: Simple string content * - **Images**: Base64-encoded PNG, JPEG, GIF, WebP (up to 25MB) * - **Videos**: Base64-encoded MP4, MOV, WebM, etc. (up to 25MB) * - **Documents**: Base64-encoded PDF, DOCX, CSV, etc. (up to 25MB) * * **Supported Models:** * - Amazon Nova Lite, Micro, Pro (all support multimodal) * - Claude models (text only) * * **Usage Tips:** * - Use base64 encoding for images/videos < 5-10MB * - Place media before text prompts for best results * - Label multiple media files (e.g., \'Image 1:\', \'Image 2:\') * - Maximum 25MB total payload size * - Streaming works with all content types (text, image, video, document) - * @summary Chat inference via streaming endpoint (true HTTP streaming) with multimodal support - * @param {string} organisation The organisation ID - * @param {ChatInferenceStreamRequest} chatInferenceStreamRequest Chat request with optional multimodal content blocks - * @param {*} [options] Override http request option. - * @throws {RequiredError} - */ - chatInferenceStream(organisation: string, chatInferenceStreamRequest: ChatInferenceStreamRequest, options?: RawAxiosRequestConfig): AxiosPromise { - return localVarFp.chatInferenceStream(organisation, chatInferenceStreamRequest, options).then((request) => request(axios, basePath)); - }, - /** - * Generates vector embeddings for text content using embedding models. Used for semantic search, document similarity, and RAG applications. * * **Features:** * - Single text or batch processing (up to 100 texts) * - Configurable dimensions (256, 512, 1024, 8192 for Titan v2) * - Optional normalization to unit length * - Usage tracking for billing * * **Use Cases:** * - Semantic search across documents * - Similarity matching for content recommendations * - RAG (Retrieval-Augmented Generation) pipelines * - Clustering and classification * * **Available Embedding Models:** * - amazon.titan-embed-text-v2:0 (default, supports 256-8192 dimensions) * - amazon.titan-embed-text-v1:0 (1536 dimensions fixed) - * @summary Generate text embeddings for semantic search and RAG applications - * @param {string} organisation The organisation ID - * @param {EmbeddingsRequest} embeddingsRequest Embedding request with single or multiple texts - * @param {*} [options] Override http request option. - * @throws {RequiredError} - */ - embeddings(organisation: string, embeddingsRequest: EmbeddingsRequest, options?: RawAxiosRequestConfig): AxiosPromise { - return localVarFp.embeddings(organisation, embeddingsRequest, options).then((request) => request(axios, basePath)); - }, - /** - * Generates images using Amazon Nova Canvas image generation model. * * **Region Restriction:** Nova Canvas is ONLY available in: * - `us-east-1` (US East, N. Virginia) * - `ap-northeast-1` (Asia Pacific, Tokyo) * - `eu-west-1` (Europe, Ireland) * ❌ NOT available in `ap-southeast-2` (Sydney) * * **Supported Task Types:** * - **TEXT_IMAGE**: Basic text-to-image generation * - **TEXT_IMAGE with Conditioning**: Layout-guided generation using edge detection or segmentation * - **COLOR_GUIDED_GENERATION**: Generate images with specific color palettes * - **IMAGE_VARIATION**: Create variations of existing images * - **INPAINTING**: Fill masked areas in images * - **OUTPAINTING**: Extend images beyond their borders * - **BACKGROUND_REMOVAL**: Remove backgrounds from images * - **VIRTUAL_TRY_ON**: Try on garments/objects on people * * **Quality Options:** * - **standard**: Faster generation, lower cost * - **premium**: Higher quality, slower generation * * **Timeout:** Image generation can take up to 5 minutes - * @summary Generate images with Amazon Nova Canvas - * @param {string} organisation The organisation ID - * @param {ImageGenerationRequest} imageGenerationRequest Image generation request - * @param {*} [options] Override http request option. - * @throws {RequiredError} - */ - imageGeneration(organisation: string, imageGenerationRequest: ImageGenerationRequest, options?: RawAxiosRequestConfig): AxiosPromise { - return localVarFp.imageGeneration(organisation, imageGenerationRequest, options).then((request) => request(axios, basePath)); - }, - }; -}; - -/** - * AIInferenceApi - object-oriented interface - * @export - * @class AIInferenceApi - * @extends {BaseAPI} - */ -export class AIInferenceApi extends BaseAPI { - /** - * Sends requests to the AI API Gateway endpoint which buffers responses. Supports text, images, videos, and documents via base64 encoding. * * **Multimodal Support:** * - **Text**: Simple string content * - **Images**: Base64-encoded PNG, JPEG, GIF, WebP (up to 25MB) * - **Videos**: Base64-encoded MP4, MOV, WebM, etc. (up to 25MB) * - **Documents**: Base64-encoded PDF, DOCX, CSV, etc. (up to 25MB) * * **Supported Models:** * - Amazon Nova Lite, Micro, Pro (all support multimodal) * - Claude models (text only) * * **Usage Tips:** * - Use base64 encoding for images/videos < 5-10MB * - Place media before text prompts for best results * - Label multiple media files (e.g., \'Image 1:\', \'Image 2:\') * - Maximum 25MB total payload size * * **Response Patterns:** * - **Text-only**: Returns simple text response when no tools requested * - **Single tool**: Returns `toolUse` object when AI requests one tool * - **Multiple tools**: Returns `toolUse` array when AI requests multiple tools * - **Auto-execute sync**: Automatically executes tool and returns final text response * - **Auto-execute async**: Returns toolUse with `executionId` and `status` for polling - * @summary Chat inference via API Gateway (buffered responses) with multimodal support - * @param {string} organisation The organisation ID - * @param {ChatInferenceRequest} chatInferenceRequest Chat request with optional multimodal content blocks - * @param {*} [options] Override http request option. - * @throws {RequiredError} - * @memberof AIInferenceApi - */ - public chatInference(organisation: string, chatInferenceRequest: ChatInferenceRequest, options?: RawAxiosRequestConfig) { - return AIInferenceApiFp(this.configuration).chatInference(organisation, chatInferenceRequest, options).then((request) => request(this.axios, this.basePath)); - } - - /** - * Streams responses from the AI streaming subdomain using Server-Sent Events (SSE). Tokens are streamed in real-time as they are generated. * * **Multimodal Support:** * - **Text**: Simple string content * - **Images**: Base64-encoded PNG, JPEG, GIF, WebP (up to 25MB) * - **Videos**: Base64-encoded MP4, MOV, WebM, etc. (up to 25MB) * - **Documents**: Base64-encoded PDF, DOCX, CSV, etc. (up to 25MB) * * **Supported Models:** * - Amazon Nova Lite, Micro, Pro (all support multimodal) * - Claude models (text only) * * **Usage Tips:** * - Use base64 encoding for images/videos < 5-10MB * - Place media before text prompts for best results * - Label multiple media files (e.g., \'Image 1:\', \'Image 2:\') * - Maximum 25MB total payload size * - Streaming works with all content types (text, image, video, document) - * @summary Chat inference via streaming endpoint (true HTTP streaming) with multimodal support - * @param {string} organisation The organisation ID - * @param {ChatInferenceStreamRequest} chatInferenceStreamRequest Chat request with optional multimodal content blocks - * @param {*} [options] Override http request option. - * @throws {RequiredError} - * @memberof AIInferenceApi - */ - public chatInferenceStream(organisation: string, chatInferenceStreamRequest: ChatInferenceStreamRequest, options?: RawAxiosRequestConfig) { - return AIInferenceApiFp(this.configuration).chatInferenceStream(organisation, chatInferenceStreamRequest, options).then((request) => request(this.axios, this.basePath)); - } - - /** - * Generates vector embeddings for text content using embedding models. Used for semantic search, document similarity, and RAG applications. * * **Features:** * - Single text or batch processing (up to 100 texts) * - Configurable dimensions (256, 512, 1024, 8192 for Titan v2) * - Optional normalization to unit length * - Usage tracking for billing * * **Use Cases:** * - Semantic search across documents * - Similarity matching for content recommendations * - RAG (Retrieval-Augmented Generation) pipelines * - Clustering and classification * * **Available Embedding Models:** * - amazon.titan-embed-text-v2:0 (default, supports 256-8192 dimensions) * - amazon.titan-embed-text-v1:0 (1536 dimensions fixed) - * @summary Generate text embeddings for semantic search and RAG applications - * @param {string} organisation The organisation ID - * @param {EmbeddingsRequest} embeddingsRequest Embedding request with single or multiple texts - * @param {*} [options] Override http request option. - * @throws {RequiredError} - * @memberof AIInferenceApi - */ - public embeddings(organisation: string, embeddingsRequest: EmbeddingsRequest, options?: RawAxiosRequestConfig) { - return AIInferenceApiFp(this.configuration).embeddings(organisation, embeddingsRequest, options).then((request) => request(this.axios, this.basePath)); - } - - /** - * Generates images using Amazon Nova Canvas image generation model. * * **Region Restriction:** Nova Canvas is ONLY available in: * - `us-east-1` (US East, N. Virginia) * - `ap-northeast-1` (Asia Pacific, Tokyo) * - `eu-west-1` (Europe, Ireland) * ❌ NOT available in `ap-southeast-2` (Sydney) * * **Supported Task Types:** * - **TEXT_IMAGE**: Basic text-to-image generation * - **TEXT_IMAGE with Conditioning**: Layout-guided generation using edge detection or segmentation * - **COLOR_GUIDED_GENERATION**: Generate images with specific color palettes * - **IMAGE_VARIATION**: Create variations of existing images * - **INPAINTING**: Fill masked areas in images * - **OUTPAINTING**: Extend images beyond their borders * - **BACKGROUND_REMOVAL**: Remove backgrounds from images * - **VIRTUAL_TRY_ON**: Try on garments/objects on people * * **Quality Options:** * - **standard**: Faster generation, lower cost * - **premium**: Higher quality, slower generation * * **Timeout:** Image generation can take up to 5 minutes - * @summary Generate images with Amazon Nova Canvas - * @param {string} organisation The organisation ID - * @param {ImageGenerationRequest} imageGenerationRequest Image generation request - * @param {*} [options] Override http request option. - * @throws {RequiredError} - * @memberof AIInferenceApi - */ - public imageGeneration(organisation: string, imageGenerationRequest: ImageGenerationRequest, options?: RawAxiosRequestConfig) { - return AIInferenceApiFp(this.configuration).imageGeneration(organisation, imageGenerationRequest, options).then((request) => request(this.axios, this.basePath)); - } -} - - - -/** - * AIModelsApi - axios parameter creator - * @export - */ -export const AIModelsApiAxiosParamCreator = function (configuration?: Configuration) { - return { /** - * Retrieves detailed information about a specific Bedrock model from the catalog. * * **Features:** * - Complete pricing breakdown (input/output per million tokens) * - Context window and output token limits * - Supported features (chat, vision, streaming, embeddings) * - Model availability and deprecation status * - Release date for version tracking * * **Example Model IDs:** * - `amazon.nova-lite-v1:0` - Default multimodal model * - `anthropic.claude-3-5-sonnet-20241022-v2:0` - Latest Claude * - `amazon.titan-embed-text-v2:0` - Latest embeddings - * @summary Get AI Model Details + * Lists active sessions for an organization with flexible filtering options. * * **Query Combinations:** * 1. By Organization (default): Returns all sessions in the organization * 2. By Organization + Group: `?sessionGroup=drupal-prod` - Sessions in a specific group * 3. By User: `?userId=user-123` - All sessions for a user * 4. By User + Group: `?userId=user-123&sessionGroup=drupal-prod` - User\'s sessions in a specific group * * **Use Cases:** * - List user\'s conversations in a specific app/environment * - Admin view of all sessions in a customer/tenant group * - User profile showing all AI conversations across apps + * @summary List chat sessions with multi-tenant filtering * @param {string} organisation The organisation ID - * @param {string} modelId The model identifier (e.g., amazon.nova-lite-v1:0) + * @param {string} [userId] Filter sessions by user ID + * @param {string} [sessionGroup] Filter by session group. Returns only sessions matching the specified group. + * @param {number} [limit] Maximum number of sessions to return (default 50, max 100) + * @param {number} [offset] Offset for pagination + * @param {string} [model] Filter by model ID * @param {*} [options] Override http request option. * @throws {RequiredError} */ - getAIModel: async (organisation: string, modelId: string, options: RawAxiosRequestConfig = {}): Promise => { + listAISessions: async (organisation: string, userId?: string, sessionGroup?: string, limit?: number, offset?: number, model?: string, options: RawAxiosRequestConfig = {}): Promise => { // verify required parameter 'organisation' is not null or undefined - assertParamExists('getAIModel', 'organisation', organisation) - // verify required parameter 'modelId' is not null or undefined - assertParamExists('getAIModel', 'modelId', modelId) - const localVarPath = `/api/v3/organizations/{organisation}/ai/models/{modelId}` - .replace(`{${"organisation"}}`, encodeURIComponent(String(organisation))) - .replace(`{${"modelId"}}`, encodeURIComponent(String(modelId))); + assertParamExists('listAISessions', 'organisation', organisation) + const localVarPath = `/api/v3/organizations/{organisation}/ai/sessions` + .replace(`{${"organisation"}}`, encodeURIComponent(String(organisation))); // use dummy base URL string because the URL constructor only accepts absolute URLs. const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); let baseOptions; @@ -12161,6 +14761,26 @@ export const AIModelsApiAxiosParamCreator = function (configuration?: Configurat // http bearer authentication required await setBearerAuthToObject(localVarHeaderParameter, configuration) + if (userId !== undefined) { + localVarQueryParameter['userId'] = userId; + } + + if (sessionGroup !== undefined) { + localVarQueryParameter['sessionGroup'] = sessionGroup; + } + + if (limit !== undefined) { + localVarQueryParameter['limit'] = limit; + } + + if (offset !== undefined) { + localVarQueryParameter['offset'] = offset; + } + + if (model !== undefined) { + localVarQueryParameter['model'] = model; + } + setSearchParams(localVarUrlObj, localVarQueryParameter); @@ -12173,18 +14793,24 @@ export const AIModelsApiAxiosParamCreator = function (configuration?: Configurat }; }, /** - * - * @summary List available AI models for an organization + * Updates session with new conversation messages and tracks token usage. Appends new messages to conversation history and updates session stats. * * **Typical Flow:** * 1. Get session to retrieve conversation history * 2. Call AI inference with full message history * 3. Update session with new user + assistant messages + * @summary Update Session * @param {string} organisation The organisation ID - * @param {ListAIModelsFeatureEnum} [feature] Filter models by supported feature + * @param {string} sessionId The session ID + * @param {UpdateAISessionRequest} updateAISessionRequest * @param {*} [options] Override http request option. * @throws {RequiredError} */ - listAIModels: async (organisation: string, feature?: ListAIModelsFeatureEnum, options: RawAxiosRequestConfig = {}): Promise => { + updateAISession: async (organisation: string, sessionId: string, updateAISessionRequest: UpdateAISessionRequest, options: RawAxiosRequestConfig = {}): Promise => { // verify required parameter 'organisation' is not null or undefined - assertParamExists('listAIModels', 'organisation', organisation) - const localVarPath = `/api/v3/organizations/{organisation}/ai/models` - .replace(`{${"organisation"}}`, encodeURIComponent(String(organisation))); + assertParamExists('updateAISession', 'organisation', organisation) + // verify required parameter 'sessionId' is not null or undefined + assertParamExists('updateAISession', 'sessionId', sessionId) + // verify required parameter 'updateAISessionRequest' is not null or undefined + assertParamExists('updateAISession', 'updateAISessionRequest', updateAISessionRequest) + const localVarPath = `/api/v3/organizations/{organisation}/ai/sessions/{sessionId}` + .replace(`{${"organisation"}}`, encodeURIComponent(String(organisation))) + .replace(`{${"sessionId"}}`, encodeURIComponent(String(sessionId))); // use dummy base URL string because the URL constructor only accepts absolute URLs. const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); let baseOptions; @@ -12192,7 +14818,7 @@ export const AIModelsApiAxiosParamCreator = function (configuration?: Configurat baseOptions = configuration.baseOptions; } - const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options}; + const localVarRequestOptions = { method: 'PUT', ...baseOptions, ...options}; const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; @@ -12200,15 +14826,14 @@ export const AIModelsApiAxiosParamCreator = function (configuration?: Configurat // http bearer authentication required await setBearerAuthToObject(localVarHeaderParameter, configuration) - if (feature !== undefined) { - localVarQueryParameter['feature'] = feature; - } - + localVarHeaderParameter['Content-Type'] = 'application/json'; + setSearchParams(localVarUrlObj, localVarQueryParameter); let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + localVarRequestOptions.data = serializeDataIfNeeded(updateAISessionRequest, localVarRequestOptions, configuration) return { url: toPathString(localVarUrlObj), @@ -12219,262 +14844,301 @@ export const AIModelsApiAxiosParamCreator = function (configuration?: Configurat }; /** - * AIModelsApi - functional programming interface + * AISessionsApi - functional programming interface * @export */ -export const AIModelsApiFp = function(configuration?: Configuration) { - const localVarAxiosParamCreator = AIModelsApiAxiosParamCreator(configuration) +export const AISessionsApiFp = function(configuration?: Configuration) { + const localVarAxiosParamCreator = AISessionsApiAxiosParamCreator(configuration) return { /** - * Retrieves detailed information about a specific Bedrock model from the catalog. * * **Features:** * - Complete pricing breakdown (input/output per million tokens) * - Context window and output token limits * - Supported features (chat, vision, streaming, embeddings) * - Model availability and deprecation status * - Release date for version tracking * * **Example Model IDs:** * - `amazon.nova-lite-v1:0` - Default multimodal model * - `anthropic.claude-3-5-sonnet-20241022-v2:0` - Latest Claude * - `amazon.titan-embed-text-v2:0` - Latest embeddings - * @summary Get AI Model Details + * Creates an AI session with automatic expiration (60 min default, 24h max). Sessions are isolated by organization. Use userId to identify the user creating the session. Use sessionGroup for logical grouping. Use metadata for additional custom data. Filter sessions by userId or sessionGroup when listing. + * @summary Create a new chat session with multi-tenant isolation * @param {string} organisation The organisation ID - * @param {string} modelId The model identifier (e.g., amazon.nova-lite-v1:0) + * @param {CreateAISessionRequest} createAISessionRequest * @param {*} [options] Override http request option. * @throws {RequiredError} */ - async getAIModel(organisation: string, modelId: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { - const localVarAxiosArgs = await localVarAxiosParamCreator.getAIModel(organisation, modelId, options); + async createAISession(organisation: string, createAISessionRequest: CreateAISessionRequest, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.createAISession(organisation, createAISessionRequest, options); const localVarOperationServerIndex = configuration?.serverIndex ?? 0; - const localVarOperationServerBasePath = operationServerMap['AIModelsApi.getAIModel']?.[localVarOperationServerIndex]?.url; + const localVarOperationServerBasePath = operationServerMap['AISessionsApi.createAISession']?.[localVarOperationServerIndex]?.url; return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath); }, /** * - * @summary List available AI models for an organization + * @summary Delete a chat session * @param {string} organisation The organisation ID - * @param {ListAIModelsFeatureEnum} [feature] Filter models by supported feature + * @param {string} sessionId The session ID * @param {*} [options] Override http request option. * @throws {RequiredError} */ - async listAIModels(organisation: string, feature?: ListAIModelsFeatureEnum, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { - const localVarAxiosArgs = await localVarAxiosParamCreator.listAIModels(organisation, feature, options); + async deleteAISession(organisation: string, sessionId: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.deleteAISession(organisation, sessionId, options); const localVarOperationServerIndex = configuration?.serverIndex ?? 0; - const localVarOperationServerBasePath = operationServerMap['AIModelsApi.listAIModels']?.[localVarOperationServerIndex]?.url; + const localVarOperationServerBasePath = operationServerMap['AISessionsApi.deleteAISession']?.[localVarOperationServerIndex]?.url; return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath); }, - } -}; - -/** - * AIModelsApi - factory interface - * @export - */ -export const AIModelsApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) { - const localVarFp = AIModelsApiFp(configuration) - return { /** - * Retrieves detailed information about a specific Bedrock model from the catalog. * * **Features:** * - Complete pricing breakdown (input/output per million tokens) * - Context window and output token limits * - Supported features (chat, vision, streaming, embeddings) * - Model availability and deprecation status * - Release date for version tracking * * **Example Model IDs:** * - `amazon.nova-lite-v1:0` - Default multimodal model * - `anthropic.claude-3-5-sonnet-20241022-v2:0` - Latest Claude * - `amazon.titan-embed-text-v2:0` - Latest embeddings - * @summary Get AI Model Details + * Extends the expiration time of an active session. Useful for keeping long-running conversations alive. + * @summary Extend Session Expiration * @param {string} organisation The organisation ID - * @param {string} modelId The model identifier (e.g., amazon.nova-lite-v1:0) + * @param {string} sessionId The session ID + * @param {ExtendAISessionRequest} [extendAISessionRequest] * @param {*} [options] Override http request option. * @throws {RequiredError} */ - getAIModel(organisation: string, modelId: string, options?: RawAxiosRequestConfig): AxiosPromise { - return localVarFp.getAIModel(organisation, modelId, options).then((request) => request(axios, basePath)); + async extendAISession(organisation: string, sessionId: string, extendAISessionRequest?: ExtendAISessionRequest, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.extendAISession(organisation, sessionId, extendAISessionRequest, options); + const localVarOperationServerIndex = configuration?.serverIndex ?? 0; + const localVarOperationServerBasePath = operationServerMap['AISessionsApi.extendAISession']?.[localVarOperationServerIndex]?.url; + return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath); }, /** * - * @summary List available AI models for an organization + * @summary Get a specific chat session * @param {string} organisation The organisation ID - * @param {ListAIModelsFeatureEnum} [feature] Filter models by supported feature + * @param {string} sessionId The session ID * @param {*} [options] Override http request option. * @throws {RequiredError} */ - listAIModels(organisation: string, feature?: ListAIModelsFeatureEnum, options?: RawAxiosRequestConfig): AxiosPromise { - return localVarFp.listAIModels(organisation, feature, options).then((request) => request(axios, basePath)); + async getAISession(organisation: string, sessionId: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.getAISession(organisation, sessionId, options); + const localVarOperationServerIndex = configuration?.serverIndex ?? 0; + const localVarOperationServerBasePath = operationServerMap['AISessionsApi.getAISession']?.[localVarOperationServerIndex]?.url; + return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath); }, - }; -}; - -/** - * AIModelsApi - object-oriented interface - * @export - * @class AIModelsApi - * @extends {BaseAPI} - */ -export class AIModelsApi extends BaseAPI { - /** - * Retrieves detailed information about a specific Bedrock model from the catalog. * * **Features:** * - Complete pricing breakdown (input/output per million tokens) * - Context window and output token limits * - Supported features (chat, vision, streaming, embeddings) * - Model availability and deprecation status * - Release date for version tracking * * **Example Model IDs:** * - `amazon.nova-lite-v1:0` - Default multimodal model * - `anthropic.claude-3-5-sonnet-20241022-v2:0` - Latest Claude * - `amazon.titan-embed-text-v2:0` - Latest embeddings - * @summary Get AI Model Details - * @param {string} organisation The organisation ID - * @param {string} modelId The model identifier (e.g., amazon.nova-lite-v1:0) - * @param {*} [options] Override http request option. - * @throws {RequiredError} - * @memberof AIModelsApi - */ - public getAIModel(organisation: string, modelId: string, options?: RawAxiosRequestConfig) { - return AIModelsApiFp(this.configuration).getAIModel(organisation, modelId, options).then((request) => request(this.axios, this.basePath)); - } - - /** - * - * @summary List available AI models for an organization - * @param {string} organisation The organisation ID - * @param {ListAIModelsFeatureEnum} [feature] Filter models by supported feature - * @param {*} [options] Override http request option. - * @throws {RequiredError} - * @memberof AIModelsApi - */ - public listAIModels(organisation: string, feature?: ListAIModelsFeatureEnum, options?: RawAxiosRequestConfig) { - return AIModelsApiFp(this.configuration).listAIModels(organisation, feature, options).then((request) => request(this.axios, this.basePath)); - } -} - -/** - * @export - */ -export const ListAIModelsFeatureEnum = { - Chat: 'chat', - Embeddings: 'embeddings', - Vision: 'vision', - Streaming: 'streaming', - All: 'all' -} as const; -export type ListAIModelsFeatureEnum = typeof ListAIModelsFeatureEnum[keyof typeof ListAIModelsFeatureEnum]; - - -/** - * AIMonitoringApi - axios parameter creator - * @export - */ -export const AIMonitoringApiAxiosParamCreator = function (configuration?: Configuration) { - return { /** - * - * @summary Get AI usage statistics + * Lists active sessions for an organization with flexible filtering options. * * **Query Combinations:** * 1. By Organization (default): Returns all sessions in the organization * 2. By Organization + Group: `?sessionGroup=drupal-prod` - Sessions in a specific group * 3. By User: `?userId=user-123` - All sessions for a user * 4. By User + Group: `?userId=user-123&sessionGroup=drupal-prod` - User\'s sessions in a specific group * * **Use Cases:** * - List user\'s conversations in a specific app/environment * - Admin view of all sessions in a customer/tenant group * - User profile showing all AI conversations across apps + * @summary List chat sessions with multi-tenant filtering * @param {string} organisation The organisation ID - * @param {string} [month] Month to retrieve statistics for (YYYY-MM format) + * @param {string} [userId] Filter sessions by user ID + * @param {string} [sessionGroup] Filter by session group. Returns only sessions matching the specified group. + * @param {number} [limit] Maximum number of sessions to return (default 50, max 100) + * @param {number} [offset] Offset for pagination + * @param {string} [model] Filter by model ID * @param {*} [options] Override http request option. * @throws {RequiredError} */ - getAIUsageStats: async (organisation: string, month?: string, options: RawAxiosRequestConfig = {}): Promise => { - // verify required parameter 'organisation' is not null or undefined - assertParamExists('getAIUsageStats', 'organisation', organisation) - const localVarPath = `/api/v3/organizations/{organisation}/ai/usage` - .replace(`{${"organisation"}}`, encodeURIComponent(String(organisation))); - // use dummy base URL string because the URL constructor only accepts absolute URLs. - const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); - let baseOptions; - if (configuration) { - baseOptions = configuration.baseOptions; - } - - const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options}; - const localVarHeaderParameter = {} as any; - const localVarQueryParameter = {} as any; - - // authentication BearerAuth required - // http bearer authentication required - await setBearerAuthToObject(localVarHeaderParameter, configuration) - - if (month !== undefined) { - localVarQueryParameter['month'] = month; - } - - - - setSearchParams(localVarUrlObj, localVarQueryParameter); - let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; - localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; - - return { - url: toPathString(localVarUrlObj), - options: localVarRequestOptions, - }; + async listAISessions(organisation: string, userId?: string, sessionGroup?: string, limit?: number, offset?: number, model?: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise>> { + const localVarAxiosArgs = await localVarAxiosParamCreator.listAISessions(organisation, userId, sessionGroup, limit, offset, model, options); + const localVarOperationServerIndex = configuration?.serverIndex ?? 0; + const localVarOperationServerBasePath = operationServerMap['AISessionsApi.listAISessions']?.[localVarOperationServerIndex]?.url; + return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath); + }, + /** + * Updates session with new conversation messages and tracks token usage. Appends new messages to conversation history and updates session stats. * * **Typical Flow:** * 1. Get session to retrieve conversation history * 2. Call AI inference with full message history * 3. Update session with new user + assistant messages + * @summary Update Session + * @param {string} organisation The organisation ID + * @param {string} sessionId The session ID + * @param {UpdateAISessionRequest} updateAISessionRequest + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async updateAISession(organisation: string, sessionId: string, updateAISessionRequest: UpdateAISessionRequest, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.updateAISession(organisation, sessionId, updateAISessionRequest, options); + const localVarOperationServerIndex = configuration?.serverIndex ?? 0; + const localVarOperationServerBasePath = operationServerMap['AISessionsApi.updateAISession']?.[localVarOperationServerIndex]?.url; + return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath); }, } }; /** - * AIMonitoringApi - functional programming interface + * AISessionsApi - factory interface * @export */ -export const AIMonitoringApiFp = function(configuration?: Configuration) { - const localVarAxiosParamCreator = AIMonitoringApiAxiosParamCreator(configuration) +export const AISessionsApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) { + const localVarFp = AISessionsApiFp(configuration) return { + /** + * Creates an AI session with automatic expiration (60 min default, 24h max). Sessions are isolated by organization. Use userId to identify the user creating the session. Use sessionGroup for logical grouping. Use metadata for additional custom data. Filter sessions by userId or sessionGroup when listing. + * @summary Create a new chat session with multi-tenant isolation + * @param {string} organisation The organisation ID + * @param {CreateAISessionRequest} createAISessionRequest + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + createAISession(organisation: string, createAISessionRequest: CreateAISessionRequest, options?: RawAxiosRequestConfig): AxiosPromise { + return localVarFp.createAISession(organisation, createAISessionRequest, options).then((request) => request(axios, basePath)); + }, /** * - * @summary Get AI usage statistics + * @summary Delete a chat session * @param {string} organisation The organisation ID - * @param {string} [month] Month to retrieve statistics for (YYYY-MM format) + * @param {string} sessionId The session ID * @param {*} [options] Override http request option. * @throws {RequiredError} */ - async getAIUsageStats(organisation: string, month?: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { - const localVarAxiosArgs = await localVarAxiosParamCreator.getAIUsageStats(organisation, month, options); - const localVarOperationServerIndex = configuration?.serverIndex ?? 0; - const localVarOperationServerBasePath = operationServerMap['AIMonitoringApi.getAIUsageStats']?.[localVarOperationServerIndex]?.url; - return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath); + deleteAISession(organisation: string, sessionId: string, options?: RawAxiosRequestConfig): AxiosPromise { + return localVarFp.deleteAISession(organisation, sessionId, options).then((request) => request(axios, basePath)); + }, + /** + * Extends the expiration time of an active session. Useful for keeping long-running conversations alive. + * @summary Extend Session Expiration + * @param {string} organisation The organisation ID + * @param {string} sessionId The session ID + * @param {ExtendAISessionRequest} [extendAISessionRequest] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + extendAISession(organisation: string, sessionId: string, extendAISessionRequest?: ExtendAISessionRequest, options?: RawAxiosRequestConfig): AxiosPromise { + return localVarFp.extendAISession(organisation, sessionId, extendAISessionRequest, options).then((request) => request(axios, basePath)); }, - } -}; - -/** - * AIMonitoringApi - factory interface - * @export - */ -export const AIMonitoringApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) { - const localVarFp = AIMonitoringApiFp(configuration) - return { /** * - * @summary Get AI usage statistics + * @summary Get a specific chat session * @param {string} organisation The organisation ID - * @param {string} [month] Month to retrieve statistics for (YYYY-MM format) + * @param {string} sessionId The session ID * @param {*} [options] Override http request option. * @throws {RequiredError} */ - getAIUsageStats(organisation: string, month?: string, options?: RawAxiosRequestConfig): AxiosPromise { - return localVarFp.getAIUsageStats(organisation, month, options).then((request) => request(axios, basePath)); + getAISession(organisation: string, sessionId: string, options?: RawAxiosRequestConfig): AxiosPromise { + return localVarFp.getAISession(organisation, sessionId, options).then((request) => request(axios, basePath)); + }, + /** + * Lists active sessions for an organization with flexible filtering options. * * **Query Combinations:** * 1. By Organization (default): Returns all sessions in the organization * 2. By Organization + Group: `?sessionGroup=drupal-prod` - Sessions in a specific group * 3. By User: `?userId=user-123` - All sessions for a user * 4. By User + Group: `?userId=user-123&sessionGroup=drupal-prod` - User\'s sessions in a specific group * * **Use Cases:** * - List user\'s conversations in a specific app/environment * - Admin view of all sessions in a customer/tenant group * - User profile showing all AI conversations across apps + * @summary List chat sessions with multi-tenant filtering + * @param {string} organisation The organisation ID + * @param {string} [userId] Filter sessions by user ID + * @param {string} [sessionGroup] Filter by session group. Returns only sessions matching the specified group. + * @param {number} [limit] Maximum number of sessions to return (default 50, max 100) + * @param {number} [offset] Offset for pagination + * @param {string} [model] Filter by model ID + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + listAISessions(organisation: string, userId?: string, sessionGroup?: string, limit?: number, offset?: number, model?: string, options?: RawAxiosRequestConfig): AxiosPromise> { + return localVarFp.listAISessions(organisation, userId, sessionGroup, limit, offset, model, options).then((request) => request(axios, basePath)); + }, + /** + * Updates session with new conversation messages and tracks token usage. Appends new messages to conversation history and updates session stats. * * **Typical Flow:** * 1. Get session to retrieve conversation history * 2. Call AI inference with full message history * 3. Update session with new user + assistant messages + * @summary Update Session + * @param {string} organisation The organisation ID + * @param {string} sessionId The session ID + * @param {UpdateAISessionRequest} updateAISessionRequest + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + updateAISession(organisation: string, sessionId: string, updateAISessionRequest: UpdateAISessionRequest, options?: RawAxiosRequestConfig): AxiosPromise { + return localVarFp.updateAISession(organisation, sessionId, updateAISessionRequest, options).then((request) => request(axios, basePath)); }, }; }; /** - * AIMonitoringApi - object-oriented interface + * AISessionsApi - object-oriented interface * @export - * @class AIMonitoringApi + * @class AISessionsApi * @extends {BaseAPI} */ -export class AIMonitoringApi extends BaseAPI { +export class AISessionsApi extends BaseAPI { + /** + * Creates an AI session with automatic expiration (60 min default, 24h max). Sessions are isolated by organization. Use userId to identify the user creating the session. Use sessionGroup for logical grouping. Use metadata for additional custom data. Filter sessions by userId or sessionGroup when listing. + * @summary Create a new chat session with multi-tenant isolation + * @param {string} organisation The organisation ID + * @param {CreateAISessionRequest} createAISessionRequest + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof AISessionsApi + */ + public createAISession(organisation: string, createAISessionRequest: CreateAISessionRequest, options?: RawAxiosRequestConfig) { + return AISessionsApiFp(this.configuration).createAISession(organisation, createAISessionRequest, options).then((request) => request(this.axios, this.basePath)); + } + /** * - * @summary Get AI usage statistics + * @summary Delete a chat session * @param {string} organisation The organisation ID - * @param {string} [month] Month to retrieve statistics for (YYYY-MM format) + * @param {string} sessionId The session ID * @param {*} [options] Override http request option. * @throws {RequiredError} - * @memberof AIMonitoringApi + * @memberof AISessionsApi */ - public getAIUsageStats(organisation: string, month?: string, options?: RawAxiosRequestConfig) { - return AIMonitoringApiFp(this.configuration).getAIUsageStats(organisation, month, options).then((request) => request(this.axios, this.basePath)); + public deleteAISession(organisation: string, sessionId: string, options?: RawAxiosRequestConfig) { + return AISessionsApiFp(this.configuration).deleteAISession(organisation, sessionId, options).then((request) => request(this.axios, this.basePath)); + } + + /** + * Extends the expiration time of an active session. Useful for keeping long-running conversations alive. + * @summary Extend Session Expiration + * @param {string} organisation The organisation ID + * @param {string} sessionId The session ID + * @param {ExtendAISessionRequest} [extendAISessionRequest] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof AISessionsApi + */ + public extendAISession(organisation: string, sessionId: string, extendAISessionRequest?: ExtendAISessionRequest, options?: RawAxiosRequestConfig) { + return AISessionsApiFp(this.configuration).extendAISession(organisation, sessionId, extendAISessionRequest, options).then((request) => request(this.axios, this.basePath)); + } + + /** + * + * @summary Get a specific chat session + * @param {string} organisation The organisation ID + * @param {string} sessionId The session ID + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof AISessionsApi + */ + public getAISession(organisation: string, sessionId: string, options?: RawAxiosRequestConfig) { + return AISessionsApiFp(this.configuration).getAISession(organisation, sessionId, options).then((request) => request(this.axios, this.basePath)); + } + + /** + * Lists active sessions for an organization with flexible filtering options. * * **Query Combinations:** * 1. By Organization (default): Returns all sessions in the organization * 2. By Organization + Group: `?sessionGroup=drupal-prod` - Sessions in a specific group * 3. By User: `?userId=user-123` - All sessions for a user * 4. By User + Group: `?userId=user-123&sessionGroup=drupal-prod` - User\'s sessions in a specific group * * **Use Cases:** * - List user\'s conversations in a specific app/environment * - Admin view of all sessions in a customer/tenant group * - User profile showing all AI conversations across apps + * @summary List chat sessions with multi-tenant filtering + * @param {string} organisation The organisation ID + * @param {string} [userId] Filter sessions by user ID + * @param {string} [sessionGroup] Filter by session group. Returns only sessions matching the specified group. + * @param {number} [limit] Maximum number of sessions to return (default 50, max 100) + * @param {number} [offset] Offset for pagination + * @param {string} [model] Filter by model ID + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof AISessionsApi + */ + public listAISessions(organisation: string, userId?: string, sessionGroup?: string, limit?: number, offset?: number, model?: string, options?: RawAxiosRequestConfig) { + return AISessionsApiFp(this.configuration).listAISessions(organisation, userId, sessionGroup, limit, offset, model, options).then((request) => request(this.axios, this.basePath)); + } + + /** + * Updates session with new conversation messages and tracks token usage. Appends new messages to conversation history and updates session stats. * * **Typical Flow:** * 1. Get session to retrieve conversation history * 2. Call AI inference with full message history * 3. Update session with new user + assistant messages + * @summary Update Session + * @param {string} organisation The organisation ID + * @param {string} sessionId The session ID + * @param {UpdateAISessionRequest} updateAISessionRequest + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof AISessionsApi + */ + public updateAISession(organisation: string, sessionId: string, updateAISessionRequest: UpdateAISessionRequest, options?: RawAxiosRequestConfig) { + return AISessionsApiFp(this.configuration).updateAISession(organisation, sessionId, updateAISessionRequest, options).then((request) => request(this.axios, this.basePath)); } } /** - * AISessionsApi - axios parameter creator + * AITaskManagementApi - axios parameter creator * @export */ -export const AISessionsApiAxiosParamCreator = function (configuration?: Configuration) { +export const AITaskManagementApiAxiosParamCreator = function (configuration?: Configuration) { return { /** - * Creates an AI session with automatic expiration (60 min default, 24h max). Sessions are isolated by organization. Use userId to identify the user creating the session. Use sessionGroup for logical grouping. Use metadata for additional custom data. Filter sessions by userId or sessionGroup when listing. - * @summary Create a new chat session with multi-tenant isolation + * Creates a new task for multi-agent coordination and workflow orchestration. * * **Key Features:** * - **Persistent State**: Tasks survive across conversations and sessions * - **Agent Assignment**: Pre-assign tasks to specific agents * - **Task Lists**: Group related tasks using taskListId (implicit - no need to create lists first) * - **Dependencies**: Define task dependencies for workflow orchestration * - **Metadata**: Store flexible JSON metadata for task-specific data * - **Progress Tracking**: Track progress from 0.0 to 1.0 * * **Use Cases:** * - Break down complex requests into manageable steps * - Assign work to specialized agents * - Track long-running operations * - Coordinate multi-agent workflows + * @summary Create a new task * @param {string} organisation The organisation ID - * @param {CreateAISessionRequest} createAISessionRequest + * @param {CreateTaskRequest} createTaskRequest * @param {*} [options] Override http request option. * @throws {RequiredError} */ - createAISession: async (organisation: string, createAISessionRequest: CreateAISessionRequest, options: RawAxiosRequestConfig = {}): Promise => { + createTask: async (organisation: string, createTaskRequest: CreateTaskRequest, options: RawAxiosRequestConfig = {}): Promise => { // verify required parameter 'organisation' is not null or undefined - assertParamExists('createAISession', 'organisation', organisation) - // verify required parameter 'createAISessionRequest' is not null or undefined - assertParamExists('createAISession', 'createAISessionRequest', createAISessionRequest) - const localVarPath = `/api/v3/organizations/{organisation}/ai/sessions` + assertParamExists('createTask', 'organisation', organisation) + // verify required parameter 'createTaskRequest' is not null or undefined + assertParamExists('createTask', 'createTaskRequest', createTaskRequest) + const localVarPath = `/api/v3/organizations/{organisation}/ai/tasks` .replace(`{${"organisation"}}`, encodeURIComponent(String(organisation))); // use dummy base URL string because the URL constructor only accepts absolute URLs. const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); @@ -12498,7 +15162,7 @@ export const AISessionsApiAxiosParamCreator = function (configuration?: Configur setSearchParams(localVarUrlObj, localVarQueryParameter); let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; - localVarRequestOptions.data = serializeDataIfNeeded(createAISessionRequest, localVarRequestOptions, configuration) + localVarRequestOptions.data = serializeDataIfNeeded(createTaskRequest, localVarRequestOptions, configuration) return { url: toPathString(localVarUrlObj), @@ -12506,21 +15170,22 @@ export const AISessionsApiAxiosParamCreator = function (configuration?: Configur }; }, /** - * - * @summary Delete a chat session + * Permanently deletes a task. This action cannot be undone. * * **Dependency Protection:** * By default, deletion is blocked if other tasks depend on this task (TASK_HAS_DEPENDENTS error). * This prevents breaking workflows. * * **Cascade Delete:** * Use `?cascade=true` to delete the task AND all tasks that depend on it recursively. * Useful for cleaning up entire dependency chains. * * **Examples:** * - DELETE /tasks/{id} - Deletes task if no dependents, otherwise returns 409 error * - DELETE /tasks/{id}?cascade=true - Deletes task and all dependent tasks + * @summary Delete a task * @param {string} organisation The organisation ID - * @param {string} sessionId The session ID + * @param {string} taskId The task UUID + * @param {boolean} [cascade] If true, delete task and all dependent tasks recursively * @param {*} [options] Override http request option. * @throws {RequiredError} */ - deleteAISession: async (organisation: string, sessionId: string, options: RawAxiosRequestConfig = {}): Promise => { + deleteTask: async (organisation: string, taskId: string, cascade?: boolean, options: RawAxiosRequestConfig = {}): Promise => { // verify required parameter 'organisation' is not null or undefined - assertParamExists('deleteAISession', 'organisation', organisation) - // verify required parameter 'sessionId' is not null or undefined - assertParamExists('deleteAISession', 'sessionId', sessionId) - const localVarPath = `/api/v3/organizations/{organisation}/ai/sessions/{sessionId}` + assertParamExists('deleteTask', 'organisation', organisation) + // verify required parameter 'taskId' is not null or undefined + assertParamExists('deleteTask', 'taskId', taskId) + const localVarPath = `/api/v3/organizations/{organisation}/ai/tasks/{taskId}` .replace(`{${"organisation"}}`, encodeURIComponent(String(organisation))) - .replace(`{${"sessionId"}}`, encodeURIComponent(String(sessionId))); + .replace(`{${"taskId"}}`, encodeURIComponent(String(taskId))); // use dummy base URL string because the URL constructor only accepts absolute URLs. const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); let baseOptions; @@ -12536,6 +15201,10 @@ export const AISessionsApiAxiosParamCreator = function (configuration?: Configur // http bearer authentication required await setBearerAuthToObject(localVarHeaderParameter, configuration) + if (cascade !== undefined) { + localVarQueryParameter['cascade'] = cascade; + } + setSearchParams(localVarUrlObj, localVarQueryParameter); @@ -12548,22 +15217,21 @@ export const AISessionsApiAxiosParamCreator = function (configuration?: Configur }; }, /** - * Extends the expiration time of an active session. Useful for keeping long-running conversations alive. - * @summary Extend Session Expiration + * Returns the full dependency graph for all tasks in a task list. * * **Use Cases:** * - Visualize task dependencies in a UI (DAG diagram) * - Analyze workflow structure and critical paths * - Find starting tasks (roots) and terminal tasks (leaves) * - Plan parallel execution by identifying independent task groups * * **Response Structure:** * - `taskCount`: Total number of tasks in the list * - `roots`: Task IDs with no dependencies (starting points) * - `leaves`: Task IDs with no dependents (terminal tasks) * - `graph`: Adjacency list with each task\'s dependencies and dependents + * @summary Get dependency graph for a task list * @param {string} organisation The organisation ID - * @param {string} sessionId The session ID - * @param {ExtendAISessionRequest} [extendAISessionRequest] + * @param {string} taskListId The task list ID to get the dependency graph for * @param {*} [options] Override http request option. * @throws {RequiredError} */ - extendAISession: async (organisation: string, sessionId: string, extendAISessionRequest?: ExtendAISessionRequest, options: RawAxiosRequestConfig = {}): Promise => { + getDependencyGraph: async (organisation: string, taskListId: string, options: RawAxiosRequestConfig = {}): Promise => { // verify required parameter 'organisation' is not null or undefined - assertParamExists('extendAISession', 'organisation', organisation) - // verify required parameter 'sessionId' is not null or undefined - assertParamExists('extendAISession', 'sessionId', sessionId) - const localVarPath = `/api/v3/organizations/{organisation}/ai/sessions/{sessionId}/extend` + assertParamExists('getDependencyGraph', 'organisation', organisation) + // verify required parameter 'taskListId' is not null or undefined + assertParamExists('getDependencyGraph', 'taskListId', taskListId) + const localVarPath = `/api/v3/organizations/{organisation}/ai/tasks/{taskListId}/dependency-graph` .replace(`{${"organisation"}}`, encodeURIComponent(String(organisation))) - .replace(`{${"sessionId"}}`, encodeURIComponent(String(sessionId))); + .replace(`{${"taskListId"}}`, encodeURIComponent(String(taskListId))); // use dummy base URL string because the URL constructor only accepts absolute URLs. const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); let baseOptions; @@ -12571,7 +15239,7 @@ export const AISessionsApiAxiosParamCreator = function (configuration?: Configur baseOptions = configuration.baseOptions; } - const localVarRequestOptions = { method: 'PUT', ...baseOptions, ...options}; + const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options}; const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; @@ -12581,12 +15249,9 @@ export const AISessionsApiAxiosParamCreator = function (configuration?: Configur - localVarHeaderParameter['Content-Type'] = 'application/json'; - setSearchParams(localVarUrlObj, localVarQueryParameter); let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; - localVarRequestOptions.data = serializeDataIfNeeded(extendAISessionRequest, localVarRequestOptions, configuration) return { url: toPathString(localVarUrlObj), @@ -12594,21 +15259,21 @@ export const AISessionsApiAxiosParamCreator = function (configuration?: Configur }; }, /** - * - * @summary Get a specific chat session + * Retrieves detailed information about a specific task including status, progress, dependencies, and results. + * @summary Get task details * @param {string} organisation The organisation ID - * @param {string} sessionId The session ID + * @param {string} taskId The task UUID * @param {*} [options] Override http request option. * @throws {RequiredError} */ - getAISession: async (organisation: string, sessionId: string, options: RawAxiosRequestConfig = {}): Promise => { + getTask: async (organisation: string, taskId: string, options: RawAxiosRequestConfig = {}): Promise => { // verify required parameter 'organisation' is not null or undefined - assertParamExists('getAISession', 'organisation', organisation) - // verify required parameter 'sessionId' is not null or undefined - assertParamExists('getAISession', 'sessionId', sessionId) - const localVarPath = `/api/v3/organizations/{organisation}/ai/sessions/{sessionId}` + assertParamExists('getTask', 'organisation', organisation) + // verify required parameter 'taskId' is not null or undefined + assertParamExists('getTask', 'taskId', taskId) + const localVarPath = `/api/v3/organizations/{organisation}/ai/tasks/{taskId}` .replace(`{${"organisation"}}`, encodeURIComponent(String(organisation))) - .replace(`{${"sessionId"}}`, encodeURIComponent(String(sessionId))); + .replace(`{${"taskId"}}`, encodeURIComponent(String(taskId))); // use dummy base URL string because the URL constructor only accepts absolute URLs. const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); let baseOptions; @@ -12636,21 +15301,22 @@ export const AISessionsApiAxiosParamCreator = function (configuration?: Configur }; }, /** - * Lists active sessions for an organization with flexible filtering options. * * **Query Combinations:** * 1. By Organization (default): Returns all sessions in the organization * 2. By Organization + Group: `?sessionGroup=drupal-prod` - Sessions in a specific group * 3. By User: `?userId=user-123` - All sessions for a user * 4. By User + Group: `?userId=user-123&sessionGroup=drupal-prod` - User\'s sessions in a specific group * * **Use Cases:** * - List user\'s conversations in a specific app/environment * - Admin view of all sessions in a customer/tenant group * - User profile showing all AI conversations across apps - * @summary List chat sessions with multi-tenant filtering + * Lists tasks for an organization with optional filtering. Filters can be combined for powerful queries. * * **Filter Examples:** * - All tasks in a list: ?taskListId=world-1 * - Pending tasks in a list: ?taskListId=world-1&status=pending * - Tasks assigned to an agent: ?assignedAgentId=agent-code-reviewer * - Combined: ?taskListId=world-1&status=in_progress&assignedAgentId=agent-1 * * **Reverse Dependency Lookup:** * Use `dependsOn` to find tasks that depend on a specific task (waiting for it to complete): * - ?dependsOn=task-123 - Returns task IDs only (lightweight) * - ?dependsOn=task-123&includeDetails=true - Returns full task objects * - ?dependsOn=task-123&status=pending - Pending tasks waiting for task-123 * * **Ordering:** * Tasks are returned in reverse chronological order (most recent first). + * @summary List tasks with optional filtering * @param {string} organisation The organisation ID - * @param {string} [userId] Filter sessions by user ID - * @param {string} [sessionGroup] Filter by session group. Returns only sessions matching the specified group. - * @param {number} [limit] Maximum number of sessions to return (default 50, max 100) - * @param {number} [offset] Offset for pagination - * @param {string} [model] Filter by model ID + * @param {string} [taskListId] Filter tasks by task list ID. Task lists are implicit groupings - any string can be used. + * @param {ListTasksStatusEnum} [status] Filter tasks by status + * @param {string} [assignedAgentId] Filter tasks by assigned agent ID + * @param {number} [limit] Maximum number of tasks to return (default 50, max 100) + * @param {string} [dependsOn] Reverse lookup: find tasks that depend on this task ID. Returns tasks waiting for the specified task to complete. + * @param {boolean} [includeDetails] When using dependsOn, return full task objects in addition to IDs. Default false (IDs only for lightweight responses). * @param {*} [options] Override http request option. * @throws {RequiredError} */ - listAISessions: async (organisation: string, userId?: string, sessionGroup?: string, limit?: number, offset?: number, model?: string, options: RawAxiosRequestConfig = {}): Promise => { + listTasks: async (organisation: string, taskListId?: string, status?: ListTasksStatusEnum, assignedAgentId?: string, limit?: number, dependsOn?: string, includeDetails?: boolean, options: RawAxiosRequestConfig = {}): Promise => { // verify required parameter 'organisation' is not null or undefined - assertParamExists('listAISessions', 'organisation', organisation) - const localVarPath = `/api/v3/organizations/{organisation}/ai/sessions` + assertParamExists('listTasks', 'organisation', organisation) + const localVarPath = `/api/v3/organizations/{organisation}/ai/tasks` .replace(`{${"organisation"}}`, encodeURIComponent(String(organisation))); // use dummy base URL string because the URL constructor only accepts absolute URLs. const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); @@ -12667,24 +15333,28 @@ export const AISessionsApiAxiosParamCreator = function (configuration?: Configur // http bearer authentication required await setBearerAuthToObject(localVarHeaderParameter, configuration) - if (userId !== undefined) { - localVarQueryParameter['userId'] = userId; + if (taskListId !== undefined) { + localVarQueryParameter['taskListId'] = taskListId; } - if (sessionGroup !== undefined) { - localVarQueryParameter['sessionGroup'] = sessionGroup; + if (status !== undefined) { + localVarQueryParameter['status'] = status; + } + + if (assignedAgentId !== undefined) { + localVarQueryParameter['assignedAgentId'] = assignedAgentId; } if (limit !== undefined) { localVarQueryParameter['limit'] = limit; } - if (offset !== undefined) { - localVarQueryParameter['offset'] = offset; + if (dependsOn !== undefined) { + localVarQueryParameter['dependsOn'] = dependsOn; } - if (model !== undefined) { - localVarQueryParameter['model'] = model; + if (includeDetails !== undefined) { + localVarQueryParameter['includeDetails'] = includeDetails; } @@ -12699,24 +15369,24 @@ export const AISessionsApiAxiosParamCreator = function (configuration?: Configur }; }, /** - * Updates session with new conversation messages and tracks token usage. Appends new messages to conversation history and updates session stats. * * **Typical Flow:** * 1. Get session to retrieve conversation history * 2. Call AI inference with full message history * 3. Update session with new user + assistant messages - * @summary Update Session + * Updates an existing task. All fields are optional - only provided fields will be updated. * * **Status Transitions:** * - Changing from **pending** to **in_progress** automatically sets startedAt timestamp * - Changing to **completed**, **failed**, or **cancelled** automatically sets completedAt timestamp * - Changing to **blocked** automatically sets blockedAt timestamp * - Changing from **blocked** to **in_progress** or **pending** clears blocked fields * - Completed tasks get a 30-day TTL for automatic cleanup * * **Progress Updates:** * - Update progress (0.0 to 1.0) to track completion percentage * - Update progressMessage for human-readable status updates * - Set result object when task completes successfully * - Set error string when task fails * - Set blockedReason and blockedByTaskIds when blocking a task + * @summary Update a task * @param {string} organisation The organisation ID - * @param {string} sessionId The session ID - * @param {UpdateAISessionRequest} updateAISessionRequest + * @param {string} taskId The task UUID + * @param {UpdateTaskRequest} updateTaskRequest * @param {*} [options] Override http request option. * @throws {RequiredError} */ - updateAISession: async (organisation: string, sessionId: string, updateAISessionRequest: UpdateAISessionRequest, options: RawAxiosRequestConfig = {}): Promise => { + updateTask: async (organisation: string, taskId: string, updateTaskRequest: UpdateTaskRequest, options: RawAxiosRequestConfig = {}): Promise => { // verify required parameter 'organisation' is not null or undefined - assertParamExists('updateAISession', 'organisation', organisation) - // verify required parameter 'sessionId' is not null or undefined - assertParamExists('updateAISession', 'sessionId', sessionId) - // verify required parameter 'updateAISessionRequest' is not null or undefined - assertParamExists('updateAISession', 'updateAISessionRequest', updateAISessionRequest) - const localVarPath = `/api/v3/organizations/{organisation}/ai/sessions/{sessionId}` + assertParamExists('updateTask', 'organisation', organisation) + // verify required parameter 'taskId' is not null or undefined + assertParamExists('updateTask', 'taskId', taskId) + // verify required parameter 'updateTaskRequest' is not null or undefined + assertParamExists('updateTask', 'updateTaskRequest', updateTaskRequest) + const localVarPath = `/api/v3/organizations/{organisation}/ai/tasks/{taskId}` .replace(`{${"organisation"}}`, encodeURIComponent(String(organisation))) - .replace(`{${"sessionId"}}`, encodeURIComponent(String(sessionId))); + .replace(`{${"taskId"}}`, encodeURIComponent(String(taskId))); // use dummy base URL string because the URL constructor only accepts absolute URLs. const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); let baseOptions; @@ -12739,7 +15409,7 @@ export const AISessionsApiAxiosParamCreator = function (configuration?: Configur setSearchParams(localVarUrlObj, localVarQueryParameter); let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; - localVarRequestOptions.data = serializeDataIfNeeded(updateAISessionRequest, localVarRequestOptions, configuration) + localVarRequestOptions.data = serializeDataIfNeeded(updateTaskRequest, localVarRequestOptions, configuration) return { url: toPathString(localVarUrlObj), @@ -12750,279 +15420,294 @@ export const AISessionsApiAxiosParamCreator = function (configuration?: Configur }; /** - * AISessionsApi - functional programming interface + * AITaskManagementApi - functional programming interface * @export */ -export const AISessionsApiFp = function(configuration?: Configuration) { - const localVarAxiosParamCreator = AISessionsApiAxiosParamCreator(configuration) +export const AITaskManagementApiFp = function(configuration?: Configuration) { + const localVarAxiosParamCreator = AITaskManagementApiAxiosParamCreator(configuration) return { /** - * Creates an AI session with automatic expiration (60 min default, 24h max). Sessions are isolated by organization. Use userId to identify the user creating the session. Use sessionGroup for logical grouping. Use metadata for additional custom data. Filter sessions by userId or sessionGroup when listing. - * @summary Create a new chat session with multi-tenant isolation + * Creates a new task for multi-agent coordination and workflow orchestration. * * **Key Features:** * - **Persistent State**: Tasks survive across conversations and sessions * - **Agent Assignment**: Pre-assign tasks to specific agents * - **Task Lists**: Group related tasks using taskListId (implicit - no need to create lists first) * - **Dependencies**: Define task dependencies for workflow orchestration * - **Metadata**: Store flexible JSON metadata for task-specific data * - **Progress Tracking**: Track progress from 0.0 to 1.0 * * **Use Cases:** * - Break down complex requests into manageable steps * - Assign work to specialized agents * - Track long-running operations * - Coordinate multi-agent workflows + * @summary Create a new task * @param {string} organisation The organisation ID - * @param {CreateAISessionRequest} createAISessionRequest + * @param {CreateTaskRequest} createTaskRequest * @param {*} [options] Override http request option. * @throws {RequiredError} */ - async createAISession(organisation: string, createAISessionRequest: CreateAISessionRequest, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { - const localVarAxiosArgs = await localVarAxiosParamCreator.createAISession(organisation, createAISessionRequest, options); + async createTask(organisation: string, createTaskRequest: CreateTaskRequest, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.createTask(organisation, createTaskRequest, options); const localVarOperationServerIndex = configuration?.serverIndex ?? 0; - const localVarOperationServerBasePath = operationServerMap['AISessionsApi.createAISession']?.[localVarOperationServerIndex]?.url; + const localVarOperationServerBasePath = operationServerMap['AITaskManagementApi.createTask']?.[localVarOperationServerIndex]?.url; return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath); }, /** - * - * @summary Delete a chat session + * Permanently deletes a task. This action cannot be undone. * * **Dependency Protection:** * By default, deletion is blocked if other tasks depend on this task (TASK_HAS_DEPENDENTS error). * This prevents breaking workflows. * * **Cascade Delete:** * Use `?cascade=true` to delete the task AND all tasks that depend on it recursively. * Useful for cleaning up entire dependency chains. * * **Examples:** * - DELETE /tasks/{id} - Deletes task if no dependents, otherwise returns 409 error * - DELETE /tasks/{id}?cascade=true - Deletes task and all dependent tasks + * @summary Delete a task * @param {string} organisation The organisation ID - * @param {string} sessionId The session ID + * @param {string} taskId The task UUID + * @param {boolean} [cascade] If true, delete task and all dependent tasks recursively * @param {*} [options] Override http request option. * @throws {RequiredError} */ - async deleteAISession(organisation: string, sessionId: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { - const localVarAxiosArgs = await localVarAxiosParamCreator.deleteAISession(organisation, sessionId, options); + async deleteTask(organisation: string, taskId: string, cascade?: boolean, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.deleteTask(organisation, taskId, cascade, options); const localVarOperationServerIndex = configuration?.serverIndex ?? 0; - const localVarOperationServerBasePath = operationServerMap['AISessionsApi.deleteAISession']?.[localVarOperationServerIndex]?.url; + const localVarOperationServerBasePath = operationServerMap['AITaskManagementApi.deleteTask']?.[localVarOperationServerIndex]?.url; return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath); }, /** - * Extends the expiration time of an active session. Useful for keeping long-running conversations alive. - * @summary Extend Session Expiration + * Returns the full dependency graph for all tasks in a task list. * * **Use Cases:** * - Visualize task dependencies in a UI (DAG diagram) * - Analyze workflow structure and critical paths * - Find starting tasks (roots) and terminal tasks (leaves) * - Plan parallel execution by identifying independent task groups * * **Response Structure:** * - `taskCount`: Total number of tasks in the list * - `roots`: Task IDs with no dependencies (starting points) * - `leaves`: Task IDs with no dependents (terminal tasks) * - `graph`: Adjacency list with each task\'s dependencies and dependents + * @summary Get dependency graph for a task list * @param {string} organisation The organisation ID - * @param {string} sessionId The session ID - * @param {ExtendAISessionRequest} [extendAISessionRequest] + * @param {string} taskListId The task list ID to get the dependency graph for * @param {*} [options] Override http request option. * @throws {RequiredError} */ - async extendAISession(organisation: string, sessionId: string, extendAISessionRequest?: ExtendAISessionRequest, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { - const localVarAxiosArgs = await localVarAxiosParamCreator.extendAISession(organisation, sessionId, extendAISessionRequest, options); + async getDependencyGraph(organisation: string, taskListId: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.getDependencyGraph(organisation, taskListId, options); const localVarOperationServerIndex = configuration?.serverIndex ?? 0; - const localVarOperationServerBasePath = operationServerMap['AISessionsApi.extendAISession']?.[localVarOperationServerIndex]?.url; + const localVarOperationServerBasePath = operationServerMap['AITaskManagementApi.getDependencyGraph']?.[localVarOperationServerIndex]?.url; return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath); }, /** - * - * @summary Get a specific chat session + * Retrieves detailed information about a specific task including status, progress, dependencies, and results. + * @summary Get task details * @param {string} organisation The organisation ID - * @param {string} sessionId The session ID + * @param {string} taskId The task UUID * @param {*} [options] Override http request option. * @throws {RequiredError} */ - async getAISession(organisation: string, sessionId: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { - const localVarAxiosArgs = await localVarAxiosParamCreator.getAISession(organisation, sessionId, options); + async getTask(organisation: string, taskId: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.getTask(organisation, taskId, options); const localVarOperationServerIndex = configuration?.serverIndex ?? 0; - const localVarOperationServerBasePath = operationServerMap['AISessionsApi.getAISession']?.[localVarOperationServerIndex]?.url; + const localVarOperationServerBasePath = operationServerMap['AITaskManagementApi.getTask']?.[localVarOperationServerIndex]?.url; return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath); }, /** - * Lists active sessions for an organization with flexible filtering options. * * **Query Combinations:** * 1. By Organization (default): Returns all sessions in the organization * 2. By Organization + Group: `?sessionGroup=drupal-prod` - Sessions in a specific group * 3. By User: `?userId=user-123` - All sessions for a user * 4. By User + Group: `?userId=user-123&sessionGroup=drupal-prod` - User\'s sessions in a specific group * * **Use Cases:** * - List user\'s conversations in a specific app/environment * - Admin view of all sessions in a customer/tenant group * - User profile showing all AI conversations across apps - * @summary List chat sessions with multi-tenant filtering + * Lists tasks for an organization with optional filtering. Filters can be combined for powerful queries. * * **Filter Examples:** * - All tasks in a list: ?taskListId=world-1 * - Pending tasks in a list: ?taskListId=world-1&status=pending * - Tasks assigned to an agent: ?assignedAgentId=agent-code-reviewer * - Combined: ?taskListId=world-1&status=in_progress&assignedAgentId=agent-1 * * **Reverse Dependency Lookup:** * Use `dependsOn` to find tasks that depend on a specific task (waiting for it to complete): * - ?dependsOn=task-123 - Returns task IDs only (lightweight) * - ?dependsOn=task-123&includeDetails=true - Returns full task objects * - ?dependsOn=task-123&status=pending - Pending tasks waiting for task-123 * * **Ordering:** * Tasks are returned in reverse chronological order (most recent first). + * @summary List tasks with optional filtering * @param {string} organisation The organisation ID - * @param {string} [userId] Filter sessions by user ID - * @param {string} [sessionGroup] Filter by session group. Returns only sessions matching the specified group. - * @param {number} [limit] Maximum number of sessions to return (default 50, max 100) - * @param {number} [offset] Offset for pagination - * @param {string} [model] Filter by model ID + * @param {string} [taskListId] Filter tasks by task list ID. Task lists are implicit groupings - any string can be used. + * @param {ListTasksStatusEnum} [status] Filter tasks by status + * @param {string} [assignedAgentId] Filter tasks by assigned agent ID + * @param {number} [limit] Maximum number of tasks to return (default 50, max 100) + * @param {string} [dependsOn] Reverse lookup: find tasks that depend on this task ID. Returns tasks waiting for the specified task to complete. + * @param {boolean} [includeDetails] When using dependsOn, return full task objects in addition to IDs. Default false (IDs only for lightweight responses). * @param {*} [options] Override http request option. * @throws {RequiredError} */ - async listAISessions(organisation: string, userId?: string, sessionGroup?: string, limit?: number, offset?: number, model?: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise>> { - const localVarAxiosArgs = await localVarAxiosParamCreator.listAISessions(organisation, userId, sessionGroup, limit, offset, model, options); + async listTasks(organisation: string, taskListId?: string, status?: ListTasksStatusEnum, assignedAgentId?: string, limit?: number, dependsOn?: string, includeDetails?: boolean, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.listTasks(organisation, taskListId, status, assignedAgentId, limit, dependsOn, includeDetails, options); const localVarOperationServerIndex = configuration?.serverIndex ?? 0; - const localVarOperationServerBasePath = operationServerMap['AISessionsApi.listAISessions']?.[localVarOperationServerIndex]?.url; + const localVarOperationServerBasePath = operationServerMap['AITaskManagementApi.listTasks']?.[localVarOperationServerIndex]?.url; return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath); }, /** - * Updates session with new conversation messages and tracks token usage. Appends new messages to conversation history and updates session stats. * * **Typical Flow:** * 1. Get session to retrieve conversation history * 2. Call AI inference with full message history * 3. Update session with new user + assistant messages - * @summary Update Session + * Updates an existing task. All fields are optional - only provided fields will be updated. * * **Status Transitions:** * - Changing from **pending** to **in_progress** automatically sets startedAt timestamp * - Changing to **completed**, **failed**, or **cancelled** automatically sets completedAt timestamp * - Changing to **blocked** automatically sets blockedAt timestamp * - Changing from **blocked** to **in_progress** or **pending** clears blocked fields * - Completed tasks get a 30-day TTL for automatic cleanup * * **Progress Updates:** * - Update progress (0.0 to 1.0) to track completion percentage * - Update progressMessage for human-readable status updates * - Set result object when task completes successfully * - Set error string when task fails * - Set blockedReason and blockedByTaskIds when blocking a task + * @summary Update a task * @param {string} organisation The organisation ID - * @param {string} sessionId The session ID - * @param {UpdateAISessionRequest} updateAISessionRequest + * @param {string} taskId The task UUID + * @param {UpdateTaskRequest} updateTaskRequest * @param {*} [options] Override http request option. * @throws {RequiredError} */ - async updateAISession(organisation: string, sessionId: string, updateAISessionRequest: UpdateAISessionRequest, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { - const localVarAxiosArgs = await localVarAxiosParamCreator.updateAISession(organisation, sessionId, updateAISessionRequest, options); + async updateTask(organisation: string, taskId: string, updateTaskRequest: UpdateTaskRequest, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.updateTask(organisation, taskId, updateTaskRequest, options); const localVarOperationServerIndex = configuration?.serverIndex ?? 0; - const localVarOperationServerBasePath = operationServerMap['AISessionsApi.updateAISession']?.[localVarOperationServerIndex]?.url; + const localVarOperationServerBasePath = operationServerMap['AITaskManagementApi.updateTask']?.[localVarOperationServerIndex]?.url; return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath); }, } }; /** - * AISessionsApi - factory interface + * AITaskManagementApi - factory interface * @export */ -export const AISessionsApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) { - const localVarFp = AISessionsApiFp(configuration) +export const AITaskManagementApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) { + const localVarFp = AITaskManagementApiFp(configuration) return { /** - * Creates an AI session with automatic expiration (60 min default, 24h max). Sessions are isolated by organization. Use userId to identify the user creating the session. Use sessionGroup for logical grouping. Use metadata for additional custom data. Filter sessions by userId or sessionGroup when listing. - * @summary Create a new chat session with multi-tenant isolation + * Creates a new task for multi-agent coordination and workflow orchestration. * * **Key Features:** * - **Persistent State**: Tasks survive across conversations and sessions * - **Agent Assignment**: Pre-assign tasks to specific agents * - **Task Lists**: Group related tasks using taskListId (implicit - no need to create lists first) * - **Dependencies**: Define task dependencies for workflow orchestration * - **Metadata**: Store flexible JSON metadata for task-specific data * - **Progress Tracking**: Track progress from 0.0 to 1.0 * * **Use Cases:** * - Break down complex requests into manageable steps * - Assign work to specialized agents * - Track long-running operations * - Coordinate multi-agent workflows + * @summary Create a new task * @param {string} organisation The organisation ID - * @param {CreateAISessionRequest} createAISessionRequest + * @param {CreateTaskRequest} createTaskRequest * @param {*} [options] Override http request option. * @throws {RequiredError} */ - createAISession(organisation: string, createAISessionRequest: CreateAISessionRequest, options?: RawAxiosRequestConfig): AxiosPromise { - return localVarFp.createAISession(organisation, createAISessionRequest, options).then((request) => request(axios, basePath)); + createTask(organisation: string, createTaskRequest: CreateTaskRequest, options?: RawAxiosRequestConfig): AxiosPromise { + return localVarFp.createTask(organisation, createTaskRequest, options).then((request) => request(axios, basePath)); }, /** - * - * @summary Delete a chat session + * Permanently deletes a task. This action cannot be undone. * * **Dependency Protection:** * By default, deletion is blocked if other tasks depend on this task (TASK_HAS_DEPENDENTS error). * This prevents breaking workflows. * * **Cascade Delete:** * Use `?cascade=true` to delete the task AND all tasks that depend on it recursively. * Useful for cleaning up entire dependency chains. * * **Examples:** * - DELETE /tasks/{id} - Deletes task if no dependents, otherwise returns 409 error * - DELETE /tasks/{id}?cascade=true - Deletes task and all dependent tasks + * @summary Delete a task * @param {string} organisation The organisation ID - * @param {string} sessionId The session ID + * @param {string} taskId The task UUID + * @param {boolean} [cascade] If true, delete task and all dependent tasks recursively * @param {*} [options] Override http request option. * @throws {RequiredError} */ - deleteAISession(organisation: string, sessionId: string, options?: RawAxiosRequestConfig): AxiosPromise { - return localVarFp.deleteAISession(organisation, sessionId, options).then((request) => request(axios, basePath)); + deleteTask(organisation: string, taskId: string, cascade?: boolean, options?: RawAxiosRequestConfig): AxiosPromise { + return localVarFp.deleteTask(organisation, taskId, cascade, options).then((request) => request(axios, basePath)); }, /** - * Extends the expiration time of an active session. Useful for keeping long-running conversations alive. - * @summary Extend Session Expiration + * Returns the full dependency graph for all tasks in a task list. * * **Use Cases:** * - Visualize task dependencies in a UI (DAG diagram) * - Analyze workflow structure and critical paths * - Find starting tasks (roots) and terminal tasks (leaves) * - Plan parallel execution by identifying independent task groups * * **Response Structure:** * - `taskCount`: Total number of tasks in the list * - `roots`: Task IDs with no dependencies (starting points) * - `leaves`: Task IDs with no dependents (terminal tasks) * - `graph`: Adjacency list with each task\'s dependencies and dependents + * @summary Get dependency graph for a task list * @param {string} organisation The organisation ID - * @param {string} sessionId The session ID - * @param {ExtendAISessionRequest} [extendAISessionRequest] + * @param {string} taskListId The task list ID to get the dependency graph for * @param {*} [options] Override http request option. * @throws {RequiredError} */ - extendAISession(organisation: string, sessionId: string, extendAISessionRequest?: ExtendAISessionRequest, options?: RawAxiosRequestConfig): AxiosPromise { - return localVarFp.extendAISession(organisation, sessionId, extendAISessionRequest, options).then((request) => request(axios, basePath)); + getDependencyGraph(organisation: string, taskListId: string, options?: RawAxiosRequestConfig): AxiosPromise { + return localVarFp.getDependencyGraph(organisation, taskListId, options).then((request) => request(axios, basePath)); }, /** - * - * @summary Get a specific chat session + * Retrieves detailed information about a specific task including status, progress, dependencies, and results. + * @summary Get task details * @param {string} organisation The organisation ID - * @param {string} sessionId The session ID + * @param {string} taskId The task UUID * @param {*} [options] Override http request option. * @throws {RequiredError} */ - getAISession(organisation: string, sessionId: string, options?: RawAxiosRequestConfig): AxiosPromise { - return localVarFp.getAISession(organisation, sessionId, options).then((request) => request(axios, basePath)); + getTask(organisation: string, taskId: string, options?: RawAxiosRequestConfig): AxiosPromise { + return localVarFp.getTask(organisation, taskId, options).then((request) => request(axios, basePath)); }, /** - * Lists active sessions for an organization with flexible filtering options. * * **Query Combinations:** * 1. By Organization (default): Returns all sessions in the organization * 2. By Organization + Group: `?sessionGroup=drupal-prod` - Sessions in a specific group * 3. By User: `?userId=user-123` - All sessions for a user * 4. By User + Group: `?userId=user-123&sessionGroup=drupal-prod` - User\'s sessions in a specific group * * **Use Cases:** * - List user\'s conversations in a specific app/environment * - Admin view of all sessions in a customer/tenant group * - User profile showing all AI conversations across apps - * @summary List chat sessions with multi-tenant filtering + * Lists tasks for an organization with optional filtering. Filters can be combined for powerful queries. * * **Filter Examples:** * - All tasks in a list: ?taskListId=world-1 * - Pending tasks in a list: ?taskListId=world-1&status=pending * - Tasks assigned to an agent: ?assignedAgentId=agent-code-reviewer * - Combined: ?taskListId=world-1&status=in_progress&assignedAgentId=agent-1 * * **Reverse Dependency Lookup:** * Use `dependsOn` to find tasks that depend on a specific task (waiting for it to complete): * - ?dependsOn=task-123 - Returns task IDs only (lightweight) * - ?dependsOn=task-123&includeDetails=true - Returns full task objects * - ?dependsOn=task-123&status=pending - Pending tasks waiting for task-123 * * **Ordering:** * Tasks are returned in reverse chronological order (most recent first). + * @summary List tasks with optional filtering * @param {string} organisation The organisation ID - * @param {string} [userId] Filter sessions by user ID - * @param {string} [sessionGroup] Filter by session group. Returns only sessions matching the specified group. - * @param {number} [limit] Maximum number of sessions to return (default 50, max 100) - * @param {number} [offset] Offset for pagination - * @param {string} [model] Filter by model ID + * @param {string} [taskListId] Filter tasks by task list ID. Task lists are implicit groupings - any string can be used. + * @param {ListTasksStatusEnum} [status] Filter tasks by status + * @param {string} [assignedAgentId] Filter tasks by assigned agent ID + * @param {number} [limit] Maximum number of tasks to return (default 50, max 100) + * @param {string} [dependsOn] Reverse lookup: find tasks that depend on this task ID. Returns tasks waiting for the specified task to complete. + * @param {boolean} [includeDetails] When using dependsOn, return full task objects in addition to IDs. Default false (IDs only for lightweight responses). * @param {*} [options] Override http request option. * @throws {RequiredError} */ - listAISessions(organisation: string, userId?: string, sessionGroup?: string, limit?: number, offset?: number, model?: string, options?: RawAxiosRequestConfig): AxiosPromise> { - return localVarFp.listAISessions(organisation, userId, sessionGroup, limit, offset, model, options).then((request) => request(axios, basePath)); + listTasks(organisation: string, taskListId?: string, status?: ListTasksStatusEnum, assignedAgentId?: string, limit?: number, dependsOn?: string, includeDetails?: boolean, options?: RawAxiosRequestConfig): AxiosPromise { + return localVarFp.listTasks(organisation, taskListId, status, assignedAgentId, limit, dependsOn, includeDetails, options).then((request) => request(axios, basePath)); }, /** - * Updates session with new conversation messages and tracks token usage. Appends new messages to conversation history and updates session stats. * * **Typical Flow:** * 1. Get session to retrieve conversation history * 2. Call AI inference with full message history * 3. Update session with new user + assistant messages - * @summary Update Session + * Updates an existing task. All fields are optional - only provided fields will be updated. * * **Status Transitions:** * - Changing from **pending** to **in_progress** automatically sets startedAt timestamp * - Changing to **completed**, **failed**, or **cancelled** automatically sets completedAt timestamp * - Changing to **blocked** automatically sets blockedAt timestamp * - Changing from **blocked** to **in_progress** or **pending** clears blocked fields * - Completed tasks get a 30-day TTL for automatic cleanup * * **Progress Updates:** * - Update progress (0.0 to 1.0) to track completion percentage * - Update progressMessage for human-readable status updates * - Set result object when task completes successfully * - Set error string when task fails * - Set blockedReason and blockedByTaskIds when blocking a task + * @summary Update a task * @param {string} organisation The organisation ID - * @param {string} sessionId The session ID - * @param {UpdateAISessionRequest} updateAISessionRequest + * @param {string} taskId The task UUID + * @param {UpdateTaskRequest} updateTaskRequest * @param {*} [options] Override http request option. * @throws {RequiredError} */ - updateAISession(organisation: string, sessionId: string, updateAISessionRequest: UpdateAISessionRequest, options?: RawAxiosRequestConfig): AxiosPromise { - return localVarFp.updateAISession(organisation, sessionId, updateAISessionRequest, options).then((request) => request(axios, basePath)); + updateTask(organisation: string, taskId: string, updateTaskRequest: UpdateTaskRequest, options?: RawAxiosRequestConfig): AxiosPromise { + return localVarFp.updateTask(organisation, taskId, updateTaskRequest, options).then((request) => request(axios, basePath)); }, }; }; /** - * AISessionsApi - object-oriented interface + * AITaskManagementApi - object-oriented interface * @export - * @class AISessionsApi + * @class AITaskManagementApi * @extends {BaseAPI} */ -export class AISessionsApi extends BaseAPI { +export class AITaskManagementApi extends BaseAPI { /** - * Creates an AI session with automatic expiration (60 min default, 24h max). Sessions are isolated by organization. Use userId to identify the user creating the session. Use sessionGroup for logical grouping. Use metadata for additional custom data. Filter sessions by userId or sessionGroup when listing. - * @summary Create a new chat session with multi-tenant isolation + * Creates a new task for multi-agent coordination and workflow orchestration. * * **Key Features:** * - **Persistent State**: Tasks survive across conversations and sessions * - **Agent Assignment**: Pre-assign tasks to specific agents * - **Task Lists**: Group related tasks using taskListId (implicit - no need to create lists first) * - **Dependencies**: Define task dependencies for workflow orchestration * - **Metadata**: Store flexible JSON metadata for task-specific data * - **Progress Tracking**: Track progress from 0.0 to 1.0 * * **Use Cases:** * - Break down complex requests into manageable steps * - Assign work to specialized agents * - Track long-running operations * - Coordinate multi-agent workflows + * @summary Create a new task * @param {string} organisation The organisation ID - * @param {CreateAISessionRequest} createAISessionRequest + * @param {CreateTaskRequest} createTaskRequest * @param {*} [options] Override http request option. * @throws {RequiredError} - * @memberof AISessionsApi + * @memberof AITaskManagementApi */ - public createAISession(organisation: string, createAISessionRequest: CreateAISessionRequest, options?: RawAxiosRequestConfig) { - return AISessionsApiFp(this.configuration).createAISession(organisation, createAISessionRequest, options).then((request) => request(this.axios, this.basePath)); + public createTask(organisation: string, createTaskRequest: CreateTaskRequest, options?: RawAxiosRequestConfig) { + return AITaskManagementApiFp(this.configuration).createTask(organisation, createTaskRequest, options).then((request) => request(this.axios, this.basePath)); } /** - * - * @summary Delete a chat session + * Permanently deletes a task. This action cannot be undone. * * **Dependency Protection:** * By default, deletion is blocked if other tasks depend on this task (TASK_HAS_DEPENDENTS error). * This prevents breaking workflows. * * **Cascade Delete:** * Use `?cascade=true` to delete the task AND all tasks that depend on it recursively. * Useful for cleaning up entire dependency chains. * * **Examples:** * - DELETE /tasks/{id} - Deletes task if no dependents, otherwise returns 409 error * - DELETE /tasks/{id}?cascade=true - Deletes task and all dependent tasks + * @summary Delete a task * @param {string} organisation The organisation ID - * @param {string} sessionId The session ID + * @param {string} taskId The task UUID + * @param {boolean} [cascade] If true, delete task and all dependent tasks recursively * @param {*} [options] Override http request option. * @throws {RequiredError} - * @memberof AISessionsApi + * @memberof AITaskManagementApi */ - public deleteAISession(organisation: string, sessionId: string, options?: RawAxiosRequestConfig) { - return AISessionsApiFp(this.configuration).deleteAISession(organisation, sessionId, options).then((request) => request(this.axios, this.basePath)); + public deleteTask(organisation: string, taskId: string, cascade?: boolean, options?: RawAxiosRequestConfig) { + return AITaskManagementApiFp(this.configuration).deleteTask(organisation, taskId, cascade, options).then((request) => request(this.axios, this.basePath)); } /** - * Extends the expiration time of an active session. Useful for keeping long-running conversations alive. - * @summary Extend Session Expiration + * Returns the full dependency graph for all tasks in a task list. * * **Use Cases:** * - Visualize task dependencies in a UI (DAG diagram) * - Analyze workflow structure and critical paths * - Find starting tasks (roots) and terminal tasks (leaves) * - Plan parallel execution by identifying independent task groups * * **Response Structure:** * - `taskCount`: Total number of tasks in the list * - `roots`: Task IDs with no dependencies (starting points) * - `leaves`: Task IDs with no dependents (terminal tasks) * - `graph`: Adjacency list with each task\'s dependencies and dependents + * @summary Get dependency graph for a task list * @param {string} organisation The organisation ID - * @param {string} sessionId The session ID - * @param {ExtendAISessionRequest} [extendAISessionRequest] + * @param {string} taskListId The task list ID to get the dependency graph for * @param {*} [options] Override http request option. * @throws {RequiredError} - * @memberof AISessionsApi + * @memberof AITaskManagementApi */ - public extendAISession(organisation: string, sessionId: string, extendAISessionRequest?: ExtendAISessionRequest, options?: RawAxiosRequestConfig) { - return AISessionsApiFp(this.configuration).extendAISession(organisation, sessionId, extendAISessionRequest, options).then((request) => request(this.axios, this.basePath)); + public getDependencyGraph(organisation: string, taskListId: string, options?: RawAxiosRequestConfig) { + return AITaskManagementApiFp(this.configuration).getDependencyGraph(organisation, taskListId, options).then((request) => request(this.axios, this.basePath)); } /** - * - * @summary Get a specific chat session + * Retrieves detailed information about a specific task including status, progress, dependencies, and results. + * @summary Get task details * @param {string} organisation The organisation ID - * @param {string} sessionId The session ID + * @param {string} taskId The task UUID * @param {*} [options] Override http request option. * @throws {RequiredError} - * @memberof AISessionsApi + * @memberof AITaskManagementApi */ - public getAISession(organisation: string, sessionId: string, options?: RawAxiosRequestConfig) { - return AISessionsApiFp(this.configuration).getAISession(organisation, sessionId, options).then((request) => request(this.axios, this.basePath)); + public getTask(organisation: string, taskId: string, options?: RawAxiosRequestConfig) { + return AITaskManagementApiFp(this.configuration).getTask(organisation, taskId, options).then((request) => request(this.axios, this.basePath)); } /** - * Lists active sessions for an organization with flexible filtering options. * * **Query Combinations:** * 1. By Organization (default): Returns all sessions in the organization * 2. By Organization + Group: `?sessionGroup=drupal-prod` - Sessions in a specific group * 3. By User: `?userId=user-123` - All sessions for a user * 4. By User + Group: `?userId=user-123&sessionGroup=drupal-prod` - User\'s sessions in a specific group * * **Use Cases:** * - List user\'s conversations in a specific app/environment * - Admin view of all sessions in a customer/tenant group * - User profile showing all AI conversations across apps - * @summary List chat sessions with multi-tenant filtering + * Lists tasks for an organization with optional filtering. Filters can be combined for powerful queries. * * **Filter Examples:** * - All tasks in a list: ?taskListId=world-1 * - Pending tasks in a list: ?taskListId=world-1&status=pending * - Tasks assigned to an agent: ?assignedAgentId=agent-code-reviewer * - Combined: ?taskListId=world-1&status=in_progress&assignedAgentId=agent-1 * * **Reverse Dependency Lookup:** * Use `dependsOn` to find tasks that depend on a specific task (waiting for it to complete): * - ?dependsOn=task-123 - Returns task IDs only (lightweight) * - ?dependsOn=task-123&includeDetails=true - Returns full task objects * - ?dependsOn=task-123&status=pending - Pending tasks waiting for task-123 * * **Ordering:** * Tasks are returned in reverse chronological order (most recent first). + * @summary List tasks with optional filtering * @param {string} organisation The organisation ID - * @param {string} [userId] Filter sessions by user ID - * @param {string} [sessionGroup] Filter by session group. Returns only sessions matching the specified group. - * @param {number} [limit] Maximum number of sessions to return (default 50, max 100) - * @param {number} [offset] Offset for pagination - * @param {string} [model] Filter by model ID + * @param {string} [taskListId] Filter tasks by task list ID. Task lists are implicit groupings - any string can be used. + * @param {ListTasksStatusEnum} [status] Filter tasks by status + * @param {string} [assignedAgentId] Filter tasks by assigned agent ID + * @param {number} [limit] Maximum number of tasks to return (default 50, max 100) + * @param {string} [dependsOn] Reverse lookup: find tasks that depend on this task ID. Returns tasks waiting for the specified task to complete. + * @param {boolean} [includeDetails] When using dependsOn, return full task objects in addition to IDs. Default false (IDs only for lightweight responses). * @param {*} [options] Override http request option. * @throws {RequiredError} - * @memberof AISessionsApi + * @memberof AITaskManagementApi */ - public listAISessions(organisation: string, userId?: string, sessionGroup?: string, limit?: number, offset?: number, model?: string, options?: RawAxiosRequestConfig) { - return AISessionsApiFp(this.configuration).listAISessions(organisation, userId, sessionGroup, limit, offset, model, options).then((request) => request(this.axios, this.basePath)); + public listTasks(organisation: string, taskListId?: string, status?: ListTasksStatusEnum, assignedAgentId?: string, limit?: number, dependsOn?: string, includeDetails?: boolean, options?: RawAxiosRequestConfig) { + return AITaskManagementApiFp(this.configuration).listTasks(organisation, taskListId, status, assignedAgentId, limit, dependsOn, includeDetails, options).then((request) => request(this.axios, this.basePath)); } /** - * Updates session with new conversation messages and tracks token usage. Appends new messages to conversation history and updates session stats. * * **Typical Flow:** * 1. Get session to retrieve conversation history * 2. Call AI inference with full message history * 3. Update session with new user + assistant messages - * @summary Update Session + * Updates an existing task. All fields are optional - only provided fields will be updated. * * **Status Transitions:** * - Changing from **pending** to **in_progress** automatically sets startedAt timestamp * - Changing to **completed**, **failed**, or **cancelled** automatically sets completedAt timestamp * - Changing to **blocked** automatically sets blockedAt timestamp * - Changing from **blocked** to **in_progress** or **pending** clears blocked fields * - Completed tasks get a 30-day TTL for automatic cleanup * * **Progress Updates:** * - Update progress (0.0 to 1.0) to track completion percentage * - Update progressMessage for human-readable status updates * - Set result object when task completes successfully * - Set error string when task fails * - Set blockedReason and blockedByTaskIds when blocking a task + * @summary Update a task * @param {string} organisation The organisation ID - * @param {string} sessionId The session ID - * @param {UpdateAISessionRequest} updateAISessionRequest + * @param {string} taskId The task UUID + * @param {UpdateTaskRequest} updateTaskRequest * @param {*} [options] Override http request option. * @throws {RequiredError} - * @memberof AISessionsApi + * @memberof AITaskManagementApi */ - public updateAISession(organisation: string, sessionId: string, updateAISessionRequest: UpdateAISessionRequest, options?: RawAxiosRequestConfig) { - return AISessionsApiFp(this.configuration).updateAISession(organisation, sessionId, updateAISessionRequest, options).then((request) => request(this.axios, this.basePath)); + public updateTask(organisation: string, taskId: string, updateTaskRequest: UpdateTaskRequest, options?: RawAxiosRequestConfig) { + return AITaskManagementApiFp(this.configuration).updateTask(organisation, taskId, updateTaskRequest, options).then((request) => request(this.axios, this.basePath)); } } +/** + * @export + */ +export const ListTasksStatusEnum = { + Pending: 'pending', + InProgress: 'in_progress', + Completed: 'completed', + Failed: 'failed', + Cancelled: 'cancelled', + Blocked: 'blocked' +} as const; +export type ListTasksStatusEnum = typeof ListTasksStatusEnum[keyof typeof ListTasksStatusEnum]; /** @@ -13031,6 +15716,48 @@ export class AISessionsApi extends BaseAPI { */ export const AIToolsApiAxiosParamCreator = function (configuration?: Configuration) { return { + /** + * Retrieves the status and synthesized result of a multi-tool orchestration. * * **Orchestration Pattern:** * When the AI requests multiple async tools simultaneously, an orchestration is created * to track all tool executions and synthesize their results into a single coherent response. * * **Flow:** * 1. AI requests multiple async tools (e.g., image generation + web search) * 2. Chat API creates orchestration and returns orchestrationId * 3. Tool Orchestrator Lambda polls all async tools * 4. When all tools complete, Orchestrator synthesizes results using AI * 5. Client polls this endpoint and receives final synthesized response * * **Status Values:** * - pending: Orchestration created, tools not yet started * - polling: Orchestrator is actively polling async tools * - synthesizing: All tools complete, AI is synthesizing response * - complete: Orchestration finished, synthesizedResponse available * - failed: Orchestration failed, error available * * **Polling Recommendations:** * - Poll every 2 seconds * - Maximum poll time: 10 minutes * - Orchestrator handles tool polling internally * * **Benefits over individual polling:** * - Single poll endpoint for multiple async tools * - AI synthesizes all results into coherent response * - Answers the original user question, not just tool summaries + * @summary Get Orchestration Status + * @param {string} organisation The organisation ID + * @param {string} orchestrationId Orchestration identifier for aggregated async tool executions + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + getAIOrchestrationStatus: async (organisation: string, orchestrationId: string, options: RawAxiosRequestConfig = {}): Promise => { + // verify required parameter 'organisation' is not null or undefined + assertParamExists('getAIOrchestrationStatus', 'organisation', organisation) + // verify required parameter 'orchestrationId' is not null or undefined + assertParamExists('getAIOrchestrationStatus', 'orchestrationId', orchestrationId) + const localVarPath = `/api/v3/organizations/{organisation}/ai/tools/orchestrations/{orchestrationId}` + .replace(`{${"organisation"}}`, encodeURIComponent(String(organisation))) + .replace(`{${"orchestrationId"}}`, encodeURIComponent(String(orchestrationId))); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options}; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + // authentication BearerAuth required + // http bearer authentication required + await setBearerAuthToObject(localVarHeaderParameter, configuration) + + + + setSearchParams(localVarUrlObj, localVarQueryParameter); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, /** * Retrieves the status and result of an async tool execution. Used for polling long-running tools like image generation. * * **Async Tool Execution Pattern:** * This endpoint enables a polling pattern for long-running tools that would otherwise hit API Gateway\'s 30-second timeout. * * **Flow:** * 1. AI requests tool use (e.g., `generate_image`) * 2. Chat API returns `toolUse` with execution tracking info * 3. Client starts polling this endpoint with the `executionId` * 4. When `status === \'complete\'`, retrieve `result` and send back to AI * 5. AI incorporates result into final response * * **Status Values:** * - `pending`: Tool execution queued, not yet started * - `running`: Tool is currently executing * - `complete`: Tool execution finished successfully, `result` available * - `failed`: Tool execution failed, `error` available * * **Polling Recommendations:** * - Poll every 2-3 seconds for image generation * - Exponential backoff for other tools (start 1s, max 5s) * - Stop polling after 5 minutes (consider failed) * - Auto-cleanup after 24 hours (TTL) * * **Use Cases:** * - Image generation (10-15s typical runtime) * - Video processing * - Large file uploads/downloads * - Complex database queries * - External API calls with high latency * @summary Get async tool execution status and result @@ -13207,6 +15934,20 @@ export const AIToolsApiAxiosParamCreator = function (configuration?: Configurati export const AIToolsApiFp = function(configuration?: Configuration) { const localVarAxiosParamCreator = AIToolsApiAxiosParamCreator(configuration) return { + /** + * Retrieves the status and synthesized result of a multi-tool orchestration. * * **Orchestration Pattern:** * When the AI requests multiple async tools simultaneously, an orchestration is created * to track all tool executions and synthesize their results into a single coherent response. * * **Flow:** * 1. AI requests multiple async tools (e.g., image generation + web search) * 2. Chat API creates orchestration and returns orchestrationId * 3. Tool Orchestrator Lambda polls all async tools * 4. When all tools complete, Orchestrator synthesizes results using AI * 5. Client polls this endpoint and receives final synthesized response * * **Status Values:** * - pending: Orchestration created, tools not yet started * - polling: Orchestrator is actively polling async tools * - synthesizing: All tools complete, AI is synthesizing response * - complete: Orchestration finished, synthesizedResponse available * - failed: Orchestration failed, error available * * **Polling Recommendations:** * - Poll every 2 seconds * - Maximum poll time: 10 minutes * - Orchestrator handles tool polling internally * * **Benefits over individual polling:** * - Single poll endpoint for multiple async tools * - AI synthesizes all results into coherent response * - Answers the original user question, not just tool summaries + * @summary Get Orchestration Status + * @param {string} organisation The organisation ID + * @param {string} orchestrationId Orchestration identifier for aggregated async tool executions + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async getAIOrchestrationStatus(organisation: string, orchestrationId: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.getAIOrchestrationStatus(organisation, orchestrationId, options); + const localVarOperationServerIndex = configuration?.serverIndex ?? 0; + const localVarOperationServerBasePath = operationServerMap['AIToolsApi.getAIOrchestrationStatus']?.[localVarOperationServerIndex]?.url; + return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath); + }, /** * Retrieves the status and result of an async tool execution. Used for polling long-running tools like image generation. * * **Async Tool Execution Pattern:** * This endpoint enables a polling pattern for long-running tools that would otherwise hit API Gateway\'s 30-second timeout. * * **Flow:** * 1. AI requests tool use (e.g., `generate_image`) * 2. Chat API returns `toolUse` with execution tracking info * 3. Client starts polling this endpoint with the `executionId` * 4. When `status === \'complete\'`, retrieve `result` and send back to AI * 5. AI incorporates result into final response * * **Status Values:** * - `pending`: Tool execution queued, not yet started * - `running`: Tool is currently executing * - `complete`: Tool execution finished successfully, `result` available * - `failed`: Tool execution failed, `error` available * * **Polling Recommendations:** * - Poll every 2-3 seconds for image generation * - Exponential backoff for other tools (start 1s, max 5s) * - Stop polling after 5 minutes (consider failed) * - Auto-cleanup after 24 hours (TTL) * * **Use Cases:** * - Image generation (10-15s typical runtime) * - Video processing * - Large file uploads/downloads * - Complex database queries * - External API calls with high latency * @summary Get async tool execution status and result @@ -13272,6 +16013,17 @@ export const AIToolsApiFp = function(configuration?: Configuration) { export const AIToolsApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) { const localVarFp = AIToolsApiFp(configuration) return { + /** + * Retrieves the status and synthesized result of a multi-tool orchestration. * * **Orchestration Pattern:** * When the AI requests multiple async tools simultaneously, an orchestration is created * to track all tool executions and synthesize their results into a single coherent response. * * **Flow:** * 1. AI requests multiple async tools (e.g., image generation + web search) * 2. Chat API creates orchestration and returns orchestrationId * 3. Tool Orchestrator Lambda polls all async tools * 4. When all tools complete, Orchestrator synthesizes results using AI * 5. Client polls this endpoint and receives final synthesized response * * **Status Values:** * - pending: Orchestration created, tools not yet started * - polling: Orchestrator is actively polling async tools * - synthesizing: All tools complete, AI is synthesizing response * - complete: Orchestration finished, synthesizedResponse available * - failed: Orchestration failed, error available * * **Polling Recommendations:** * - Poll every 2 seconds * - Maximum poll time: 10 minutes * - Orchestrator handles tool polling internally * * **Benefits over individual polling:** * - Single poll endpoint for multiple async tools * - AI synthesizes all results into coherent response * - Answers the original user question, not just tool summaries + * @summary Get Orchestration Status + * @param {string} organisation The organisation ID + * @param {string} orchestrationId Orchestration identifier for aggregated async tool executions + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + getAIOrchestrationStatus(organisation: string, orchestrationId: string, options?: RawAxiosRequestConfig): AxiosPromise { + return localVarFp.getAIOrchestrationStatus(organisation, orchestrationId, options).then((request) => request(axios, basePath)); + }, /** * Retrieves the status and result of an async tool execution. Used for polling long-running tools like image generation. * * **Async Tool Execution Pattern:** * This endpoint enables a polling pattern for long-running tools that would otherwise hit API Gateway\'s 30-second timeout. * * **Flow:** * 1. AI requests tool use (e.g., `generate_image`) * 2. Chat API returns `toolUse` with execution tracking info * 3. Client starts polling this endpoint with the `executionId` * 4. When `status === \'complete\'`, retrieve `result` and send back to AI * 5. AI incorporates result into final response * * **Status Values:** * - `pending`: Tool execution queued, not yet started * - `running`: Tool is currently executing * - `complete`: Tool execution finished successfully, `result` available * - `failed`: Tool execution failed, `error` available * * **Polling Recommendations:** * - Poll every 2-3 seconds for image generation * - Exponential backoff for other tools (start 1s, max 5s) * - Stop polling after 5 minutes (consider failed) * - Auto-cleanup after 24 hours (TTL) * * **Use Cases:** * - Image generation (10-15s typical runtime) * - Video processing * - Large file uploads/downloads * - Complex database queries * - External API calls with high latency * @summary Get async tool execution status and result @@ -13325,6 +16077,19 @@ export const AIToolsApiFactory = function (configuration?: Configuration, basePa * @extends {BaseAPI} */ export class AIToolsApi extends BaseAPI { + /** + * Retrieves the status and synthesized result of a multi-tool orchestration. * * **Orchestration Pattern:** * When the AI requests multiple async tools simultaneously, an orchestration is created * to track all tool executions and synthesize their results into a single coherent response. * * **Flow:** * 1. AI requests multiple async tools (e.g., image generation + web search) * 2. Chat API creates orchestration and returns orchestrationId * 3. Tool Orchestrator Lambda polls all async tools * 4. When all tools complete, Orchestrator synthesizes results using AI * 5. Client polls this endpoint and receives final synthesized response * * **Status Values:** * - pending: Orchestration created, tools not yet started * - polling: Orchestrator is actively polling async tools * - synthesizing: All tools complete, AI is synthesizing response * - complete: Orchestration finished, synthesizedResponse available * - failed: Orchestration failed, error available * * **Polling Recommendations:** * - Poll every 2 seconds * - Maximum poll time: 10 minutes * - Orchestrator handles tool polling internally * * **Benefits over individual polling:** * - Single poll endpoint for multiple async tools * - AI synthesizes all results into coherent response * - Answers the original user question, not just tool summaries + * @summary Get Orchestration Status + * @param {string} organisation The organisation ID + * @param {string} orchestrationId Orchestration identifier for aggregated async tool executions + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof AIToolsApi + */ + public getAIOrchestrationStatus(organisation: string, orchestrationId: string, options?: RawAxiosRequestConfig) { + return AIToolsApiFp(this.configuration).getAIOrchestrationStatus(organisation, orchestrationId, options).then((request) => request(this.axios, this.basePath)); + } + /** * Retrieves the status and result of an async tool execution. Used for polling long-running tools like image generation. * * **Async Tool Execution Pattern:** * This endpoint enables a polling pattern for long-running tools that would otherwise hit API Gateway\'s 30-second timeout. * * **Flow:** * 1. AI requests tool use (e.g., `generate_image`) * 2. Chat API returns `toolUse` with execution tracking info * 3. Client starts polling this endpoint with the `executionId` * 4. When `status === \'complete\'`, retrieve `result` and send back to AI * 5. AI incorporates result into final response * * **Status Values:** * - `pending`: Tool execution queued, not yet started * - `running`: Tool is currently executing * - `complete`: Tool execution finished successfully, `result` available * - `failed`: Tool execution failed, `error` available * * **Polling Recommendations:** * - Poll every 2-3 seconds for image generation * - Exponential backoff for other tools (start 1s, max 5s) * - Stop polling after 5 minutes (consider failed) * - Auto-cleanup after 24 hours (TTL) * * **Use Cases:** * - Image generation (10-15s typical runtime) * - Video processing * - Large file uploads/downloads * - Complex database queries * - External API calls with high latency * @summary Get async tool execution status and result @@ -13562,7 +16327,7 @@ export const AIVectorDatabaseApiAxiosParamCreator = function (configuration?: Co }; }, /** - * Performs semantic search on a collection using vector similarity. Returns the most relevant documents based on meaning, not keyword matching. * * **Use Cases:** * - Find relevant documentation for user questions * - Power RAG (Retrieval Augmented Generation) in AI assistants * - Semantic search across knowledge bases + * Performs semantic search on a collection using vector similarity. Returns the most relevant documents based on meaning, not keyword matching. * * **Three Search Modes:** * * 1. **Text Query** - Provide `query` string, server generates embedding * - Query text is embedded using the collection\'s embedding model * - Embeddings are cached for repeated queries * * 2. **Vector Query** - Provide pre-computed `vector` array * - Skip embedding generation (faster) * - Useful when you\'ve already embedded the query elsewhere * - Vector dimension must match collection (e.g., 1024 for Titan v2) * * 3. **Metadata List** - Set `listByMetadata: true` with `filter` * - Skip semantic search entirely * - Return all documents matching the filter * - Supports cursor-based pagination for large datasets * - Results ordered by sortBy/sortOrder (default: created_at DESC) * * **Filtering:** * - `filter.exact`: Exact match on metadata fields (AND logic) * - `filter.contains`: Array contains filter for tags (ANY match) * - Filters can be combined with semantic search or used alone with listByMetadata * * **Pagination (listByMetadata mode only):** * - Use `cursor` from previous response\'s `nextCursor` to get next page * - Uses keyset pagination for efficient traversal of large datasets * - Control sort with `sortBy` and `sortOrder` * * **Use Cases:** * - Find relevant documentation for user questions * - Power RAG (Retrieval Augmented Generation) in AI assistants * - Semantic search across knowledge bases * - List all artifacts by building/worker/tag * @summary Semantic Search Query * @param {string} organisation The organisation ID * @param {string} collectionId The collection ID @@ -13723,7 +16488,7 @@ export const AIVectorDatabaseApiFp = function(configuration?: Configuration) { return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath); }, /** - * Performs semantic search on a collection using vector similarity. Returns the most relevant documents based on meaning, not keyword matching. * * **Use Cases:** * - Find relevant documentation for user questions * - Power RAG (Retrieval Augmented Generation) in AI assistants * - Semantic search across knowledge bases + * Performs semantic search on a collection using vector similarity. Returns the most relevant documents based on meaning, not keyword matching. * * **Three Search Modes:** * * 1. **Text Query** - Provide `query` string, server generates embedding * - Query text is embedded using the collection\'s embedding model * - Embeddings are cached for repeated queries * * 2. **Vector Query** - Provide pre-computed `vector` array * - Skip embedding generation (faster) * - Useful when you\'ve already embedded the query elsewhere * - Vector dimension must match collection (e.g., 1024 for Titan v2) * * 3. **Metadata List** - Set `listByMetadata: true` with `filter` * - Skip semantic search entirely * - Return all documents matching the filter * - Supports cursor-based pagination for large datasets * - Results ordered by sortBy/sortOrder (default: created_at DESC) * * **Filtering:** * - `filter.exact`: Exact match on metadata fields (AND logic) * - `filter.contains`: Array contains filter for tags (ANY match) * - Filters can be combined with semantic search or used alone with listByMetadata * * **Pagination (listByMetadata mode only):** * - Use `cursor` from previous response\'s `nextCursor` to get next page * - Uses keyset pagination for efficient traversal of large datasets * - Control sort with `sortBy` and `sortOrder` * * **Use Cases:** * - Find relevant documentation for user questions * - Power RAG (Retrieval Augmented Generation) in AI assistants * - Semantic search across knowledge bases * - List all artifacts by building/worker/tag * @summary Semantic Search Query * @param {string} organisation The organisation ID * @param {string} collectionId The collection ID @@ -13806,7 +16571,7 @@ export const AIVectorDatabaseApiFactory = function (configuration?: Configuratio return localVarFp.listVectorCollections(organisation, options).then((request) => request(axios, basePath)); }, /** - * Performs semantic search on a collection using vector similarity. Returns the most relevant documents based on meaning, not keyword matching. * * **Use Cases:** * - Find relevant documentation for user questions * - Power RAG (Retrieval Augmented Generation) in AI assistants * - Semantic search across knowledge bases + * Performs semantic search on a collection using vector similarity. Returns the most relevant documents based on meaning, not keyword matching. * * **Three Search Modes:** * * 1. **Text Query** - Provide `query` string, server generates embedding * - Query text is embedded using the collection\'s embedding model * - Embeddings are cached for repeated queries * * 2. **Vector Query** - Provide pre-computed `vector` array * - Skip embedding generation (faster) * - Useful when you\'ve already embedded the query elsewhere * - Vector dimension must match collection (e.g., 1024 for Titan v2) * * 3. **Metadata List** - Set `listByMetadata: true` with `filter` * - Skip semantic search entirely * - Return all documents matching the filter * - Supports cursor-based pagination for large datasets * - Results ordered by sortBy/sortOrder (default: created_at DESC) * * **Filtering:** * - `filter.exact`: Exact match on metadata fields (AND logic) * - `filter.contains`: Array contains filter for tags (ANY match) * - Filters can be combined with semantic search or used alone with listByMetadata * * **Pagination (listByMetadata mode only):** * - Use `cursor` from previous response\'s `nextCursor` to get next page * - Uses keyset pagination for efficient traversal of large datasets * - Control sort with `sortBy` and `sortOrder` * * **Use Cases:** * - Find relevant documentation for user questions * - Power RAG (Retrieval Augmented Generation) in AI assistants * - Semantic search across knowledge bases * - List all artifacts by building/worker/tag * @summary Semantic Search Query * @param {string} organisation The organisation ID * @param {string} collectionId The collection ID @@ -13891,7 +16656,7 @@ export class AIVectorDatabaseApi extends BaseAPI { } /** - * Performs semantic search on a collection using vector similarity. Returns the most relevant documents based on meaning, not keyword matching. * * **Use Cases:** * - Find relevant documentation for user questions * - Power RAG (Retrieval Augmented Generation) in AI assistants * - Semantic search across knowledge bases + * Performs semantic search on a collection using vector similarity. Returns the most relevant documents based on meaning, not keyword matching. * * **Three Search Modes:** * * 1. **Text Query** - Provide `query` string, server generates embedding * - Query text is embedded using the collection\'s embedding model * - Embeddings are cached for repeated queries * * 2. **Vector Query** - Provide pre-computed `vector` array * - Skip embedding generation (faster) * - Useful when you\'ve already embedded the query elsewhere * - Vector dimension must match collection (e.g., 1024 for Titan v2) * * 3. **Metadata List** - Set `listByMetadata: true` with `filter` * - Skip semantic search entirely * - Return all documents matching the filter * - Supports cursor-based pagination for large datasets * - Results ordered by sortBy/sortOrder (default: created_at DESC) * * **Filtering:** * - `filter.exact`: Exact match on metadata fields (AND logic) * - `filter.contains`: Array contains filter for tags (ANY match) * - Filters can be combined with semantic search or used alone with listByMetadata * * **Pagination (listByMetadata mode only):** * - Use `cursor` from previous response\'s `nextCursor` to get next page * - Uses keyset pagination for efficient traversal of large datasets * - Control sort with `sortBy` and `sortOrder` * * **Use Cases:** * - Find relevant documentation for user questions * - Power RAG (Retrieval Augmented Generation) in AI assistants * - Semantic search across knowledge bases * - List all artifacts by building/worker/tag * @summary Semantic Search Query * @param {string} organisation The organisation ID * @param {string} collectionId The collection ID @@ -20398,6 +23163,125 @@ export class KVApi extends BaseAPI { +/** + * OrchestrationApi - axios parameter creator + * @export + */ +export const OrchestrationApiAxiosParamCreator = function (configuration?: Configuration) { + return { + /** + * Retrieves the status and synthesized result of a multi-tool orchestration. * * **Orchestration Pattern:** * When the AI requests multiple async tools simultaneously, an orchestration is created * to track all tool executions and synthesize their results into a single coherent response. * * **Flow:** * 1. AI requests multiple async tools (e.g., image generation + web search) * 2. Chat API creates orchestration and returns orchestrationId * 3. Tool Orchestrator Lambda polls all async tools * 4. When all tools complete, Orchestrator synthesizes results using AI * 5. Client polls this endpoint and receives final synthesized response * * **Status Values:** * - pending: Orchestration created, tools not yet started * - polling: Orchestrator is actively polling async tools * - synthesizing: All tools complete, AI is synthesizing response * - complete: Orchestration finished, synthesizedResponse available * - failed: Orchestration failed, error available * * **Polling Recommendations:** * - Poll every 2 seconds * - Maximum poll time: 10 minutes * - Orchestrator handles tool polling internally * * **Benefits over individual polling:** * - Single poll endpoint for multiple async tools * - AI synthesizes all results into coherent response * - Answers the original user question, not just tool summaries + * @summary Get Orchestration Status + * @param {string} organisation The organisation ID + * @param {string} orchestrationId Orchestration identifier for aggregated async tool executions + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + getAIOrchestrationStatus: async (organisation: string, orchestrationId: string, options: RawAxiosRequestConfig = {}): Promise => { + // verify required parameter 'organisation' is not null or undefined + assertParamExists('getAIOrchestrationStatus', 'organisation', organisation) + // verify required parameter 'orchestrationId' is not null or undefined + assertParamExists('getAIOrchestrationStatus', 'orchestrationId', orchestrationId) + const localVarPath = `/api/v3/organizations/{organisation}/ai/tools/orchestrations/{orchestrationId}` + .replace(`{${"organisation"}}`, encodeURIComponent(String(organisation))) + .replace(`{${"orchestrationId"}}`, encodeURIComponent(String(orchestrationId))); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options}; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + // authentication BearerAuth required + // http bearer authentication required + await setBearerAuthToObject(localVarHeaderParameter, configuration) + + + + setSearchParams(localVarUrlObj, localVarQueryParameter); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + } +}; + +/** + * OrchestrationApi - functional programming interface + * @export + */ +export const OrchestrationApiFp = function(configuration?: Configuration) { + const localVarAxiosParamCreator = OrchestrationApiAxiosParamCreator(configuration) + return { + /** + * Retrieves the status and synthesized result of a multi-tool orchestration. * * **Orchestration Pattern:** * When the AI requests multiple async tools simultaneously, an orchestration is created * to track all tool executions and synthesize their results into a single coherent response. * * **Flow:** * 1. AI requests multiple async tools (e.g., image generation + web search) * 2. Chat API creates orchestration and returns orchestrationId * 3. Tool Orchestrator Lambda polls all async tools * 4. When all tools complete, Orchestrator synthesizes results using AI * 5. Client polls this endpoint and receives final synthesized response * * **Status Values:** * - pending: Orchestration created, tools not yet started * - polling: Orchestrator is actively polling async tools * - synthesizing: All tools complete, AI is synthesizing response * - complete: Orchestration finished, synthesizedResponse available * - failed: Orchestration failed, error available * * **Polling Recommendations:** * - Poll every 2 seconds * - Maximum poll time: 10 minutes * - Orchestrator handles tool polling internally * * **Benefits over individual polling:** * - Single poll endpoint for multiple async tools * - AI synthesizes all results into coherent response * - Answers the original user question, not just tool summaries + * @summary Get Orchestration Status + * @param {string} organisation The organisation ID + * @param {string} orchestrationId Orchestration identifier for aggregated async tool executions + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async getAIOrchestrationStatus(organisation: string, orchestrationId: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.getAIOrchestrationStatus(organisation, orchestrationId, options); + const localVarOperationServerIndex = configuration?.serverIndex ?? 0; + const localVarOperationServerBasePath = operationServerMap['OrchestrationApi.getAIOrchestrationStatus']?.[localVarOperationServerIndex]?.url; + return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath); + }, + } +}; + +/** + * OrchestrationApi - factory interface + * @export + */ +export const OrchestrationApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) { + const localVarFp = OrchestrationApiFp(configuration) + return { + /** + * Retrieves the status and synthesized result of a multi-tool orchestration. * * **Orchestration Pattern:** * When the AI requests multiple async tools simultaneously, an orchestration is created * to track all tool executions and synthesize their results into a single coherent response. * * **Flow:** * 1. AI requests multiple async tools (e.g., image generation + web search) * 2. Chat API creates orchestration and returns orchestrationId * 3. Tool Orchestrator Lambda polls all async tools * 4. When all tools complete, Orchestrator synthesizes results using AI * 5. Client polls this endpoint and receives final synthesized response * * **Status Values:** * - pending: Orchestration created, tools not yet started * - polling: Orchestrator is actively polling async tools * - synthesizing: All tools complete, AI is synthesizing response * - complete: Orchestration finished, synthesizedResponse available * - failed: Orchestration failed, error available * * **Polling Recommendations:** * - Poll every 2 seconds * - Maximum poll time: 10 minutes * - Orchestrator handles tool polling internally * * **Benefits over individual polling:** * - Single poll endpoint for multiple async tools * - AI synthesizes all results into coherent response * - Answers the original user question, not just tool summaries + * @summary Get Orchestration Status + * @param {string} organisation The organisation ID + * @param {string} orchestrationId Orchestration identifier for aggregated async tool executions + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + getAIOrchestrationStatus(organisation: string, orchestrationId: string, options?: RawAxiosRequestConfig): AxiosPromise { + return localVarFp.getAIOrchestrationStatus(organisation, orchestrationId, options).then((request) => request(axios, basePath)); + }, + }; +}; + +/** + * OrchestrationApi - object-oriented interface + * @export + * @class OrchestrationApi + * @extends {BaseAPI} + */ +export class OrchestrationApi extends BaseAPI { + /** + * Retrieves the status and synthesized result of a multi-tool orchestration. * * **Orchestration Pattern:** * When the AI requests multiple async tools simultaneously, an orchestration is created * to track all tool executions and synthesize their results into a single coherent response. * * **Flow:** * 1. AI requests multiple async tools (e.g., image generation + web search) * 2. Chat API creates orchestration and returns orchestrationId * 3. Tool Orchestrator Lambda polls all async tools * 4. When all tools complete, Orchestrator synthesizes results using AI * 5. Client polls this endpoint and receives final synthesized response * * **Status Values:** * - pending: Orchestration created, tools not yet started * - polling: Orchestrator is actively polling async tools * - synthesizing: All tools complete, AI is synthesizing response * - complete: Orchestration finished, synthesizedResponse available * - failed: Orchestration failed, error available * * **Polling Recommendations:** * - Poll every 2 seconds * - Maximum poll time: 10 minutes * - Orchestrator handles tool polling internally * * **Benefits over individual polling:** * - Single poll endpoint for multiple async tools * - AI synthesizes all results into coherent response * - Answers the original user question, not just tool summaries + * @summary Get Orchestration Status + * @param {string} organisation The organisation ID + * @param {string} orchestrationId Orchestration identifier for aggregated async tool executions + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof OrchestrationApi + */ + public getAIOrchestrationStatus(organisation: string, orchestrationId: string, options?: RawAxiosRequestConfig) { + return OrchestrationApiFp(this.configuration).getAIOrchestrationStatus(organisation, orchestrationId, options).then((request) => request(this.axios, this.basePath)); + } +} + + + /** * OrganizationsApi - axios parameter creator * @export diff --git a/common.ts b/common.ts index e33a7c8..d8d5bbd 100644 --- a/common.ts +++ b/common.ts @@ -4,7 +4,7 @@ * QuantCDN API * Unified API for QuantCDN Admin and QuantCloud Platform services * - * The version of the OpenAPI document: 4.8.0 + * The version of the OpenAPI document: 4.9.0 * * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/configuration.ts b/configuration.ts index 04bf81a..f2ec991 100644 --- a/configuration.ts +++ b/configuration.ts @@ -4,7 +4,7 @@ * QuantCDN API * Unified API for QuantCDN Admin and QuantCloud Platform services * - * The version of the OpenAPI document: 4.8.0 + * The version of the OpenAPI document: 4.9.0 * * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/docs/AIAgentsApi.md b/docs/AIAgentsApi.md index f1de89a..8524dea 100644 --- a/docs/AIAgentsApi.md +++ b/docs/AIAgentsApi.md @@ -14,7 +14,7 @@ All URIs are relative to *https://dashboard.quantcdn.io* # **chatWithAIAgent** > ChatWithAIAgent200Response chatWithAIAgent(chatWithAIAgentRequest) -Initiates a chat session with a specific AI agent. The agent\'s configuration (system prompt, temperature, model, allowed tools) is automatically applied. * * **Key Features:** * - **Session Management**: Automatic session creation and state tracking * - **Multi-turn Conversations**: Full conversation history maintained server-side * - Agent\'s system prompt is prepended to conversation * - Only agent\'s allowed tools are available * - All tools are auto-executed (no client confirmation) * - Temperature and model from agent config * * **Session Support:** * - Omit `sessionId` to create a new session automatically * - Include `sessionId` to continue an existing conversation * - Sessions expire after 60 minutes of inactivity * - Use `/sessions/{sessionId}` to retrieve full conversation history +Initiates a chat session with a specific AI agent. The agent\'s configuration (system prompt, temperature, model, allowed tools) is automatically applied. * * **Key Features:** * - **Session Management**: Automatic session creation and state tracking * - **Multi-turn Conversations**: Full conversation history maintained server-side * - Agent\'s system prompt is prepended to conversation * - Only agent\'s allowed tools are available * - All tools are auto-executed on cloud (no client confirmation needed) * - Temperature and model from agent config * - Supports sync, streaming, and async modes * * **Execution Modes:** * - **Sync Mode** (default): Standard JSON response, waits for completion * - **Streaming Mode**: Set `stream: true` for SSE token-by-token responses * - **Async Mode**: Set `async: true` for long-running tasks with polling * * **Async/Durable Mode (`async: true`):** * - Returns immediately with `requestId` and `pollUrl` (HTTP 202) * - Uses AWS Lambda Durable Functions for long-running agent tasks * - All tools are auto-executed on cloud (no `waiting_callback` state) * - Poll `/ai/chat/executions/{requestId}` for status * - Ideal for agents with slow tools (image generation, web search, etc.) * * **Session Support:** * - Omit `sessionId` to create a new session automatically * - Include `sessionId` to continue an existing conversation * - Sessions expire after 60 minutes of inactivity * - Sessions work in all modes (sync, streaming, async) * - Use `/sessions/{sessionId}` to retrieve full conversation history ### Example @@ -65,7 +65,8 @@ const { status, data } = await apiInstance.chatWithAIAgent( ### HTTP response details | Status code | Description | Response headers | |-------------|-------------|------------------| -|**200** | Agent response generated successfully | - | +|**200** | Agent response generated successfully (sync mode) | - | +|**202** | Async execution started (when `async: true` in request) | - | |**400** | Invalid request parameters | - | |**403** | Access denied | - | |**404** | Agent not found | - | diff --git a/docs/AIFileStorageApi.md b/docs/AIFileStorageApi.md new file mode 100644 index 0000000..47c0180 --- /dev/null +++ b/docs/AIFileStorageApi.md @@ -0,0 +1,247 @@ +# AIFileStorageApi + +All URIs are relative to *https://dashboard.quantcdn.io* + +|Method | HTTP request | Description| +|------------- | ------------- | -------------| +|[**deleteFile**](#deletefile) | **DELETE** /api/v3/organizations/{organisation}/ai/files/{fileId} | Delete File| +|[**getFile**](#getfile) | **GET** /api/v3/organizations/{organisation}/ai/files/{fileId} | Get File| +|[**listFiles**](#listfiles) | **GET** /api/v3/organizations/{organisation}/ai/files | List Files| +|[**uploadFile**](#uploadfile) | **POST** /api/v3/organizations/{organisation}/ai/files | Upload File to S3| + +# **deleteFile** +> DeleteFile200Response deleteFile() + +Deletes a file from S3 storage. + +### Example + +```typescript +import { + AIFileStorageApi, + Configuration +} from '@quantcdn/quant-client'; + +const configuration = new Configuration(); +const apiInstance = new AIFileStorageApi(configuration); + +let organisation: string; //The organisation ID (default to undefined) +let fileId: string; //The file ID (default to undefined) + +const { status, data } = await apiInstance.deleteFile( + organisation, + fileId +); +``` + +### Parameters + +|Name | Type | Description | Notes| +|------------- | ------------- | ------------- | -------------| +| **organisation** | [**string**] | The organisation ID | defaults to undefined| +| **fileId** | [**string**] | The file ID | defaults to undefined| + + +### Return type + +**DeleteFile200Response** + +### Authorization + +[BearerAuth](../README.md#BearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +|**200** | File deleted successfully | - | +|**403** | Access denied | - | +|**404** | File not found | - | +|**500** | Failed to delete file | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **getFile** +> GetFile200Response getFile() + +Retrieves file metadata and a presigned download URL (valid for 1 hour). + +### Example + +```typescript +import { + AIFileStorageApi, + Configuration +} from '@quantcdn/quant-client'; + +const configuration = new Configuration(); +const apiInstance = new AIFileStorageApi(configuration); + +let organisation: string; //The organisation ID (default to undefined) +let fileId: string; //The file ID (default to undefined) + +const { status, data } = await apiInstance.getFile( + organisation, + fileId +); +``` + +### Parameters + +|Name | Type | Description | Notes| +|------------- | ------------- | ------------- | -------------| +| **organisation** | [**string**] | The organisation ID | defaults to undefined| +| **fileId** | [**string**] | The file ID | defaults to undefined| + + +### Return type + +**GetFile200Response** + +### Authorization + +[BearerAuth](../README.md#BearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +|**200** | File metadata and download URL | - | +|**403** | Access denied | - | +|**404** | File not found | - | +|**500** | Failed to get file | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **listFiles** +> ListFiles200Response listFiles() + +Lists files stored in S3 for this organization with optional metadata filtering and pagination. + +### Example + +```typescript +import { + AIFileStorageApi, + Configuration +} from '@quantcdn/quant-client'; + +const configuration = new Configuration(); +const apiInstance = new AIFileStorageApi(configuration); + +let organisation: string; //The organisation ID (default to undefined) +let filter: string; //JSON-encoded metadata filter. Supports exact match and array contains filters. (optional) (default to undefined) +let limit: number; //Maximum files to return (optional) (default to 50) +let cursor: string; //Pagination cursor from previous response (optional) (default to undefined) + +const { status, data } = await apiInstance.listFiles( + organisation, + filter, + limit, + cursor +); +``` + +### Parameters + +|Name | Type | Description | Notes| +|------------- | ------------- | ------------- | -------------| +| **organisation** | [**string**] | The organisation ID | defaults to undefined| +| **filter** | [**string**] | JSON-encoded metadata filter. Supports exact match and array contains filters. | (optional) defaults to undefined| +| **limit** | [**number**] | Maximum files to return | (optional) defaults to 50| +| **cursor** | [**string**] | Pagination cursor from previous response | (optional) defaults to undefined| + + +### Return type + +**ListFiles200Response** + +### Authorization + +[BearerAuth](../README.md#BearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +|**200** | List of files | - | +|**400** | Invalid filter parameter | - | +|**403** | Access denied | - | +|**500** | Failed to list files | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **uploadFile** +> UploadFile201Response uploadFile(uploadFileRequest) + +Uploads a file to S3 storage for later retrieval. * * **Two Upload Modes:** * * 1. **Direct Upload (≤7MB):** Send base64-encoded content in request body. * * 2. **Presigned URL Upload (any size):** Set `requestUploadUrl: true` to get a presigned S3 PUT URL, then upload directly to S3. * * **Supported Content Types:** * - Images: image/png, image/jpeg, image/gif, image/webp, image/svg+xml * - Documents: application/pdf, text/plain, text/markdown, text/html * - Code: text/javascript, application/json, text/css, text/yaml * - Archives: application/zip, application/gzip * - Video: video/mp4, video/webm (use presigned URL for large files) * * **Metadata:** * Attach any custom metadata for filtering. `artifactType` is auto-populated from contentType if not provided. + +### Example + +```typescript +import { + AIFileStorageApi, + Configuration, + UploadFileRequest +} from '@quantcdn/quant-client'; + +const configuration = new Configuration(); +const apiInstance = new AIFileStorageApi(configuration); + +let organisation: string; //The organisation ID (default to undefined) +let uploadFileRequest: UploadFileRequest; // + +const { status, data } = await apiInstance.uploadFile( + organisation, + uploadFileRequest +); +``` + +### Parameters + +|Name | Type | Description | Notes| +|------------- | ------------- | ------------- | -------------| +| **uploadFileRequest** | **UploadFileRequest**| | | +| **organisation** | [**string**] | The organisation ID | defaults to undefined| + + +### Return type + +**UploadFile201Response** + +### Authorization + +[BearerAuth](../README.md#BearerAuth) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +|**201** | File uploaded or presigned URL generated | - | +|**400** | Invalid request parameters | - | +|**403** | Access denied | - | +|**413** | File too large (use requestUploadUrl for large files) | - | +|**500** | Failed to upload file | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + diff --git a/docs/AIInferenceApi.md b/docs/AIInferenceApi.md index ffd6c1c..320d4ca 100644 --- a/docs/AIInferenceApi.md +++ b/docs/AIInferenceApi.md @@ -7,12 +7,14 @@ All URIs are relative to *https://dashboard.quantcdn.io* |[**chatInference**](#chatinference) | **POST** /api/v3/organizations/{organisation}/ai/chat | Chat inference via API Gateway (buffered responses) with multimodal support| |[**chatInferenceStream**](#chatinferencestream) | **POST** /api/v3/organizations/{organisation}/ai/chat/stream | Chat inference via streaming endpoint (true HTTP streaming) with multimodal support| |[**embeddings**](#embeddings) | **POST** /api/v3/organizations/{organisation}/ai/embeddings | Generate text embeddings for semantic search and RAG applications| +|[**getDurableExecutionStatus**](#getdurableexecutionstatus) | **GET** /api/v3/organizations/{organisation}/ai/chat/executions/{identifier} | Get Durable Execution Status| |[**imageGeneration**](#imagegeneration) | **POST** /api/v3/organizations/{organisation}/ai/image-generation | Generate images with Amazon Nova Canvas| +|[**submitToolCallback**](#submittoolcallback) | **POST** /api/v3/organizations/{organisation}/ai/chat/callback | Submit Client Tool Results (Callback)| # **chatInference** > ChatInference200Response chatInference(chatInferenceRequest) -Sends requests to the AI API Gateway endpoint which buffers responses. Supports text, images, videos, and documents via base64 encoding. * * **Multimodal Support:** * - **Text**: Simple string content * - **Images**: Base64-encoded PNG, JPEG, GIF, WebP (up to 25MB) * - **Videos**: Base64-encoded MP4, MOV, WebM, etc. (up to 25MB) * - **Documents**: Base64-encoded PDF, DOCX, CSV, etc. (up to 25MB) * * **Supported Models:** * - Amazon Nova Lite, Micro, Pro (all support multimodal) * - Claude models (text only) * * **Usage Tips:** * - Use base64 encoding for images/videos < 5-10MB * - Place media before text prompts for best results * - Label multiple media files (e.g., \'Image 1:\', \'Image 2:\') * - Maximum 25MB total payload size * * **Response Patterns:** * - **Text-only**: Returns simple text response when no tools requested * - **Single tool**: Returns `toolUse` object when AI requests one tool * - **Multiple tools**: Returns `toolUse` array when AI requests multiple tools * - **Auto-execute sync**: Automatically executes tool and returns final text response * - **Auto-execute async**: Returns toolUse with `executionId` and `status` for polling +Sends requests to the AI API Gateway endpoint which buffers responses. Supports text, images, videos, and documents via base64 encoding. * * **Execution Modes:** * - **Sync Mode** (default): Standard JSON response, waits for completion (200 response) * - **Async Mode**: Set `async: true` for long-running tasks with polling (202 response) * * **Async/Durable Mode (`async: true`):** * - Returns immediately with `requestId` and `pollUrl` (HTTP 202) * - Uses AWS Lambda Durable Functions for long-running inference * - Supports client-executed tools via `waiting_callback` state * - Poll `/ai/chat/executions/{requestId}` for status * - Submit client tool results via `/ai/chat/callback` * - Ideal for complex prompts, large contexts, or client-side tools * * **Multimodal Support:** * - **Text**: Simple string content * - **Images**: Base64-encoded PNG, JPEG, GIF, WebP (up to 25MB) * - **Videos**: Base64-encoded MP4, MOV, WebM, etc. (up to 25MB) * - **Documents**: Base64-encoded PDF, DOCX, CSV, etc. (up to 25MB) * * **Supported Models (Multimodal):** * - **Claude 4.5 Series**: Sonnet 4.5, Haiku 4.5, Opus 4.5 (images, up to 20 per request) * - **Claude 3.5 Series**: Sonnet v1/v2 (images, up to 20 per request) * - **Amazon Nova**: Lite, Pro, Micro (images, videos, documents) * * **Usage Tips:** * - Use base64 encoding for images/videos < 5-10MB * - Place media before text prompts for best results * - Label multiple media files (e.g., \'Image 1:\', \'Image 2:\') * - Maximum 25MB total payload size * * **Response Patterns:** * - **Text-only**: Returns simple text response when no tools requested * - **Single tool**: Returns `toolUse` object when AI requests one tool * - **Multiple tools**: Returns `toolUse` array when AI requests multiple tools * - **Auto-execute sync**: Automatically executes tool and returns final text response * - **Auto-execute async**: Returns toolUse with `executionId` and `status` for polling ### Example @@ -60,7 +62,8 @@ const { status, data } = await apiInstance.chatInference( ### HTTP response details | Status code | Description | Response headers | |-------------|-------------|------------------| -|**200** | Chat inference completed (buffered response) | - | +|**200** | Chat inference completed (buffered response, sync mode) | - | +|**202** | Async execution started (when `async: true` in request) | - | |**500** | Failed to perform chat inference | - | [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) @@ -68,7 +71,7 @@ const { status, data } = await apiInstance.chatInference( # **chatInferenceStream** > string chatInferenceStream(chatInferenceStreamRequest) -Streams responses from the AI streaming subdomain using Server-Sent Events (SSE). Tokens are streamed in real-time as they are generated. * * **Multimodal Support:** * - **Text**: Simple string content * - **Images**: Base64-encoded PNG, JPEG, GIF, WebP (up to 25MB) * - **Videos**: Base64-encoded MP4, MOV, WebM, etc. (up to 25MB) * - **Documents**: Base64-encoded PDF, DOCX, CSV, etc. (up to 25MB) * * **Supported Models:** * - Amazon Nova Lite, Micro, Pro (all support multimodal) * - Claude models (text only) * * **Usage Tips:** * - Use base64 encoding for images/videos < 5-10MB * - Place media before text prompts for best results * - Label multiple media files (e.g., \'Image 1:\', \'Image 2:\') * - Maximum 25MB total payload size * - Streaming works with all content types (text, image, video, document) +Streams responses from the AI streaming subdomain using Server-Sent Events (SSE). Tokens are streamed in real-time as they are generated. * * **Execution Modes:** * - **Streaming Mode** (default): Real-time SSE token-by-token responses * - **Async Mode**: Set `async: true` for long-running tasks with polling (202 response) * * **Async/Durable Mode (`async: true`):** * - Returns immediately with `requestId` and `pollUrl` (HTTP 202) * - Uses AWS Lambda Durable Functions for long-running inference * - Supports client-executed tools via `waiting_callback` state * - Poll `/ai/chat/executions/{requestId}` for status * - Submit client tool results via `/ai/chat/callback` * * **Multimodal Support:** * - **Text**: Simple string content * - **Images**: Base64-encoded PNG, JPEG, GIF, WebP (up to 25MB) * - **Videos**: Base64-encoded MP4, MOV, WebM, etc. (up to 25MB) * - **Documents**: Base64-encoded PDF, DOCX, CSV, etc. (up to 25MB) * * **Supported Models (Multimodal):** * - **Claude 4.5 Series**: Sonnet 4.5, Haiku 4.5, Opus 4.5 (images, up to 20 per request) * - **Claude 3.5 Series**: Sonnet v1/v2 (images, up to 20 per request) * - **Amazon Nova**: Lite, Pro, Micro (images, videos, documents) * * **Usage Tips:** * - Use base64 encoding for images/videos < 5-10MB * - Place media before text prompts for best results * - Label multiple media files (e.g., \'Image 1:\', \'Image 2:\') * - Maximum 25MB total payload size * - Streaming works with all content types (text, image, video, document) ### Example @@ -110,13 +113,14 @@ const { status, data } = await apiInstance.chatInferenceStream( ### HTTP request headers - **Content-Type**: application/json - - **Accept**: text/event-stream + - **Accept**: text/event-stream, application/json ### HTTP response details | Status code | Description | Response headers | |-------------|-------------|------------------| -|**200** | Streaming response (text/event-stream) | - | +|**200** | Streaming response (text/event-stream, sync mode) | - | +|**202** | Async execution started (when `async: true` in request) | - | |**500** | Failed to perform streaming inference | - | [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) @@ -179,6 +183,63 @@ const { status, data } = await apiInstance.embeddings( [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) +# **getDurableExecutionStatus** +> GetDurableExecutionStatus200Response getDurableExecutionStatus() + +Poll the status of an async/durable chat execution. * * **When to use:** After starting chat inference with `async: true`, poll this endpoint * to check execution status and retrieve results when complete. * * **Identifier:** Accepts either: * - `requestId` (recommended): The short ID returned from the async request * - `executionArn`: The full AWS Lambda durable execution ARN (must be URL-encoded) * * **Statuses:** * - `pending`: Execution is starting (retry shortly) * - `running`: Execution is in progress * - `waiting_callback`: Execution paused, waiting for client tool results * - `complete`: Execution finished successfully * - `failed`: Execution failed with error * * **Client Tool Callback:** * When status is `waiting_callback`, submit tool results via `POST /ai/chat/callback`. * * **Polling Recommendations:** * - Start with 1 second delay, exponential backoff up to 30 seconds * - Stop polling after 15 minutes (consider failed) + +### Example + +```typescript +import { + AIInferenceApi, + Configuration +} from '@quantcdn/quant-client'; + +const configuration = new Configuration(); +const apiInstance = new AIInferenceApi(configuration); + +let organisation: string; //The organisation ID (default to undefined) +let identifier: string; //Either the requestId from async response, or full executionArn (URL-encoded) (default to undefined) + +const { status, data } = await apiInstance.getDurableExecutionStatus( + organisation, + identifier +); +``` + +### Parameters + +|Name | Type | Description | Notes| +|------------- | ------------- | ------------- | -------------| +| **organisation** | [**string**] | The organisation ID | defaults to undefined| +| **identifier** | [**string**] | Either the requestId from async response, or full executionArn (URL-encoded) | defaults to undefined| + + +### Return type + +**GetDurableExecutionStatus200Response** + +### Authorization + +[BearerAuth](../README.md#BearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +|**200** | Execution status retrieved | - | +|**404** | Execution not found | - | +|**403** | Access denied | - | +|**500** | Failed to retrieve execution status | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + # **imageGeneration** > ImageGeneration200Response imageGeneration(imageGenerationRequest) @@ -237,3 +298,62 @@ const { status, data } = await apiInstance.imageGeneration( [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) +# **submitToolCallback** +> SubmitToolCallback200Response submitToolCallback(submitToolCallbackRequest) + +Submit tool execution results to resume a suspended durable execution. * * **When to use:** When polling the execution status returns `waiting_callback`, use this endpoint * to submit the results of client-executed tools. The execution will then resume. * * **Flow:** * 1. Start async chat with client-executed tools (`autoExecute: []` or tools not in autoExecute list) * 2. Poll status until `waiting_callback` * 3. Execute tools locally using `pendingTools` from status response * 4. Submit results here with the `callbackId` * 5. Poll status until `complete` * * **Important:** Each `callbackId` can only be used once. After submission, poll the execution * status to see the updated state. + +### Example + +```typescript +import { + AIInferenceApi, + Configuration, + SubmitToolCallbackRequest +} from '@quantcdn/quant-client'; + +const configuration = new Configuration(); +const apiInstance = new AIInferenceApi(configuration); + +let organisation: string; //The organisation ID (default to undefined) +let submitToolCallbackRequest: SubmitToolCallbackRequest; // + +const { status, data } = await apiInstance.submitToolCallback( + organisation, + submitToolCallbackRequest +); +``` + +### Parameters + +|Name | Type | Description | Notes| +|------------- | ------------- | ------------- | -------------| +| **submitToolCallbackRequest** | **SubmitToolCallbackRequest**| | | +| **organisation** | [**string**] | The organisation ID | defaults to undefined| + + +### Return type + +**SubmitToolCallback200Response** + +### Authorization + +[BearerAuth](../README.md#BearerAuth) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +|**200** | Callback submitted successfully, execution will resume | - | +|**400** | Invalid request (missing callbackId or toolResults) | - | +|**404** | Callback not found or already processed | - | +|**403** | Access denied | - | +|**500** | Failed to submit callback | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + diff --git a/docs/AITaskManagementApi.md b/docs/AITaskManagementApi.md new file mode 100644 index 0000000..1c2adbf --- /dev/null +++ b/docs/AITaskManagementApi.md @@ -0,0 +1,372 @@ +# AITaskManagementApi + +All URIs are relative to *https://dashboard.quantcdn.io* + +|Method | HTTP request | Description| +|------------- | ------------- | -------------| +|[**createTask**](#createtask) | **POST** /api/v3/organizations/{organisation}/ai/tasks | Create a new task| +|[**deleteTask**](#deletetask) | **DELETE** /api/v3/organizations/{organisation}/ai/tasks/{taskId} | Delete a task| +|[**getDependencyGraph**](#getdependencygraph) | **GET** /api/v3/organizations/{organisation}/ai/tasks/{taskListId}/dependency-graph | Get dependency graph for a task list| +|[**getTask**](#gettask) | **GET** /api/v3/organizations/{organisation}/ai/tasks/{taskId} | Get task details| +|[**listTasks**](#listtasks) | **GET** /api/v3/organizations/{organisation}/ai/tasks | List tasks with optional filtering| +|[**updateTask**](#updatetask) | **PUT** /api/v3/organizations/{organisation}/ai/tasks/{taskId} | Update a task| + +# **createTask** +> CreateTask201Response createTask(createTaskRequest) + +Creates a new task for multi-agent coordination and workflow orchestration. * * **Key Features:** * - **Persistent State**: Tasks survive across conversations and sessions * - **Agent Assignment**: Pre-assign tasks to specific agents * - **Task Lists**: Group related tasks using taskListId (implicit - no need to create lists first) * - **Dependencies**: Define task dependencies for workflow orchestration * - **Metadata**: Store flexible JSON metadata for task-specific data * - **Progress Tracking**: Track progress from 0.0 to 1.0 * * **Use Cases:** * - Break down complex requests into manageable steps * - Assign work to specialized agents * - Track long-running operations * - Coordinate multi-agent workflows + +### Example + +```typescript +import { + AITaskManagementApi, + Configuration, + CreateTaskRequest +} from '@quantcdn/quant-client'; + +const configuration = new Configuration(); +const apiInstance = new AITaskManagementApi(configuration); + +let organisation: string; //The organisation ID (default to undefined) +let createTaskRequest: CreateTaskRequest; // + +const { status, data } = await apiInstance.createTask( + organisation, + createTaskRequest +); +``` + +### Parameters + +|Name | Type | Description | Notes| +|------------- | ------------- | ------------- | -------------| +| **createTaskRequest** | **CreateTaskRequest**| | | +| **organisation** | [**string**] | The organisation ID | defaults to undefined| + + +### Return type + +**CreateTask201Response** + +### Authorization + +[BearerAuth](../README.md#BearerAuth) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +|**201** | Task created successfully | - | +|**400** | Invalid request | - | +|**500** | Failed to create task | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **deleteTask** +> DeleteTask200Response deleteTask() + +Permanently deletes a task. This action cannot be undone. * * **Dependency Protection:** * By default, deletion is blocked if other tasks depend on this task (TASK_HAS_DEPENDENTS error). * This prevents breaking workflows. * * **Cascade Delete:** * Use `?cascade=true` to delete the task AND all tasks that depend on it recursively. * Useful for cleaning up entire dependency chains. * * **Examples:** * - DELETE /tasks/{id} - Deletes task if no dependents, otherwise returns 409 error * - DELETE /tasks/{id}?cascade=true - Deletes task and all dependent tasks + +### Example + +```typescript +import { + AITaskManagementApi, + Configuration +} from '@quantcdn/quant-client'; + +const configuration = new Configuration(); +const apiInstance = new AITaskManagementApi(configuration); + +let organisation: string; //The organisation ID (default to undefined) +let taskId: string; //The task UUID (default to undefined) +let cascade: boolean; //If true, delete task and all dependent tasks recursively (optional) (default to false) + +const { status, data } = await apiInstance.deleteTask( + organisation, + taskId, + cascade +); +``` + +### Parameters + +|Name | Type | Description | Notes| +|------------- | ------------- | ------------- | -------------| +| **organisation** | [**string**] | The organisation ID | defaults to undefined| +| **taskId** | [**string**] | The task UUID | defaults to undefined| +| **cascade** | [**boolean**] | If true, delete task and all dependent tasks recursively | (optional) defaults to false| + + +### Return type + +**DeleteTask200Response** + +### Authorization + +[BearerAuth](../README.md#BearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +|**200** | Task deleted successfully | - | +|**409** | Task has dependents - cannot delete without cascade | - | +|**404** | Task not found | - | +|**500** | Failed to delete task | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **getDependencyGraph** +> GetDependencyGraph200Response getDependencyGraph() + +Returns the full dependency graph for all tasks in a task list. * * **Use Cases:** * - Visualize task dependencies in a UI (DAG diagram) * - Analyze workflow structure and critical paths * - Find starting tasks (roots) and terminal tasks (leaves) * - Plan parallel execution by identifying independent task groups * * **Response Structure:** * - `taskCount`: Total number of tasks in the list * - `roots`: Task IDs with no dependencies (starting points) * - `leaves`: Task IDs with no dependents (terminal tasks) * - `graph`: Adjacency list with each task\'s dependencies and dependents + +### Example + +```typescript +import { + AITaskManagementApi, + Configuration +} from '@quantcdn/quant-client'; + +const configuration = new Configuration(); +const apiInstance = new AITaskManagementApi(configuration); + +let organisation: string; //The organisation ID (default to undefined) +let taskListId: string; //The task list ID to get the dependency graph for (default to undefined) + +const { status, data } = await apiInstance.getDependencyGraph( + organisation, + taskListId +); +``` + +### Parameters + +|Name | Type | Description | Notes| +|------------- | ------------- | ------------- | -------------| +| **organisation** | [**string**] | The organisation ID | defaults to undefined| +| **taskListId** | [**string**] | The task list ID to get the dependency graph for | defaults to undefined| + + +### Return type + +**GetDependencyGraph200Response** + +### Authorization + +[BearerAuth](../README.md#BearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +|**200** | Dependency graph retrieved successfully | - | +|**500** | Failed to get dependency graph | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **getTask** +> GetTask200Response getTask() + +Retrieves detailed information about a specific task including status, progress, dependencies, and results. + +### Example + +```typescript +import { + AITaskManagementApi, + Configuration +} from '@quantcdn/quant-client'; + +const configuration = new Configuration(); +const apiInstance = new AITaskManagementApi(configuration); + +let organisation: string; //The organisation ID (default to undefined) +let taskId: string; //The task UUID (default to undefined) + +const { status, data } = await apiInstance.getTask( + organisation, + taskId +); +``` + +### Parameters + +|Name | Type | Description | Notes| +|------------- | ------------- | ------------- | -------------| +| **organisation** | [**string**] | The organisation ID | defaults to undefined| +| **taskId** | [**string**] | The task UUID | defaults to undefined| + + +### Return type + +**GetTask200Response** + +### Authorization + +[BearerAuth](../README.md#BearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +|**200** | Task details retrieved successfully | - | +|**404** | Task not found | - | +|**500** | Failed to get task | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **listTasks** +> ListTasks200Response listTasks() + +Lists tasks for an organization with optional filtering. Filters can be combined for powerful queries. * * **Filter Examples:** * - All tasks in a list: ?taskListId=world-1 * - Pending tasks in a list: ?taskListId=world-1&status=pending * - Tasks assigned to an agent: ?assignedAgentId=agent-code-reviewer * - Combined: ?taskListId=world-1&status=in_progress&assignedAgentId=agent-1 * * **Reverse Dependency Lookup:** * Use `dependsOn` to find tasks that depend on a specific task (waiting for it to complete): * - ?dependsOn=task-123 - Returns task IDs only (lightweight) * - ?dependsOn=task-123&includeDetails=true - Returns full task objects * - ?dependsOn=task-123&status=pending - Pending tasks waiting for task-123 * * **Ordering:** * Tasks are returned in reverse chronological order (most recent first). + +### Example + +```typescript +import { + AITaskManagementApi, + Configuration +} from '@quantcdn/quant-client'; + +const configuration = new Configuration(); +const apiInstance = new AITaskManagementApi(configuration); + +let organisation: string; //The organisation ID (default to undefined) +let taskListId: string; //Filter tasks by task list ID. Task lists are implicit groupings - any string can be used. (optional) (default to undefined) +let status: 'pending' | 'in_progress' | 'completed' | 'failed' | 'cancelled' | 'blocked'; //Filter tasks by status (optional) (default to undefined) +let assignedAgentId: string; //Filter tasks by assigned agent ID (optional) (default to undefined) +let limit: number; //Maximum number of tasks to return (default 50, max 100) (optional) (default to 50) +let dependsOn: string; //Reverse lookup: find tasks that depend on this task ID. Returns tasks waiting for the specified task to complete. (optional) (default to undefined) +let includeDetails: boolean; //When using dependsOn, return full task objects in addition to IDs. Default false (IDs only for lightweight responses). (optional) (default to false) + +const { status, data } = await apiInstance.listTasks( + organisation, + taskListId, + status, + assignedAgentId, + limit, + dependsOn, + includeDetails +); +``` + +### Parameters + +|Name | Type | Description | Notes| +|------------- | ------------- | ------------- | -------------| +| **organisation** | [**string**] | The organisation ID | defaults to undefined| +| **taskListId** | [**string**] | Filter tasks by task list ID. Task lists are implicit groupings - any string can be used. | (optional) defaults to undefined| +| **status** | [**'pending' | 'in_progress' | 'completed' | 'failed' | 'cancelled' | 'blocked'**]**Array<'pending' | 'in_progress' | 'completed' | 'failed' | 'cancelled' | 'blocked'>** | Filter tasks by status | (optional) defaults to undefined| +| **assignedAgentId** | [**string**] | Filter tasks by assigned agent ID | (optional) defaults to undefined| +| **limit** | [**number**] | Maximum number of tasks to return (default 50, max 100) | (optional) defaults to 50| +| **dependsOn** | [**string**] | Reverse lookup: find tasks that depend on this task ID. Returns tasks waiting for the specified task to complete. | (optional) defaults to undefined| +| **includeDetails** | [**boolean**] | When using dependsOn, return full task objects in addition to IDs. Default false (IDs only for lightweight responses). | (optional) defaults to false| + + +### Return type + +**ListTasks200Response** + +### Authorization + +[BearerAuth](../README.md#BearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +|**200** | Tasks retrieved successfully. Response format varies: standard returns {tasks, count}, with dependsOn returns {taskIds, count, dependsOn}, with dependsOn+includeDetails returns {taskIds, tasks, count, dependsOn} | - | +|**500** | Failed to list tasks | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **updateTask** +> UpdateTask200Response updateTask(updateTaskRequest) + +Updates an existing task. All fields are optional - only provided fields will be updated. * * **Status Transitions:** * - Changing from **pending** to **in_progress** automatically sets startedAt timestamp * - Changing to **completed**, **failed**, or **cancelled** automatically sets completedAt timestamp * - Changing to **blocked** automatically sets blockedAt timestamp * - Changing from **blocked** to **in_progress** or **pending** clears blocked fields * - Completed tasks get a 30-day TTL for automatic cleanup * * **Progress Updates:** * - Update progress (0.0 to 1.0) to track completion percentage * - Update progressMessage for human-readable status updates * - Set result object when task completes successfully * - Set error string when task fails * - Set blockedReason and blockedByTaskIds when blocking a task + +### Example + +```typescript +import { + AITaskManagementApi, + Configuration, + UpdateTaskRequest +} from '@quantcdn/quant-client'; + +const configuration = new Configuration(); +const apiInstance = new AITaskManagementApi(configuration); + +let organisation: string; //The organisation ID (default to undefined) +let taskId: string; //The task UUID (default to undefined) +let updateTaskRequest: UpdateTaskRequest; // + +const { status, data } = await apiInstance.updateTask( + organisation, + taskId, + updateTaskRequest +); +``` + +### Parameters + +|Name | Type | Description | Notes| +|------------- | ------------- | ------------- | -------------| +| **updateTaskRequest** | **UpdateTaskRequest**| | | +| **organisation** | [**string**] | The organisation ID | defaults to undefined| +| **taskId** | [**string**] | The task UUID | defaults to undefined| + + +### Return type + +**UpdateTask200Response** + +### Authorization + +[BearerAuth](../README.md#BearerAuth) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +|**200** | Task updated successfully | - | +|**400** | Invalid request | - | +|**404** | Task not found | - | +|**500** | Failed to update task | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + diff --git a/docs/AIToolsApi.md b/docs/AIToolsApi.md index a04eac6..5936f09 100644 --- a/docs/AIToolsApi.md +++ b/docs/AIToolsApi.md @@ -4,11 +4,69 @@ All URIs are relative to *https://dashboard.quantcdn.io* |Method | HTTP request | Description| |------------- | ------------- | -------------| +|[**getAIOrchestrationStatus**](#getaiorchestrationstatus) | **GET** /api/v3/organizations/{organisation}/ai/tools/orchestrations/{orchestrationId} | Get Orchestration Status| |[**getAIToolExecutionStatus**](#getaitoolexecutionstatus) | **GET** /api/v3/organizations/{organisation}/ai/tools/executions/{executionId} | Get async tool execution status and result| |[**listAIToolExecutions**](#listaitoolexecutions) | **GET** /api/v3/organizations/{organisation}/ai/tools/executions | List tool executions for monitoring and debugging| |[**listAIToolNames**](#listaitoolnames) | **GET** /api/v3/organizations/{organisation}/ai/tools/names | List tool names only (lightweight response)| |[**listAITools**](#listaitools) | **GET** /api/v3/organizations/{organisation}/ai/tools | List available built-in tools for function calling| +# **getAIOrchestrationStatus** +> GetAIOrchestrationStatus200Response getAIOrchestrationStatus() + +Retrieves the status and synthesized result of a multi-tool orchestration. * * **Orchestration Pattern:** * When the AI requests multiple async tools simultaneously, an orchestration is created * to track all tool executions and synthesize their results into a single coherent response. * * **Flow:** * 1. AI requests multiple async tools (e.g., image generation + web search) * 2. Chat API creates orchestration and returns orchestrationId * 3. Tool Orchestrator Lambda polls all async tools * 4. When all tools complete, Orchestrator synthesizes results using AI * 5. Client polls this endpoint and receives final synthesized response * * **Status Values:** * - pending: Orchestration created, tools not yet started * - polling: Orchestrator is actively polling async tools * - synthesizing: All tools complete, AI is synthesizing response * - complete: Orchestration finished, synthesizedResponse available * - failed: Orchestration failed, error available * * **Polling Recommendations:** * - Poll every 2 seconds * - Maximum poll time: 10 minutes * - Orchestrator handles tool polling internally * * **Benefits over individual polling:** * - Single poll endpoint for multiple async tools * - AI synthesizes all results into coherent response * - Answers the original user question, not just tool summaries + +### Example + +```typescript +import { + AIToolsApi, + Configuration +} from '@quantcdn/quant-client'; + +const configuration = new Configuration(); +const apiInstance = new AIToolsApi(configuration); + +let organisation: string; //The organisation ID (default to undefined) +let orchestrationId: string; //Orchestration identifier for aggregated async tool executions (default to undefined) + +const { status, data } = await apiInstance.getAIOrchestrationStatus( + organisation, + orchestrationId +); +``` + +### Parameters + +|Name | Type | Description | Notes| +|------------- | ------------- | ------------- | -------------| +| **organisation** | [**string**] | The organisation ID | defaults to undefined| +| **orchestrationId** | [**string**] | Orchestration identifier for aggregated async tool executions | defaults to undefined| + + +### Return type + +**GetAIOrchestrationStatus200Response** + +### Authorization + +[BearerAuth](../README.md#BearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +|**200** | Orchestration status retrieved successfully | - | +|**404** | Orchestration not found (may have expired after 24h) | - | +|**403** | Access denied | - | +|**500** | Failed to retrieve orchestration status | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + # **getAIToolExecutionStatus** > GetAIToolExecutionStatus200Response getAIToolExecutionStatus() diff --git a/docs/AIVectorDatabaseApi.md b/docs/AIVectorDatabaseApi.md index 8b5cb5f..28c191c 100644 --- a/docs/AIVectorDatabaseApi.md +++ b/docs/AIVectorDatabaseApi.md @@ -240,7 +240,7 @@ const { status, data } = await apiInstance.listVectorCollections( # **queryVectorCollection** > QueryVectorCollection200Response queryVectorCollection(queryVectorCollectionRequest) -Performs semantic search on a collection using vector similarity. Returns the most relevant documents based on meaning, not keyword matching. * * **Use Cases:** * - Find relevant documentation for user questions * - Power RAG (Retrieval Augmented Generation) in AI assistants * - Semantic search across knowledge bases +Performs semantic search on a collection using vector similarity. Returns the most relevant documents based on meaning, not keyword matching. * * **Three Search Modes:** * * 1. **Text Query** - Provide `query` string, server generates embedding * - Query text is embedded using the collection\'s embedding model * - Embeddings are cached for repeated queries * * 2. **Vector Query** - Provide pre-computed `vector` array * - Skip embedding generation (faster) * - Useful when you\'ve already embedded the query elsewhere * - Vector dimension must match collection (e.g., 1024 for Titan v2) * * 3. **Metadata List** - Set `listByMetadata: true` with `filter` * - Skip semantic search entirely * - Return all documents matching the filter * - Supports cursor-based pagination for large datasets * - Results ordered by sortBy/sortOrder (default: created_at DESC) * * **Filtering:** * - `filter.exact`: Exact match on metadata fields (AND logic) * - `filter.contains`: Array contains filter for tags (ANY match) * - Filters can be combined with semantic search or used alone with listByMetadata * * **Pagination (listByMetadata mode only):** * - Use `cursor` from previous response\'s `nextCursor` to get next page * - Uses keyset pagination for efficient traversal of large datasets * - Control sort with `sortBy` and `sortOrder` * * **Use Cases:** * - Find relevant documentation for user questions * - Power RAG (Retrieval Augmented Generation) in AI assistants * - Semantic search across knowledge bases * - List all artifacts by building/worker/tag ### Example diff --git a/docs/ChatInference202Response.md b/docs/ChatInference202Response.md new file mode 100644 index 0000000..c408a65 --- /dev/null +++ b/docs/ChatInference202Response.md @@ -0,0 +1,28 @@ +# ChatInference202Response + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**requestId** | **string** | Unique request identifier for polling | [default to undefined] +**sessionId** | **string** | Session ID for conversation continuity | [optional] [default to undefined] +**status** | **string** | Initial execution status | [default to undefined] +**message** | **string** | Human-readable status message | [optional] [default to undefined] +**pollUrl** | **string** | URL to poll for execution status | [default to undefined] + +## Example + +```typescript +import { ChatInference202Response } from '@quantcdn/quant-client'; + +const instance: ChatInference202Response = { + requestId, + sessionId, + status, + message, + pollUrl, +}; +``` + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/docs/ChatInferenceRequest.md b/docs/ChatInferenceRequest.md index 4563db8..b8e9ce0 100644 --- a/docs/ChatInferenceRequest.md +++ b/docs/ChatInferenceRequest.md @@ -8,13 +8,15 @@ Name | Type | Description | Notes **messages** | [**Array<ChatInferenceRequestMessagesInner>**](ChatInferenceRequestMessagesInner.md) | Array of chat messages. Content can be a simple string or an array of content blocks for multimodal input. | [default to undefined] **modelId** | **string** | Model ID. Use Nova models for multimodal support. | [default to undefined] **temperature** | **number** | | [optional] [default to 0.7] -**maxTokens** | **number** | | [optional] [default to 1024] +**maxTokens** | **number** | Max tokens. Claude 4.5 supports up to 64k. | [optional] [default to 4096] **topP** | **number** | | [optional] [default to undefined] **stream** | **boolean** | Ignored in buffered mode, always returns complete response | [optional] [default to undefined] **systemPrompt** | **string** | Optional custom system prompt. When tools are enabled, this is prepended with tool usage guidance. | [optional] [default to undefined] **stopSequences** | **Array<string>** | Custom stop sequences | [optional] [default to undefined] **responseFormat** | [**ChatInferenceRequestResponseFormat**](ChatInferenceRequestResponseFormat.md) | | [optional] [default to undefined] **toolConfig** | [**ChatInferenceRequestToolConfig**](ChatInferenceRequestToolConfig.md) | | [optional] [default to undefined] +**sessionId** | **string** | Optional session ID for conversation continuity. Omit to use stateless mode, include to continue an existing session. | [optional] [default to undefined] +**async** | **boolean** | Enable async/durable execution mode. When true, returns 202 with pollUrl instead of waiting for completion. Use for long-running inference, client-executed tools, or operations >30 seconds. | [optional] [default to false] ## Example @@ -32,6 +34,8 @@ const instance: ChatInferenceRequest = { stopSequences, responseFormat, toolConfig, + sessionId, + async, }; ``` diff --git a/docs/ChatInferenceStreamRequest.md b/docs/ChatInferenceStreamRequest.md index 4d4c480..264072b 100644 --- a/docs/ChatInferenceStreamRequest.md +++ b/docs/ChatInferenceStreamRequest.md @@ -8,12 +8,14 @@ Name | Type | Description | Notes **messages** | [**Array<ChatInferenceStreamRequestMessagesInner>**](ChatInferenceStreamRequestMessagesInner.md) | Array of chat messages. Content can be a simple string or an array of content blocks for multimodal input. | [default to undefined] **modelId** | **string** | Model ID. Use Nova models for multimodal support. | [default to undefined] **temperature** | **number** | | [optional] [default to 0.7] -**maxTokens** | **number** | | [optional] [default to 1024] +**maxTokens** | **number** | Max tokens. Claude 4.5 supports up to 64k. | [optional] [default to 4096] **topP** | **number** | | [optional] [default to undefined] **systemPrompt** | **string** | Optional custom system prompt. When tools are enabled, this is prepended with tool usage guidance. | [optional] [default to undefined] **stopSequences** | **Array<string>** | Custom stop sequences | [optional] [default to undefined] **responseFormat** | [**ChatInferenceRequestResponseFormat**](ChatInferenceRequestResponseFormat.md) | | [optional] [default to undefined] **toolConfig** | [**ChatInferenceRequestToolConfig**](ChatInferenceRequestToolConfig.md) | | [optional] [default to undefined] +**sessionId** | **string** | Optional session ID for conversation continuity. Omit to use stateless mode, include to continue an existing session. | [optional] [default to undefined] +**async** | **boolean** | Enable async/durable execution mode. When true, returns 202 with pollUrl instead of streaming. Use for long-running inference, client-executed tools, or operations >30 seconds. | [optional] [default to false] ## Example @@ -30,6 +32,8 @@ const instance: ChatInferenceStreamRequest = { stopSequences, responseFormat, toolConfig, + sessionId, + async, }; ``` diff --git a/docs/ChatWithAIAgent202Response.md b/docs/ChatWithAIAgent202Response.md new file mode 100644 index 0000000..acf7e94 --- /dev/null +++ b/docs/ChatWithAIAgent202Response.md @@ -0,0 +1,32 @@ +# ChatWithAIAgent202Response + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**requestId** | **string** | Unique request identifier for polling | [default to undefined] +**agentId** | **string** | The agent processing the request | [default to undefined] +**agentName** | **string** | Human-readable agent name | [optional] [default to undefined] +**sessionId** | **string** | Session ID (if provided) | [optional] [default to undefined] +**status** | **string** | Initial status | [default to undefined] +**message** | **string** | | [optional] [default to undefined] +**pollUrl** | **string** | URL to poll for execution status | [default to undefined] + +## Example + +```typescript +import { ChatWithAIAgent202Response } from '@quantcdn/quant-client'; + +const instance: ChatWithAIAgent202Response = { + requestId, + agentId, + agentName, + sessionId, + status, + message, + pollUrl, +}; +``` + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/docs/ChatWithAIAgentRequest.md b/docs/ChatWithAIAgentRequest.md index 47dc415..3347b4c 100644 --- a/docs/ChatWithAIAgentRequest.md +++ b/docs/ChatWithAIAgentRequest.md @@ -9,6 +9,8 @@ Name | Type | Description | Notes **sessionId** | **string** | Optional session ID to continue a conversation | [optional] [default to undefined] **userId** | **string** | Optional user identifier for session isolation | [optional] [default to undefined] **stream** | **boolean** | Whether to stream the response (SSE) | [optional] [default to false] +**async** | **boolean** | Enable async/durable execution mode. When true, returns 202 with pollUrl. Use for long-running agent tasks. | [optional] [default to false] +**system** | **string** | Optional additional system prompt (appended to agent\'s configured prompt) | [optional] [default to undefined] ## Example @@ -20,6 +22,8 @@ const instance: ChatWithAIAgentRequest = { sessionId, userId, stream, + async, + system, }; ``` diff --git a/docs/CreateTask201Response.md b/docs/CreateTask201Response.md new file mode 100644 index 0000000..e4654d2 --- /dev/null +++ b/docs/CreateTask201Response.md @@ -0,0 +1,28 @@ +# CreateTask201Response + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**taskId** | **string** | | [optional] [default to undefined] +**orgId** | **string** | | [optional] [default to undefined] +**title** | **string** | | [optional] [default to undefined] +**status** | **string** | | [optional] [default to undefined] +**createdAt** | **number** | | [optional] [default to undefined] + +## Example + +```typescript +import { CreateTask201Response } from '@quantcdn/quant-client'; + +const instance: CreateTask201Response = { + taskId, + orgId, + title, + status, + createdAt, +}; +``` + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/docs/CreateTaskRequest.md b/docs/CreateTaskRequest.md new file mode 100644 index 0000000..45c197f --- /dev/null +++ b/docs/CreateTaskRequest.md @@ -0,0 +1,40 @@ +# CreateTaskRequest + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**title** | **string** | Task title | [default to undefined] +**description** | **string** | Detailed task description | [optional] [default to undefined] +**taskListId** | **string** | Task list ID for grouping related tasks (implicit - lists are created automatically) | [optional] [default to undefined] +**status** | **string** | Initial task status | [optional] [default to StatusEnum_Pending] +**assignedAgentId** | **string** | Pre-assign task to specific agent | [optional] [default to undefined] +**createdByAgentId** | **string** | Agent ID that created this task | [optional] [default to undefined] +**dependsOn** | **Array<string>** | Task IDs that must complete before this task can start | [optional] [default to undefined] +**metadata** | **object** | Flexible JSON metadata for task-specific data | [optional] [default to undefined] +**maxRetries** | **number** | Maximum retry attempts on failure | [optional] [default to 3] +**blockedReason** | **string** | Reason task is blocked (when status is blocked) | [optional] [default to undefined] +**blockedByTaskIds** | **Array<string>** | Task IDs that are blocking this task | [optional] [default to undefined] + +## Example + +```typescript +import { CreateTaskRequest } from '@quantcdn/quant-client'; + +const instance: CreateTaskRequest = { + title, + description, + taskListId, + status, + assignedAgentId, + createdByAgentId, + dependsOn, + metadata, + maxRetries, + blockedReason, + blockedByTaskIds, +}; +``` + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/docs/DeleteFile200Response.md b/docs/DeleteFile200Response.md new file mode 100644 index 0000000..4537c84 --- /dev/null +++ b/docs/DeleteFile200Response.md @@ -0,0 +1,22 @@ +# DeleteFile200Response + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**message** | **string** | | [optional] [default to undefined] +**fileId** | **string** | | [optional] [default to undefined] + +## Example + +```typescript +import { DeleteFile200Response } from '@quantcdn/quant-client'; + +const instance: DeleteFile200Response = { + message, + fileId, +}; +``` + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/docs/DeleteTask200Response.md b/docs/DeleteTask200Response.md new file mode 100644 index 0000000..54ad0db --- /dev/null +++ b/docs/DeleteTask200Response.md @@ -0,0 +1,24 @@ +# DeleteTask200Response + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**deleted** | **boolean** | | [optional] [default to undefined] +**deletedCount** | **number** | Number of tasks deleted (more than 1 for cascade) | [optional] [default to undefined] +**deletedTaskIds** | **Array<string>** | | [optional] [default to undefined] + +## Example + +```typescript +import { DeleteTask200Response } from '@quantcdn/quant-client'; + +const instance: DeleteTask200Response = { + deleted, + deletedCount, + deletedTaskIds, +}; +``` + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/docs/DeleteTask409Response.md b/docs/DeleteTask409Response.md new file mode 100644 index 0000000..9a22202 --- /dev/null +++ b/docs/DeleteTask409Response.md @@ -0,0 +1,24 @@ +# DeleteTask409Response + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**error** | **string** | | [optional] [default to undefined] +**message** | **string** | | [optional] [default to undefined] +**dependentTaskIds** | **Array<string>** | | [optional] [default to undefined] + +## Example + +```typescript +import { DeleteTask409Response } from '@quantcdn/quant-client'; + +const instance: DeleteTask409Response = { + error, + message, + dependentTaskIds, +}; +``` + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/docs/GetAIOrchestrationStatus200Response.md b/docs/GetAIOrchestrationStatus200Response.md new file mode 100644 index 0000000..9a2ba14 --- /dev/null +++ b/docs/GetAIOrchestrationStatus200Response.md @@ -0,0 +1,36 @@ +# GetAIOrchestrationStatus200Response + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**orchestrationId** | **string** | Unique orchestration identifier | [default to undefined] +**status** | **string** | Current orchestration status | [default to undefined] +**toolCount** | **number** | Total number of async tools in this orchestration | [default to undefined] +**completedTools** | **number** | Number of tools that have completed | [optional] [default to undefined] +**synthesizedResponse** | **string** | AI-synthesized response combining all tool results (only present when status=complete) | [optional] [default to undefined] +**tools** | [**Array<GetAIOrchestrationStatus200ResponseToolsInner>**](GetAIOrchestrationStatus200ResponseToolsInner.md) | Status of individual tool executions | [optional] [default to undefined] +**error** | **string** | Error message (only present when status=failed) | [optional] [default to undefined] +**createdAt** | **string** | When orchestration was created | [default to undefined] +**completedAt** | **string** | When orchestration completed (if status in complete or failed) | [optional] [default to undefined] + +## Example + +```typescript +import { GetAIOrchestrationStatus200Response } from '@quantcdn/quant-client'; + +const instance: GetAIOrchestrationStatus200Response = { + orchestrationId, + status, + toolCount, + completedTools, + synthesizedResponse, + tools, + error, + createdAt, + completedAt, +}; +``` + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/docs/GetAIOrchestrationStatus200ResponseToolsInner.md b/docs/GetAIOrchestrationStatus200ResponseToolsInner.md new file mode 100644 index 0000000..58021a6 --- /dev/null +++ b/docs/GetAIOrchestrationStatus200ResponseToolsInner.md @@ -0,0 +1,28 @@ +# GetAIOrchestrationStatus200ResponseToolsInner + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**executionId** | **string** | | [optional] [default to undefined] +**toolName** | **string** | | [optional] [default to undefined] +**status** | **string** | | [optional] [default to undefined] +**result** | **object** | Tool result (if complete) | [optional] [default to undefined] +**error** | **string** | Error message (if failed) | [optional] [default to undefined] + +## Example + +```typescript +import { GetAIOrchestrationStatus200ResponseToolsInner } from '@quantcdn/quant-client'; + +const instance: GetAIOrchestrationStatus200ResponseToolsInner = { + executionId, + toolName, + status, + result, + error, +}; +``` + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/docs/GetAIOrchestrationStatus404Response.md b/docs/GetAIOrchestrationStatus404Response.md new file mode 100644 index 0000000..996a8e5 --- /dev/null +++ b/docs/GetAIOrchestrationStatus404Response.md @@ -0,0 +1,22 @@ +# GetAIOrchestrationStatus404Response + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**error** | **string** | | [optional] [default to undefined] +**orchestrationId** | **string** | | [optional] [default to undefined] + +## Example + +```typescript +import { GetAIOrchestrationStatus404Response } from '@quantcdn/quant-client'; + +const instance: GetAIOrchestrationStatus404Response = { + error, + orchestrationId, +}; +``` + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/docs/GetDependencyGraph200Response.md b/docs/GetDependencyGraph200Response.md new file mode 100644 index 0000000..73ed687 --- /dev/null +++ b/docs/GetDependencyGraph200Response.md @@ -0,0 +1,28 @@ +# GetDependencyGraph200Response + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**taskListId** | **string** | | [optional] [default to undefined] +**taskCount** | **number** | | [optional] [default to undefined] +**roots** | **Array<string>** | Task IDs with no dependencies | [optional] [default to undefined] +**leaves** | **Array<string>** | Task IDs with no dependents | [optional] [default to undefined] +**graph** | **object** | Adjacency list with task summaries, dependsOn, and dependents arrays | [optional] [default to undefined] + +## Example + +```typescript +import { GetDependencyGraph200Response } from '@quantcdn/quant-client'; + +const instance: GetDependencyGraph200Response = { + taskListId, + taskCount, + roots, + leaves, + graph, +}; +``` + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/docs/GetDurableExecutionStatus200Response.md b/docs/GetDurableExecutionStatus200Response.md new file mode 100644 index 0000000..961d045 --- /dev/null +++ b/docs/GetDurableExecutionStatus200Response.md @@ -0,0 +1,34 @@ +# GetDurableExecutionStatus200Response + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**requestId** | **string** | | [optional] [default to undefined] +**executionArn** | **string** | | [optional] [default to undefined] +**status** | **string** | | [optional] [default to undefined] +**awsStatus** | **string** | Raw AWS Step Functions status | [optional] [default to undefined] +**callbackId** | **string** | Present when status is waiting_callback - use with /chat/callback | [optional] [default to undefined] +**pendingTools** | [**Array<GetDurableExecutionStatus200ResponsePendingToolsInner>**](GetDurableExecutionStatus200ResponsePendingToolsInner.md) | Present when status is waiting_callback - tools waiting for results | [optional] [default to undefined] +**result** | [**GetDurableExecutionStatus200ResponseResult**](GetDurableExecutionStatus200ResponseResult.md) | | [optional] [default to undefined] +**error** | [**GetDurableExecutionStatus200ResponseError**](GetDurableExecutionStatus200ResponseError.md) | | [optional] [default to undefined] + +## Example + +```typescript +import { GetDurableExecutionStatus200Response } from '@quantcdn/quant-client'; + +const instance: GetDurableExecutionStatus200Response = { + requestId, + executionArn, + status, + awsStatus, + callbackId, + pendingTools, + result, + error, +}; +``` + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/docs/GetDurableExecutionStatus200ResponseError.md b/docs/GetDurableExecutionStatus200ResponseError.md new file mode 100644 index 0000000..51d568e --- /dev/null +++ b/docs/GetDurableExecutionStatus200ResponseError.md @@ -0,0 +1,23 @@ +# GetDurableExecutionStatus200ResponseError + +Present when status is failed + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**ErrorMessage** | **string** | | [optional] [default to undefined] +**ErrorType** | **string** | | [optional] [default to undefined] + +## Example + +```typescript +import { GetDurableExecutionStatus200ResponseError } from '@quantcdn/quant-client'; + +const instance: GetDurableExecutionStatus200ResponseError = { + ErrorMessage, + ErrorType, +}; +``` + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/docs/GetDurableExecutionStatus200ResponsePendingToolsInner.md b/docs/GetDurableExecutionStatus200ResponsePendingToolsInner.md new file mode 100644 index 0000000..93a7eaa --- /dev/null +++ b/docs/GetDurableExecutionStatus200ResponsePendingToolsInner.md @@ -0,0 +1,24 @@ +# GetDurableExecutionStatus200ResponsePendingToolsInner + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**name** | **string** | | [optional] [default to undefined] +**toolUseId** | **string** | | [optional] [default to undefined] +**input** | **object** | | [optional] [default to undefined] + +## Example + +```typescript +import { GetDurableExecutionStatus200ResponsePendingToolsInner } from '@quantcdn/quant-client'; + +const instance: GetDurableExecutionStatus200ResponsePendingToolsInner = { + name, + toolUseId, + input, +}; +``` + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/docs/GetDurableExecutionStatus200ResponseResult.md b/docs/GetDurableExecutionStatus200ResponseResult.md new file mode 100644 index 0000000..1bf5cc0 --- /dev/null +++ b/docs/GetDurableExecutionStatus200ResponseResult.md @@ -0,0 +1,25 @@ +# GetDurableExecutionStatus200ResponseResult + +Present when status is complete + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**response** | [**GetDurableExecutionStatus200ResponseResultResponse**](GetDurableExecutionStatus200ResponseResultResponse.md) | | [optional] [default to undefined] +**usage** | [**GetDurableExecutionStatus200ResponseResultUsage**](GetDurableExecutionStatus200ResponseResultUsage.md) | | [optional] [default to undefined] +**toolExecutions** | **Array<object>** | | [optional] [default to undefined] + +## Example + +```typescript +import { GetDurableExecutionStatus200ResponseResult } from '@quantcdn/quant-client'; + +const instance: GetDurableExecutionStatus200ResponseResult = { + response, + usage, + toolExecutions, +}; +``` + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/docs/GetDurableExecutionStatus200ResponseResultResponse.md b/docs/GetDurableExecutionStatus200ResponseResultResponse.md new file mode 100644 index 0000000..69075d2 --- /dev/null +++ b/docs/GetDurableExecutionStatus200ResponseResultResponse.md @@ -0,0 +1,22 @@ +# GetDurableExecutionStatus200ResponseResultResponse + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**role** | **string** | | [optional] [default to undefined] +**content** | **string** | | [optional] [default to undefined] + +## Example + +```typescript +import { GetDurableExecutionStatus200ResponseResultResponse } from '@quantcdn/quant-client'; + +const instance: GetDurableExecutionStatus200ResponseResultResponse = { + role, + content, +}; +``` + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/docs/GetDurableExecutionStatus200ResponseResultUsage.md b/docs/GetDurableExecutionStatus200ResponseResultUsage.md new file mode 100644 index 0000000..7fdf06d --- /dev/null +++ b/docs/GetDurableExecutionStatus200ResponseResultUsage.md @@ -0,0 +1,24 @@ +# GetDurableExecutionStatus200ResponseResultUsage + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**inputTokens** | **number** | | [optional] [default to undefined] +**outputTokens** | **number** | | [optional] [default to undefined] +**totalTokens** | **number** | | [optional] [default to undefined] + +## Example + +```typescript +import { GetDurableExecutionStatus200ResponseResultUsage } from '@quantcdn/quant-client'; + +const instance: GetDurableExecutionStatus200ResponseResultUsage = { + inputTokens, + outputTokens, + totalTokens, +}; +``` + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/docs/GetFile200Response.md b/docs/GetFile200Response.md new file mode 100644 index 0000000..4545511 --- /dev/null +++ b/docs/GetFile200Response.md @@ -0,0 +1,34 @@ +# GetFile200Response + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**fileId** | **string** | | [optional] [default to undefined] +**s3Uri** | **string** | | [optional] [default to undefined] +**url** | **string** | Presigned download URL (1 hour) | [optional] [default to undefined] +**filename** | **string** | | [optional] [default to undefined] +**contentType** | **string** | | [optional] [default to undefined] +**size** | **number** | | [optional] [default to undefined] +**metadata** | **object** | | [optional] [default to undefined] +**createdAt** | **string** | | [optional] [default to undefined] + +## Example + +```typescript +import { GetFile200Response } from '@quantcdn/quant-client'; + +const instance: GetFile200Response = { + fileId, + s3Uri, + url, + filename, + contentType, + size, + metadata, + createdAt, +}; +``` + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/docs/GetTask200Response.md b/docs/GetTask200Response.md new file mode 100644 index 0000000..71b6bce --- /dev/null +++ b/docs/GetTask200Response.md @@ -0,0 +1,66 @@ +# GetTask200Response + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**taskId** | **string** | | [optional] [default to undefined] +**orgId** | **string** | | [optional] [default to undefined] +**taskListId** | **string** | | [optional] [default to undefined] +**title** | **string** | | [optional] [default to undefined] +**description** | **string** | | [optional] [default to undefined] +**status** | **string** | | [optional] [default to undefined] +**assignedAgentId** | **string** | | [optional] [default to undefined] +**createdByAgentId** | **string** | | [optional] [default to undefined] +**dependsOn** | **Array<string>** | | [optional] [default to undefined] +**metadata** | **object** | | [optional] [default to undefined] +**progress** | **number** | | [optional] [default to undefined] +**progressMessage** | **string** | | [optional] [default to undefined] +**result** | **object** | Task result data when completed | [optional] [default to undefined] +**error** | **string** | Error message if status is failed | [optional] [default to undefined] +**retryCount** | **number** | | [optional] [default to undefined] +**maxRetries** | **number** | | [optional] [default to undefined] +**createdAt** | **number** | Unix timestamp in milliseconds | [optional] [default to undefined] +**updatedAt** | **number** | Unix timestamp in milliseconds | [optional] [default to undefined] +**startedAt** | **number** | When status changed to in_progress | [optional] [default to undefined] +**completedAt** | **number** | When task completed/failed/cancelled | [optional] [default to undefined] +**expiresAt** | **number** | TTL timestamp for completed tasks | [optional] [default to undefined] +**blockedReason** | **string** | Reason task is blocked | [optional] [default to undefined] +**blockedByTaskIds** | **Array<string>** | Task IDs that are blocking this task | [optional] [default to undefined] +**blockedAt** | **number** | When status changed to blocked | [optional] [default to undefined] + +## Example + +```typescript +import { GetTask200Response } from '@quantcdn/quant-client'; + +const instance: GetTask200Response = { + taskId, + orgId, + taskListId, + title, + description, + status, + assignedAgentId, + createdByAgentId, + dependsOn, + metadata, + progress, + progressMessage, + result, + error, + retryCount, + maxRetries, + createdAt, + updatedAt, + startedAt, + completedAt, + expiresAt, + blockedReason, + blockedByTaskIds, + blockedAt, +}; +``` + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/docs/ListFiles200Response.md b/docs/ListFiles200Response.md new file mode 100644 index 0000000..1e1bc70 --- /dev/null +++ b/docs/ListFiles200Response.md @@ -0,0 +1,24 @@ +# ListFiles200Response + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**files** | [**Array<ListFiles200ResponseFilesInner>**](ListFiles200ResponseFilesInner.md) | | [optional] [default to undefined] +**nextCursor** | **string** | Cursor for next page | [optional] [default to undefined] +**hasMore** | **boolean** | True if more results available | [optional] [default to undefined] + +## Example + +```typescript +import { ListFiles200Response } from '@quantcdn/quant-client'; + +const instance: ListFiles200Response = { + files, + nextCursor, + hasMore, +}; +``` + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/docs/ListFiles200ResponseFilesInner.md b/docs/ListFiles200ResponseFilesInner.md new file mode 100644 index 0000000..c3e0741 --- /dev/null +++ b/docs/ListFiles200ResponseFilesInner.md @@ -0,0 +1,30 @@ +# ListFiles200ResponseFilesInner + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**fileId** | **string** | | [optional] [default to undefined] +**filename** | **string** | | [optional] [default to undefined] +**contentType** | **string** | | [optional] [default to undefined] +**size** | **number** | | [optional] [default to undefined] +**metadata** | **object** | | [optional] [default to undefined] +**createdAt** | **string** | | [optional] [default to undefined] + +## Example + +```typescript +import { ListFiles200ResponseFilesInner } from '@quantcdn/quant-client'; + +const instance: ListFiles200ResponseFilesInner = { + fileId, + filename, + contentType, + size, + metadata, + createdAt, +}; +``` + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/docs/ListTasks200Response.md b/docs/ListTasks200Response.md new file mode 100644 index 0000000..cf9f0ec --- /dev/null +++ b/docs/ListTasks200Response.md @@ -0,0 +1,26 @@ +# ListTasks200Response + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**tasks** | [**Array<ListTasks200ResponseTasksInner>**](ListTasks200ResponseTasksInner.md) | | [optional] [default to undefined] +**taskIds** | **Array<string>** | Task IDs (only with dependsOn filter) | [optional] [default to undefined] +**count** | **number** | | [optional] [default to undefined] +**dependsOn** | **string** | The queried task ID (only with dependsOn filter) | [optional] [default to undefined] + +## Example + +```typescript +import { ListTasks200Response } from '@quantcdn/quant-client'; + +const instance: ListTasks200Response = { + tasks, + taskIds, + count, + dependsOn, +}; +``` + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/docs/ListTasks200ResponseTasksInner.md b/docs/ListTasks200ResponseTasksInner.md new file mode 100644 index 0000000..63a63c0 --- /dev/null +++ b/docs/ListTasks200ResponseTasksInner.md @@ -0,0 +1,42 @@ +# ListTasks200ResponseTasksInner + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**taskId** | **string** | | [optional] [default to undefined] +**orgId** | **string** | | [optional] [default to undefined] +**taskListId** | **string** | | [optional] [default to undefined] +**title** | **string** | | [optional] [default to undefined] +**description** | **string** | | [optional] [default to undefined] +**status** | **string** | | [optional] [default to undefined] +**assignedAgentId** | **string** | | [optional] [default to undefined] +**progress** | **number** | | [optional] [default to undefined] +**blockedReason** | **string** | | [optional] [default to undefined] +**blockedByTaskIds** | **Array<string>** | | [optional] [default to undefined] +**createdAt** | **number** | | [optional] [default to undefined] +**updatedAt** | **number** | | [optional] [default to undefined] + +## Example + +```typescript +import { ListTasks200ResponseTasksInner } from '@quantcdn/quant-client'; + +const instance: ListTasks200ResponseTasksInner = { + taskId, + orgId, + taskListId, + title, + description, + status, + assignedAgentId, + progress, + blockedReason, + blockedByTaskIds, + createdAt, + updatedAt, +}; +``` + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/docs/OrchestrationApi.md b/docs/OrchestrationApi.md new file mode 100644 index 0000000..afd4bc4 --- /dev/null +++ b/docs/OrchestrationApi.md @@ -0,0 +1,65 @@ +# OrchestrationApi + +All URIs are relative to *https://dashboard.quantcdn.io* + +|Method | HTTP request | Description| +|------------- | ------------- | -------------| +|[**getAIOrchestrationStatus**](#getaiorchestrationstatus) | **GET** /api/v3/organizations/{organisation}/ai/tools/orchestrations/{orchestrationId} | Get Orchestration Status| + +# **getAIOrchestrationStatus** +> GetAIOrchestrationStatus200Response getAIOrchestrationStatus() + +Retrieves the status and synthesized result of a multi-tool orchestration. * * **Orchestration Pattern:** * When the AI requests multiple async tools simultaneously, an orchestration is created * to track all tool executions and synthesize their results into a single coherent response. * * **Flow:** * 1. AI requests multiple async tools (e.g., image generation + web search) * 2. Chat API creates orchestration and returns orchestrationId * 3. Tool Orchestrator Lambda polls all async tools * 4. When all tools complete, Orchestrator synthesizes results using AI * 5. Client polls this endpoint and receives final synthesized response * * **Status Values:** * - pending: Orchestration created, tools not yet started * - polling: Orchestrator is actively polling async tools * - synthesizing: All tools complete, AI is synthesizing response * - complete: Orchestration finished, synthesizedResponse available * - failed: Orchestration failed, error available * * **Polling Recommendations:** * - Poll every 2 seconds * - Maximum poll time: 10 minutes * - Orchestrator handles tool polling internally * * **Benefits over individual polling:** * - Single poll endpoint for multiple async tools * - AI synthesizes all results into coherent response * - Answers the original user question, not just tool summaries + +### Example + +```typescript +import { + OrchestrationApi, + Configuration +} from '@quantcdn/quant-client'; + +const configuration = new Configuration(); +const apiInstance = new OrchestrationApi(configuration); + +let organisation: string; //The organisation ID (default to undefined) +let orchestrationId: string; //Orchestration identifier for aggregated async tool executions (default to undefined) + +const { status, data } = await apiInstance.getAIOrchestrationStatus( + organisation, + orchestrationId +); +``` + +### Parameters + +|Name | Type | Description | Notes| +|------------- | ------------- | ------------- | -------------| +| **organisation** | [**string**] | The organisation ID | defaults to undefined| +| **orchestrationId** | [**string**] | Orchestration identifier for aggregated async tool executions | defaults to undefined| + + +### Return type + +**GetAIOrchestrationStatus200Response** + +### Authorization + +[BearerAuth](../README.md#BearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +|**200** | Orchestration status retrieved successfully | - | +|**404** | Orchestration not found (may have expired after 24h) | - | +|**403** | Access denied | - | +|**500** | Failed to retrieve orchestration status | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + diff --git a/docs/QueryVectorCollection200Response.md b/docs/QueryVectorCollection200Response.md index 62ca5c1..bd0ac3f 100644 --- a/docs/QueryVectorCollection200Response.md +++ b/docs/QueryVectorCollection200Response.md @@ -6,9 +6,15 @@ Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- **results** | [**Array<QueryVectorCollection200ResponseResultsInner>**](QueryVectorCollection200ResponseResultsInner.md) | | [optional] [default to undefined] -**query** | **string** | | [optional] [default to undefined] -**count** | **number** | | [optional] [default to undefined] -**executionTimeMs** | **number** | | [optional] [default to undefined] +**query** | **string** | Original query text (null if vector or metadata search was used) | [optional] [default to undefined] +**searchMode** | **string** | Search mode used: text (query provided), vector (pre-computed), metadata (listByMetadata) | [optional] [default to undefined] +**filter** | **object** | Filter that was applied (if any) | [optional] [default to undefined] +**count** | **number** | Number of results returned | [optional] [default to undefined] +**executionTimeMs** | **number** | Query execution time in milliseconds | [optional] [default to undefined] +**collectionId** | **string** | | [optional] [default to undefined] +**hasMore** | **boolean** | True if more results available (listByMetadata mode only) | [optional] [default to undefined] +**nextCursor** | **string** | Cursor for next page. Pass as cursor param to continue. Null when no more results. Only in listByMetadata mode. | [optional] [default to undefined] +**pagination** | [**QueryVectorCollection200ResponsePagination**](QueryVectorCollection200ResponsePagination.md) | | [optional] [default to undefined] ## Example @@ -18,8 +24,14 @@ import { QueryVectorCollection200Response } from '@quantcdn/quant-client'; const instance: QueryVectorCollection200Response = { results, query, + searchMode, + filter, count, executionTimeMs, + collectionId, + hasMore, + nextCursor, + pagination, }; ``` diff --git a/docs/QueryVectorCollection200ResponsePagination.md b/docs/QueryVectorCollection200ResponsePagination.md new file mode 100644 index 0000000..ff2cefe --- /dev/null +++ b/docs/QueryVectorCollection200ResponsePagination.md @@ -0,0 +1,25 @@ +# QueryVectorCollection200ResponsePagination + +Pagination info (listByMetadata mode only) + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**sortBy** | **string** | | [optional] [default to undefined] +**sortOrder** | **string** | | [optional] [default to undefined] +**limit** | **number** | | [optional] [default to undefined] + +## Example + +```typescript +import { QueryVectorCollection200ResponsePagination } from '@quantcdn/quant-client'; + +const instance: QueryVectorCollection200ResponsePagination = { + sortBy, + sortOrder, + limit, +}; +``` + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/docs/QueryVectorCollection200ResponseResultsInner.md b/docs/QueryVectorCollection200ResponseResultsInner.md index 8730e03..3ccd5d6 100644 --- a/docs/QueryVectorCollection200ResponseResultsInner.md +++ b/docs/QueryVectorCollection200ResponseResultsInner.md @@ -5,9 +5,11 @@ Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**content** | **string** | | [optional] [default to undefined] -**score** | **number** | | [optional] [default to undefined] -**metadata** | [**QueryVectorCollection200ResponseResultsInnerMetadata**](QueryVectorCollection200ResponseResultsInnerMetadata.md) | | [optional] [default to undefined] +**documentId** | **string** | | [optional] [default to undefined] +**content** | **string** | Document text content | [optional] [default to undefined] +**similarity** | **number** | Cosine similarity score (1.0 for metadata-only queries) | [optional] [default to undefined] +**metadata** | **{ [key: string]: any; }** | | [optional] [default to undefined] +**embedding** | **Array<number>** | Vector embedding (only if includeEmbeddings=true) | [optional] [default to undefined] ## Example @@ -15,9 +17,11 @@ Name | Type | Description | Notes import { QueryVectorCollection200ResponseResultsInner } from '@quantcdn/quant-client'; const instance: QueryVectorCollection200ResponseResultsInner = { + documentId, content, - score, + similarity, metadata, + embedding, }; ``` diff --git a/docs/QueryVectorCollection200ResponseResultsInnerMetadata.md b/docs/QueryVectorCollection200ResponseResultsInnerMetadata.md deleted file mode 100644 index ff623a1..0000000 --- a/docs/QueryVectorCollection200ResponseResultsInnerMetadata.md +++ /dev/null @@ -1,24 +0,0 @@ -# QueryVectorCollection200ResponseResultsInnerMetadata - - -## Properties - -Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- -**title** | **string** | | [optional] [default to undefined] -**source_url** | **string** | | [optional] [default to undefined] -**section** | **string** | | [optional] [default to undefined] - -## Example - -```typescript -import { QueryVectorCollection200ResponseResultsInnerMetadata } from '@quantcdn/quant-client'; - -const instance: QueryVectorCollection200ResponseResultsInnerMetadata = { - title, - source_url, - section, -}; -``` - -[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/docs/QueryVectorCollectionRequest.md b/docs/QueryVectorCollectionRequest.md index 92ec88e..fffca2a 100644 --- a/docs/QueryVectorCollectionRequest.md +++ b/docs/QueryVectorCollectionRequest.md @@ -5,8 +5,16 @@ Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**query** | **string** | Natural language search query | [default to undefined] -**count** | **number** | Number of results to return | [optional] [default to 5] +**query** | **string** | Natural language search query (mutually exclusive with vector) | [optional] [default to undefined] +**vector** | **Array<number>** | Pre-computed embedding vector (mutually exclusive with query). Array length must match collection dimension. | [optional] [default to undefined] +**limit** | **number** | Maximum number of results to return | [optional] [default to 5] +**threshold** | **number** | Minimum similarity score (0-1, higher = more relevant) | [optional] [default to 0.7] +**includeEmbeddings** | **boolean** | Include embedding vectors in response (for debugging) | [optional] [default to false] +**filter** | [**QueryVectorCollectionRequestFilter**](QueryVectorCollectionRequestFilter.md) | | [optional] [default to undefined] +**listByMetadata** | **boolean** | If true, skip semantic search and return all documents matching the filter. Requires filter. Supports cursor pagination. | [optional] [default to false] +**cursor** | **string** | Pagination cursor for listByMetadata mode. Use nextCursor from previous response. Opaque format - do not construct manually. | [optional] [default to undefined] +**sortBy** | **string** | Field to sort by in listByMetadata mode | [optional] [default to SortByEnum_CreatedAt] +**sortOrder** | **string** | Sort direction in listByMetadata mode | [optional] [default to SortOrderEnum_Desc] ## Example @@ -15,7 +23,15 @@ import { QueryVectorCollectionRequest } from '@quantcdn/quant-client'; const instance: QueryVectorCollectionRequest = { query, - count, + vector, + limit, + threshold, + includeEmbeddings, + filter, + listByMetadata, + cursor, + sortBy, + sortOrder, }; ``` diff --git a/docs/QueryVectorCollectionRequestFilter.md b/docs/QueryVectorCollectionRequestFilter.md new file mode 100644 index 0000000..f5fb78e --- /dev/null +++ b/docs/QueryVectorCollectionRequestFilter.md @@ -0,0 +1,23 @@ +# QueryVectorCollectionRequestFilter + +Filter results by metadata fields. Applied AFTER semantic search (or alone in listByMetadata mode). All conditions use AND logic. + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**exact** | **{ [key: string]: any; }** | Exact match on metadata fields. Keys are metadata field names, values are expected values. | [optional] [default to undefined] +**contains** | **{ [key: string]: Array<string>; }** | Array contains filter for array metadata fields (like tags). Returns documents where the metadata array contains ANY of the specified values. | [optional] [default to undefined] + +## Example + +```typescript +import { QueryVectorCollectionRequestFilter } from '@quantcdn/quant-client'; + +const instance: QueryVectorCollectionRequestFilter = { + exact, + contains, +}; +``` + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/docs/SubmitToolCallback200Response.md b/docs/SubmitToolCallback200Response.md new file mode 100644 index 0000000..126c242 --- /dev/null +++ b/docs/SubmitToolCallback200Response.md @@ -0,0 +1,24 @@ +# SubmitToolCallback200Response + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**success** | **boolean** | | [optional] [default to undefined] +**message** | **string** | | [optional] [default to undefined] +**callbackId** | **string** | Echo of the callbackId for confirmation | [optional] [default to undefined] + +## Example + +```typescript +import { SubmitToolCallback200Response } from '@quantcdn/quant-client'; + +const instance: SubmitToolCallback200Response = { + success, + message, + callbackId, +}; +``` + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/docs/SubmitToolCallbackRequest.md b/docs/SubmitToolCallbackRequest.md new file mode 100644 index 0000000..29b65b6 --- /dev/null +++ b/docs/SubmitToolCallbackRequest.md @@ -0,0 +1,22 @@ +# SubmitToolCallbackRequest + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**callbackId** | **string** | The callbackId from the waiting_callback status response | [default to undefined] +**toolResults** | [**Array<SubmitToolCallbackRequestToolResultsInner>**](SubmitToolCallbackRequestToolResultsInner.md) | Results of client-executed tools | [default to undefined] + +## Example + +```typescript +import { SubmitToolCallbackRequest } from '@quantcdn/quant-client'; + +const instance: SubmitToolCallbackRequest = { + callbackId, + toolResults, +}; +``` + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/docs/SubmitToolCallbackRequestToolResultsInner.md b/docs/SubmitToolCallbackRequestToolResultsInner.md new file mode 100644 index 0000000..48d728e --- /dev/null +++ b/docs/SubmitToolCallbackRequestToolResultsInner.md @@ -0,0 +1,22 @@ +# SubmitToolCallbackRequestToolResultsInner + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**toolUseId** | **string** | The toolUseId from pendingTools | [default to undefined] +**result** | **object** | The result of executing the tool | [default to undefined] + +## Example + +```typescript +import { SubmitToolCallbackRequestToolResultsInner } from '@quantcdn/quant-client'; + +const instance: SubmitToolCallbackRequestToolResultsInner = { + toolUseId, + result, +}; +``` + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/docs/UpdateTask200Response.md b/docs/UpdateTask200Response.md new file mode 100644 index 0000000..63f14b0 --- /dev/null +++ b/docs/UpdateTask200Response.md @@ -0,0 +1,24 @@ +# UpdateTask200Response + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**taskId** | **string** | | [optional] [default to undefined] +**status** | **string** | | [optional] [default to undefined] +**updatedAt** | **number** | | [optional] [default to undefined] + +## Example + +```typescript +import { UpdateTask200Response } from '@quantcdn/quant-client'; + +const instance: UpdateTask200Response = { + taskId, + status, + updatedAt, +}; +``` + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/docs/UpdateTaskRequest.md b/docs/UpdateTaskRequest.md new file mode 100644 index 0000000..380ec83 --- /dev/null +++ b/docs/UpdateTaskRequest.md @@ -0,0 +1,48 @@ +# UpdateTaskRequest + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**title** | **string** | | [optional] [default to undefined] +**description** | **string** | | [optional] [default to undefined] +**taskListId** | **string** | Move task to different list or remove from list (set null) | [optional] [default to undefined] +**status** | **string** | Task status (triggers automatic timestamp updates) | [optional] [default to undefined] +**assignedAgentId** | **string** | Reassign task to different agent | [optional] [default to undefined] +**dependsOn** | **Array<string>** | Update task dependencies | [optional] [default to undefined] +**metadata** | **object** | Update task metadata (replaces entire metadata object) | [optional] [default to undefined] +**progress** | **number** | Progress from 0.0 to 1.0 | [optional] [default to undefined] +**progressMessage** | **string** | Human-readable progress message | [optional] [default to undefined] +**result** | **object** | Task result data (set when completing task) | [optional] [default to undefined] +**error** | **string** | Error message (set when task fails) | [optional] [default to undefined] +**retryCount** | **number** | Update retry count | [optional] [default to undefined] +**maxRetries** | **number** | Update maximum retry attempts | [optional] [default to undefined] +**blockedReason** | **string** | Reason task is blocked (set when status is blocked) | [optional] [default to undefined] +**blockedByTaskIds** | **Array<string>** | Task IDs that are blocking this task | [optional] [default to undefined] + +## Example + +```typescript +import { UpdateTaskRequest } from '@quantcdn/quant-client'; + +const instance: UpdateTaskRequest = { + title, + description, + taskListId, + status, + assignedAgentId, + dependsOn, + metadata, + progress, + progressMessage, + result, + error, + retryCount, + maxRetries, + blockedReason, + blockedByTaskIds, +}; +``` + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/docs/UploadFile201Response.md b/docs/UploadFile201Response.md new file mode 100644 index 0000000..7ade078 --- /dev/null +++ b/docs/UploadFile201Response.md @@ -0,0 +1,40 @@ +# UploadFile201Response + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**fileId** | **string** | | [optional] [default to undefined] +**s3Uri** | **string** | S3 URI (direct upload only) | [optional] [default to undefined] +**url** | **string** | Presigned download URL (direct upload only) | [optional] [default to undefined] +**uploadUrl** | **string** | Presigned PUT URL (presigned upload only) | [optional] [default to undefined] +**s3Key** | **string** | S3 object key (presigned upload only) | [optional] [default to undefined] +**expiresIn** | **number** | URL expiry in seconds (presigned upload only) | [optional] [default to undefined] +**filename** | **string** | | [optional] [default to undefined] +**contentType** | **string** | | [optional] [default to undefined] +**size** | **number** | | [optional] [default to undefined] +**metadata** | **object** | | [optional] [default to undefined] +**createdAt** | **string** | | [optional] [default to undefined] + +## Example + +```typescript +import { UploadFile201Response } from '@quantcdn/quant-client'; + +const instance: UploadFile201Response = { + fileId, + s3Uri, + url, + uploadUrl, + s3Key, + expiresIn, + filename, + contentType, + size, + metadata, + createdAt, +}; +``` + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/docs/UploadFileRequest.md b/docs/UploadFileRequest.md new file mode 100644 index 0000000..f01ca44 --- /dev/null +++ b/docs/UploadFileRequest.md @@ -0,0 +1,30 @@ +# UploadFileRequest + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**content** | **string** | Base64-encoded file content (for direct upload). Required unless using requestUploadUrl. | [optional] [default to undefined] +**requestUploadUrl** | **boolean** | Set to true to get a presigned S3 upload URL instead of uploading directly. | [optional] [default to false] +**size** | **number** | File size in bytes. Optional but recommended for presigned uploads. | [optional] [default to undefined] +**filename** | **string** | Original filename | [optional] [default to undefined] +**contentType** | **string** | MIME type of the file | [default to undefined] +**metadata** | **{ [key: string]: any; }** | Custom metadata for filtering. Any fields allowed. | [optional] [default to undefined] + +## Example + +```typescript +import { UploadFileRequest } from '@quantcdn/quant-client'; + +const instance: UploadFileRequest = { + content, + requestUploadUrl, + size, + filename, + contentType, + metadata, +}; +``` + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/index.ts b/index.ts index caef4b4..72a6a3d 100644 --- a/index.ts +++ b/index.ts @@ -4,7 +4,7 @@ * QuantCDN API * Unified API for QuantCDN Admin and QuantCloud Platform services * - * The version of the OpenAPI document: 4.8.0 + * The version of the OpenAPI document: 4.9.0 * * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/package-lock.json b/package-lock.json index 28e8b1b..8dfcee6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@quantcdn/quant-client", - "version": "4.8.0", + "version": "4.9.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@quantcdn/quant-client", - "version": "4.8.0", + "version": "4.9.0", "license": "MIT", "dependencies": { "axios": "^1.6.1" diff --git a/package.json b/package.json index bd8d075..14d9d0e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@quantcdn/quant-client", - "version": "4.8.0", + "version": "4.9.0", "description": "OpenAPI client for @quantcdn/quant-client", "author": "QuantCDN", "repository": {