@soat/sdk 0.13.8 → 0.13.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -909,7 +909,7 @@ var ApiKeys = class {
909
909
  /**
910
910
  * List API keys
911
911
  *
912
- * Lists API keys accessible to the caller. - JWT admin: returns all API keys. - JWT regular user: returns only the user's own API keys. - API key scoped to a project: returns only API keys scoped to that project.
912
+ * Lists API keys accessible to the caller. - JWT admin: returns all API keys. - JWT regular user: returns only the user's own API keys. - API key: returns only API keys scoped to the key's project.
913
913
  *
914
914
  */
915
915
  static listApiKeys(options) {
@@ -925,7 +925,7 @@ var ApiKeys = class {
925
925
  /**
926
926
  * Create an API key
927
927
  *
928
- * Creates a new API key for the authenticated user. - If `project_id` is provided, the key is scoped to that project. - If `policy_ids` is provided, the key's effective permissions are the intersection of the user's policies and the key's policies. - If neither is provided, the key inherits the user's full permissions.
928
+ * Creates a new API key for the authenticated user. - `project_id` is required: every key is scoped to exactly one project. - If `policy_ids` is provided, the key's effective permissions are the intersection of the user's policies and the key's policies. - Otherwise the key inherits the user's permissions, confined to the key's project.
929
929
  *
930
930
  */
931
931
  static createApiKey(options) {
@@ -963,7 +963,7 @@ var ApiKeys = class {
963
963
  /**
964
964
  * Update an API key
965
965
  *
966
- * Updates an API key's name, project scope, or policies. Only the owner or an admin can update it.
966
+ * Updates an API key's name, project scope, or policies. The project scope can be changed to another project but never cleared. Only the owner or an admin can update it.
967
967
  */
968
968
  static updateApiKey(options) {
969
969
  return (options.client ?? client).put({
@@ -1480,7 +1480,7 @@ var Files = class {
1480
1480
  /**
1481
1481
  * Upload a file using an upload token
1482
1482
  *
1483
- * Uploads file content authorized by a single-use token from `POST /api/v1/files/presigned-url`. No bearer credential is required — the token is the credential. Accepts either multipart/form-data (field `file`) or JSON with a base64-encoded `content` field. Excluded from the MCP tool surface; clients call it directly over HTTP.
1483
+ * Uploads file content authorized by a single-use token from `POST /api/v1/files/presigned-url`. No bearer credential is required — the token is the credential. Accepts either multipart/form-data (field `file`) or JSON with a base64-encoded `content` field.
1484
1484
  */
1485
1485
  static uploadFileWithToken(options) {
1486
1486
  return (options.client ?? client).post({
package/dist/index.d.cts CHANGED
@@ -533,6 +533,12 @@ type Agent = {
533
533
  }>;
534
534
  }>;
535
535
  } | null;
536
+ /**
537
+ * JSON Schema describing the structured object the model must return. When set, non-streaming generations use the AI SDK to constrain output to this schema; the parsed value is returned as `output.object` in the generation response. See the Structured Output section in the Agents module docs.
538
+ */
539
+ output_schema?: {
540
+ [key: string]: unknown;
541
+ } | null;
536
542
  /**
537
543
  * Maximum number of recent messages to include in the context window sent to the model. When null, all messages are included.
538
544
  */
@@ -673,6 +679,12 @@ type CreateAgentRequest = {
673
679
  }>;
674
680
  }>;
675
681
  } | null;
682
+ /**
683
+ * JSON Schema describing the structured object the model must return. When set, non-streaming generations use the AI SDK to constrain output to this schema; the parsed value is returned as `output.object` in the generation response. See the Structured Output section in the Agents module docs.
684
+ */
685
+ output_schema?: {
686
+ [key: string]: unknown;
687
+ } | null;
676
688
  /**
677
689
  * Maximum number of recent messages included in the context window. Null means no limit.
678
690
  */
@@ -804,6 +816,12 @@ type UpdateAgentRequest = {
804
816
  }>;
805
817
  }>;
806
818
  } | null;
819
+ /**
820
+ * JSON Schema describing the structured object the model must return. When set, non-streaming generations use the AI SDK to constrain output to this schema; the parsed value is returned as `output.object` in the generation response. See the Structured Output section in the Agents module docs.
821
+ */
822
+ output_schema?: {
823
+ [key: string]: unknown;
824
+ } | null;
807
825
  /**
808
826
  * Maximum number of recent messages included in the context window. Null means no limit.
809
827
  */
@@ -965,6 +983,12 @@ type AgentGenerationResponse = {
965
983
  * Final text output (when completed)
966
984
  */
967
985
  text?: string | null;
986
+ /**
987
+ * Structured object matching the agent's `output_schema` (when completed and `output_schema` is set)
988
+ */
989
+ object?: {
990
+ [key: string]: unknown;
991
+ } | null;
968
992
  /**
969
993
  * Pending tool calls (when requires_action)
970
994
  */
@@ -991,9 +1015,9 @@ type ApiKeyRecord = {
991
1015
  */
992
1016
  user_id?: string;
993
1017
  /**
994
- * Optional project scope
1018
+ * The project this key is scoped to
995
1019
  */
996
- project_id?: string | null;
1020
+ project_id?: string;
997
1021
  /**
998
1022
  * Public IDs of policies attached to this key
999
1023
  */
@@ -1356,7 +1380,7 @@ type UploadFileBase64Request = {
1356
1380
  /**
1357
1381
  * Public ID of the project
1358
1382
  */
1359
- project_id: string;
1383
+ project_id?: string;
1360
1384
  /**
1361
1385
  * Base64-encoded file content
1362
1386
  */
@@ -1412,9 +1436,9 @@ type PresignedUrlResponse = {
1412
1436
  };
1413
1437
  type UploadFileWithTokenRequest = {
1414
1438
  /**
1415
- * Base64-encoded file content
1439
+ * Base64-encoded file content (alternative to multipart `file`)
1416
1440
  */
1417
- content: string;
1441
+ content?: string;
1418
1442
  /**
1419
1443
  * Original / download name (overrides the token's filename)
1420
1444
  */
@@ -1517,6 +1541,11 @@ type ParameterDeclaration = {
1517
1541
  *
1518
1542
  */
1519
1543
  no_echo?: boolean | null;
1544
+ /**
1545
+ * When true, omitting this parameter on update reuses its previously stored value instead of failing the required-parameter check — analogous to CloudFormation's UsePreviousValue, declared in the template. An explicitly supplied value still overrides. Has no effect on create (there is no previous value yet). The value is reused only where the underlying resource retains it (e.g. a secret's encrypted value); otherwise the last-applied value is used.
1546
+ *
1547
+ */
1548
+ use_previous_value?: boolean | null;
1520
1549
  };
1521
1550
  /**
1522
1551
  * Creates an AI agent backed by a provider. The agent handles requests, runs tools, and can be attached to actors.
@@ -1741,6 +1770,12 @@ type AgentResourceProperties = {
1741
1770
  }>;
1742
1771
  }>;
1743
1772
  } | null;
1773
+ /**
1774
+ * JSON Schema describing the structured object the model must return. Non-streaming generations are constrained to this schema; the parsed value is returned as `output.object`.
1775
+ */
1776
+ output_schema?: {
1777
+ [key: string]: unknown;
1778
+ } | null;
1744
1779
  };
1745
1780
  /**
1746
1781
  * Creates a stateful conversation actor that wraps an agent or chat session and optionally links to a memory store.
@@ -2073,7 +2108,7 @@ type SecretResourceProperties = {
2073
2108
  /**
2074
2109
  * The secret value to encrypt and store
2075
2110
  */
2076
- value?: string | null;
2111
+ value: string;
2077
2112
  };
2078
2113
  /**
2079
2114
  * Creates a session attached to an agent within the formation's project.
@@ -2759,8 +2794,8 @@ type StartRunRequest = {
2759
2794
  };
2760
2795
  };
2761
2796
  type ValidateOrchestrationRequest = {
2762
- nodes: Array<OrchestrationNode>;
2763
- edges: Array<OrchestrationEdge>;
2797
+ nodes?: Array<OrchestrationNode>;
2798
+ edges?: Array<OrchestrationEdge>;
2764
2799
  /**
2765
2800
  * Optional JSON Schema for run inputs; its top-level properties seed state.
2766
2801
  */
@@ -2772,6 +2807,13 @@ type PolicyStatement = {
2772
2807
  effect: 'Allow' | 'Deny';
2773
2808
  action: Array<string>;
2774
2809
  resource?: Array<string>;
2810
+ /**
2811
+ * Optional condition block. Keys are condition operators (e.g. StringEquals) mapping to context-key/value maps; evaluated by the policy compiler. Free-form — keys are dynamic, not validated.
2812
+ *
2813
+ */
2814
+ condition?: {
2815
+ [key: string]: unknown;
2816
+ };
2775
2817
  };
2776
2818
  type PolicyDocument = {
2777
2819
  statement: Array<PolicyStatement>;
@@ -3457,6 +3499,10 @@ type CreateActorData = {
3457
3499
  * Optional external identifier (e.g. WhatsApp phone number). If provided and an actor with this externalId already exists in the project, the existing actor is returned (idempotent — 200 OK).
3458
3500
  */
3459
3501
  external_id?: string;
3502
+ /**
3503
+ * Persona-specific instructions composed into the effective system prompt during conversation generation.
3504
+ */
3505
+ instructions?: string | null;
3460
3506
  /**
3461
3507
  * Agent to link this actor to. Mutually exclusive with chat_id.
3462
3508
  */
@@ -3573,10 +3619,22 @@ type GetActorResponse = GetActorResponses[keyof GetActorResponses];
3573
3619
  type UpdateActorData = {
3574
3620
  body: {
3575
3621
  name?: string;
3622
+ /**
3623
+ * External identifier (e.g. WhatsApp phone number)
3624
+ */
3625
+ external_id?: string;
3576
3626
  /**
3577
3627
  * Persona-specific instructions
3578
3628
  */
3579
3629
  instructions?: string;
3630
+ /**
3631
+ * Agent to link this actor to. Mutually exclusive with chat_id.
3632
+ */
3633
+ agent_id?: string | null;
3634
+ /**
3635
+ * Chat to link this actor to. Mutually exclusive with agent_id.
3636
+ */
3637
+ chat_id?: string | null;
3580
3638
  /**
3581
3639
  * Memory ID to link to this actor. Set to null to unlink.
3582
3640
  */
@@ -4174,6 +4232,10 @@ type GetAiProviderResponse = GetAiProviderResponses[keyof GetAiProviderResponses
4174
4232
  type UpdateAiProviderData = {
4175
4233
  body: {
4176
4234
  name?: string;
4235
+ /**
4236
+ * LLM provider
4237
+ */
4238
+ provider?: 'openai' | 'anthropic' | 'google' | 'cohere' | 'mistral';
4177
4239
  default_model?: string;
4178
4240
  secret_id?: string;
4179
4241
  base_url?: string;
@@ -4240,9 +4302,9 @@ type CreateApiKeyData = {
4240
4302
  */
4241
4303
  name: string;
4242
4304
  /**
4243
- * Optional project ID to scope this key to a specific project
4305
+ * Project ID this key is scoped to. Required keys cannot span projects.
4244
4306
  */
4245
- project_id?: string;
4307
+ project_id: string;
4246
4308
  /**
4247
4309
  * Optional list of policy IDs to attach. Key permissions become the intersection of user policies and these policies.
4248
4310
  */
@@ -4338,9 +4400,9 @@ type UpdateApiKeyData = {
4338
4400
  body: {
4339
4401
  name?: string;
4340
4402
  /**
4341
- * Set to null to remove project scope
4403
+ * Re-scope the key to a different project. Cannot be null keys are always project-scoped.
4342
4404
  */
4343
- project_id?: string | null;
4405
+ project_id?: string;
4344
4406
  /**
4345
4407
  * Replace the key's policy list (empty array removes all)
4346
4408
  */
@@ -4714,7 +4776,11 @@ type UpdateConversationData = {
4714
4776
  /**
4715
4777
  * New conversation status
4716
4778
  */
4717
- status: 'open' | 'closed';
4779
+ status?: 'open' | 'closed';
4780
+ /**
4781
+ * New conversation name
4782
+ */
4783
+ name?: string | null;
4718
4784
  };
4719
4785
  path: {
4720
4786
  /**
@@ -5102,6 +5168,22 @@ type CreateDocumentData = {
5102
5168
  */
5103
5169
  path?: string;
5104
5170
  filename?: string;
5171
+ /**
5172
+ * Document title
5173
+ */
5174
+ title?: string;
5175
+ /**
5176
+ * Arbitrary metadata object
5177
+ */
5178
+ metadata?: {
5179
+ [key: string]: unknown;
5180
+ };
5181
+ /**
5182
+ * Key-value tags
5183
+ */
5184
+ tags?: {
5185
+ [key: string]: string;
5186
+ };
5105
5187
  /**
5106
5188
  * How to split the content into embeddable chunks. `whole` (default) stores the content as a single chunk; `size` splits into fixed-size character windows with overlap. `page` is equivalent to `whole` for plain text.
5107
5189
  */
@@ -6102,7 +6184,7 @@ type ReplaceFileTagsResponses = {
6102
6184
  type ReplaceFileTagsResponse = ReplaceFileTagsResponses[keyof ReplaceFileTagsResponses];
6103
6185
  type ValidateFormationData = {
6104
6186
  body: {
6105
- template: FormationTemplateInput;
6187
+ template?: FormationTemplateInput;
6106
6188
  };
6107
6189
  path?: never;
6108
6190
  query?: never;
@@ -6133,7 +6215,7 @@ type PlanFormationData = {
6133
6215
  formation_id?: string;
6134
6216
  template: FormationTemplateInput;
6135
6217
  /**
6136
- * Runtime parameter values that override or supply template parameter defaults. Keys must match parameter names declared in `template.parameters`.
6218
+ * Runtime parameter values that override or supply template parameter defaults. Keys must match parameter names declared in `template.parameters`. A parameter declared with `use_previous_value: true` may be omitted to reuse its stored value.
6137
6219
  *
6138
6220
  */
6139
6221
  parameters?: {
@@ -6308,7 +6390,7 @@ type UpdateFormationData = {
6308
6390
  body?: {
6309
6391
  template?: FormationTemplateInput;
6310
6392
  /**
6311
- * Runtime parameter values that override or supply template parameter defaults. Keys must match parameter names declared in `template.parameters`. Required parameters (those without a default) must be provided here.
6393
+ * Runtime parameter values that override or supply template parameter defaults. Keys must match parameter names declared in `template.parameters`. Required parameters (those without a default) must be provided here, unless the parameter is declared with `use_previous_value: true`, in which case omitting it reuses the previously stored value.
6312
6394
  *
6313
6395
  */
6314
6396
  parameters?: {
@@ -9180,14 +9262,14 @@ declare class ApiKeys {
9180
9262
  /**
9181
9263
  * List API keys
9182
9264
  *
9183
- * Lists API keys accessible to the caller. - JWT admin: returns all API keys. - JWT regular user: returns only the user's own API keys. - API key scoped to a project: returns only API keys scoped to that project.
9265
+ * Lists API keys accessible to the caller. - JWT admin: returns all API keys. - JWT regular user: returns only the user's own API keys. - API key: returns only API keys scoped to the key's project.
9184
9266
  *
9185
9267
  */
9186
9268
  static listApiKeys<ThrowOnError extends boolean = false>(options?: Options<ListApiKeysData, ThrowOnError>): RequestResult<ListApiKeysResponses, ListApiKeysErrors, ThrowOnError>;
9187
9269
  /**
9188
9270
  * Create an API key
9189
9271
  *
9190
- * Creates a new API key for the authenticated user. - If `project_id` is provided, the key is scoped to that project. - If `policy_ids` is provided, the key's effective permissions are the intersection of the user's policies and the key's policies. - If neither is provided, the key inherits the user's full permissions.
9272
+ * Creates a new API key for the authenticated user. - `project_id` is required: every key is scoped to exactly one project. - If `policy_ids` is provided, the key's effective permissions are the intersection of the user's policies and the key's policies. - Otherwise the key inherits the user's permissions, confined to the key's project.
9191
9273
  *
9192
9274
  */
9193
9275
  static createApiKey<ThrowOnError extends boolean = false>(options: Options<CreateApiKeyData, ThrowOnError>): RequestResult<CreateApiKeyResponses, CreateApiKeyErrors, ThrowOnError>;
@@ -9206,7 +9288,7 @@ declare class ApiKeys {
9206
9288
  /**
9207
9289
  * Update an API key
9208
9290
  *
9209
- * Updates an API key's name, project scope, or policies. Only the owner or an admin can update it.
9291
+ * Updates an API key's name, project scope, or policies. The project scope can be changed to another project but never cleared. Only the owner or an admin can update it.
9210
9292
  */
9211
9293
  static updateApiKey<ThrowOnError extends boolean = false>(options: Options<UpdateApiKeyData, ThrowOnError>): RequestResult<UpdateApiKeyResponses, UpdateApiKeyErrors, ThrowOnError>;
9212
9294
  }
@@ -9458,7 +9540,7 @@ declare class Files {
9458
9540
  /**
9459
9541
  * Upload a file using an upload token
9460
9542
  *
9461
- * Uploads file content authorized by a single-use token from `POST /api/v1/files/presigned-url`. No bearer credential is required — the token is the credential. Accepts either multipart/form-data (field `file`) or JSON with a base64-encoded `content` field. Excluded from the MCP tool surface; clients call it directly over HTTP.
9543
+ * Uploads file content authorized by a single-use token from `POST /api/v1/files/presigned-url`. No bearer credential is required — the token is the credential. Accepts either multipart/form-data (field `file`) or JSON with a base64-encoded `content` field.
9462
9544
  */
9463
9545
  static uploadFileWithToken<ThrowOnError extends boolean = false>(options: Options<UploadFileWithTokenData, ThrowOnError>): RequestResult<UploadFileWithTokenResponses, UploadFileWithTokenErrors, ThrowOnError>;
9464
9546
  /**
package/dist/index.d.mts CHANGED
@@ -533,6 +533,12 @@ type Agent = {
533
533
  }>;
534
534
  }>;
535
535
  } | null;
536
+ /**
537
+ * JSON Schema describing the structured object the model must return. When set, non-streaming generations use the AI SDK to constrain output to this schema; the parsed value is returned as `output.object` in the generation response. See the Structured Output section in the Agents module docs.
538
+ */
539
+ output_schema?: {
540
+ [key: string]: unknown;
541
+ } | null;
536
542
  /**
537
543
  * Maximum number of recent messages to include in the context window sent to the model. When null, all messages are included.
538
544
  */
@@ -673,6 +679,12 @@ type CreateAgentRequest = {
673
679
  }>;
674
680
  }>;
675
681
  } | null;
682
+ /**
683
+ * JSON Schema describing the structured object the model must return. When set, non-streaming generations use the AI SDK to constrain output to this schema; the parsed value is returned as `output.object` in the generation response. See the Structured Output section in the Agents module docs.
684
+ */
685
+ output_schema?: {
686
+ [key: string]: unknown;
687
+ } | null;
676
688
  /**
677
689
  * Maximum number of recent messages included in the context window. Null means no limit.
678
690
  */
@@ -804,6 +816,12 @@ type UpdateAgentRequest = {
804
816
  }>;
805
817
  }>;
806
818
  } | null;
819
+ /**
820
+ * JSON Schema describing the structured object the model must return. When set, non-streaming generations use the AI SDK to constrain output to this schema; the parsed value is returned as `output.object` in the generation response. See the Structured Output section in the Agents module docs.
821
+ */
822
+ output_schema?: {
823
+ [key: string]: unknown;
824
+ } | null;
807
825
  /**
808
826
  * Maximum number of recent messages included in the context window. Null means no limit.
809
827
  */
@@ -965,6 +983,12 @@ type AgentGenerationResponse = {
965
983
  * Final text output (when completed)
966
984
  */
967
985
  text?: string | null;
986
+ /**
987
+ * Structured object matching the agent's `output_schema` (when completed and `output_schema` is set)
988
+ */
989
+ object?: {
990
+ [key: string]: unknown;
991
+ } | null;
968
992
  /**
969
993
  * Pending tool calls (when requires_action)
970
994
  */
@@ -991,9 +1015,9 @@ type ApiKeyRecord = {
991
1015
  */
992
1016
  user_id?: string;
993
1017
  /**
994
- * Optional project scope
1018
+ * The project this key is scoped to
995
1019
  */
996
- project_id?: string | null;
1020
+ project_id?: string;
997
1021
  /**
998
1022
  * Public IDs of policies attached to this key
999
1023
  */
@@ -1356,7 +1380,7 @@ type UploadFileBase64Request = {
1356
1380
  /**
1357
1381
  * Public ID of the project
1358
1382
  */
1359
- project_id: string;
1383
+ project_id?: string;
1360
1384
  /**
1361
1385
  * Base64-encoded file content
1362
1386
  */
@@ -1412,9 +1436,9 @@ type PresignedUrlResponse = {
1412
1436
  };
1413
1437
  type UploadFileWithTokenRequest = {
1414
1438
  /**
1415
- * Base64-encoded file content
1439
+ * Base64-encoded file content (alternative to multipart `file`)
1416
1440
  */
1417
- content: string;
1441
+ content?: string;
1418
1442
  /**
1419
1443
  * Original / download name (overrides the token's filename)
1420
1444
  */
@@ -1517,6 +1541,11 @@ type ParameterDeclaration = {
1517
1541
  *
1518
1542
  */
1519
1543
  no_echo?: boolean | null;
1544
+ /**
1545
+ * When true, omitting this parameter on update reuses its previously stored value instead of failing the required-parameter check — analogous to CloudFormation's UsePreviousValue, declared in the template. An explicitly supplied value still overrides. Has no effect on create (there is no previous value yet). The value is reused only where the underlying resource retains it (e.g. a secret's encrypted value); otherwise the last-applied value is used.
1546
+ *
1547
+ */
1548
+ use_previous_value?: boolean | null;
1520
1549
  };
1521
1550
  /**
1522
1551
  * Creates an AI agent backed by a provider. The agent handles requests, runs tools, and can be attached to actors.
@@ -1741,6 +1770,12 @@ type AgentResourceProperties = {
1741
1770
  }>;
1742
1771
  }>;
1743
1772
  } | null;
1773
+ /**
1774
+ * JSON Schema describing the structured object the model must return. Non-streaming generations are constrained to this schema; the parsed value is returned as `output.object`.
1775
+ */
1776
+ output_schema?: {
1777
+ [key: string]: unknown;
1778
+ } | null;
1744
1779
  };
1745
1780
  /**
1746
1781
  * Creates a stateful conversation actor that wraps an agent or chat session and optionally links to a memory store.
@@ -2073,7 +2108,7 @@ type SecretResourceProperties = {
2073
2108
  /**
2074
2109
  * The secret value to encrypt and store
2075
2110
  */
2076
- value?: string | null;
2111
+ value: string;
2077
2112
  };
2078
2113
  /**
2079
2114
  * Creates a session attached to an agent within the formation's project.
@@ -2759,8 +2794,8 @@ type StartRunRequest = {
2759
2794
  };
2760
2795
  };
2761
2796
  type ValidateOrchestrationRequest = {
2762
- nodes: Array<OrchestrationNode>;
2763
- edges: Array<OrchestrationEdge>;
2797
+ nodes?: Array<OrchestrationNode>;
2798
+ edges?: Array<OrchestrationEdge>;
2764
2799
  /**
2765
2800
  * Optional JSON Schema for run inputs; its top-level properties seed state.
2766
2801
  */
@@ -2772,6 +2807,13 @@ type PolicyStatement = {
2772
2807
  effect: 'Allow' | 'Deny';
2773
2808
  action: Array<string>;
2774
2809
  resource?: Array<string>;
2810
+ /**
2811
+ * Optional condition block. Keys are condition operators (e.g. StringEquals) mapping to context-key/value maps; evaluated by the policy compiler. Free-form — keys are dynamic, not validated.
2812
+ *
2813
+ */
2814
+ condition?: {
2815
+ [key: string]: unknown;
2816
+ };
2775
2817
  };
2776
2818
  type PolicyDocument = {
2777
2819
  statement: Array<PolicyStatement>;
@@ -3457,6 +3499,10 @@ type CreateActorData = {
3457
3499
  * Optional external identifier (e.g. WhatsApp phone number). If provided and an actor with this externalId already exists in the project, the existing actor is returned (idempotent — 200 OK).
3458
3500
  */
3459
3501
  external_id?: string;
3502
+ /**
3503
+ * Persona-specific instructions composed into the effective system prompt during conversation generation.
3504
+ */
3505
+ instructions?: string | null;
3460
3506
  /**
3461
3507
  * Agent to link this actor to. Mutually exclusive with chat_id.
3462
3508
  */
@@ -3573,10 +3619,22 @@ type GetActorResponse = GetActorResponses[keyof GetActorResponses];
3573
3619
  type UpdateActorData = {
3574
3620
  body: {
3575
3621
  name?: string;
3622
+ /**
3623
+ * External identifier (e.g. WhatsApp phone number)
3624
+ */
3625
+ external_id?: string;
3576
3626
  /**
3577
3627
  * Persona-specific instructions
3578
3628
  */
3579
3629
  instructions?: string;
3630
+ /**
3631
+ * Agent to link this actor to. Mutually exclusive with chat_id.
3632
+ */
3633
+ agent_id?: string | null;
3634
+ /**
3635
+ * Chat to link this actor to. Mutually exclusive with agent_id.
3636
+ */
3637
+ chat_id?: string | null;
3580
3638
  /**
3581
3639
  * Memory ID to link to this actor. Set to null to unlink.
3582
3640
  */
@@ -4174,6 +4232,10 @@ type GetAiProviderResponse = GetAiProviderResponses[keyof GetAiProviderResponses
4174
4232
  type UpdateAiProviderData = {
4175
4233
  body: {
4176
4234
  name?: string;
4235
+ /**
4236
+ * LLM provider
4237
+ */
4238
+ provider?: 'openai' | 'anthropic' | 'google' | 'cohere' | 'mistral';
4177
4239
  default_model?: string;
4178
4240
  secret_id?: string;
4179
4241
  base_url?: string;
@@ -4240,9 +4302,9 @@ type CreateApiKeyData = {
4240
4302
  */
4241
4303
  name: string;
4242
4304
  /**
4243
- * Optional project ID to scope this key to a specific project
4305
+ * Project ID this key is scoped to. Required keys cannot span projects.
4244
4306
  */
4245
- project_id?: string;
4307
+ project_id: string;
4246
4308
  /**
4247
4309
  * Optional list of policy IDs to attach. Key permissions become the intersection of user policies and these policies.
4248
4310
  */
@@ -4338,9 +4400,9 @@ type UpdateApiKeyData = {
4338
4400
  body: {
4339
4401
  name?: string;
4340
4402
  /**
4341
- * Set to null to remove project scope
4403
+ * Re-scope the key to a different project. Cannot be null keys are always project-scoped.
4342
4404
  */
4343
- project_id?: string | null;
4405
+ project_id?: string;
4344
4406
  /**
4345
4407
  * Replace the key's policy list (empty array removes all)
4346
4408
  */
@@ -4714,7 +4776,11 @@ type UpdateConversationData = {
4714
4776
  /**
4715
4777
  * New conversation status
4716
4778
  */
4717
- status: 'open' | 'closed';
4779
+ status?: 'open' | 'closed';
4780
+ /**
4781
+ * New conversation name
4782
+ */
4783
+ name?: string | null;
4718
4784
  };
4719
4785
  path: {
4720
4786
  /**
@@ -5102,6 +5168,22 @@ type CreateDocumentData = {
5102
5168
  */
5103
5169
  path?: string;
5104
5170
  filename?: string;
5171
+ /**
5172
+ * Document title
5173
+ */
5174
+ title?: string;
5175
+ /**
5176
+ * Arbitrary metadata object
5177
+ */
5178
+ metadata?: {
5179
+ [key: string]: unknown;
5180
+ };
5181
+ /**
5182
+ * Key-value tags
5183
+ */
5184
+ tags?: {
5185
+ [key: string]: string;
5186
+ };
5105
5187
  /**
5106
5188
  * How to split the content into embeddable chunks. `whole` (default) stores the content as a single chunk; `size` splits into fixed-size character windows with overlap. `page` is equivalent to `whole` for plain text.
5107
5189
  */
@@ -6102,7 +6184,7 @@ type ReplaceFileTagsResponses = {
6102
6184
  type ReplaceFileTagsResponse = ReplaceFileTagsResponses[keyof ReplaceFileTagsResponses];
6103
6185
  type ValidateFormationData = {
6104
6186
  body: {
6105
- template: FormationTemplateInput;
6187
+ template?: FormationTemplateInput;
6106
6188
  };
6107
6189
  path?: never;
6108
6190
  query?: never;
@@ -6133,7 +6215,7 @@ type PlanFormationData = {
6133
6215
  formation_id?: string;
6134
6216
  template: FormationTemplateInput;
6135
6217
  /**
6136
- * Runtime parameter values that override or supply template parameter defaults. Keys must match parameter names declared in `template.parameters`.
6218
+ * Runtime parameter values that override or supply template parameter defaults. Keys must match parameter names declared in `template.parameters`. A parameter declared with `use_previous_value: true` may be omitted to reuse its stored value.
6137
6219
  *
6138
6220
  */
6139
6221
  parameters?: {
@@ -6308,7 +6390,7 @@ type UpdateFormationData = {
6308
6390
  body?: {
6309
6391
  template?: FormationTemplateInput;
6310
6392
  /**
6311
- * Runtime parameter values that override or supply template parameter defaults. Keys must match parameter names declared in `template.parameters`. Required parameters (those without a default) must be provided here.
6393
+ * Runtime parameter values that override or supply template parameter defaults. Keys must match parameter names declared in `template.parameters`. Required parameters (those without a default) must be provided here, unless the parameter is declared with `use_previous_value: true`, in which case omitting it reuses the previously stored value.
6312
6394
  *
6313
6395
  */
6314
6396
  parameters?: {
@@ -9180,14 +9262,14 @@ declare class ApiKeys {
9180
9262
  /**
9181
9263
  * List API keys
9182
9264
  *
9183
- * Lists API keys accessible to the caller. - JWT admin: returns all API keys. - JWT regular user: returns only the user's own API keys. - API key scoped to a project: returns only API keys scoped to that project.
9265
+ * Lists API keys accessible to the caller. - JWT admin: returns all API keys. - JWT regular user: returns only the user's own API keys. - API key: returns only API keys scoped to the key's project.
9184
9266
  *
9185
9267
  */
9186
9268
  static listApiKeys<ThrowOnError extends boolean = false>(options?: Options<ListApiKeysData, ThrowOnError>): RequestResult<ListApiKeysResponses, ListApiKeysErrors, ThrowOnError>;
9187
9269
  /**
9188
9270
  * Create an API key
9189
9271
  *
9190
- * Creates a new API key for the authenticated user. - If `project_id` is provided, the key is scoped to that project. - If `policy_ids` is provided, the key's effective permissions are the intersection of the user's policies and the key's policies. - If neither is provided, the key inherits the user's full permissions.
9272
+ * Creates a new API key for the authenticated user. - `project_id` is required: every key is scoped to exactly one project. - If `policy_ids` is provided, the key's effective permissions are the intersection of the user's policies and the key's policies. - Otherwise the key inherits the user's permissions, confined to the key's project.
9191
9273
  *
9192
9274
  */
9193
9275
  static createApiKey<ThrowOnError extends boolean = false>(options: Options<CreateApiKeyData, ThrowOnError>): RequestResult<CreateApiKeyResponses, CreateApiKeyErrors, ThrowOnError>;
@@ -9206,7 +9288,7 @@ declare class ApiKeys {
9206
9288
  /**
9207
9289
  * Update an API key
9208
9290
  *
9209
- * Updates an API key's name, project scope, or policies. Only the owner or an admin can update it.
9291
+ * Updates an API key's name, project scope, or policies. The project scope can be changed to another project but never cleared. Only the owner or an admin can update it.
9210
9292
  */
9211
9293
  static updateApiKey<ThrowOnError extends boolean = false>(options: Options<UpdateApiKeyData, ThrowOnError>): RequestResult<UpdateApiKeyResponses, UpdateApiKeyErrors, ThrowOnError>;
9212
9294
  }
@@ -9458,7 +9540,7 @@ declare class Files {
9458
9540
  /**
9459
9541
  * Upload a file using an upload token
9460
9542
  *
9461
- * Uploads file content authorized by a single-use token from `POST /api/v1/files/presigned-url`. No bearer credential is required — the token is the credential. Accepts either multipart/form-data (field `file`) or JSON with a base64-encoded `content` field. Excluded from the MCP tool surface; clients call it directly over HTTP.
9543
+ * Uploads file content authorized by a single-use token from `POST /api/v1/files/presigned-url`. No bearer credential is required — the token is the credential. Accepts either multipart/form-data (field `file`) or JSON with a base64-encoded `content` field.
9462
9544
  */
9463
9545
  static uploadFileWithToken<ThrowOnError extends boolean = false>(options: Options<UploadFileWithTokenData, ThrowOnError>): RequestResult<UploadFileWithTokenResponses, UploadFileWithTokenErrors, ThrowOnError>;
9464
9546
  /**
package/dist/index.mjs CHANGED
@@ -908,7 +908,7 @@ var ApiKeys = class {
908
908
  /**
909
909
  * List API keys
910
910
  *
911
- * Lists API keys accessible to the caller. - JWT admin: returns all API keys. - JWT regular user: returns only the user's own API keys. - API key scoped to a project: returns only API keys scoped to that project.
911
+ * Lists API keys accessible to the caller. - JWT admin: returns all API keys. - JWT regular user: returns only the user's own API keys. - API key: returns only API keys scoped to the key's project.
912
912
  *
913
913
  */
914
914
  static listApiKeys(options) {
@@ -924,7 +924,7 @@ var ApiKeys = class {
924
924
  /**
925
925
  * Create an API key
926
926
  *
927
- * Creates a new API key for the authenticated user. - If `project_id` is provided, the key is scoped to that project. - If `policy_ids` is provided, the key's effective permissions are the intersection of the user's policies and the key's policies. - If neither is provided, the key inherits the user's full permissions.
927
+ * Creates a new API key for the authenticated user. - `project_id` is required: every key is scoped to exactly one project. - If `policy_ids` is provided, the key's effective permissions are the intersection of the user's policies and the key's policies. - Otherwise the key inherits the user's permissions, confined to the key's project.
928
928
  *
929
929
  */
930
930
  static createApiKey(options) {
@@ -962,7 +962,7 @@ var ApiKeys = class {
962
962
  /**
963
963
  * Update an API key
964
964
  *
965
- * Updates an API key's name, project scope, or policies. Only the owner or an admin can update it.
965
+ * Updates an API key's name, project scope, or policies. The project scope can be changed to another project but never cleared. Only the owner or an admin can update it.
966
966
  */
967
967
  static updateApiKey(options) {
968
968
  return (options.client ?? client).put({
@@ -1479,7 +1479,7 @@ var Files = class {
1479
1479
  /**
1480
1480
  * Upload a file using an upload token
1481
1481
  *
1482
- * Uploads file content authorized by a single-use token from `POST /api/v1/files/presigned-url`. No bearer credential is required — the token is the credential. Accepts either multipart/form-data (field `file`) or JSON with a base64-encoded `content` field. Excluded from the MCP tool surface; clients call it directly over HTTP.
1482
+ * Uploads file content authorized by a single-use token from `POST /api/v1/files/presigned-url`. No bearer credential is required — the token is the credential. Accepts either multipart/form-data (field `file`) or JSON with a base64-encoded `content` field.
1483
1483
  */
1484
1484
  static uploadFileWithToken(options) {
1485
1485
  return (options.client ?? client).post({
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@soat/sdk",
3
- "version": "0.13.8",
3
+ "version": "0.13.10",
4
4
  "description": "TypeScript SDK for the SOAT API",
5
5
  "type": "module",
6
6
  "main": "dist/index.mjs",