@deepraxis/sdk 0.1.1-dev.ea219e1 → 0.1.1-dev.eb022f5

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.
@@ -1235,6 +1235,72 @@ export const fileCancelUpload = (options) => (options.client ?? client).post({
1235
1235
  url: '/file/v1/uploads/{upload_id}/cancel',
1236
1236
  ...options
1237
1237
  });
1238
+ /**
1239
+ * Create a one-time upload URL
1240
+ *
1241
+ * Upload a local file of up to 2 GiB from a coding agent without sending bytes through the model. Provide basename, exact byte count and MIME type. Up to 104857600 bytes, PUT the file to url with curl -T photo.png -H 'Content-Type: image/png' '<url>'; success returns 201 with the file object, and reuse returns 410 CAPABILITY_USED. Above that threshold, split the file into part_size chunks (default 64000000 bytes), PUT each chunk to its numbered parts[].url in any order, then POST complete_url without a body. Part PUTs return 200; completion returns 201 with the file object, including its state, or 400 if a part is missing. A processing file can be polled with files.retrieve until active. Identical part bytes may be retried; changed bytes at the same number return 400. Completion reuse returns 410 CAPABILITY_USED. Each PUT requires the exact signed Content-Length; single-PUT Content-Type must match content_type or be omitted. Expired, revoked, invalid, wrong-action or cross-organization URLs return 404. URL lifetime defaults to 900 seconds for single PUT or 3600 for multipart, at most 604800; all multipart URLs share an expiry. Multipart creation reserves storage quota. Issuance requires the same unscoped credential as direct file creation. Each issuance creates a new upload and is not idempotent. Example body: {"filename":"photo.png","bytes":2048,"content_type":"image/png"}.
1242
+ */
1243
+ export const fileCreateSignedUpload = (options) => (options.client ?? client).post({
1244
+ security: [{
1245
+ key: 'BearerAuth',
1246
+ scheme: 'bearer',
1247
+ type: 'http'
1248
+ }, {
1249
+ key: 'ApiKeyAuth',
1250
+ name: 'X-API-Key',
1251
+ type: 'apiKey'
1252
+ }],
1253
+ url: '/file/v1/uploads/signed',
1254
+ ...options,
1255
+ headers: {
1256
+ 'Content-Type': 'application/json',
1257
+ ...options.headers
1258
+ }
1259
+ });
1260
+ /**
1261
+ * Create a download URL
1262
+ *
1263
+ * Download a file's bytes to a local disk from a coding agent without sending them through the model. Use file_id from file creation or listing, then run curl -fsSL -o <filename> '<url>' locally with the returned URL; GET needs no Authorization header. The link is reusable until expiry and supports a single byte Range (for example Range: bytes=0-9 returns 206). Revoke it with files.contentLinks.revoke, passing the token after /c/ in the URL. Expired, revoked, invalid or cross-organization URLs return 404. Lifetime defaults to 3600 seconds and is at most 604800 seconds. Issuance requires the same credential and file-read access as files.retrieveContent; a processing file returns 409 FILE_NOT_READY, so poll files.retrieve until active before retrying. A missing, expired or other-organization file returns 404. Each issuance creates a new link. OpenAI Files has no signed download URL; this follows S3 presigned GET semantics. Example body: {"ttl_seconds":3600}.
1264
+ */
1265
+ export const fileCreateContentUrl = (options) => (options.client ?? client).post({
1266
+ security: [{
1267
+ key: 'BearerAuth',
1268
+ scheme: 'bearer',
1269
+ type: 'http'
1270
+ }, {
1271
+ key: 'ApiKeyAuth',
1272
+ name: 'X-API-Key',
1273
+ type: 'apiKey'
1274
+ }],
1275
+ url: '/file/v1/files/{file_id}/content_url',
1276
+ ...options,
1277
+ headers: {
1278
+ 'Content-Type': 'application/json',
1279
+ ...options.headers
1280
+ }
1281
+ });
1282
+ /**
1283
+ * Revoke a file content link
1284
+ *
1285
+ * Stop a previously issued content link from reading a file. Obtain the link with files.contentUrl.create. Use file_id from file creation or listing and the token path component from a content URL (/c/<token>), not the complete URL. The caller must own the file and have write access; a read-only binding is refused. Revocation propagates through the capability deny list within 30 seconds; the file and other links remain available. Only current IAM capability tokens can be revoked; legacy content links expire at the migration deadline. Example body: {"token":"<token from /c/>"}.
1286
+ */
1287
+ export const fileRevokeContentLink = (options) => (options.client ?? client).post({
1288
+ security: [{
1289
+ key: 'BearerAuth',
1290
+ scheme: 'bearer',
1291
+ type: 'http'
1292
+ }, {
1293
+ key: 'ApiKeyAuth',
1294
+ name: 'X-API-Key',
1295
+ type: 'apiKey'
1296
+ }],
1297
+ url: '/file/v1/files/{file_id}/content_links:revoke',
1298
+ ...options,
1299
+ headers: {
1300
+ 'Content-Type': 'application/json',
1301
+ ...options.headers
1302
+ }
1303
+ });
1238
1304
  /**
1239
1305
  * Health Check
1240
1306
  *
@@ -1389,6 +1455,28 @@ export const remixVideo = (options) => (options.client ?? client).post({
1389
1455
  url: '/model/v1/videos/{video_id}/remix',
1390
1456
  ...options
1391
1457
  });
1458
+ /**
1459
+ * Ask structured decision questions
1460
+ *
1461
+ * Ask typed questions about a state and get calibrated probabilities instead of generated text. Same request and response as TypeSafe System One. Use model ids from model.models.list declaring typesafe.systemone. Send one or more noul, choice or score questions; answers use the same question ids. Input tokens are charged at the catalog input price; output tokens are free. usage.cost and X-Praxis-Cost-Usd expose the same customer charge in USD. box questions and assets are unsupported and return 400: images are not supported. Unknown top-level fields pass unchanged to the native upstream.
1462
+ */
1463
+ export const createSystemone = (options) => (options.client ?? client).post({
1464
+ security: [{
1465
+ key: 'BearerAuth',
1466
+ scheme: 'bearer',
1467
+ type: 'http'
1468
+ }, {
1469
+ key: 'ApiKeyAuth',
1470
+ name: 'X-API-Key',
1471
+ type: 'apiKey'
1472
+ }],
1473
+ url: '/model/v1/systemone',
1474
+ ...options,
1475
+ headers: {
1476
+ 'Content-Type': 'application/json',
1477
+ ...options.headers
1478
+ }
1479
+ });
1392
1480
  /**
1393
1481
  * Transcribe audio
1394
1482
  *
@@ -1900,6 +1988,24 @@ export const countResponseInputTokens = (options) => (options.client ?? client).
1900
1988
  ...options.headers
1901
1989
  }
1902
1990
  });
1991
+ /**
1992
+ * List organization members
1993
+ *
1994
+ * Concepts follow GitHub org members: find a person's user id, for example to assign an approver to an approval task. Lists only members of the organization behind your API key or runtime token, ordered by joined_at ascending (membership id breaks ties). Ask the user who should approve, then use that member's id. Emails are visible only within this organization. The request cannot select another organization. Pass next_page unchanged as page; null means the end. Read-only; no usage charge. Example: GET /organization/v1/members?limit=20.
1995
+ */
1996
+ export const listOrganizationMembers = (options) => (options?.client ?? client).get({
1997
+ security: [{
1998
+ key: 'BearerAuth',
1999
+ scheme: 'bearer',
2000
+ type: 'http'
2001
+ }, {
2002
+ key: 'ApiKeyAuth',
2003
+ name: 'X-API-Key',
2004
+ type: 'apiKey'
2005
+ }],
2006
+ url: '/organization/v1/members',
2007
+ ...options
2008
+ });
1903
2009
  /**
1904
2010
  * List your organization's feedback
1905
2011
  *
@@ -2384,7 +2490,7 @@ export const makeSandboxDirectory = (options) => (options.client ?? client).post
2384
2490
  /**
2385
2491
  * Run a command in the sandbox
2386
2492
  *
2387
- * Execute a shell command and wait for stdout, stderr and exitCode. Supply cmd, optional cwd and envs, and timeoutMs (1–60000 milliseconds, default 60000). Unlike E2B, this endpoint is synchronous only: no background mode, callbacks or unlimited timeout; output is bounded to 1 MiB including stream framing. Nonzero exit codes return 200 with the result. A timeout returns COMMAND_TIMEOUT (504); transport timeout does not confirm process termination, so do not blindly retry commands with side effects. Example body: {"cmd":"echo hi"}.
2493
+ * Execute a shell command and wait for stdout, stderr and exitCode. Supply cmd, optional cwd and envs, and timeoutMs (1–3600000 milliseconds, default 600000, that is 10 minutes; E2B defaults to 60000). Unlike E2B, this endpoint is synchronous only: no background mode, callbacks or unlimited timeout (timeoutMs 0); output is bounded to 1 MiB including stream framing. Nonzero exit codes return 200 with the result. A timeout returns COMMAND_TIMEOUT (504); transport timeout does not confirm process termination, so do not blindly retry commands with side effects. Example body: {"cmd":"echo hi"}.
2388
2494
  */
2389
2495
  export const runSandboxCommand = (options) => (options.client ?? client).post({
2390
2496
  security: [{
@@ -2464,7 +2570,7 @@ export const sessionsUpdate = (options) => (options.client ?? client).post({
2464
2570
  /**
2465
2571
  * List agents
2466
2572
  *
2467
- * List the agents of the workspace behind your API key, newest first, in pages of at most 100 (default 20). Use it to find an agent id before creating a session; to read one agent use agents.retrieve, to see its history use agents.versions.list. Archived agents are hidden unless include_archived is true. Filter kind=general or kind=personal for durable-computer agents or kind=service for per-session environments. Pass next_page from the response as page to read the next page; a null next_page means the end.
2573
+ * List the agents of the workspace behind your API key, newest first, in pages of at most 100 (default 20). Use it to find an agent id before creating a session; to read one agent use agents.retrieve, to see its history use agents.versions.list. Archived agents are hidden unless include_archived is true. Filter kind=general or kind=personal for durable-computer agents, kind=service for per-session environments, or kind=assume for external MCP clients. Pass next_page from the response as page to read the next page; a null next_page means the end.
2468
2574
  */
2469
2575
  export const agentsList = (options) => (options?.client ?? client).get({
2470
2576
  security: [{
@@ -2482,7 +2588,7 @@ export const agentsList = (options) => (options?.client ?? client).get({
2482
2588
  /**
2483
2589
  * Create agent
2484
2590
  *
2485
- * Create a reusable agent definition, then pass its returned id to sessions.create to start a conversation. The definition includes model, system prompt, tools, MCP servers and an optional multiagent roster. It is saved as version 1; real updates create new versions. skills attaches uploaded custom skills as [{type: "custom", skill_id, version?}] (skill_id from skills.create or skills.list; at most 20, no repeated skill_id). Omit version, or send "latest", to use the skill's newest version when a session starts. type anthropic returns 400. Use tools: [{type: "agent_toolset_20260401"}] for built-in tools including codemode, skill and agent; inspect toolsets.list for names and schemas, and keep bash enabled for native additions. To offer only some tools, set default_config: {enabled: false} and list the tools to keep in configs, e.g. tools: [{type: "agent_toolset_20260401", default_config: {enabled: false}, configs: [{name: "codemode", enabled: true}, {name: "bash", enabled: true, permission_policy: {type: "always_ask"}}]}]; every tool not listed, including todo_write, enter_plan_mode, ask_user_question and goal_read, follows default_config, and the response echoes it. codemode runs through bash, so enabling codemode while bash is disabled returns 400. Optional mcp_toolset entries pair with mcp_servers. model accepts platform model IDs such as deepseek-flash, not only the Claude IDs in the protocol examples. model.settings.reasoning sets default thinking; other extra model controls return 400. model and every models.allowed entry must be a catalog model that can run an agent: an unknown id returns 400 "model <id> is not in the model catalog" and an embedding, image or speech model returns 400 "model <id> cannot run an agent". name is a label, not a unique key: 1 to 256 characters after trimming, no NUL or line breaks. avatar is trimmed, must not contain spaces or point at a loopback, private or internal host, and its scheme is stored in lowercase. script and workflow binding ids are stored in lowercase, the form automation matches; bindings together with environment_id null return 400 because bindings need a machine. Example: {"name":"helper","model":{"id":"deepseek-flash"},"tools":[{"type":"agent_toolset_20260401"}]}.
2591
+ * Create a reusable agent definition, then pass its returned id to sessions.create to start a conversation. The definition includes model, system prompt, tools, MCP servers and an optional multiagent roster. It is saved as version 1; real updates create new versions. skills attaches uploaded custom skills as [{type: "custom", skill_id, version?}] (skill_id from skills.create or skills.list; at most 20, no repeated skill_id). Omit version, or send "latest", to use the skill's newest version when a session starts. type anthropic returns 400. Use tools: [{type: "agent_toolset_20260401"}] for built-in tools including codemode, skill and agent; inspect toolsets.list for names and schemas, and keep bash enabled for native additions. To offer only some tools, set default_config: {enabled: false} and list the tools to keep in configs, e.g. tools: [{type: "agent_toolset_20260401", default_config: {enabled: false}, configs: [{name: "codemode", enabled: true}, {name: "bash", enabled: true, permission_policy: {type: "always_ask"}}]}]; every tool not listed, including todo_write, enter_plan_mode, ask_user_question and goal_read, follows default_config, and the response echoes it. codemode runs through bash, so enabling codemode while bash is disabled returns 400. Optional mcp_toolset entries pair with mcp_servers. model accepts platform model IDs such as deepseek-flash, not only the Claude IDs in the protocol examples. model.settings.reasoning sets default thinking; other extra model controls return 400. model and every models.allowed entry must be a catalog model that can run an agent: an unknown id returns 400 "model <id> is not in the model catalog" and an embedding, image or speech model returns 400 "model <id> cannot run an agent". name is a label, not a unique key: 1 to 256 characters after trimming, no NUL or line breaks. avatar is trimmed, must not contain spaces or point at a loopback, private or internal host, and its scheme is stored in lowercase. script and workflow binding ids are stored in lowercase, the form automation matches; bindings together with environment_id null return 400 because bindings need a machine. Example: {"name":"helper","model":{"id":"deepseek-flash"},"tools":[{"type":"agent_toolset_20260401"}]}. For kind assume, provide name without model, models, subagent_model, subagents or multiagent; omit computer_id to register a new computer named after the agent without starting an instance, or provide an existing computer_id; vault_ids are accepted, bindings and environment_id are refused. Drive assume agents over MCP at /agent/v1/agents/{id}/mcp.
2486
2592
  */
2487
2593
  export const agentsCreate = (options) => (options.client ?? client).post({
2488
2594
  security: [{
@@ -2522,7 +2628,7 @@ export const agentsRetrieve = (options) => (options.client ?? client).get({
2522
2628
  /**
2523
2629
  * Update agent
2524
2630
  *
2525
- * Save configuration changes as a new immutable version. Send latest_version from a default retrieve or update response as the request version for optimistic concurrency; a stale value returns 409. apply defaults to true and makes the new version effective; apply false saves without changing active_version. The response contains the effective configuration, with version equal to active_version and latest_version naming the newest saved version. An unchanged configuration, including a note-only update, is a no-op returning 200 and the current effective version without creating or activating a version. version_note records up to 280 characters only when a configuration change creates a new version; null is equivalent to omission. Use agents.versions.apply to activate an existing saved version. Existing sessions and tokens keep their version. Omitted fields keep their value. multiagent takes null or a coordinator roster; subagent_model keeps its value when omitted and is cleared by null. Archived agents cannot be updated. tools: [] removes every tool, while tools: null returns 400 (tools cannot be null; send [] to remove every tool). On update, omit skills to keep them, send an array to replace them, or send [] or null to clear them. skills attaches uploaded custom skills as [{type: "custom", skill_id, version?}] (skill_id from skills.create or skills.list; at most 20, no repeated skill_id). Omit version, or send "latest", to use the skill's newest version when a session starts. type anthropic returns 400.
2631
+ * Save configuration changes as a new immutable version. Send latest_version from a default retrieve or update response as the request version for optimistic concurrency; a stale value returns 409. apply defaults to true and makes the new version effective; apply false saves without changing active_version. The response contains the effective configuration, with version equal to active_version and latest_version naming the newest saved version. An unchanged configuration, including a note-only update, is a no-op returning 200 and the current effective version without creating or activating a version. version_note records up to 280 characters only when a configuration change creates a new version; null is equivalent to omission. Use agents.versions.apply to activate an existing saved version. Existing sessions and tokens keep their version. Omitted fields keep their value. multiagent takes null or a coordinator roster; subagent_model keeps its value when omitted and is cleared by null. Archived agents cannot be updated. tools: [] removes every tool, while tools: null returns 400 (tools cannot be null; send [] to remove every tool). On update, omit skills to keep them, send an array to replace them, or send [] or null to clear them. skills attaches uploaded custom skills as [{type: "custom", skill_id, version?}] (skill_id from skills.create or skills.list; at most 20, no repeated skill_id). Omit version, or send "latest", to use the skill's newest version when a session starts. type anthropic returns 400. Assume agents reject model, models, subagent_model, subagents and multiagent on every update; other fields follow the general agent rules, with vault_ids also accepted.
2526
2632
  */
2527
2633
  export const agentsUpdate = (options) => (options.client ?? client).post({
2528
2634
  security: [{
@@ -2598,7 +2704,7 @@ export const sessionsList = (options) => (options?.client ?? client).get({
2598
2704
  /**
2599
2705
  * Create session
2600
2706
  *
2601
- * Create a session: one conversation with an agent. Pass agent as an agent id or {type:"agent", id, version?}; an id alone, or an object without version, pins the agent's active_version (the version chosen with agents.versions.apply, not necessarily the newest saved one). Unlike Anthropic Managed Agents, omit environment_id to use the default environment saved in the agent version (light for a new agent), unless computer_id (explicit, or the agent's default) selects a Computer; pass an environment id for a sandbox recipe. For service agents, explicit null allocates no machine, so codemode, bash and other machine tools are unavailable. Optional model must be one of the agent's allowed models; optional thinking is {effort: low|medium|high|xhigh|max|none} or null, where null inherits the agent default and then the model default (none requires the model to allow disabling thinking). Selections are saved before initial_events run; invalid ones return 400 invalid_request_error. Unlike Anthropic Managed Agents, the only inline agent override is system ({type:"agent_with_overrides", id, system}); to change the model, tools, MCP servers or skills, save a version instead. Supports vault_ids, up to 50, owned by the current organization and not archived; credential injection is deferred to a later version. budget is {type:"limit", max_list_cost:{amount, currency:"USD"}} where amount is a positive decimal string of US dollars with at most 2 decimal places ("20.00" is USD 20.00); omitted budget defaults to "20.00" and null removes the limit. Up to 500 file resources can be attached. Use initial_events to send a first user.message in this request, or send messages afterwards with sessions.events.send. The returned status can still be idle before initial events run; read agent.message and the subsequent session.status_idle event to confirm completion.
2707
+ * Create a session: one conversation with an agent. Pass agent as an agent id or {type:"agent", id, version?}; an id alone, or an object without version, pins the agent's active_version (the version chosen with agents.versions.apply, not necessarily the newest saved one). Unlike Anthropic Managed Agents, omit environment_id to use the default environment saved in the agent version (light for a new agent), unless computer_id (explicit, or the agent's default) selects a Computer; pass an environment id for a sandbox recipe. For service agents, explicit null allocates no machine, so codemode, bash and other machine tools are unavailable. Optional model must be one of the agent's allowed models; optional thinking is {effort: low|medium|high|xhigh|max|none} or null, where null inherits the agent default and then the model default (none requires the model to allow disabling thinking). Selections are saved before initial_events run; invalid ones return 400 invalid_request_error. Unlike Anthropic Managed Agents, the only inline agent override is system ({type:"agent_with_overrides", id, system}); to change the model, tools, MCP servers or skills, save a version instead. Supports vault_ids, up to 50, owned by the current organization and not archived; credential injection is deferred to a later version. budget is {type:"limit", max_list_cost:{amount, currency:"USD"}} where amount is a positive decimal string of US dollars with at most 2 decimal places ("20.00" is USD 20.00); omitted budget defaults to "20.00" and null removes the limit. Up to 500 file resources can be attached. Use initial_events to send a first user.message in this request, or send messages afterwards with sessions.events.send. The returned status can still be idle before initial events run; read agent.message and the subsequent session.status_idle event to confirm completion. Assume agents return 400 INVALID_PARAMS; drive them over MCP at /agent/v1/agents/{id}/mcp instead.
2602
2708
  */
2603
2709
  export const sessionsCreate = (options) => (options.client ?? client).post({
2604
2710
  security: [{
@@ -3624,7 +3730,7 @@ export const applicationListGrants = (options) => (options.client ?? client).get
3624
3730
  /**
3625
3731
  * Create grant
3626
3732
  *
3627
- * Let this Worker's platform token access one of your databases, folders or knowledge bases.
3733
+ * Record access to an organization-owned database or knowledge base, all organization files (files, id *), or models (models, id *, read only). Each resource and optional alias must be unique within this Worker. Foreign and missing resources both return RESOURCE_NOT_FOUND (404); an unavailable resource service returns PROVIDER_CAPACITY (503, retryable).
3628
3734
  */
3629
3735
  export const applicationCreateGrant = (options) => (options.client ?? client).post({
3630
3736
  security: [{
@@ -3769,7 +3875,7 @@ export const automationActionsGet = (options) => (options.client ?? client).get(
3769
3875
  /**
3770
3876
  * Update an action
3771
3877
  *
3772
- * Update after checking compatibility against the current and five recent revisions. Widening inputs and narrowing outputs are compatible, including length, item count, property count, type (integer/number), and multipleOf (the new input factor divides the old one; the reverse holds for outputs). dry_run=true returns only CompatResult and may omit If-Match; a supplied header is still checked, and * matches any existing representation. Normal updates require If-Match and return ActionDef with ETag; previews return no ETag. Omitted optional fields retain their existing values only for description and labels; when constructing a new revision, errors defaults to [], omitted annotations keys to false, timeout_ms to 30000, and message to null. Incompatible normal updates return 422 SCHEMA_INCOMPATIBLE with issues; unchanged contents retain the existing revision.
3878
+ * Update after checking compatibility against the current and five recent revisions. Widening inputs and narrowing outputs are compatible, including length, item count, property count, type (integer/number), and multipleOf (the new input factor divides the old one; the reverse holds for outputs). dry_run=true returns only CompatResult and may omit If-Match; a supplied header is still checked, and * matches any existing representation. Normal updates require If-Match and return ActionDef with ETag; previews return no ETag. Omitted optional fields retain their existing values only for description and labels; when constructing a new revision, errors defaults to [], omitted annotations keys to false, timeout_ms to 300000, and message to null. Incompatible normal updates return 422 SCHEMA_INCOMPATIBLE with issues; unchanged contents retain the existing revision.
3773
3879
  */
3774
3880
  export const automationActionsUpdate = (options) => (options.client ?? client).put({
3775
3881
  security: [{
@@ -4212,7 +4318,7 @@ export const automationWorkflowsList = (options) => (options?.client ?? client).
4212
4318
  /**
4213
4319
  * Create a workflow
4214
4320
  *
4215
- * Workflow syntax reference: https://deepraxis.com/docs/developers/automation/reference/workflow-syntax. Save a YAML workflow as an editable draft; this does not validate, publish or run it, so check it with validate (kind=workflow) first. Minimal draft: document with dsl ("1.0.3"), namespace, name and version, plus a do list of steps, for example document: {dsl: "1.0.3", namespace: demo, name: add, version: "1.0.0"} and do: [{first: {call: demo/add-one, with: {n: "${ .n }"}}}]. call: <ns/name> calls an Action directly (bare name for built-ins such as ocr) and with is the Action input; the input contract is at current_revision.input_schema in the get-action response. run: starts a saved script or child workflow. The run input is . in the first step, and expressions are jq written as a whole ${ ... } string. Limits: Action 30 s (run-sandbox 10 min), workflow 24 h by default and 30 days at most, payload 1 MiB. Test the draft by sending its source and language=yaml to praxis.automation.runs.create. Guide: /docs/developers/automation/guides/write-workflow. Error details are in the errors[] of the response (pointer, detail, hint). Choose your own namespace without registering it first; praxis is reserved for built-in Actions. Scripts and workflows share names within the tenant; a duplicate returns NAME_TAKEN. run.workflow accepts ns/name@range or {namespace, name, version, input}; run.script uses the same reference shape as a platform extension. Object namespace, name and version are required; version accepts an exact version, dist-tag or range, locked at publication. Object input defaults to {} and supports expressions; string references retain task-level with. run.await defaults to true and returns the child output. With false, the child uses detach and the task immediately returns {run_id}; parent cancellation does not cascade. Inline script.code returns DEFINITION_INVALID with a detail asking you to save a script and reference it first. raise.error retains its type URI, status, title and detail in the run error.
4321
+ * Workflow syntax reference: https://deepraxis.com/docs/developers/automation/reference/workflow-syntax. Save a YAML workflow as an editable draft; this does not validate, publish or run it, so check it with validate (kind=workflow) first. Minimal draft: document with dsl ("1.0.3"), namespace, name and version, plus a do list of steps, for example document: {dsl: "1.0.3", namespace: demo, name: add, version: "1.0.0"} and do: [{first: {call: demo/add-one, with: {n: "${ .n }"}}}]. call: <ns/name> calls an Action directly (bare name for built-ins such as ocr) and with is the Action input; the input contract is at current_revision.input_schema in the get-action response. run: starts a saved script or child workflow. The run input is . in the first step, and expressions are jq written as a whole ${ ... } string. Limits: Action 5 min (run-sandbox 6 h), workflow 24 h by default and 30 days at most, payload 1 MiB. Test the draft by sending its source and language=yaml to praxis.automation.runs.create. To pause for a person, call praxis/approval (it opens a human task; the step output is the decision); agents answer with praxis.automation.humanTasks.respond on behalf of their user. Guide: /docs/developers/automation/guides/approvals Guide: /docs/developers/automation/guides/write-workflow. Error details are in the errors[] of the response (pointer, detail, hint). Choose your own namespace without registering it first; praxis is reserved for built-in Actions. Scripts and workflows share names within the tenant; a duplicate returns NAME_TAKEN. run.workflow accepts ns/name@range or {namespace, name, version, input}; run.script uses the same reference shape as a platform extension. Object namespace, name and version are required; version accepts an exact version, dist-tag or range, locked at publication. Object input defaults to {} and supports expressions; string references retain task-level with. run.await defaults to true and returns the child output. With false, the child uses detach and the task immediately returns {run_id}; parent cancellation does not cascade. Inline script.code returns DEFINITION_INVALID with a detail asking you to save a script and reference it first. raise.error retains its type URI, status, title and detail in the run error.
4216
4322
  */
4217
4323
  export const automationWorkflowsCreate = (options) => (options.client ?? client).post({
4218
4324
  security: [{
@@ -4544,7 +4650,7 @@ export const automationRunsList = (options) => (options?.client ?? client).get({
4544
4650
  /**
4545
4651
  * Run a published target or execute draft source
4546
4652
  *
4547
- * Execute a published script or workflow with target, or test unpublished code directly with source and language (ts for TypeScript, yaml for workflow YAML), without first saving or publishing a definition. Minimal script: `export default async ({ file_id }: { file_id: string }) => { const result = await call("ocr", { document: { type: "file", file_id } }); return result; }`; send it as source with language="ts", input={"file_id":"<uploaded file ID>"} and wait=0, using a PDF or image already uploaded to your account. To call a platform API directly in the same script, use the praxis SDK object, for example `praxis.model.ocr.create({ body: { model: "glm-ocr", document: { type: "file", file_id } } })`; Action IDs are strings passed to call(), not SDK methods such as praxis.ocr(...). praxis, call, invoke, console and codemode are module-scope bindings, not on globalThis, and need no import; invoke("namespace/name", input) starts a child run. target and source are mutually exclusive; target accepts ns/name@version, @tag or @range and defaults to latest when @ is omitted. Source/input validation precedes run creation, so a separate validate call is optional. input defaults to {} and must match the input schema and fit within 1 MiB. wait is 0–60 seconds (default 0): a terminal run returns 200, otherwise 202. Use the returned id with praxis.automation.runs.retrieve and inspect status, output and error; acceptance does not mean successful completion. For long-running, background or batch work, use wait: 0 and poll the run, or split work into child runs or a workflow; wait only controls the response wait and does not extend execution limits. Actions time out after 30 s (run-sandbox after 10 min); scripts have a 5 min wall-clock limit and a 30 s CPU limit; workflows default to 24 h and allow up to 30 days. Each run can start at most 100 child runs, with at most 20 active at once; nesting depth is limited to 10. Idempotency-Key is scoped to tenant, method and path for 24 hours, excluding wait from the fingerprint; replay returns the current run with Idempotent-Replayed: true, changed contents return 422 and an in-flight request returns 409. With language=yaml, source is a workflow YAML: the run input is . in the first step, and the shape is described in create workflow. Error details are in errors[] (pointer, detail, hint). New non-deterministic run IDs contain 78 characters, compared with 46 for legacy random IDs; treat IDs as opaque strings. Historical and deterministic IDs remain valid; same-millisecond order is not guaranteed.
4653
+ * Execute a published script or workflow with target, or test unpublished code directly with source and language (ts for TypeScript, yaml for workflow YAML), without first saving or publishing a definition. Minimal script: `export default async ({ file_id }: { file_id: string }) => { const result = await call("ocr", { document: { type: "file", file_id } }); return result; }`; send it as source with language="ts", input={"file_id":"<uploaded file ID>"} and wait=0, using a PDF or image already uploaded to your account. To call a platform API directly in the same script, use the praxis SDK object, for example `praxis.model.ocr.create({ body: { model: "glm-ocr", document: { type: "file", file_id } } })`; Action IDs are strings passed to call(), not SDK methods such as praxis.ocr(...). praxis, call, invoke, console and codemode are module-scope bindings, not on globalThis, and need no import; invoke("namespace/name", input) starts a child run. target and source are mutually exclusive; target accepts ns/name@version, @tag or @range and defaults to latest when @ is omitted. Source/input validation precedes run creation, so a separate validate call is optional. input defaults to {} and must match the input schema and fit within 1 MiB. wait is 0–60 seconds (default 0): a terminal run returns 200, otherwise 202. Use the returned id with praxis.automation.runs.retrieve and inspect status, output and error; acceptance does not mean successful completion. For long-running, background or batch work, use wait: 0 and poll the run, or split work into child runs or a workflow; wait only controls the response wait and does not extend execution limits. Actions time out after 5 min (run-sandbox after 6 h); scripts have a 30 min wall-clock limit and a 30 s CPU limit; workflows default to 24 h and allow up to 30 days. Each run can start at most 1,000 child runs, with at most 100 active at once; nesting depth is limited to 10. Idempotency-Key is scoped to tenant, method and path for 24 hours, excluding wait from the fingerprint; replay returns the current run with Idempotent-Replayed: true, changed contents return 422 and an in-flight request returns 409. With language=yaml, source is a workflow YAML: the run input is . in the first step, and the shape is described in create workflow. Error details are in errors[] (pointer, detail, hint). New non-deterministic run IDs contain 78 characters, compared with 46 for legacy random IDs; treat IDs as opaque strings. Historical and deterministic IDs remain valid; same-millisecond order is not guaranteed.
4548
4654
  */
4549
4655
  export const automationRunsCreate = (options) => (options.client ?? client).post({
4550
4656
  security: [{
@@ -5151,31 +5257,57 @@ export const automationHumanTasksDelegate = (options) => (options.client ?? clie
5151
5257
  }
5152
5258
  });
5153
5259
  /**
5154
- * List databases
5260
+ * List script vault bindings
5155
5261
  *
5156
- * Find databases owned by your tenant and obtain their ids for schema or row operations. Excludes deleting by default. status=active or status=deleting selects that state; invalid values return 400 INVALID_PARAMS.
5262
+ * Inspect the whole vaults attached to a saved script, including archived definitions, without reading secret values. Obtain ns and name from automation.scripts.list. Bindings belong to the definition rather than a published version. When vault or secret metadata cannot be read, the binding remains visible with secrets: [] and secrets_unavailable: true.
5157
5263
  */
5158
- export const databaseListDatabases = (options) => (options?.client ?? client).get({
5264
+ export const automationScriptsVaultsList = (options) => (options.client ?? client).get({
5159
5265
  security: [{
5160
- key: 'database-bearerAuth',
5266
+ key: 'BearerAuth',
5161
5267
  scheme: 'bearer',
5162
5268
  type: 'http'
5269
+ }, {
5270
+ key: 'ApiKeyAuth',
5271
+ name: 'X-API-Key',
5272
+ type: 'apiKey'
5163
5273
  }],
5164
- url: '/database/v1/databases',
5274
+ url: '/automation/v1/scripts/{ns}/{name}/vaults',
5165
5275
  ...options
5166
5276
  });
5167
5277
  /**
5168
- * Create database
5278
+ * Delete a script vault binding
5169
5279
  *
5170
- * Creates an empty database for the caller and returns it with status active (HTTP 201); add tables next with praxis.database.databases.tables.create. name is required and is 1–64 visible characters after trimming. labels are optional string tags (at most 64; each key starts with a lowercase letter and uses up to 63 characters of a-z 0-9 _ -; each value is up to 63 characters of a-z 0-9 _ -) that databaseListDatabases can filter on. If initialization fails the call returns 503 CAPACITY and the half-created database is left with status failed; retry by calling create again, which makes a new database. Unlike Supabase, this creates a SQLite-backed database without a PostgreSQL connection or SQL execution endpoint. Use a Praxis credential; access is scoped to its tenant, not to Supabase Auth users or RLS policies.
5280
+ * Remove the vault assignment from this saved script without deleting the vault or its secrets. Obtain aliases from automation.scripts.vaults.list. Repeating deletion of an absent alias on an existing definition succeeds. Bindings also disappear when the definition is permanently deleted, while archival retains them.
5171
5281
  */
5172
- export const databaseCreateDatabase = (options) => (options.client ?? client).post({
5282
+ export const automationScriptsVaultsDelete = (options) => (options.client ?? client).delete({
5173
5283
  security: [{
5174
- key: 'database-bearerAuth',
5284
+ key: 'BearerAuth',
5175
5285
  scheme: 'bearer',
5176
5286
  type: 'http'
5287
+ }, {
5288
+ key: 'ApiKeyAuth',
5289
+ name: 'X-API-Key',
5290
+ type: 'apiKey'
5177
5291
  }],
5178
- url: '/database/v1/databases',
5292
+ url: '/automation/v1/scripts/{ns}/{name}/vaults/{alias}',
5293
+ ...options
5294
+ });
5295
+ /**
5296
+ * Set a script vault binding
5297
+ *
5298
+ * Attach an entire active vault in your organization to a saved script, or replace the vault at an existing alias. Obtain the vault ID or display name from praxis.vault.vaults.list; ambiguous names require an ID. Bindings are independent of published versions and survive archival. The same vault cannot be assigned to two aliases on one definition. Repeating the same assignment is idempotent. Example body: {"vault":"Production"}.
5299
+ */
5300
+ export const automationScriptsVaultsSet = (options) => (options.client ?? client).put({
5301
+ security: [{
5302
+ key: 'BearerAuth',
5303
+ scheme: 'bearer',
5304
+ type: 'http'
5305
+ }, {
5306
+ key: 'ApiKeyAuth',
5307
+ name: 'X-API-Key',
5308
+ type: 'apiKey'
5309
+ }],
5310
+ url: '/automation/v1/scripts/{ns}/{name}/vaults/{alias}',
5179
5311
  ...options,
5180
5312
  headers: {
5181
5313
  'Content-Type': 'application/json',
@@ -5183,45 +5315,57 @@ export const databaseCreateDatabase = (options) => (options.client ?? client).po
5183
5315
  }
5184
5316
  });
5185
5317
  /**
5186
- * Delete database
5318
+ * List workflow vault bindings
5187
5319
  *
5188
- * Soft-delete a database when it should stop accepting schema and row operations. Idempotently enters deleting with a seven-day purge_at. GET remains available; child operations return 409 until restored.
5320
+ * Inspect the whole vaults attached to a saved workflow, including archived definitions, without reading secret values. Obtain ns and name from automation.workflows.list. Bindings belong to the definition rather than a published version. When vault or secret metadata cannot be read, the binding remains visible with secrets: [] and secrets_unavailable: true.
5189
5321
  */
5190
- export const databaseDeleteDatabase = (options) => (options.client ?? client).delete({
5322
+ export const automationWorkflowsVaultsList = (options) => (options.client ?? client).get({
5191
5323
  security: [{
5192
- key: 'database-bearerAuth',
5324
+ key: 'BearerAuth',
5193
5325
  scheme: 'bearer',
5194
5326
  type: 'http'
5327
+ }, {
5328
+ key: 'ApiKeyAuth',
5329
+ name: 'X-API-Key',
5330
+ type: 'apiKey'
5195
5331
  }],
5196
- url: '/database/v1/databases/{database_id}',
5332
+ url: '/automation/v1/workflows/{ns}/{name}/vaults',
5197
5333
  ...options
5198
5334
  });
5199
5335
  /**
5200
- * Get database
5336
+ * Delete a workflow vault binding
5201
5337
  *
5202
- * Returns one database by id, including a database in the deleting state (purge_at then shows when it will be permanently removed). Call it before table or row operations to confirm status is active: schema and row calls on a deleting database return 409 DATABASE_INVALID_STATE. size_bytes is refreshed from live storage at most once every five seconds. A purged or unknown id returns 404 DATABASE_NOT_FOUND.
5338
+ * Remove the vault assignment from this saved workflow without deleting the vault or its secrets. Obtain aliases from automation.workflows.vaults.list. Repeating deletion of an absent alias on an existing definition succeeds. Bindings also disappear when the definition is permanently deleted, while archival retains them.
5203
5339
  */
5204
- export const databaseGetDatabase = (options) => (options.client ?? client).get({
5340
+ export const automationWorkflowsVaultsDelete = (options) => (options.client ?? client).delete({
5205
5341
  security: [{
5206
- key: 'database-bearerAuth',
5342
+ key: 'BearerAuth',
5207
5343
  scheme: 'bearer',
5208
5344
  type: 'http'
5345
+ }, {
5346
+ key: 'ApiKeyAuth',
5347
+ name: 'X-API-Key',
5348
+ type: 'apiKey'
5209
5349
  }],
5210
- url: '/database/v1/databases/{database_id}',
5350
+ url: '/automation/v1/workflows/{ns}/{name}/vaults/{alias}',
5211
5351
  ...options
5212
5352
  });
5213
5353
  /**
5214
- * Update database
5354
+ * Set a workflow vault binding
5215
5355
  *
5216
- * Renames an active database and/or replaces its labels; send only the keys you want to change. labels is replaced as a whole, not merged, so include every label you want to keep. A body without name or labels, or with values equal to the current ones, changes nothing and leaves updated_at as is. A database in the deleting state returns 409 DATABASE_INVALID_STATE; restore it first with databaseRestoreDatabase.
5356
+ * Attach an entire active vault in your organization to a saved workflow, or replace the vault at an existing alias. Obtain the vault ID or display name from praxis.vault.vaults.list; ambiguous names require an ID. Bindings are independent of published versions and survive archival. The same vault cannot be assigned to two aliases on one definition. Repeating the same assignment is idempotent. Example body: {"vault":"Production"}.
5217
5357
  */
5218
- export const databaseUpdateDatabase = (options) => (options.client ?? client).patch({
5358
+ export const automationWorkflowsVaultsSet = (options) => (options.client ?? client).put({
5219
5359
  security: [{
5220
- key: 'database-bearerAuth',
5360
+ key: 'BearerAuth',
5221
5361
  scheme: 'bearer',
5222
5362
  type: 'http'
5363
+ }, {
5364
+ key: 'ApiKeyAuth',
5365
+ name: 'X-API-Key',
5366
+ type: 'apiKey'
5223
5367
  }],
5224
- url: '/database/v1/databases/{database_id}',
5368
+ url: '/automation/v1/workflows/{ns}/{name}/vaults/{alias}',
5225
5369
  ...options,
5226
5370
  headers: {
5227
5371
  'Content-Type': 'application/json',
@@ -5229,123 +5373,149 @@ export const databaseUpdateDatabase = (options) => (options.client ?? client).pa
5229
5373
  }
5230
5374
  });
5231
5375
  /**
5232
- * Restore database
5376
+ * List canvases
5233
5377
  *
5234
- * Recover a soft-deleted database within its seven-day recovery window. Restore before purge_at. An empty body is accepted. Active databases return 409; purged databases return 404.
5378
+ * Discover canvases in the API key's organization and obtain ids for retrieval or editing. Results are ordered by updated_at from newest to oldest. limit is 1–100 and defaults to 50; omit cursor for the first page, then copy next_cursor into the next request until it is null. Deleted canvases are unavailable.
5235
5379
  */
5236
- export const databaseRestoreDatabase = (options) => (options.client ?? client).post({
5380
+ export const canvasListCanvases = (options) => (options?.client ?? client).get({
5237
5381
  security: [{
5238
- key: 'database-bearerAuth',
5382
+ key: 'canvas-bearerAuth',
5239
5383
  scheme: 'bearer',
5240
5384
  type: 'http'
5241
5385
  }],
5242
- url: '/database/v1/databases/{database_id}/restore',
5386
+ url: '/canvas/v1/canvases',
5243
5387
  ...options
5244
5388
  });
5245
5389
  /**
5246
- * Permanently purge database
5390
+ * Create canvas
5247
5391
  *
5248
- * Immediately and irreversibly purges a deleting database. Active databases return 409; absent or already purged databases return 404.
5392
+ * Create a blank design canvas in the API key's organization before drawing with praxis.canvas.canvases.execute. Send an optional name of at most 200 characters; omitting name uses Untitled. Each successful call creates a new canvas and returns its id and viewer_url with HTTP 201; save the id for subsequent reads, edits and deletion.
5249
5393
  */
5250
- export const databasePurgeDatabase = (options) => (options.client ?? client).post({
5394
+ export const canvasCreateCanvas = (options) => (options?.client ?? client).post({
5251
5395
  security: [{
5252
- key: 'database-bearerAuth',
5396
+ key: 'canvas-bearerAuth',
5253
5397
  scheme: 'bearer',
5254
5398
  type: 'http'
5255
5399
  }],
5256
- url: '/database/v1/databases/{database_id}/purge',
5257
- ...options
5400
+ url: '/canvas/v1/canvases',
5401
+ ...options,
5402
+ headers: {
5403
+ 'Content-Type': 'application/json',
5404
+ ...options?.headers
5405
+ }
5258
5406
  });
5259
5407
  /**
5260
- * List tables
5408
+ * Delete canvas
5261
5409
  *
5262
- * Lists every table of an active database with its field definitions. A database holds at most 50 tables, so the single page contains all of them and next_cursor is always null. Use databaseGetTable instead when you also need row_count for one table.
5410
+ * Permanently delete a canvas and its design content when it is no longer needed. Obtain canvas_id from create or list and confirm the target before calling; deletion cannot be undone. HTTP 200 confirms deletion with deleted=true. Subsequent access returns CANVAS_NOT_FOUND, as it does for a missing canvas or one outside the API key's organization.
5263
5411
  */
5264
- export const databaseListTables = (options) => (options.client ?? client).get({
5412
+ export const canvasDeleteCanvas = (options) => (options.client ?? client).delete({
5265
5413
  security: [{
5266
- key: 'database-bearerAuth',
5414
+ key: 'canvas-bearerAuth',
5267
5415
  scheme: 'bearer',
5268
5416
  type: 'http'
5269
5417
  }],
5270
- url: '/database/v1/databases/{database_id}/tables',
5418
+ url: '/canvas/v1/canvases/{canvas_id}',
5271
5419
  ...options
5272
5420
  });
5273
5421
  /**
5274
- * Create table
5422
+ * Retrieve canvas
5275
5423
  *
5276
- * Creates a table together with its initial fields in one call and returns it (HTTP 201) with generated tbl_ and fld_ ids. name must match ^[a-z_][a-z0-9_]{0,62}$ and be unused in this database (duplicate: 409 UNIQUE_VIOLATION). fields is required and may be an empty array; fields can also be added later with databaseAddField. Limits: 50 tables per database, 64 fields per table, and 16 indexed or unique fields per table; exceeding one returns 400 LIMIT_EXCEEDED. Fields default to indexed:false. Set indexed:true explicitly for fields used in filters or ordering. Only indexed:true or unique:true consumes one of the 16 indexed-or-unique field slots; a field with both consumes one slot. Unique fields still consume a slot even with indexed:false. Existing fields are unchanged. Minimal field example: {"name":"notes","type":"string","indexed":false}. Every row also has a system id column, which is not declared as a field. Insert data afterwards with databaseInsert. Unlike Supabase, define schema with this table API and the field APIs; PostgreSQL DDL and SQL migration files cannot be submitted. Each table supports up to 1,000,000 rows.
5424
+ * Inspect the current canvas before editing, like Pencil get_app_state. The response adds top-level node summaries in canvas order and reusable component ids to the canvas metadata. Use these ids in nodes.list, images.list or an execute script; use the returned version as expected_version to detect concurrent edits. Read full node content with nodes.list rather than guessing fields from these summaries.
5277
5425
  */
5278
- export const databaseCreateTable = (options) => (options.client ?? client).post({
5426
+ export const canvasRetrieveCanvas = (options) => (options.client ?? client).get({
5279
5427
  security: [{
5280
- key: 'database-bearerAuth',
5428
+ key: 'canvas-bearerAuth',
5281
5429
  scheme: 'bearer',
5282
5430
  type: 'http'
5283
5431
  }],
5284
- url: '/database/v1/databases/{database_id}/tables',
5285
- ...options,
5286
- headers: {
5287
- 'Content-Type': 'application/json',
5288
- ...options.headers
5289
- }
5432
+ url: '/canvas/v1/canvases/{canvas_id}',
5433
+ ...options
5290
5434
  });
5291
5435
  /**
5292
- * Delete table
5436
+ * Update canvas
5293
5437
  *
5294
- * Permanently drops a table with all of its rows; the deletion is immediate and has no recovery window or undo. Refused with 409 REFERENCE_RESTRICT while a link field of another table points at this table, so delete or change those fields first. Returns {deleted: true}. A table name can be reused afterwards.
5438
+ * Rename a canvas or move it to a collection without editing its design content. Use a canvas id from canvases.list and a collection id from collections.list. Send collection_id=null to make it uncategorized; omit either field to preserve its current value. A canvas belongs to at most one collection. The destination must belong to your organization. Renaming keeps the canvas version unchanged.
5295
5439
  */
5296
- export const databaseDeleteTable = (options) => (options.client ?? client).delete({
5440
+ export const canvasUpdateCanvas = (options) => (options.client ?? client).patch({
5297
5441
  security: [{
5298
- key: 'database-bearerAuth',
5442
+ key: 'BearerAuth',
5299
5443
  scheme: 'bearer',
5300
5444
  type: 'http'
5445
+ }, {
5446
+ key: 'ApiKeyAuth',
5447
+ name: 'X-API-Key',
5448
+ type: 'apiKey'
5301
5449
  }],
5302
- url: '/database/v1/databases/{database_id}/tables/{table}',
5303
- ...options
5450
+ url: '/canvas/v1/canvases/{canvas_id}',
5451
+ ...options,
5452
+ headers: {
5453
+ 'Content-Type': 'application/json',
5454
+ ...options.headers
5455
+ }
5304
5456
  });
5305
5457
  /**
5306
- * Get table
5458
+ * Read canvas nodes
5307
5459
  *
5308
- * Returns one table by id or name with its field definitions, schema_revision and row_count. row_count is only returned by this operation, not by list or create. Use field ids from this response for stable references because field names can be renamed; an unknown table returns 404 TABLE_NOT_FOUND.
5460
+ * Read node documents for inspection before changing individual nodes. Supply 1–100 comma-separated node ids from retrieve or execute, or instance paths such as a/b. depth is an integer at least 0; omit it for complete subtrees. Each requested id maps to a document wrapper or null if absent. Unlike Figma, document contains a Pencil .pen 2.21 node, not a Figma node. For top-level summaries use canvases.retrieve; for pixels use images.list.
5309
5461
  */
5310
- export const databaseGetTable = (options) => (options.client ?? client).get({
5462
+ export const canvasListNodes = (options) => (options.client ?? client).get({
5311
5463
  security: [{
5312
- key: 'database-bearerAuth',
5464
+ key: 'canvas-bearerAuth',
5313
5465
  scheme: 'bearer',
5314
5466
  type: 'http'
5315
5467
  }],
5316
- url: '/database/v1/databases/{database_id}/tables/{table}',
5468
+ url: '/canvas/v1/canvases/{canvas_id}/nodes',
5317
5469
  ...options
5318
5470
  });
5319
5471
  /**
5320
- * Update table
5472
+ * Render canvas nodes
5321
5473
  *
5322
- * Renames a table and/or changes its description; send only the keys to change, and send description null to clear it. The new name must follow ^[a-z_][a-z0-9_]{0,62}$ and be unused (409 UNIQUE_VIOLATION); ids are stable, so renaming never rewrites row data. A body with no changes or values equal to the current ones does not bump schema_revision. Fields cannot be changed here; use databaseAddField, databaseUpdateField and databaseDeleteField.
5474
+ * Render 1–4 nodes to inspect the visual result of a design edit. Use ids from retrieve, execute.created or execute.screenshots; scale defaults to 1 and accepts 0.25–4, and png is the only supported format. Unlike Figma, images contains inline data:image/png;base64,... URLs, not hosted image URLs; a null entry means no image is available for that id. Use nodes.list for editable node content instead of pixels.
5323
5475
  */
5324
- export const databaseUpdateTable = (options) => (options.client ?? client).patch({
5476
+ export const canvasListImages = (options) => (options.client ?? client).get({
5325
5477
  security: [{
5326
- key: 'database-bearerAuth',
5478
+ key: 'canvas-bearerAuth',
5327
5479
  scheme: 'bearer',
5328
5480
  type: 'http'
5329
5481
  }],
5330
- url: '/database/v1/databases/{database_id}/tables/{table}',
5331
- ...options,
5332
- headers: {
5333
- 'Content-Type': 'application/json',
5334
- ...options.headers
5335
- }
5482
+ url: '/canvas/v1/canvases/{canvas_id}/images',
5483
+ ...options
5336
5484
  });
5337
5485
  /**
5338
- * Add field
5486
+ * Execute canvas script
5487
+ *
5488
+ * Draw or edit a canvas atomically with a synchronous Pencil execute script. First create a canvas with praxis.canvas.canvases.create and use its id as canvas_id; inspect an existing canvas with retrieve before modifying it. Send exactly one of script (new source) or edit_id (a failed script to patch using edits). Unlike Figma REST, :execute writes design content; nodes use Pencil .pen schema 2.21 (frame/group/rectangle/ellipse/polygon/path/text/icon/ref/note), not Figma node fields.
5489
+ *
5490
+ * The root variable is document. Synchronous functions are Insert / Copy / Update / Replace / Move / Delete / SetVariables / Get / GetVariables / FindEmptySpace / Print / TakeScreenshot; globals persist for the next call. A first frame needs only this body.script:
5491
+ *
5492
+ * ```js
5493
+ * const f = Insert(document, { type: "frame", name: "Hero", width: 1200, layout: "vertical", padding: 48, fill: "#FFFFFF" }); Insert(f, { type: "text", content: "Hello", fontSize: 32, fill: "#111111" }); Print(f)
5494
+ * ```
5495
+ *
5496
+ * Insert/Copy return the new node id; read the copy with Get(id) — copied descendants get new ids, so change them through Copy's third argument `descendants` keyed by the source node ids. To copy a page and change its title in the same script:
5497
+ *
5498
+ * ```js canvas-example="copy-page"
5499
+ * const page = Insert(document, {type:"frame",name:"Original",width:320,height:160,layout:"vertical",padding:16});
5500
+ * const title = Insert(page, {type:"text",name:"Title",content:"Original",fontSize:24});
5501
+ * const copy = Copy(page, document, {name:"Copy",x:360,descendants:{[title]:{content:"Updated"}}});
5502
+ * Print(copy); Print(Get(copy).children[0].content);
5503
+ * ```
5504
+ *
5505
+ * Use viewer_url to watch the result in Console. TakeScreenshot records node ids in screenshots; call images.list with those ids to fetch PNG data URLs. See the [Canvas execute reference](https://deepraxis.com/en/docs/api/native/canvas/execute) for request fields and results, and the [Canvas node reference](https://deepraxis.com/en/docs/developers/canvas/nodes) for node content.
5506
+ *
5507
+ * A successful write increments version by one. Optionally set expected_version to the version from retrieve or nodes.list; on 409 REVISION_CONFLICT read again, merge your intent and retry with the current version. Every script failure rolls back all writes. On 400 SCRIPT_ERROR, SCRIPT_LIMIT or OPS_REJECTED, use error.details.edit_id plus edits to repair and rerun the stored source without resending the entire script; details may include line, column and rejection. On 400 EDIT_EXPIRED the saved script is older than ten minutes: submit a corrected new script. On 429 CANVAS_BUSY, more than four calls are queued for this canvas: wait for pending calls before retrying.
5508
+ *
5509
+ * Execution errors include error.details.prints containing output printed before failure, with the same string-array shape and output limit as successful prints; rolled-back writes still create no version.
5339
5510
  *
5340
- * Adds one field to an existing table and returns the updated table (HTTP 201). Required inputs are name (lowercase letters, digits and underscores; id and names starting with _ are reserved) and type (string, integer, number, boolean, datetime, json or link); json needs options.schema and link needs options.linked_table_id and options.multiple. Adding a required field to a table that already has rows needs a default, otherwise the call fails with 400 VALIDATION_FAILED; a default is written into every existing row. Fields default to indexed:false. Set indexed:true explicitly for fields used in filters or ordering. Only indexed:true or unique:true consumes one of the 16 indexed-or-unique field slots; a field with both consumes one slot. Unique fields still consume a slot even with indexed:false. Existing fields are unchanged. Minimal field example: {"name":"notes","type":"string","indexed":false}. JSON and link fields cannot be indexed. Limits: 64 fields and 16 indexed or unique fields per table (400 LIMIT_EXCEEDED). Unlike Supabase, schema evolution uses field definitions rather than ALTER TABLE statements or SQL migrations.
5341
5511
  */
5342
- export const databaseAddField = (options) => (options.client ?? client).post({
5512
+ export const canvasExecute = (options) => (options.client ?? client).post({
5343
5513
  security: [{
5344
- key: 'database-bearerAuth',
5514
+ key: 'canvas-bearerAuth',
5345
5515
  scheme: 'bearer',
5346
5516
  type: 'http'
5347
5517
  }],
5348
- url: '/database/v1/databases/{database_id}/tables/{table}/fields',
5518
+ url: '/canvas/v1/canvases/{canvas_id}:execute',
5349
5519
  ...options,
5350
5520
  headers: {
5351
5521
  'Content-Type': 'application/json',
@@ -5353,31 +5523,39 @@ export const databaseAddField = (options) => (options.client ?? client).post({
5353
5523
  }
5354
5524
  });
5355
5525
  /**
5356
- * Delete field
5526
+ * List collections
5357
5527
  *
5358
- * Deletes one field definition from a table and returns the updated table; the deletion is immediate and has no recovery window. Look the field up by id or name. The field's index, if any, is dropped with it, and the name can be reused afterwards. Unknown fields return 400 FIELD_NOT_FOUND.
5528
+ * Find collections and ids for filtering or moving canvases. All organization collections are returned in name order in one response; next_cursor is always null. canvas_count excludes deleted canvases. total_count counts all live canvases, rather than collections, and uncategorized_count counts live canvases without a collection. Use canvases.list with collection_id to read a collection or none to read uncategorized canvases.
5359
5529
  */
5360
- export const databaseDeleteField = (options) => (options.client ?? client).delete({
5530
+ export const canvasListCollections = (options) => (options?.client ?? client).get({
5361
5531
  security: [{
5362
- key: 'database-bearerAuth',
5532
+ key: 'BearerAuth',
5363
5533
  scheme: 'bearer',
5364
5534
  type: 'http'
5535
+ }, {
5536
+ key: 'ApiKeyAuth',
5537
+ name: 'X-API-Key',
5538
+ type: 'apiKey'
5365
5539
  }],
5366
- url: '/database/v1/databases/{database_id}/tables/{table}/fields/{field}',
5540
+ url: '/canvas/v1/collections',
5367
5541
  ...options
5368
5542
  });
5369
5543
  /**
5370
- * Update field
5544
+ * Create collection
5371
5545
  *
5372
- * Changes a field's name, description, required flag, indexed flag, default or json options.schema and returns the updated table. The field type, a link field's linked_table_id and the unique flag cannot be changed (400 FIELD_TYPE_IMMUTABLE or INVALID_PARAMS). Setting required to true fails with 400 VALIDATION_FAILED while existing rows hold null for the field. A new json schema constrains only later writes; existing rows are not revalidated. Renaming never rewrites row data, and a request that changes nothing does not bump schema_revision. Unlike Supabase, field types and uniqueness cannot be altered through SQL migrations; use the supported field settings described here.
5546
+ * Organize canvases by creating a one-level collection in your organization. Send a name of 1–100 characters after trimming; duplicate names are allowed. Each call creates a new collection, initially containing no canvases. Use canvases.update with its id as collection_id to move existing canvases into it. Collections cannot be nested and an organization can have at most 200.
5373
5547
  */
5374
- export const databaseUpdateField = (options) => (options.client ?? client).patch({
5548
+ export const canvasCreateCollection = (options) => (options.client ?? client).post({
5375
5549
  security: [{
5376
- key: 'database-bearerAuth',
5550
+ key: 'BearerAuth',
5377
5551
  scheme: 'bearer',
5378
5552
  type: 'http'
5553
+ }, {
5554
+ key: 'ApiKeyAuth',
5555
+ name: 'X-API-Key',
5556
+ type: 'apiKey'
5379
5557
  }],
5380
- url: '/database/v1/databases/{database_id}/tables/{table}/fields/{field}',
5558
+ url: '/canvas/v1/collections',
5381
5559
  ...options,
5382
5560
  headers: {
5383
5561
  'Content-Type': 'application/json',
@@ -5385,93 +5563,97 @@ export const databaseUpdateField = (options) => (options.client ?? client).patch
5385
5563
  }
5386
5564
  });
5387
5565
  /**
5388
- * List events
5566
+ * Delete collection
5389
5567
  *
5390
- * Read lifecycle and schema events, including while the database is deleting. next_cursor is an opaque string cursor (do not do arithmetic on it): pass it as after_seq for asc or before_seq for desc. Supplying both cursors returns 400 INVALID_PARAMS. Unlike Supabase Realtime, this is paged lifecycle and schema history, not a subscription or a row-change feed; row inserts, updates and deletes do not appear here.
5568
+ * Remove a collection using an id from collections.list. All its canvases are preserved and become uncategorized, with collection_id set to null; read them using canvases.list with collection_id=none. The removed collection cannot be retrieved again, and repeating deletion returns COLLECTION_NOT_FOUND.
5391
5569
  */
5392
- export const databaseListEvents = (options) => (options.client ?? client).get({
5570
+ export const canvasDeleteCollection = (options) => (options.client ?? client).delete({
5393
5571
  security: [{
5394
- key: 'database-bearerAuth',
5572
+ key: 'BearerAuth',
5395
5573
  scheme: 'bearer',
5396
5574
  type: 'http'
5575
+ }, {
5576
+ key: 'ApiKeyAuth',
5577
+ name: 'X-API-Key',
5578
+ type: 'apiKey'
5397
5579
  }],
5398
- url: '/database/v1/databases/{database_id}/events',
5580
+ url: '/canvas/v1/collections/{collection_id}',
5399
5581
  ...options
5400
5582
  });
5401
5583
  /**
5402
- * Delete rows
5584
+ * Retrieve collection
5403
5585
  *
5404
- * Deletes the rows matched by the filter query parameters (the same filters as databaseSelect); with no filter every row of the table matches. Deletion is immediate and cannot be undone. A row that a link field of another table still references makes the whole call fail with 409 REFERENCE_RESTRICT and nothing is deleted. The default response is 204 with no body; send Prefer: return=representation to get HTTP 200 with the deleted rows.
5586
+ * Inspect one collection and its current live canvas count using an id from collections.list or collections.create. The collection must belong to the API key organization. To read its canvases, pass the same id as collection_id to canvases.list; this response contains collection metadata only.
5405
5587
  */
5406
- export const databaseDelete = (options) => (options.client ?? client).delete({
5588
+ export const canvasRetrieveCollection = (options) => (options.client ?? client).get({
5407
5589
  security: [{
5408
- key: 'database-bearerAuth',
5590
+ key: 'BearerAuth',
5409
5591
  scheme: 'bearer',
5410
5592
  type: 'http'
5593
+ }, {
5594
+ key: 'ApiKeyAuth',
5595
+ name: 'X-API-Key',
5596
+ type: 'apiKey'
5411
5597
  }],
5412
- url: '/database/v1/databases/{database_id}/rest/{table}',
5598
+ url: '/canvas/v1/collections/{collection_id}',
5413
5599
  ...options
5414
5600
  });
5415
5601
  /**
5416
- * Select rows
5602
+ * Rename collection
5417
5603
  *
5418
- * Read matching rows with filters, selected columns and ordering. Returns at most 1000 rows per request, including when limit is omitted. Content-Range reports the actual returned interval and the total when count is requested. PATCH and DELETE are not subject to this read cap. Unlike Supabase, casts, aggregates, spread and join modifiers are unsupported. Each table supports up to 1,000,000 rows. Query budget: 8,000 ms with a shared 3,000,000-row safety ceiling. Create indexes on filtered or sorted fields, or narrow the request when it exceeds its budget. Synchronous SQLite aggregates use candidate-row throughput estimates before execution; deployed Workers freeze clocks during synchronous CPU work, so the timer is not a guaranteed server-side interrupt. Count preferences: without filters, exact, planned and estimated all use SQLite's exact b-tree count. With filters, exact counts within budget; planned skips counting and reports an unknown total (Content-Range: 0-24*); estimated attempts exact counting only when the preflight budget allows it, otherwise reports an unknown total. Preference-Applied echoes the requested count mode. Error table: QUERY_CANCELED / PostgREST 57014 is HTTP 500, retryable=false: Query timed out: index filtered or sorted fields, or narrow the range. DATABASE_INVALID_STATE is HTTP 409 for operations on a deleting database. Cleared or nonexistent databases return DATABASE_NOT_FOUND / HTTP 404. The count is an HTTP Content-Range response header, not a JSON property. Use praxis.database.count in the SDK or codemode to return { count: number | null }; a page length is not a total unless you know all matches fit in that page.
5604
+ * Change the display name of a collection from collections.list without changing its id or canvas assignments. Names contain 1–100 characters after trimming and may match another collection name. This operation does not move canvases; use canvases.update with collection_id for that.
5419
5605
  */
5420
- export const databaseSelect = (options) => (options.client ?? client).get({
5606
+ export const canvasUpdateCollection = (options) => (options.client ?? client).patch({
5421
5607
  security: [{
5422
- key: 'database-bearerAuth',
5608
+ key: 'BearerAuth',
5423
5609
  scheme: 'bearer',
5424
5610
  type: 'http'
5611
+ }, {
5612
+ key: 'ApiKeyAuth',
5613
+ name: 'X-API-Key',
5614
+ type: 'apiKey'
5425
5615
  }],
5426
- url: '/database/v1/databases/{database_id}/rest/{table}',
5427
- ...options
5616
+ url: '/canvas/v1/collections/{collection_id}',
5617
+ ...options,
5618
+ headers: {
5619
+ 'Content-Type': 'application/json',
5620
+ ...options.headers
5621
+ }
5428
5622
  });
5429
5623
  /**
5430
- * Count rows
5624
+ * List canvas versions
5431
5625
  *
5432
- * Inspect the HTTP row count and range without retrieving row data; send Prefer: count=exact for a filtered count. Returns no body and does not fetch or serialize row data. A known count determines the interval using limit/offset or Range with a default and maximum page size of 1000. Without a count preference, or when the selected count mode cannot supply a total, Content-Range is **. Singular Accept still validates page cardinality. Unlike Supabase, planned and estimated counts do not use PostgreSQL planner estimates. Count preferences: without filters, exact, planned and estimated all use SQLite's exact b-tree count. With filters, exact counts within budget; planned skips counting and reports an unknown total (Content-Range: 0-24*); estimated attempts exact counting only when the preflight budget allows it, otherwise reports an unknown total. Preference-Applied echoes the requested count mode. Use praxis.database.count in the SDK or codemode to return { count: number | null } from this header without retrieving rows.
5626
+ * Inspect retained edits before restoring a canvas or reading historical nodes and images. Supply a canvas_id from canvases.list or create. Results include successful execute, import and restore commits since history was enabled, newest first. limit is 1–100 and defaults to 30; pass next_cursor as cursor until it is null. All versions from the last 30 days are retained unless the 256 MiB history budget requires pruning; the newest 100 versions are always retained regardless of age or size. earliest_restorable_version is the oldest readable and restorable version, including the state immediately before the first retained commit; null means no history has been recorded. Listing does not change the canvas.
5433
5627
  */
5434
- export const databaseHead = (options) => (options.client ?? client).head({
5628
+ export const canvasListVersions = (options) => (options.client ?? client).get({
5435
5629
  security: [{
5436
- key: 'database-bearerAuth',
5630
+ key: 'BearerAuth',
5437
5631
  scheme: 'bearer',
5438
5632
  type: 'http'
5633
+ }, {
5634
+ key: 'ApiKeyAuth',
5635
+ name: 'X-API-Key',
5636
+ type: 'apiKey'
5439
5637
  }],
5440
- url: '/database/v1/databases/{database_id}/rest/{table}',
5638
+ url: '/canvas/v1/canvases/{canvas_id}/versions',
5441
5639
  ...options
5442
5640
  });
5443
5641
  /**
5444
- * Update rows
5445
- *
5446
- * Updates the rows matched by the filter query parameters (the same filters as databaseSelect); with no filter every row of the table matches. The JSON object body lists only the fields to change, other fields keep their values, and id cannot be changed. Values are validated against the field types and the required and unique settings (400 VALIDATION_FAILED, 409 UNIQUE_VIOLATION). The default response is 204 with no body; send Prefer: return=representation to get HTTP 200 with the updated rows. Each changed row's _version increases by one.
5447
- */
5448
- export const databaseUpdate = (options) => (options.client ?? client).patch({
5449
- security: [{
5450
- key: 'database-bearerAuth',
5451
- scheme: 'bearer',
5452
- type: 'http'
5453
- }],
5454
- url: '/database/v1/databases/{database_id}/rest/{table}',
5455
- ...options,
5456
- headers: {
5457
- 'Content-Type': 'application/json',
5458
- ...options.headers
5459
- }
5460
- });
5461
- /**
5462
- * Insert rows
5642
+ * Restore canvas version
5463
5643
  *
5464
- * Insert rows into an existing table after defining its fields; at most 500 rows per request. Each request is atomic: any failure rolls back the entire batch. There are no transactions across requests.
5465
- * Rows are filled to the union of their keys with null; send Prefer: missing=default to use field defaults for missing keys.
5466
- * The default is return=minimal: success returns HTTP 201 with an empty body. Send Prefer: return=representation to return the inserted rows. With resolution=merge-duplicates, a conflicting row keeps columns omitted from the request; supplied values replace the whole field value (including JSON objects), and explicit null clears a nullable field. With resolution=ignore-duplicates, a conflicting row is left unchanged. Without a conflict, both modes insert a new row using field defaults for omitted fields. In a batch, a key present in another row is filled with null when omitted in this row unless missing=default is set; that null can overwrite a value during merge. With missing=default, omitted keys stay omitted for conflict merges (existing values are preserved); new rows use defaults, or null when no default exists. Explicit null never invokes a default. Unlike Supabase, upsert conflicts can target only id or one unique field, not a composite key. Each table supports up to 1,000,000 rows.
5644
+ * Recover a canvas after an unwanted edit by restoring a retained version from versions.list or its earliest_restorable_version. This replaces current nodes, variables and themes with the target state and creates one new version; history remains available, so restoring can itself be undone with another restore. Restoring the current version succeeds without creating a version. Optionally guard the write with expected_version from retrieve or nodes.list; if it is stale, inspect current state and retry with the new value. Repeating an unguarded request after another edit can create another restore version. Versions from before history was enabled or outside retention cannot be recovered. Connected viewers resync after a successful restore.
5467
5645
  */
5468
- export const databaseInsert = (options) => (options.client ?? client).post({
5646
+ export const canvasRestoreCanvas = (options) => (options.client ?? client).post({
5469
5647
  security: [{
5470
- key: 'database-bearerAuth',
5648
+ key: 'BearerAuth',
5471
5649
  scheme: 'bearer',
5472
5650
  type: 'http'
5651
+ }, {
5652
+ key: 'ApiKeyAuth',
5653
+ name: 'X-API-Key',
5654
+ type: 'apiKey'
5473
5655
  }],
5474
- url: '/database/v1/databases/{database_id}/rest/{table}',
5656
+ url: '/canvas/v1/canvases/{canvas_id}:restore',
5475
5657
  ...options,
5476
5658
  headers: {
5477
5659
  'Content-Type': 'application/json',
@@ -5479,31 +5661,36 @@ export const databaseInsert = (options) => (options.client ?? client).post({
5479
5661
  }
5480
5662
  });
5481
5663
  /**
5482
- * List knowledge bases
5664
+ * List records
5483
5665
  *
5484
- * Lists knowledge bases visible to the caller, newest first by default. Use last_id as after to read the next page; for example, ?limit=20.
5666
+ * Browse records of one object type and obtain ids for retrieval or edits. Discover objectType with schemas.list; select properties by internal names from properties.list. Omit after for the first page, then copy paging.next.after until no next page is returned. archived defaults to false; use objects.search for property filters.
5485
5667
  */
5486
- export const knowledgeListVectorStores = (options) => (options?.client ?? client).get({
5668
+ export const crmObjectsList = (options) => (options.client ?? client).get({
5669
+ querySerializer: { parameters: {
5670
+ associations: { array: { explode: false } },
5671
+ properties: { array: { explode: false } },
5672
+ propertiesWithHistory: { array: { explode: false } }
5673
+ } },
5487
5674
  security: [{
5488
- key: 'knowledge-bearerAuth',
5675
+ key: 'crm-bearerAuth',
5489
5676
  scheme: 'bearer',
5490
5677
  type: 'http'
5491
5678
  }],
5492
- url: '/knowledge/v1/vector_stores',
5679
+ url: '/crm/v1/objects/{objectType}',
5493
5680
  ...options
5494
5681
  });
5495
5682
  /**
5496
- * Create knowledge base
5683
+ * Create record
5497
5684
  *
5498
- * Create a knowledge base, optionally starting ingestion of uploaded file_ids in the same call; no separate attachment or batch is needed for those files. Use the returned id with vectorStores.files.retrieve to poll each attachment until completed, failed or cancelled; store status=completed alone does not mean every file succeeded. Unlike OpenAI vector stores, each file is limited to 100000000 bytes and each account to 100 active/nondeleted stores. Minimal body: {"name":"Refund policies"}.
5685
+ * Create a customer record with property values and optional initial associations. Discover objectType with schemas.list and allowed property names with properties.list; save the returned id for subsequent calls. Each call creates a record. Example for contacts: {"properties":{"email":"person@example.com"}}. Writes return refs (ResourceRef[]) for entity cards and optional property changes in conversations.
5499
5686
  */
5500
- export const knowledgeCreateVectorStore = (options) => (options.client ?? client).post({
5687
+ export const crmObjectsCreate = (options) => (options.client ?? client).post({
5501
5688
  security: [{
5502
- key: 'knowledge-bearerAuth',
5689
+ key: 'crm-bearerAuth',
5503
5690
  scheme: 'bearer',
5504
5691
  type: 'http'
5505
5692
  }],
5506
- url: '/knowledge/v1/vector_stores',
5693
+ url: '/crm/v1/objects/{objectType}',
5507
5694
  ...options,
5508
5695
  headers: {
5509
5696
  'Content-Type': 'application/json',
@@ -5511,45 +5698,50 @@ export const knowledgeCreateVectorStore = (options) => (options.client ?? client
5511
5698
  }
5512
5699
  });
5513
5700
  /**
5514
- * Delete knowledge base
5701
+ * Archive record
5515
5702
  *
5516
- * Remove a knowledge base from active use while keeping a recovery window. Unlike OpenAI vector stores, native DELETE returns the store with status=deleting and ISO purge_at, retains it for 7 days and is idempotent on repeat. Retrieve remains 200; object operations return 409. Use restore before purge_at to recover it, or purge to remove it irreversibly.
5703
+ * Archive a record selected from objects.list or objects.search when it should leave active results. This removes it from normal lists without deleting its history; archived=true can be used to read archived records. Confirm objectType and objectId before calling. Writes return refs (ResourceRef[]) for entity cards and optional property changes in conversations. Unlike HubSpot, this own-face archive returns HTTP 200 with a JSON refs body instead of HTTP 204.
5517
5704
  */
5518
- export const knowledgeDeleteVectorStore = (options) => (options.client ?? client).delete({
5705
+ export const crmObjectsArchive = (options) => (options.client ?? client).delete({
5519
5706
  security: [{
5520
- key: 'knowledge-bearerAuth',
5707
+ key: 'crm-bearerAuth',
5521
5708
  scheme: 'bearer',
5522
5709
  type: 'http'
5523
5710
  }],
5524
- url: '/knowledge/v1/vector_stores/{vector_store_id}',
5711
+ url: '/crm/v1/objects/{objectType}/{objectId}',
5525
5712
  ...options
5526
5713
  });
5527
5714
  /**
5528
- * Retrieve knowledge base
5715
+ * Retrieve record
5529
5716
  *
5530
- * Retrieves a knowledge base using an id returned by create or list. Add ?expand=files to include the first page of attached files. Soft-deleted stores remain readable with status=deleting until purged.
5717
+ * Read one record by id from objects.list, objects.search or objects.create. Select property names with properties and associated object types with associations; use idProperty only when objectId is a value of that unique property. Use archived=true to inspect an archived record.
5531
5718
  */
5532
- export const knowledgeRetrieveVectorStore = (options) => (options.client ?? client).get({
5719
+ export const crmObjectsRetrieve = (options) => (options.client ?? client).get({
5720
+ querySerializer: { parameters: {
5721
+ associations: { array: { explode: false } },
5722
+ properties: { array: { explode: false } },
5723
+ propertiesWithHistory: { array: { explode: false } }
5724
+ } },
5533
5725
  security: [{
5534
- key: 'knowledge-bearerAuth',
5726
+ key: 'crm-bearerAuth',
5535
5727
  scheme: 'bearer',
5536
5728
  type: 'http'
5537
5729
  }],
5538
- url: '/knowledge/v1/vector_stores/{vector_store_id}',
5730
+ url: '/crm/v1/objects/{objectType}/{objectId}',
5539
5731
  ...options
5540
5732
  });
5541
5733
  /**
5542
- * Update knowledge base
5734
+ * Update record
5543
5735
  *
5544
- * Updates an active knowledge base using its returned id. Omitted fields stay unchanged; metadata replaces the whole map. Example body: {"name":"Refund policies"}.
5736
+ * Change only the supplied properties of a record selected from objects.list or objects.search. Omitted properties retain their values. Use property names from properties.list and valid stage ids from pipelines.retrieve. Stage-entry requirements must be satisfied by the resulting record; inspect 400 errors before retrying. Writes return refs (ResourceRef[]) for entity cards and optional property changes in conversations.
5545
5737
  */
5546
- export const knowledgeUpdateVectorStore = (options) => (options.client ?? client).post({
5738
+ export const crmObjectsUpdate = (options) => (options.client ?? client).patch({
5547
5739
  security: [{
5548
- key: 'knowledge-bearerAuth',
5740
+ key: 'crm-bearerAuth',
5549
5741
  scheme: 'bearer',
5550
5742
  type: 'http'
5551
5743
  }],
5552
- url: '/knowledge/v1/vector_stores/{vector_store_id}',
5744
+ url: '/crm/v1/objects/{objectType}/{objectId}',
5553
5745
  ...options,
5554
5746
  headers: {
5555
5747
  'Content-Type': 'application/json',
@@ -5557,17 +5749,17 @@ export const knowledgeUpdateVectorStore = (options) => (options.client ?? client
5557
5749
  }
5558
5750
  });
5559
5751
  /**
5560
- * Search knowledge base
5752
+ * Search records
5561
5753
  *
5562
- * Search ingested text to answer a question or find supporting passages. Native results contain one chunk each, so file_id can repeat; max_num_results counts chunks (1–50, default 10), while the compatible URL groups results by file. Unlike OpenAI vector stores, next_page is always null even when has_more is true. Only completed attachments are searchable. For keyword-only retrieval set ranking_options.hybrid_search to {"embedding_weight":0,"text_weight":1}; omit rewrite_query or set it to false to avoid query rewriting. Unlike OpenAI, ranker auto does not rerank; only default-2024-11-15 requests reranking. Set praxis.explain=true to inspect scores and use returned content[].chunk_id to retrieve a segment.
5754
+ * Find records using text query, property filters and sort order rather than scanning a list. Obtain objectType from schemas.list and filter propertyName values from properties.list. Supply filterGroups, sorts, properties, limit and after; use empty arrays for no filters, sorts or property selection, and an empty after for the first page. Copy paging.next.after with the same query to continue. This operation reads records without changing them.
5563
5755
  */
5564
- export const knowledgeSearchVectorStore = (options) => (options.client ?? client).post({
5756
+ export const crmObjectsSearch = (options) => (options.client ?? client).post({
5565
5757
  security: [{
5566
- key: 'knowledge-bearerAuth',
5758
+ key: 'crm-bearerAuth',
5567
5759
  scheme: 'bearer',
5568
5760
  type: 'http'
5569
5761
  }],
5570
- url: '/knowledge/v1/vector_stores/{vector_store_id}/search',
5762
+ url: '/crm/v1/objects/{objectType}/search',
5571
5763
  ...options,
5572
5764
  headers: {
5573
5765
  'Content-Type': 'application/json',
@@ -5575,31 +5767,35 @@ export const knowledgeSearchVectorStore = (options) => (options.client ?? client
5575
5767
  }
5576
5768
  });
5577
5769
  /**
5578
- * List files
5770
+ * Batch read records
5579
5771
  *
5580
- * Lists attached files and their ingestion status, newest attachment first by default. Use last_id as after to continue; ?filter=failed selects files that can be retried.
5772
+ * Read a set of known record ids in one call; use objects.search to discover ids first. Supply inputs with ids plus requested properties; set idProperty only when the inputs use unique-property values rather than record ids.
5581
5773
  */
5582
- export const knowledgeListFiles = (options) => (options.client ?? client).get({
5774
+ export const crmObjectsBatchRead = (options) => (options.client ?? client).post({
5583
5775
  security: [{
5584
- key: 'knowledge-bearerAuth',
5776
+ key: 'crm-bearerAuth',
5585
5777
  scheme: 'bearer',
5586
5778
  type: 'http'
5587
5779
  }],
5588
- url: '/knowledge/v1/vector_stores/{vector_store_id}/files',
5589
- ...options
5780
+ url: '/crm/v1/objects/{objectType}/batch/read',
5781
+ ...options,
5782
+ headers: {
5783
+ 'Content-Type': 'application/json',
5784
+ ...options.headers
5785
+ }
5590
5786
  });
5591
5787
  /**
5592
- * Add file
5788
+ * Batch create records
5593
5789
  *
5594
- * Attach an uploaded File for asynchronous ingestion, then poll this attachment until status is completed, failed or cancelled before searching. Unlike OpenAI vector stores, the file limit is 100000000 bytes; chunk sizes use estimated tokens rather than a model tokenizer. Text, Markdown, CSV, JSON, HTML, PDF, DOCX, PPTX, XLSX and PNG/JPEG/GIF/WebP images can be extracted; audio and video uploads are not knowledge documents. Images may yield generated descriptions rather than verbatim OCR. auto chunking resolves to static 800/400; explicit sizes are 100–4096 with overlap at most half the size. Each store holds at most 10000 attached files. Reattaching the same file returns its existing record without applying new attributes or chunking; inspect last_error after failure.
5790
+ * Create several records of one object type using inputs with properties and optional associations. Obtain property names from properties.list; each successful input creates a record, so inspect per-item errors before resubmitting failed inputs. Writes return refs (ResourceRef[]) for entity cards and optional property changes in conversations.
5595
5791
  */
5596
- export const knowledgeAttachFile = (options) => (options.client ?? client).post({
5792
+ export const crmObjectsBatchCreate = (options) => (options.client ?? client).post({
5597
5793
  security: [{
5598
- key: 'knowledge-bearerAuth',
5794
+ key: 'crm-bearerAuth',
5599
5795
  scheme: 'bearer',
5600
5796
  type: 'http'
5601
5797
  }],
5602
- url: '/knowledge/v1/vector_stores/{vector_store_id}/files',
5798
+ url: '/crm/v1/objects/{objectType}/batch/create',
5603
5799
  ...options,
5604
5800
  headers: {
5605
5801
  'Content-Type': 'application/json',
@@ -5607,45 +5803,53 @@ export const knowledgeAttachFile = (options) => (options.client ?? client).post(
5607
5803
  }
5608
5804
  });
5609
5805
  /**
5610
- * Remove file
5806
+ * Batch update records
5611
5807
  *
5612
- * Removes the file from search immediately; does not delete the original File.
5808
+ * Apply distinct property patches to existing records identified by inputs[].id. Obtain ids from objects.list or objects.search and property names from properties.list. Omitted properties retain their values; inspect results and errors for each input. Writes return refs (ResourceRef[]) for entity cards and optional property changes in conversations.
5613
5809
  */
5614
- export const knowledgeRemoveFile = (options) => (options.client ?? client).delete({
5810
+ export const crmObjectsBatchUpdate = (options) => (options.client ?? client).post({
5615
5811
  security: [{
5616
- key: 'knowledge-bearerAuth',
5812
+ key: 'crm-bearerAuth',
5617
5813
  scheme: 'bearer',
5618
5814
  type: 'http'
5619
5815
  }],
5620
- url: '/knowledge/v1/vector_stores/{vector_store_id}/files/{file_id}',
5621
- ...options
5816
+ url: '/crm/v1/objects/{objectType}/batch/update',
5817
+ ...options,
5818
+ headers: {
5819
+ 'Content-Type': 'application/json',
5820
+ ...options.headers
5821
+ }
5622
5822
  });
5623
5823
  /**
5624
- * Retrieve file
5824
+ * Batch upsert records
5625
5825
  *
5626
- * Retrieves an attached file using the id returned by attachment or file listing. Poll this operation until status leaves in_progress to observe the ingestion outcome.
5826
+ * Create records that do not yet exist or update matches using a unique property. Provide idProperty and its value in each input, plus properties; choose a property with hasUniqueValue from properties.list. Inspect each result to determine whether it was newly created. Writes return refs (ResourceRef[]) for entity cards and optional property changes in conversations.
5627
5827
  */
5628
- export const knowledgeRetrieveFile = (options) => (options.client ?? client).get({
5828
+ export const crmObjectsBatchUpsert = (options) => (options.client ?? client).post({
5629
5829
  security: [{
5630
- key: 'knowledge-bearerAuth',
5830
+ key: 'crm-bearerAuth',
5631
5831
  scheme: 'bearer',
5632
5832
  type: 'http'
5633
5833
  }],
5634
- url: '/knowledge/v1/vector_stores/{vector_store_id}/files/{file_id}',
5635
- ...options
5834
+ url: '/crm/v1/objects/{objectType}/batch/upsert',
5835
+ ...options,
5836
+ headers: {
5837
+ 'Content-Type': 'application/json',
5838
+ ...options.headers
5839
+ }
5636
5840
  });
5637
5841
  /**
5638
- * Update file attributes
5842
+ * Batch archive records
5639
5843
  *
5640
- * Replaces search-filter attributes of an existing attachment without reingesting its content. Use an attached file id. Example body: {"attributes":{"category":"refund"}}; null clears the attributes.
5844
+ * Archive known records of one object type using inputs[].id from objects.list or objects.search. Archived records leave active lists but retain their history; confirm all ids before calling. Writes return refs (ResourceRef[]) for entity cards and optional property changes in conversations. Unlike HubSpot, this own-face archive returns HTTP 200 with a JSON refs body instead of HTTP 204.
5641
5845
  */
5642
- export const knowledgeUpdateFile = (options) => (options.client ?? client).post({
5846
+ export const crmObjectsBatchArchive = (options) => (options.client ?? client).post({
5643
5847
  security: [{
5644
- key: 'knowledge-bearerAuth',
5848
+ key: 'crm-bearerAuth',
5645
5849
  scheme: 'bearer',
5646
5850
  type: 'http'
5647
5851
  }],
5648
- url: '/knowledge/v1/vector_stores/{vector_store_id}/files/{file_id}',
5852
+ url: '/crm/v1/objects/{objectType}/batch/archive',
5649
5853
  ...options,
5650
5854
  headers: {
5651
5855
  'Content-Type': 'application/json',
@@ -5653,31 +5857,31 @@ export const knowledgeUpdateFile = (options) => (options.client ?? client).post(
5653
5857
  }
5654
5858
  });
5655
5859
  /**
5656
- * Read extracted content
5860
+ * List properties
5657
5861
  *
5658
- * Extracted text chunks may overlap. Image content can be a generated description rather than verbatim OCR.
5862
+ * Inspect the property definitions available for an object type before writing or filtering records. Obtain objectType from schemas.list; reuse each immutable name in record properties and filters. archived defaults to false.
5659
5863
  */
5660
- export const knowledgeRetrieveFileContent = (options) => (options.client ?? client).get({
5864
+ export const crmPropertiesList = (options) => (options.client ?? client).get({
5661
5865
  security: [{
5662
- key: 'knowledge-bearerAuth',
5866
+ key: 'crm-bearerAuth',
5663
5867
  scheme: 'bearer',
5664
5868
  type: 'http'
5665
5869
  }],
5666
- url: '/knowledge/v1/vector_stores/{vector_store_id}/files/{file_id}/content',
5870
+ url: '/crm/v1/properties/{objectType}',
5667
5871
  ...options
5668
5872
  });
5669
5873
  /**
5670
- * Create file batch
5874
+ * Create property
5671
5875
  *
5672
- * Attaches existing Files as a batch for asynchronous ingestion. Supply exactly one of file_ids or files; files allows per-file settings. Existing attachments are reused. Read the returned batch id to monitor status.
5876
+ * Define a property before setting its values on records. Choose objectType from schemas.list and groupName from properties.groups.list; provide an immutable internal name, display label, type and fieldType. Enumeration properties require their valid options. Writes return refs (ResourceRef[]) for entity cards and optional property changes in conversations.
5673
5877
  */
5674
- export const knowledgeCreateFileBatch = (options) => (options.client ?? client).post({
5878
+ export const crmPropertiesCreate = (options) => (options.client ?? client).post({
5675
5879
  security: [{
5676
- key: 'knowledge-bearerAuth',
5880
+ key: 'crm-bearerAuth',
5677
5881
  scheme: 'bearer',
5678
5882
  type: 'http'
5679
5883
  }],
5680
- url: '/knowledge/v1/vector_stores/{vector_store_id}/file_batches',
5884
+ url: '/crm/v1/properties/{objectType}',
5681
5885
  ...options,
5682
5886
  headers: {
5683
5887
  'Content-Type': 'application/json',
@@ -5685,157 +5889,155 @@ export const knowledgeCreateFileBatch = (options) => (options.client ?? client).
5685
5889
  }
5686
5890
  });
5687
5891
  /**
5688
- * Retrieve file batch
5689
- *
5690
- * Retrieves a batch created in this knowledge base, including current status and file counts. Use the batch id returned by batch creation to monitor ingestion.
5691
- */
5692
- export const knowledgeRetrieveFileBatch = (options) => (options.client ?? client).get({
5693
- security: [{
5694
- key: 'knowledge-bearerAuth',
5695
- scheme: 'bearer',
5696
- type: 'http'
5697
- }],
5698
- url: '/knowledge/v1/vector_stores/{vector_store_id}/file_batches/{batch_id}',
5699
- ...options
5700
- });
5701
- /**
5702
- * Cancel file batch
5892
+ * Archive property
5703
5893
  *
5704
- * Cancels only in-progress batches and pending files. Completed, failed and cancelled batches return unchanged (200, idempotent).
5894
+ * Archive a property definition selected by internal name from properties.list. Confirm that record entry and search flows no longer depend on it; archived definitions are excluded from normal property lists. Writes return refs (ResourceRef[]) for entity cards and optional property changes in conversations. Unlike HubSpot, this own-face archive returns HTTP 200 with a JSON refs body instead of HTTP 204.
5705
5895
  */
5706
- export const knowledgeCancelFileBatch = (options) => (options.client ?? client).post({
5896
+ export const crmPropertiesArchive = (options) => (options.client ?? client).delete({
5707
5897
  security: [{
5708
- key: 'knowledge-bearerAuth',
5898
+ key: 'crm-bearerAuth',
5709
5899
  scheme: 'bearer',
5710
5900
  type: 'http'
5711
5901
  }],
5712
- url: '/knowledge/v1/vector_stores/{vector_store_id}/file_batches/{batch_id}/cancel',
5902
+ url: '/crm/v1/properties/{objectType}/{propertyName}',
5713
5903
  ...options
5714
5904
  });
5715
5905
  /**
5716
- * List batch files
5906
+ * Retrieve property
5717
5907
  *
5718
- * Lists files still attached from the identified batch, newest attachment first by default. Use the batch creation id and ?filter=failed to inspect failures; last_id is the next after cursor.
5908
+ * Inspect the type, options and modification restrictions of a property before changing its definition or record values. Obtain propertyName from properties.list; it is the immutable internal name rather than the label.
5719
5909
  */
5720
- export const knowledgeListBatchFiles = (options) => (options.client ?? client).get({
5910
+ export const crmPropertiesRetrieve = (options) => (options.client ?? client).get({
5721
5911
  security: [{
5722
- key: 'knowledge-bearerAuth',
5912
+ key: 'crm-bearerAuth',
5723
5913
  scheme: 'bearer',
5724
5914
  type: 'http'
5725
5915
  }],
5726
- url: '/knowledge/v1/vector_stores/{vector_store_id}/file_batches/{batch_id}/files',
5916
+ url: '/crm/v1/properties/{objectType}/{propertyName}',
5727
5917
  ...options
5728
5918
  });
5729
5919
  /**
5730
- * Restore knowledge base
5920
+ * Update property
5731
5921
  *
5732
- * Restores a deleting store within 7 days. Active stores return 409 VECTOR_STORE_INVALID_STATE; absent stores return 404. Empty body is allowed.
5922
+ * Change editable settings of a property selected from properties.list, such as its label, group or options. Preserve the immutable internal name; inspect modificationMetadata before editing system-managed definitions. Writes return refs (ResourceRef[]) for entity cards and optional property changes in conversations.
5733
5923
  */
5734
- export const knowledgeRestoreVectorStore = (options) => (options.client ?? client).post({
5924
+ export const crmPropertiesUpdate = (options) => (options.client ?? client).patch({
5735
5925
  security: [{
5736
- key: 'knowledge-bearerAuth',
5926
+ key: 'crm-bearerAuth',
5737
5927
  scheme: 'bearer',
5738
5928
  type: 'http'
5739
5929
  }],
5740
- url: '/knowledge/v1/vector_stores/{vector_store_id}/restore',
5741
- ...options
5930
+ url: '/crm/v1/properties/{objectType}/{propertyName}',
5931
+ ...options,
5932
+ headers: {
5933
+ 'Content-Type': 'application/json',
5934
+ ...options.headers
5935
+ }
5742
5936
  });
5743
5937
  /**
5744
- * Permanently purge knowledge base
5938
+ * List property groups
5745
5939
  *
5746
- * Immediately and irreversibly clears a deleting store using the retention cleanup path. Active stores return 409; absent stores return 404. Empty body is allowed.
5940
+ * Discover property groups for an object type before creating or organizing property definitions. Obtain objectType from schemas.list and reuse a group name as groupName in properties.create or properties.update.
5747
5941
  */
5748
- export const knowledgePurgeVectorStore = (options) => (options.client ?? client).post({
5942
+ export const crmPropertiesGroupsList = (options) => (options.client ?? client).get({
5749
5943
  security: [{
5750
- key: 'knowledge-bearerAuth',
5944
+ key: 'crm-bearerAuth',
5751
5945
  scheme: 'bearer',
5752
5946
  type: 'http'
5753
5947
  }],
5754
- url: '/knowledge/v1/vector_stores/{vector_store_id}/purge',
5948
+ url: '/crm/v1/properties/{objectType}/groups',
5755
5949
  ...options
5756
5950
  });
5757
5951
  /**
5758
- * Retry failed file
5952
+ * Create property group
5759
5953
  *
5760
- * Retries only failed files; other states return 409 FILE_INVALID_STATE. Retry after failure has not yet been observed in the documented run.
5954
+ * Create a named group for related property definitions of one object type. Obtain objectType from schemas.list; choose a unique internal name and display label, then reuse the returned name as groupName when creating properties. Writes return refs (ResourceRef[]) for entity cards and optional property changes in conversations.
5761
5955
  */
5762
- export const knowledgeRetryFile = (options) => (options.client ?? client).post({
5956
+ export const crmPropertiesGroupsCreate = (options) => (options.client ?? client).post({
5763
5957
  security: [{
5764
- key: 'knowledge-bearerAuth',
5958
+ key: 'crm-bearerAuth',
5765
5959
  scheme: 'bearer',
5766
5960
  type: 'http'
5767
5961
  }],
5768
- url: '/knowledge/v1/vector_stores/{vector_store_id}/files/{file_id}/retry',
5769
- ...options
5962
+ url: '/crm/v1/properties/{objectType}/groups',
5963
+ ...options,
5964
+ headers: {
5965
+ 'Content-Type': 'application/json',
5966
+ ...options.headers
5967
+ }
5770
5968
  });
5771
5969
  /**
5772
- * List file segments
5970
+ * List pipelines
5773
5971
  *
5774
- * Lists the stored chunks of an attached file, ordered by increasing segment index by default. Use the attachment id and last_id as after to continue; returned chunk ids can be retrieved individually.
5972
+ * Discover pipelines and stage ids for records of one object type from schemas.list. Reuse pipeline and stage ids in record property updates or lead qualification. Stage rules are string values in stage.metadata: praxis_category is open (active), won (successful) or lost (unsuccessful); praxis_terminal is "true" (no further transition) or "false" (transitions allowed); praxis_allowed_next is a JSON-encoded array string of permitted next stage ids, with the string "null" meaning unrestricted; praxis_required is a JSON-encoded array string of property names ("[]" means none) that must be non-empty on entry (boolean properties must be "true"). Rule violations return HTTP 400 VALIDATION_ERROR; errors[0].context.properties lists missing required property names. Correct those values or choose an allowed stage before retrying. Example metadata: {"praxis_category":"open","praxis_terminal":"false","praxis_allowed_next":"[\"proposal\",\"lost\"]","praxis_required":"[\"budget\",\"decision_maker\"]"}.
5775
5973
  */
5776
- export const knowledgeListSegments = (options) => (options.client ?? client).get({
5974
+ export const crmPipelinesList = (options) => (options.client ?? client).get({
5777
5975
  security: [{
5778
- key: 'knowledge-bearerAuth',
5976
+ key: 'crm-bearerAuth',
5779
5977
  scheme: 'bearer',
5780
5978
  type: 'http'
5781
5979
  }],
5782
- url: '/knowledge/v1/vector_stores/{vector_store_id}/files/{file_id}/segments',
5980
+ url: '/crm/v1/pipelines/{objectType}',
5783
5981
  ...options
5784
5982
  });
5785
5983
  /**
5786
- * Retrieve segment
5984
+ * Create pipeline
5787
5985
  *
5788
- * Retrieves one chunk and its term statistics. Take chunk_id from segment listing or native search content; the chunk must belong to this knowledge base.
5986
+ * Create a pipeline with its ordered stages for an object type from schemas.list. Provide a display label, displayOrder and initial stages, then use the returned ids when assigning records. Stage rules are string values in stage.metadata: praxis_category is open (active), won (successful) or lost (unsuccessful); praxis_terminal is "true" (no further transition) or "false" (transitions allowed); praxis_allowed_next is a JSON-encoded array string of permitted next stage ids, with the string "null" meaning unrestricted; praxis_required is a JSON-encoded array string of property names ("[]" means none) that must be non-empty on entry (boolean properties must be "true"). Rule violations return HTTP 400 VALIDATION_ERROR; errors[0].context.properties lists missing required property names. Correct those values or choose an allowed stage before retrying. Writes return refs (ResourceRef[]) for entity cards and optional property changes in conversations. Example metadata: {"praxis_category":"open","praxis_terminal":"false","praxis_allowed_next":"[\"proposal\",\"lost\"]","praxis_required":"[\"budget\",\"decision_maker\"]"}.
5789
5987
  */
5790
- export const knowledgeRetrieveSegment = (options) => (options.client ?? client).get({
5988
+ export const crmPipelinesCreate = (options) => (options.client ?? client).post({
5791
5989
  security: [{
5792
- key: 'knowledge-bearerAuth',
5990
+ key: 'crm-bearerAuth',
5793
5991
  scheme: 'bearer',
5794
5992
  type: 'http'
5795
5993
  }],
5796
- url: '/knowledge/v1/vector_stores/{vector_store_id}/segments/{chunk_id}',
5797
- ...options
5994
+ url: '/crm/v1/pipelines/{objectType}',
5995
+ ...options,
5996
+ headers: {
5997
+ 'Content-Type': 'application/json',
5998
+ ...options.headers
5999
+ }
5798
6000
  });
5799
6001
  /**
5800
- * List events
6002
+ * Archive pipeline
5801
6003
  *
5802
- * Reads events for this knowledge base in increasing sequence order, including while soft-deleted. Pass next_seq as after_seq to continue; null next_seq marks the current end. Example: ?after_seq=0&limit=20.
6004
+ * Archive a pipeline selected from pipelines.list when records no longer depend on it. Check current records and stage usage first; resolve references reported by validation before retrying. Stage rules are string values in stage.metadata: praxis_category is open (active), won (successful) or lost (unsuccessful); praxis_terminal is "true" (no further transition) or "false" (transitions allowed); praxis_allowed_next is a JSON-encoded array string of permitted next stage ids, with the string "null" meaning unrestricted; praxis_required is a JSON-encoded array string of property names ("[]" means none) that must be non-empty on entry (boolean properties must be "true"). Rule violations return HTTP 400 VALIDATION_ERROR; errors[0].context.properties lists missing required property names. Correct those values or choose an allowed stage before retrying. Writes return refs (ResourceRef[]) for entity cards and optional property changes in conversations. Unlike HubSpot, this own-face archive returns HTTP 200 with a JSON refs body instead of HTTP 204. Example metadata: {"praxis_category":"open","praxis_terminal":"false","praxis_allowed_next":"[\"proposal\",\"lost\"]","praxis_required":"[\"budget\",\"decision_maker\"]"}.
5803
6005
  */
5804
- export const knowledgeListEvents = (options) => (options.client ?? client).get({
6006
+ export const crmPipelinesArchive = (options) => (options.client ?? client).delete({
5805
6007
  security: [{
5806
- key: 'knowledge-bearerAuth',
6008
+ key: 'crm-bearerAuth',
5807
6009
  scheme: 'bearer',
5808
6010
  type: 'http'
5809
6011
  }],
5810
- url: '/knowledge/v1/vector_stores/{vector_store_id}/events',
6012
+ url: '/crm/v1/pipelines/{objectType}/{pipelineId}',
5811
6013
  ...options
5812
6014
  });
5813
6015
  /**
5814
- * List libraries
6016
+ * Retrieve pipeline
5815
6017
  *
5816
- * List libraries owned by the caller, newest first. By default, deleting and deleted libraries are excluded; use status=deleting to find libraries awaiting purge. All supplied label pairs must match.
6018
+ * Inspect the stage ids and metadata of a pipeline before moving a record or editing its workflow. Obtain pipelineId from pipelines.list and use the returned stages array to select a destination. Stage rules are string values in stage.metadata: praxis_category is open (active), won (successful) or lost (unsuccessful); praxis_terminal is "true" (no further transition) or "false" (transitions allowed); praxis_allowed_next is a JSON-encoded array string of permitted next stage ids, with the string "null" meaning unrestricted; praxis_required is a JSON-encoded array string of property names ("[]" means none) that must be non-empty on entry (boolean properties must be "true"). Rule violations return HTTP 400 VALIDATION_ERROR; errors[0].context.properties lists missing required property names. Correct those values or choose an allowed stage before retrying. Example metadata: {"praxis_category":"open","praxis_terminal":"false","praxis_allowed_next":"[\"proposal\",\"lost\"]","praxis_required":"[\"budget\",\"decision_maker\"]"}.
5817
6019
  */
5818
- export const mediaListLibraries = (options) => (options?.client ?? client).get({
6020
+ export const crmPipelinesRetrieve = (options) => (options.client ?? client).get({
5819
6021
  security: [{
5820
- key: 'media-BearerAuth',
6022
+ key: 'crm-bearerAuth',
5821
6023
  scheme: 'bearer',
5822
6024
  type: 'http'
5823
6025
  }],
5824
- url: '/media/v1/libraries',
6026
+ url: '/crm/v1/pipelines/{objectType}/{pipelineId}',
5825
6027
  ...options
5826
6028
  });
5827
6029
  /**
5828
- * Create library
6030
+ * Update pipeline
5829
6031
  *
5830
- * Create a library owned by the caller with a name, optional labels and understanding settings. Understanding is enabled by default; the returned id is used for subsequent asset operations.
6032
+ * Change editable pipeline settings selected by pipelineId from pipelines.list. Omit settings that should remain unchanged and inspect current stages with pipelines.retrieve before modifying the workflow. Stage rules are string values in stage.metadata: praxis_category is open (active), won (successful) or lost (unsuccessful); praxis_terminal is "true" (no further transition) or "false" (transitions allowed); praxis_allowed_next is a JSON-encoded array string of permitted next stage ids, with the string "null" meaning unrestricted; praxis_required is a JSON-encoded array string of property names ("[]" means none) that must be non-empty on entry (boolean properties must be "true"). Rule violations return HTTP 400 VALIDATION_ERROR; errors[0].context.properties lists missing required property names. Correct those values or choose an allowed stage before retrying. Writes return refs (ResourceRef[]) for entity cards and optional property changes in conversations. Example metadata: {"praxis_category":"open","praxis_terminal":"false","praxis_allowed_next":"[\"proposal\",\"lost\"]","praxis_required":"[\"budget\",\"decision_maker\"]"}.
5831
6033
  */
5832
- export const mediaCreateLibrary = (options) => (options.client ?? client).post({
6034
+ export const crmPipelinesUpdate = (options) => (options.client ?? client).patch({
5833
6035
  security: [{
5834
- key: 'media-BearerAuth',
6036
+ key: 'crm-bearerAuth',
5835
6037
  scheme: 'bearer',
5836
6038
  type: 'http'
5837
6039
  }],
5838
- url: '/media/v1/libraries',
6040
+ url: '/crm/v1/pipelines/{objectType}/{pipelineId}',
5839
6041
  ...options,
5840
6042
  headers: {
5841
6043
  'Content-Type': 'application/json',
@@ -5843,45 +6045,49 @@ export const mediaCreateLibrary = (options) => (options.client ?? client).post({
5843
6045
  }
5844
6046
  });
5845
6047
  /**
5846
- * Delete library
6048
+ * Create pipeline stage
5847
6049
  *
5848
- * Soft-delete an active library, returning its deleting status and purge_at deadline. Asset operations and delivery become unavailable; the library can be restored before purge_at. Repeated deletion while deleting returns the current library.
6050
+ * Add an ordered stage to a pipeline from pipelines.list. Provide its display label, displayOrder and metadata; save the returned stage id for record updates. Stage rules are string values in stage.metadata: praxis_category is open (active), won (successful) or lost (unsuccessful); praxis_terminal is "true" (no further transition) or "false" (transitions allowed); praxis_allowed_next is a JSON-encoded array string of permitted next stage ids, with the string "null" meaning unrestricted; praxis_required is a JSON-encoded array string of property names ("[]" means none) that must be non-empty on entry (boolean properties must be "true"). Rule violations return HTTP 400 VALIDATION_ERROR; errors[0].context.properties lists missing required property names. Correct those values or choose an allowed stage before retrying. Writes return refs (ResourceRef[]) for entity cards and optional property changes in conversations. Example metadata: {"praxis_category":"open","praxis_terminal":"false","praxis_allowed_next":"[\"proposal\",\"lost\"]","praxis_required":"[\"budget\",\"decision_maker\"]"}.
5849
6051
  */
5850
- export const mediaDeleteLibrary = (options) => (options.client ?? client).delete({
6052
+ export const crmPipelinesStagesCreate = (options) => (options.client ?? client).post({
5851
6053
  security: [{
5852
- key: 'media-BearerAuth',
6054
+ key: 'crm-bearerAuth',
5853
6055
  scheme: 'bearer',
5854
6056
  type: 'http'
5855
6057
  }],
5856
- url: '/media/v1/libraries/{library_id}',
5857
- ...options
6058
+ url: '/crm/v1/pipelines/{objectType}/{pipelineId}/stages',
6059
+ ...options,
6060
+ headers: {
6061
+ 'Content-Type': 'application/json',
6062
+ ...options.headers
6063
+ }
5858
6064
  });
5859
6065
  /**
5860
- * Get library
6066
+ * Archive pipeline stage
5861
6067
  *
5862
- * Read a caller-owned library’s current settings, usage and lifecycle status. A deleting library remains readable; missing, foreign or purged libraries return LIBRARY_NOT_FOUND.
6068
+ * Archive a stage selected from pipelines.retrieve after checking record usage. A stage that still has records cannot be archived without resolving their assignment; move those records to an allowed stage first. Stage rules are string values in stage.metadata: praxis_category is open (active), won (successful) or lost (unsuccessful); praxis_terminal is "true" (no further transition) or "false" (transitions allowed); praxis_allowed_next is a JSON-encoded array string of permitted next stage ids, with the string "null" meaning unrestricted; praxis_required is a JSON-encoded array string of property names ("[]" means none) that must be non-empty on entry (boolean properties must be "true"). Rule violations return HTTP 400 VALIDATION_ERROR; errors[0].context.properties lists missing required property names. Correct those values or choose an allowed stage before retrying. Writes return refs (ResourceRef[]) for entity cards and optional property changes in conversations. Unlike HubSpot, this own-face archive returns HTTP 200 with a JSON refs body instead of HTTP 204. Example metadata: {"praxis_category":"open","praxis_terminal":"false","praxis_allowed_next":"[\"proposal\",\"lost\"]","praxis_required":"[\"budget\",\"decision_maker\"]"}.
5863
6069
  */
5864
- export const mediaGetLibrary = (options) => (options.client ?? client).get({
6070
+ export const crmPipelinesStagesArchive = (options) => (options.client ?? client).delete({
5865
6071
  security: [{
5866
- key: 'media-BearerAuth',
6072
+ key: 'crm-bearerAuth',
5867
6073
  scheme: 'bearer',
5868
6074
  type: 'http'
5869
6075
  }],
5870
- url: '/media/v1/libraries/{library_id}',
6076
+ url: '/crm/v1/pipelines/{objectType}/{pipelineId}/stages/{stageId}',
5871
6077
  ...options
5872
6078
  });
5873
6079
  /**
5874
- * Update library
6080
+ * Update pipeline stage
5875
6081
  *
5876
- * Update an active library’s supplied settings. Labels replace the complete map; understanding settings and model roles merge with current values. Changing the embedding model is rejected while assets exist.
6082
+ * Change the label, order or metadata of a stage selected from pipelines.retrieve. Existing records must satisfy entry rules when subsequently moved; omitted settings retain their values. Stage rules are string values in stage.metadata: praxis_category is open (active), won (successful) or lost (unsuccessful); praxis_terminal is "true" (no further transition) or "false" (transitions allowed); praxis_allowed_next is a JSON-encoded array string of permitted next stage ids, with the string "null" meaning unrestricted; praxis_required is a JSON-encoded array string of property names ("[]" means none) that must be non-empty on entry (boolean properties must be "true"). Rule violations return HTTP 400 VALIDATION_ERROR; errors[0].context.properties lists missing required property names. Correct those values or choose an allowed stage before retrying. Writes return refs (ResourceRef[]) for entity cards and optional property changes in conversations. Example metadata: {"praxis_category":"open","praxis_terminal":"false","praxis_allowed_next":"[\"proposal\",\"lost\"]","praxis_required":"[\"budget\",\"decision_maker\"]"}.
5877
6083
  */
5878
- export const mediaUpdateLibrary = (options) => (options.client ?? client).patch({
6084
+ export const crmPipelinesStagesUpdate = (options) => (options.client ?? client).patch({
5879
6085
  security: [{
5880
- key: 'media-BearerAuth',
6086
+ key: 'crm-bearerAuth',
5881
6087
  scheme: 'bearer',
5882
6088
  type: 'http'
5883
6089
  }],
5884
- url: '/media/v1/libraries/{library_id}',
6090
+ url: '/crm/v1/pipelines/{objectType}/{pipelineId}/stages/{stageId}',
5885
6091
  ...options,
5886
6092
  headers: {
5887
6093
  'Content-Type': 'application/json',
@@ -5889,59 +6095,91 @@ export const mediaUpdateLibrary = (options) => (options.client ?? client).patch(
5889
6095
  }
5890
6096
  });
5891
6097
  /**
5892
- * Restore library
6098
+ * List record associations
5893
6099
  *
5894
- * Restore a deleting library before its purge_at deadline. The library becomes active again and deleted_at and purge_at are cleared; expired or non-deleting libraries cannot be restored.
6100
+ * Read records linked to a source record, including association labels and type ids. Obtain source and destination object types from schemas.list and objectId from objects.list or objects.search. Follow paging.next.after to continue reading associated records.
5895
6101
  */
5896
- export const mediaRestoreLibrary = (options) => (options.client ?? client).post({
6102
+ export const crmAssociationsList = (options) => (options.client ?? client).get({
5897
6103
  security: [{
5898
- key: 'media-BearerAuth',
6104
+ key: 'crm-bearerAuth',
5899
6105
  scheme: 'bearer',
5900
6106
  type: 'http'
5901
6107
  }],
5902
- url: '/media/v1/libraries/{library_id}/restore',
6108
+ url: '/crm/v1/objects/{objectType}/{objectId}/associations/{toObjectType}',
5903
6109
  ...options
5904
6110
  });
5905
6111
  /**
5906
- * Purge library
6112
+ * Remove association
5907
6113
  *
5908
- * Permanently remove a library that is already deleting, without waiting for purge_at. Its assets and related resources are removed and cannot be restored; first soft-delete an active library.
6114
+ * Remove the association between two existing records without archiving either record. Obtain the linked destination id from associations.list and confirm the source and destination object types before calling. Writes return refs (ResourceRef[]) for entity cards and optional property changes in conversations. Unlike HubSpot, this own-face archive returns HTTP 200 with a JSON refs body instead of HTTP 204.
5909
6115
  */
5910
- export const mediaPurgeLibrary = (options) => (options.client ?? client).post({
6116
+ export const crmAssociationsRemove = (options) => (options.client ?? client).delete({
5911
6117
  security: [{
5912
- key: 'media-BearerAuth',
6118
+ key: 'crm-bearerAuth',
5913
6119
  scheme: 'bearer',
5914
6120
  type: 'http'
5915
6121
  }],
5916
- url: '/media/v1/libraries/{library_id}/purge',
6122
+ url: '/crm/v1/objects/{objectType}/{objectId}/associations/{toObjectType}/{toObjectId}',
5917
6123
  ...options
5918
6124
  });
5919
6125
  /**
5920
- * List assets
6126
+ * Create labelled association
5921
6127
  *
5922
- * List assets in an active library, newest first, optionally filtering by exact folder and stored resource type. Continue using next_cursor; video includes audio-only assets.
6128
+ * Associate two existing records using the requested association category and type id. Obtain record ids from objects.list or objects.search; reuse known association type ids from associations.list. Send the association-spec array as the body; use associations.createDefault when no label is needed. Writes return refs (ResourceRef[]) for entity cards and optional property changes in conversations.
5923
6129
  */
5924
- export const mediaListAssets = (options) => (options.client ?? client).get({
6130
+ export const crmAssociationsCreate = (options) => (options.client ?? client).put({
5925
6131
  security: [{
5926
- key: 'media-BearerAuth',
6132
+ key: 'crm-bearerAuth',
5927
6133
  scheme: 'bearer',
5928
6134
  type: 'http'
5929
6135
  }],
5930
- url: '/media/v1/libraries/{library_id}/assets',
6136
+ url: '/crm/v1/objects/{objectType}/{objectId}/associations/{toObjectType}/{toObjectId}',
6137
+ ...options,
6138
+ headers: {
6139
+ 'Content-Type': 'application/json',
6140
+ ...options.headers
6141
+ }
6142
+ });
6143
+ /**
6144
+ * Create default association
6145
+ *
6146
+ * Link two existing records with the default unlabelled association. Obtain each record id from objects.list or objects.search for its type. No request body is required; use associations.create to choose explicit association labels. Writes return refs (ResourceRef[]) for entity cards and optional property changes in conversations.
6147
+ */
6148
+ export const crmAssociationsCreateDefault = (options) => (options.client ?? client).put({
6149
+ security: [{
6150
+ key: 'crm-bearerAuth',
6151
+ scheme: 'bearer',
6152
+ type: 'http'
6153
+ }],
6154
+ url: '/crm/v1/objects/{objectType}/{objectId}/associations/default/{toObjectType}/{toObjectId}',
5931
6155
  ...options
5932
6156
  });
5933
6157
  /**
5934
- * Upload asset
6158
+ * List object schemas
5935
6159
  *
5936
- * Upload content into an active library and return a Cloudinary-compatible resource. Use file for a multipart file, data URI, public HTTPS URL or same-owner file identifier. Reusing public_id overwrites by default; overwrite=false returns the existing resource. Chunk uploads require both chunk headers.
6160
+ * Discover available object schemas, display labels, property definitions and association definitions. Reuse the object type identifier or name in record, property and pipeline operations. archived defaults to false; the include parameters control the definition and audit details returned.
5937
6161
  */
5938
- export const mediaUploadAsset = (options) => (options.client ?? client).post({
6162
+ export const crmSchemasList = (options) => (options?.client ?? client).get({
5939
6163
  security: [{
5940
- key: 'media-BearerAuth',
6164
+ key: 'crm-bearerAuth',
5941
6165
  scheme: 'bearer',
5942
6166
  type: 'http'
5943
6167
  }],
5944
- url: '/media/v1/libraries/{library_id}/assets',
6168
+ url: '/crm/v1/schemas',
6169
+ ...options
6170
+ });
6171
+ /**
6172
+ * Create object schema
6173
+ *
6174
+ * Define a custom CRM object type before creating its records. Provide its immutable name, singular and plural labels, primaryDisplayProperty, properties and associated object types. Save the returned object type identifier for subsequent record and property operations. Writes return refs (ResourceRef[]) for entity cards and optional property changes in conversations.
6175
+ */
6176
+ export const crmSchemasCreate = (options) => (options.client ?? client).post({
6177
+ security: [{
6178
+ key: 'crm-bearerAuth',
6179
+ scheme: 'bearer',
6180
+ type: 'http'
6181
+ }],
6182
+ url: '/crm/v1/schemas',
5945
6183
  ...options,
5946
6184
  headers: {
5947
6185
  'Content-Type': 'application/json',
@@ -5949,17 +6187,17 @@ export const mediaUploadAsset = (options) => (options.client ?? client).post({
5949
6187
  }
5950
6188
  });
5951
6189
  /**
5952
- * Import file
6190
+ * Qualify lead
5953
6191
  *
5954
- * Copy source content into an active library using upload options and return the full native Asset. The imported asset is independent of the source after copying. Reusing public_id follows overwrite semantics.
6192
+ * Qualify a lead with explicit contact, company and optional deal choices in one operation. Unlike HubSpot, CRM exposes these decisions as a single action because qualification coordinates several related record edits rather than editing only the lead stage. Obtain leadId from objects.list for leads and qualifiedStageId from its pipeline; choose a won stage and satisfy its required properties. Writes return refs (ResourceRef[]) for entity cards and optional property changes in conversations.
5955
6193
  */
5956
- export const mediaImportAsset = (options) => (options.client ?? client).post({
6194
+ export const crmLeadsQualify = (options) => (options.client ?? client).post({
5957
6195
  security: [{
5958
- key: 'media-BearerAuth',
6196
+ key: 'crm-bearerAuth',
5959
6197
  scheme: 'bearer',
5960
6198
  type: 'http'
5961
6199
  }],
5962
- url: '/media/v1/libraries/{library_id}/assets/import',
6200
+ url: '/crm/v1/leads/{leadId}:qualify',
5963
6201
  ...options,
5964
6202
  headers: {
5965
6203
  'Content-Type': 'application/json',
@@ -5967,45 +6205,45 @@ export const mediaImportAsset = (options) => (options.client ?? client).post({
5967
6205
  }
5968
6206
  });
5969
6207
  /**
5970
- * Delete asset
6208
+ * Revert change set
5971
6209
  *
5972
- * Delete an asset from the library so it is no longer readable, searchable or deliverable. This removes the asset rather than placing it in the library’s restoration window; a missing asset returns ASSET_NOT_FOUND.
6210
+ * Reverse property changes made by one earlier request. Unlike HubSpot, CRM exposes change-set reversal because agents need to undo a whole recorded action rather than manually reconstructing individual values. Supply the changeSetId recorded in property history. A later conflicting value prevents reversal with HTTP 409 CONFLICT; inspect current records before resolving the conflict. Writes return refs (ResourceRef[]) for entity cards and optional property changes in conversations.
5973
6211
  */
5974
- export const mediaDeleteAsset = (options) => (options.client ?? client).delete({
6212
+ export const crmChangesRevert = (options) => (options.client ?? client).post({
5975
6213
  security: [{
5976
- key: 'media-BearerAuth',
6214
+ key: 'crm-bearerAuth',
5977
6215
  scheme: 'bearer',
5978
6216
  type: 'http'
5979
6217
  }],
5980
- url: '/media/v1/libraries/{library_id}/assets/{asset_id}',
6218
+ url: '/crm/v1/changes/{changeSetId}:revert',
5981
6219
  ...options
5982
6220
  });
5983
6221
  /**
5984
- * Get asset
6222
+ * Retrieve record layout
5985
6223
  *
5986
- * Read a non-deleted asset by its asset_id in an active library, including content hashes, processing progress and available previews. Missing or deleted assets return ASSET_NOT_FOUND.
6224
+ * Read the shared record-page layout for an object type from schemas.list. Unlike HubSpot, CRM exposes this presentation as an API resource so people and agents can share the same record layout instead of relying on interface-only settings. The response orders summary tiles, sidebar properties and main-column sections.
5987
6225
  */
5988
- export const mediaGetAsset = (options) => (options.client ?? client).get({
6226
+ export const crmLayoutsRetrieve = (options) => (options.client ?? client).get({
5989
6227
  security: [{
5990
- key: 'media-BearerAuth',
6228
+ key: 'crm-bearerAuth',
5991
6229
  scheme: 'bearer',
5992
6230
  type: 'http'
5993
6231
  }],
5994
- url: '/media/v1/libraries/{library_id}/assets/{asset_id}',
6232
+ url: '/crm/v1/layouts/{objectType}',
5995
6233
  ...options
5996
6234
  });
5997
6235
  /**
5998
- * Update asset
6236
+ * Update record layout
5999
6237
  *
6000
- * Update an asset’s supplied metadata fields. Tags and context replace their current collections; an empty collection clears them. Moving asset_folder or changing display_name preserves public_id and delivery URLs.
6238
+ * Replace the shared record-page layout for an object type from schemas.list. Unlike HubSpot, CRM exposes this presentation as an API resource so agents can configure the same record view used by people. Send the complete layout with at most three summary tiles and property names from properties.list; omitted prior sections are removed. Writes return refs (ResourceRef[]) for entity cards and optional property changes in conversations.
6001
6239
  */
6002
- export const mediaUpdateAsset = (options) => (options.client ?? client).patch({
6240
+ export const crmLayoutsUpdate = (options) => (options.client ?? client).put({
6003
6241
  security: [{
6004
- key: 'media-BearerAuth',
6242
+ key: 'crm-bearerAuth',
6005
6243
  scheme: 'bearer',
6006
6244
  type: 'http'
6007
6245
  }],
6008
- url: '/media/v1/libraries/{library_id}/assets/{asset_id}',
6246
+ url: '/crm/v1/layouts/{objectType}',
6009
6247
  ...options,
6010
6248
  headers: {
6011
6249
  'Content-Type': 'application/json',
@@ -6013,17 +6251,39 @@ export const mediaUpdateAsset = (options) => (options.client ?? client).patch({
6013
6251
  }
6014
6252
  });
6015
6253
  /**
6016
- * Reprocess asset
6254
+ * List projects
6017
6255
  *
6018
- * Queue reprocessing of the asset’s current version and return its updated state immediately. Omit kinds to retry failed tasks; explicit kinds rerun applicable completed tasks. Replaced understandings become superseded, and processing finishes asynchronously.
6256
+ * Discover projects owned by the API key organization and obtain project_id values. Results default to active projects ordered by updateTime descending; use filter state = "deleted" to find retained deleted projects for undelete. Continue with next_page_token as page_token until the token is absent.
6019
6257
  */
6020
- export const mediaReprocessAsset = (options) => (options.client ?? client).post({
6258
+ export const cutListProjects = (options) => (options?.client ?? client).get({
6021
6259
  security: [{
6022
- key: 'media-BearerAuth',
6260
+ key: 'BearerAuth',
6023
6261
  scheme: 'bearer',
6024
6262
  type: 'http'
6263
+ }, {
6264
+ key: 'ApiKeyAuth',
6265
+ name: 'X-API-Key',
6266
+ type: 'apiKey'
6025
6267
  }],
6026
- url: '/media/v1/libraries/{library_id}/assets/{asset_id}/reprocess',
6268
+ url: '/cut/v1/projects',
6269
+ ...options
6270
+ });
6271
+ /**
6272
+ * Create project
6273
+ *
6274
+ * Create a blank editing project in the API key organization before writing a script. First obtain accessible library ids from praxis.media; bindings must include exactly one read_write library with default_upload true. Each call creates a new project and returns HTTP 201; save its id for execute, state and timeline calls. All editing positions use seconds.
6275
+ */
6276
+ export const cutCreateProject = (options) => (options.client ?? client).post({
6277
+ security: [{
6278
+ key: 'BearerAuth',
6279
+ scheme: 'bearer',
6280
+ type: 'http'
6281
+ }, {
6282
+ key: 'ApiKeyAuth',
6283
+ name: 'X-API-Key',
6284
+ type: 'apiKey'
6285
+ }],
6286
+ url: '/cut/v1/projects',
6027
6287
  ...options,
6028
6288
  headers: {
6029
6289
  'Content-Type': 'application/json',
@@ -6031,49 +6291,57 @@ export const mediaReprocessAsset = (options) => (options.client ?? client).post(
6031
6291
  }
6032
6292
  });
6033
6293
  /**
6034
- * List understandings
6294
+ * Delete project
6035
6295
  *
6036
- * List an asset’s understanding results in creation order. By default only current, non-superseded results are returned; use include_superseded=true for history or kind to select an output type.
6296
+ * Soft-delete a project selected from projects.list. The project is retained for seven days until purge_time and can be restored with undelete before that deadline. Deleted projects cannot be edited; list with filter state = "deleted" to locate retained projects.
6037
6297
  */
6038
- export const mediaListUnderstandings = (options) => (options.client ?? client).get({
6298
+ export const cutDeleteProject = (options) => (options.client ?? client).delete({
6039
6299
  security: [{
6040
- key: 'media-BearerAuth',
6300
+ key: 'BearerAuth',
6041
6301
  scheme: 'bearer',
6042
6302
  type: 'http'
6303
+ }, {
6304
+ key: 'ApiKeyAuth',
6305
+ name: 'X-API-Key',
6306
+ type: 'apiKey'
6043
6307
  }],
6044
- url: '/media/v1/libraries/{library_id}/assets/{asset_id}/understandings',
6308
+ url: '/cut/v1/projects/{project_id}',
6045
6309
  ...options
6046
6310
  });
6047
6311
  /**
6048
- * Expression search
6312
+ * Retrieve project
6049
6313
  *
6050
- * Search active assets using the supported filter-expression syntax, sorting and cursor pagination. Empty expression matches all assets. Tags and context require with_field; inspect the exactness flags before treating counts as complete.
6314
+ * Inspect project metadata, settings and library bindings before editing. Copy id from projects.create or list; expand=timeline,exports,versions includes selected related resources. The expanded timeline uses seconds and the returned revision can guard a later execute call with expected_revision.
6051
6315
  */
6052
- export const mediaExpressionSearch = (options) => (options.client ?? client).post({
6316
+ export const cutRetrieveProject = (options) => (options.client ?? client).get({
6053
6317
  security: [{
6054
- key: 'media-BearerAuth',
6318
+ key: 'BearerAuth',
6055
6319
  scheme: 'bearer',
6056
6320
  type: 'http'
6321
+ }, {
6322
+ key: 'ApiKeyAuth',
6323
+ name: 'X-API-Key',
6324
+ type: 'apiKey'
6057
6325
  }],
6058
- url: '/media/v1/libraries/{library_id}/search/expression',
6059
- ...options,
6060
- headers: {
6061
- 'Content-Type': 'application/json',
6062
- ...options.headers
6063
- }
6326
+ url: '/cut/v1/projects/{project_id}',
6327
+ ...options
6064
6328
  });
6065
6329
  /**
6066
- * Visual search
6330
+ * Update project metadata
6067
6331
  *
6068
- * Find visually similar assets using exactly one of asset_id or an inline base64 image. The library must support image search; an asset query needs a current image embedding and excludes that source asset from results.
6332
+ * Change the project display name or replace its labels by naming those fields in update_mask. Use execute for clip or track edits. Each successful update commits a new revision; labels are replaced as a whole when selected, so read and merge existing labels before overwriting them.
6069
6333
  */
6070
- export const mediaVisualSearch = (options) => (options.client ?? client).post({
6334
+ export const cutUpdateProject = (options) => (options.client ?? client).patch({
6071
6335
  security: [{
6072
- key: 'media-BearerAuth',
6336
+ key: 'BearerAuth',
6073
6337
  scheme: 'bearer',
6074
6338
  type: 'http'
6339
+ }, {
6340
+ key: 'ApiKeyAuth',
6341
+ name: 'X-API-Key',
6342
+ type: 'apiKey'
6075
6343
  }],
6076
- url: '/media/v1/libraries/{library_id}/search/visual',
6344
+ url: '/cut/v1/projects/{project_id}',
6077
6345
  ...options,
6078
6346
  headers: {
6079
6347
  'Content-Type': 'application/json',
@@ -6081,17 +6349,120 @@ export const mediaVisualSearch = (options) => (options.client ?? client).post({
6081
6349
  }
6082
6350
  });
6083
6351
  /**
6084
- * Semantic search
6352
+ * Restore deleted project
6085
6353
  *
6086
- * Search assets with a nonblank text query and optional expression filter. Hybrid mode combines semantic and keyword matches; semantic mode uses vector similarity only. Results are ranked and limited by top_k.
6354
+ * Return a retained deleted project to active state before its purge_time. Obtain project_id from projects.list filtered to deleted projects. This restores the project, not an older timeline revision; use versions.restore when reverting editing content.
6087
6355
  */
6088
- export const mediaSemanticSearch = (options) => (options.client ?? client).post({
6356
+ export const cutUndeleteProject = (options) => (options.client ?? client).post({
6089
6357
  security: [{
6090
- key: 'media-BearerAuth',
6358
+ key: 'BearerAuth',
6359
+ scheme: 'bearer',
6360
+ type: 'http'
6361
+ }, {
6362
+ key: 'ApiKeyAuth',
6363
+ name: 'X-API-Key',
6364
+ type: 'apiKey'
6365
+ }],
6366
+ url: '/cut/v1/projects/{project_id}:undelete',
6367
+ ...options
6368
+ });
6369
+ /**
6370
+ * Execute editing script
6371
+ *
6372
+ * Edit the current timeline atomically using synchronous JavaScript source. Read state or timeline first, then pass its revision as expected_revision to detect concurrent changes. Unlike Shotstack, execute applies script edits to a persistent project in one transaction. Provide script or a saved edit_id with literal edits, never both; failures roll back writes. A revision conflict while preparing the response may follow a committed edit: retrieve state before retrying. Minimal script after creating a project: `const t = AddTrack("video"); Insert(t, {type: "color", color: "#123456", start: 0, length: 3}); Print(t);`
6373
+ *
6374
+ * ### Script function reference
6375
+ *
6376
+ * Functions are synchronous globals; do not import them. `project` is the current project ID. TrackId and ClipId are strings returned by AddTrack and Insert or read from GetTimeline. Reads see earlier writes in the same script.
6377
+ *
6378
+ * ```ts
6379
+ * GetTimeline(o?: { from?: number; to?: number; tracks?: TrackId[] }): TimelineView;
6380
+ * GetItem(id: ClipId): ItemView;
6381
+ * FindItems<T>(visit: (item: ItemView, ctx: { track: TrackView; index: number }) => T | undefined): T[];
6382
+ * GetMedia(ref: MediaRef): MediaInfo;
6383
+ * GetTranscript(ref: MediaRef, o?: { from?: number; to?: number }): Word[];
6384
+ * GetAnalysis(ref: MediaRef, kind: AnalysisKind): Segment[];
6385
+ * Insert(track: TrackId, item: ItemInit, o?: { ripple?: boolean }): ClipId;
6386
+ * Update(id: ClipId, patch: ItemPatchView): void;
6387
+ * Delete(id: ClipId, o?: { ripple?: boolean }): void;
6388
+ * Split(id: ClipId, at: number): ClipId;
6389
+ * Trim(id: ClipId, edge: "in" | "out", delta: number, o?: { ripple?: boolean }): void;
6390
+ * Move(id: ClipId, start: number, track?: TrackId): void;
6391
+ * RippleDeleteRange(from: number, to: number, tracks?: TrackId[]): void;
6392
+ * AddTrack(kind: "video" | "audio" | "caption", init?: { name?: string }, index?: number): TrackId;
6393
+ * UpdateTrack(id: TrackId, patch: TrackPatch): void;
6394
+ * DeleteTrack(id: TrackId): void;
6395
+ * SetSettings(patch: Partial<ProjectSettingsView>): void;
6396
+ * AddCaptionsFromTranscript(track: TrackId, source: ClipId, o?: { style?: Partial<CaptionStyle>; maxChars?: number }): ClipId[];
6397
+ * SetMarker(at: number, label: string): string;
6398
+ * Print(...values: unknown[]): void;
6399
+ * Preview(at: number[]): void;
6400
+ * ```
6401
+ *
6402
+ * | Functions | Behavior and arguments |
6403
+ * | --- | --- |
6404
+ * | GetTimeline, GetItem | Read compact item views: id, track, type, start, end, length, optional media, sourceIn/sourceOut, text and offline reason. GetTimeline returns duration and tracks (id, kind, name, index, locked, items); from/to and tracks narrow the read. |
6405
+ * | FindItems | Visit items with their track and index; return undefined to omit an item, any other value to collect it. |
6406
+ * | GetMedia | Read metadata for `{libraryId, assetId}` in a bound library: kind, dimensions, fps, hasAudio and durationUs when available. durationUs is microseconds. |
6407
+ * | GetTranscript, GetAnalysis | Read available transcript words or silence/filler/scenes segments. Transcript filter from/to is seconds; returned word and segment from/to values are source microseconds (divide by 1,000,000 for editing). Words contain text and optional speaker/filler; segments may include label/confidence. Request analysis first if unavailable. |
6408
+ * | Insert, Update, Delete | Insert returns the new clip ID; Update changes supplied fields; Delete removes the clip. Optional ripple on Insert/Delete closes or opens space on the track. |
6409
+ * | Split, Trim, Move | Split at a timeline position and return the new right-hand clip ID. Trim changes the in or out edge by delta seconds. Move sets the timeline start and optionally a new track. |
6410
+ * | RippleDeleteRange | Delete a timeline interval and close its gap on the specified tracks, or all unlocked tracks when omitted. |
6411
+ * | AddTrack, UpdateTrack, DeleteTrack | Add video/audio/caption tracks; index selects layer order (0 is top). TrackPatch supports name, locked, hidden, muted, gainDb and style as appropriate to track kind. |
6412
+ * | SetSettings | Supply any of width/height (pixels), fps (frames per second), background (color). |
6413
+ * | AddCaptionsFromTranscript | Create captions from an audio/video clip's kept words. Optional maxChars is 1–1000, default 16; style updates the caption track. Returns caption IDs. |
6414
+ * | SetMarker | Add a label at a timeline time and return its ID. |
6415
+ * | Print, Preview | Print appends text to prints. Preview requests up to eight times total per execute and puts images in the result's frames. Each url is an inline PNG data URL, not an HTTP image link. Decode the base64 payload to save an image. Codemode returns at most four images per call; request at most four times there. |
6416
+ *
6417
+ * #### Insert fields (ItemInit)
6418
+ *
6419
+ * Every item requires `type` and `start`. Times used for editing are seconds and snap to the project frame rate: start, length, sourceIn, fadeIn/fadeOut, transition length, keyframe at, reveal delay/stagger/duration. Keyframe and reveal times are relative to the clip start. Video/audio may omit length to use the remaining source duration; other types require length.
6420
+ *
6421
+ * | type | Required fields beyond type/start | Optional fields |
6422
+ * | --- | --- | --- |
6423
+ * | video | media | length, sourceIn, volumeDb, transform, fit, animate, transitionIn, transitionOut |
6424
+ * | image | media, length | transform, fit, animate, transitionIn, transitionOut |
6425
+ * | text | text, length | style, transform, reveal, animate, transitionIn, transitionOut |
6426
+ * | color | color, length | transform, fill, animate, transitionIn, transitionOut |
6427
+ * | shape | shape, length, width, height, fill | radius, stroke, transform, animate, transitionIn, transitionOut |
6428
+ * | audio | media | length, sourceIn, volumeDb, fadeIn, fadeOut, transitionIn, transitionOut |
6429
+ * | caption | text, length | — |
6430
+ *
6431
+ * Video tracks accept video/image/text/color/shape; audio and caption tracks accept their corresponding type. Media is `{libraryId: string, assetId: string}` from a bound library. sourceIn defaults to 0, volumeDb to 0 dB, audio fades to 0 seconds. fit defaults to contain: contain fits the whole image, cover fills and crops, fill stretches, none keeps native dimensions.
6432
+ *
6433
+ * | Field | Value |
6434
+ * | --- | --- |
6435
+ * | transform | Partial `{x, y, scale, rotation, opacity, crop, blur}`. x/y are normalized canvas center coordinates (default 0.5); scale 1 is fitted size; rotation is degrees (default 0); opacity is 0–1 (default 1). crop is `{top,right,bottom,left}`. blur is 0–100 pixels at 1080-pixel frame height. |
6436
+ * | style | Partial `{fontFamily, fontSize, fontWeight, color, stroke, background, align, maxWidth}`. fontFamily: Geist or Noto Sans SC (default); fontSize defaults to 48; fontWeight: 400 (default), 500 or 700; color defaults to #FFFFFF; align: left, center (default), right; maxWidth is a fraction of canvas width (default 0.9). stroke is `{color,width}`. Caption style additionally supports position (top/middle/bottom), margin (0–0.4 of canvas height), highlightColor and maxLines: 2. |
6437
+ * | animate | An object keyed by x, y, scale, rotation, opacity or blur. Each value is an array of `{at: number, value: number, ease?: Ease}` sorted by at with distinct frame-snapped times. Values hold before the first and after the last keyframe, overriding the static transform. |
6438
+ * | Ease | linear, in, out, inOut, `{bezier: [x1,y1,x2,y2]}` or `{spring: {stiffness, damping, mass?}}`. Easing shapes the segment arriving at that keyframe; springs may overshoot. |
6439
+ * | reveal | `{by, delay?: number, stagger: number, duration: number, from: {y?, opacity?, scale?, blur?}, ease?: Ease}`. by selects char, word or line. Unit k starts at delay + k * stagger and takes duration seconds to reach its resting state; from.y is a fraction of font size. |
6440
+ * | fill | A color string (#RRGGBB or #RRGGBBAA), `{linear: {angle, stops: [{at,color}, ...]}}` or `{radial: {stops: [{at,color}, ...]}}`. Stop positions are 0–1; angle is degrees, 0 left to right. On color clips, fill replaces color when supplied. |
6441
+ * | shape, width, height, radius, stroke | shape is rect or ellipse. width/height are fractions of canvas width/height before scaling. radius rounds rect corners in pixels at 1080-pixel frame height. stroke is `{color: string, width: number}`. |
6442
+ * | transitionIn, transitionOut | `{kind, length: number}` at the clip's beginning/end. length is seconds. fade changes opacity; dissolve blends; push_left/push_right move horizontally; wipe_left reveals horizontally. |
6443
+ *
6444
+ * #### Update fields (ItemPatchView)
6445
+ *
6446
+ * All fields are optional; use only fields relevant to the item's type. Supported fields: start, length, sourceIn, volumeDb, transform, fit, text, style, color, fadeIn, fadeOut, animate, reveal, fill, stroke, shape, width, height, radius, transitionIn, transitionOut. Values and units match Insert. Set animate, reveal, fill, stroke, transitionIn or transitionOut to null to remove that effect; omitting a field preserves it. For example: `Update(id, {volumeDb: -12})` or `Update(id, {transitionIn: null})`.
6447
+ *
6448
+ * #### Script names versus HTTP response names
6449
+ *
6450
+ * Use camelCase inside scripts, including nested objects. HTTP request/response JSON outside script source uses snake_case. Map media.library_id → media.libraryId, media.asset_id → media.assetId, source_in → sourceIn, volume_db → volumeDb, fade_in/fade_out → fadeIn/fadeOut, transition_in/transition_out → transitionIn/transitionOut, font_family/font_size/font_weight/max_width → fontFamily/fontSize/fontWeight/maxWidth, gain_db → gainDb, highlight_color/max_lines → highlightColor/maxLines. Fields such as animate, reveal, fill, stroke, at and length retain their spelling. GetTimeline/GetItem already return camelCase compact views; the expanded retrieveTimeline HTTP response is not an Insert object.
6451
+ *
6452
+ * Unrecognized script fields fail with OPS_REJECTED and rejection code UNKNOWN_FIELD; snake_case mistakes suggest the corresponding camelCase name. The error message lists each rejection's #opIndex, code and reason. Correct the named fields and retry the saved edit; do not assume an ignored field applied an effect.
6453
+ *
6454
+ */
6455
+ export const cutExecute = (options) => (options.client ?? client).post({
6456
+ security: [{
6457
+ key: 'BearerAuth',
6091
6458
  scheme: 'bearer',
6092
6459
  type: 'http'
6460
+ }, {
6461
+ key: 'ApiKeyAuth',
6462
+ name: 'X-API-Key',
6463
+ type: 'apiKey'
6093
6464
  }],
6094
- url: '/media/v1/libraries/{library_id}/search/semantic',
6465
+ url: '/cut/v1/projects/{project_id}:execute',
6095
6466
  ...options,
6096
6467
  headers: {
6097
6468
  'Content-Type': 'application/json',
@@ -6099,17 +6470,75 @@ export const mediaSemanticSearch = (options) => (options.client ?? client).post(
6099
6470
  }
6100
6471
  });
6101
6472
  /**
6102
- * Semantic search alias
6473
+ * Read editing state
6103
6474
  *
6104
- * Alias of semantic search. Search assets with a nonblank text query, optional expression filter and top_k; hybrid combines semantic and keyword matches, while semantic uses vector similarity only.
6475
+ * Read lightweight project context before composing an execute script. Returns current revision, rendering settings, track counts, library bindings and offline media count without individual clips. For complete clip documents or a selected time range, read timeline instead.
6105
6476
  */
6106
- export const mediaSearch = (options) => (options.client ?? client).post({
6477
+ export const cutRetrieveState = (options) => (options.client ?? client).get({
6107
6478
  security: [{
6108
- key: 'media-BearerAuth',
6479
+ key: 'BearerAuth',
6109
6480
  scheme: 'bearer',
6110
6481
  type: 'http'
6482
+ }, {
6483
+ key: 'ApiKeyAuth',
6484
+ name: 'X-API-Key',
6485
+ type: 'apiKey'
6111
6486
  }],
6112
- url: '/media/v1/libraries/{library_id}/search',
6487
+ url: '/cut/v1/projects/{project_id}/state',
6488
+ ...options
6489
+ });
6490
+ /**
6491
+ * Read project timeline
6492
+ *
6493
+ * Inspect clips and markers in a selected project range before editing. view=full returns structured tracks with all timeline positions in seconds; view=compact returns compact text for script context. from and to are seconds and tracks limits the selection to comma-separated track ids from state. Concurrent changes while preparing a full timeline return 409; retrieve the latest state and try the read again.
6494
+ */
6495
+ export const cutRetrieveTimeline = (options) => (options.client ?? client).get({
6496
+ security: [{
6497
+ key: 'BearerAuth',
6498
+ scheme: 'bearer',
6499
+ type: 'http'
6500
+ }, {
6501
+ key: 'ApiKeyAuth',
6502
+ name: 'X-API-Key',
6503
+ type: 'apiKey'
6504
+ }],
6505
+ url: '/cut/v1/projects/{project_id}/timeline',
6506
+ ...options
6507
+ });
6508
+ /**
6509
+ * Render preview frames
6510
+ *
6511
+ * Review the visual result at one or more project times without creating an export. Pass comma-separated seconds in at, such as 12,15.5; scale changes preview size and revision selects a committed project revision. Request at most eight times. Each returned url is an inline PNG data URL (data:image/png;base64,...), not a hosted HTTP image link. Decode its base64 payload to save the image. Codemode returns at most four images per call, so request at most four times when reviewing there.
6512
+ */
6513
+ export const cutListFrames = (options) => (options.client ?? client).get({
6514
+ security: [{
6515
+ key: 'BearerAuth',
6516
+ scheme: 'bearer',
6517
+ type: 'http'
6518
+ }, {
6519
+ key: 'ApiKeyAuth',
6520
+ name: 'X-API-Key',
6521
+ type: 'apiKey'
6522
+ }],
6523
+ url: '/cut/v1/projects/{project_id}/frames',
6524
+ ...options
6525
+ });
6526
+ /**
6527
+ * Analyze project media
6528
+ *
6529
+ * Request silence, filler-word or scene analysis for selected bound assets before editing. Omit media to select project sources; ranges returned in segments use source seconds. A pending result is not completion: use retry_after_sec before checking again, and inspect failed or unsupported asset results before deciding which edits are possible.
6530
+ */
6531
+ export const cutCreateAnalysis = (options) => (options.client ?? client).post({
6532
+ security: [{
6533
+ key: 'BearerAuth',
6534
+ scheme: 'bearer',
6535
+ type: 'http'
6536
+ }, {
6537
+ key: 'ApiKeyAuth',
6538
+ name: 'X-API-Key',
6539
+ type: 'apiKey'
6540
+ }],
6541
+ url: '/cut/v1/projects/{project_id}/analysis',
6113
6542
  ...options,
6114
6543
  headers: {
6115
6544
  'Content-Type': 'application/json',
@@ -6117,31 +6546,39 @@ export const mediaSearch = (options) => (options.client ?? client).post({
6117
6546
  }
6118
6547
  });
6119
6548
  /**
6120
- * List folders
6549
+ * List library bindings
6121
6550
  *
6122
- * List all immediate child folders under parent, or under the root when parent is omitted. Counts include descendant assets. The result is unpaginated; limit and cursor are rejected.
6551
+ * Discover the named media libraries available to this project before selecting source assets or an import/export destination. read bindings supply source assets; read_write bindings also accept uploads. Exactly one writable binding supplies the default upload destination.
6123
6552
  */
6124
- export const mediaListFolders = (options) => (options.client ?? client).get({
6553
+ export const cutListBindings = (options) => (options.client ?? client).get({
6125
6554
  security: [{
6126
- key: 'media-BearerAuth',
6555
+ key: 'BearerAuth',
6127
6556
  scheme: 'bearer',
6128
6557
  type: 'http'
6558
+ }, {
6559
+ key: 'ApiKeyAuth',
6560
+ name: 'X-API-Key',
6561
+ type: 'apiKey'
6129
6562
  }],
6130
- url: '/media/v1/libraries/{library_id}/folders',
6563
+ url: '/cut/v1/projects/{project_id}/bindings',
6131
6564
  ...options
6132
6565
  });
6133
6566
  /**
6134
- * Create batch
6567
+ * Bind media library
6135
6568
  *
6136
- * Create an asynchronous batch for tagging, untagging, replacing context, moving or deleting assets. Select ids or an expression; selection is frozen at creation. Poll the returned job id for completion and per-item failures.
6569
+ * Attach an accessible media library to an existing project under a unique name. Obtain library_id from praxis.media and choose read for source-only access or read_write for imports and exports. The project must retain exactly one read_write binding with default_upload true after the change.
6137
6570
  */
6138
- export const mediaCreateBatch = (options) => (options.client ?? client).post({
6571
+ export const cutCreateBinding = (options) => (options.client ?? client).post({
6139
6572
  security: [{
6140
- key: 'media-BearerAuth',
6573
+ key: 'BearerAuth',
6141
6574
  scheme: 'bearer',
6142
6575
  type: 'http'
6576
+ }, {
6577
+ key: 'ApiKeyAuth',
6578
+ name: 'X-API-Key',
6579
+ type: 'apiKey'
6143
6580
  }],
6144
- url: '/media/v1/libraries/{library_id}/batches',
6581
+ url: '/cut/v1/projects/{project_id}/bindings',
6145
6582
  ...options,
6146
6583
  headers: {
6147
6584
  'Content-Type': 'application/json',
@@ -6149,31 +6586,1488 @@ export const mediaCreateBatch = (options) => (options.client ?? client).post({
6149
6586
  }
6150
6587
  });
6151
6588
  /**
6152
- * Get batch
6589
+ * Remove library binding
6153
6590
  *
6154
- * Read a batch job’s status, successful and failed item counts, and a bounded list of failed items. Use the id returned by batch creation; a job outside this library is not found.
6591
+ * Detach a library alias obtained from bindings.list after removing all timeline clips that reference its library. BINDING_IN_USE returns 409 while references remain; inspect timeline and edit those clips first. Removal must preserve the one writable default upload binding.
6155
6592
  */
6156
- export const mediaGetBatch = (options) => (options.client ?? client).get({
6593
+ export const cutDeleteBinding = (options) => (options.client ?? client).delete({
6157
6594
  security: [{
6158
- key: 'media-BearerAuth',
6595
+ key: 'BearerAuth',
6159
6596
  scheme: 'bearer',
6160
6597
  type: 'http'
6598
+ }, {
6599
+ key: 'ApiKeyAuth',
6600
+ name: 'X-API-Key',
6601
+ type: 'apiKey'
6161
6602
  }],
6162
- url: '/media/v1/libraries/{library_id}/batches/{job_id}',
6603
+ url: '/cut/v1/projects/{project_id}/bindings/{name}',
6163
6604
  ...options
6164
6605
  });
6165
6606
  /**
6166
- * Batch assets alias
6607
+ * Import project media
6167
6608
  *
6168
- * Alias of batch creation. Apply one metadata or deletion action to ids or a frozen expression selection asynchronously; poll the returned job id to inspect completion and item failures.
6609
+ * Import a URL, data URI or existing file into a writable project media library. Select binding from bindings.list or omit it to use default_upload. Save library_id and asset_id from the result and use them as libraryId and assetId inside execute script media references; overwrites follow the source asset latest version.
6169
6610
  */
6170
- export const mediaBatchAssets = (options) => (options.client ?? client).post({
6611
+ export const cutImportMedia = (options) => (options.client ?? client).post({
6171
6612
  security: [{
6172
- key: 'media-BearerAuth',
6613
+ key: 'BearerAuth',
6614
+ scheme: 'bearer',
6615
+ type: 'http'
6616
+ }, {
6617
+ key: 'ApiKeyAuth',
6618
+ name: 'X-API-Key',
6619
+ type: 'apiKey'
6620
+ }],
6621
+ url: '/cut/v1/projects/{project_id}/media:import',
6622
+ ...options,
6623
+ headers: {
6624
+ 'Content-Type': 'application/json',
6625
+ ...options.headers
6626
+ }
6627
+ });
6628
+ /**
6629
+ * List project exports
6630
+ *
6631
+ * Find export jobs associated with this project before polling or canceling a render. Copy an export id into praxis.cut.exports.retrieve or cancel. Continue with next_page_token as page_token when present; queued or in-progress jobs have not produced a final media asset.
6632
+ */
6633
+ export const cutListExports = (options) => (options.client ?? client).get({
6634
+ security: [{
6635
+ key: 'BearerAuth',
6636
+ scheme: 'bearer',
6637
+ type: 'http'
6638
+ }, {
6639
+ key: 'ApiKeyAuth',
6640
+ name: 'X-API-Key',
6641
+ type: 'apiKey'
6642
+ }],
6643
+ url: '/cut/v1/projects/{project_id}/exports',
6644
+ ...options
6645
+ });
6646
+ /**
6647
+ * Create video export
6648
+ *
6649
+ * Start an asynchronous video export from the project into a writable bound media library. Choose binding from bindings.list or omit it for default_upload, and optionally select revision and output settings. HTTP 202 only accepts the job; poll praxis.cut.exports.retrieve using the returned id until status is done, failed or canceled. On done, asset identifies the video written back to praxis.media. Each call starts a job, so retrieve a known job before retrying a submission.
6650
+ */
6651
+ export const cutCreateExport = (options) => (options.client ?? client).post({
6652
+ security: [{
6653
+ key: 'BearerAuth',
6654
+ scheme: 'bearer',
6655
+ type: 'http'
6656
+ }, {
6657
+ key: 'ApiKeyAuth',
6658
+ name: 'X-API-Key',
6659
+ type: 'apiKey'
6660
+ }],
6661
+ url: '/cut/v1/projects/{project_id}/exports',
6662
+ ...options,
6663
+ headers: {
6664
+ 'Content-Type': 'application/json',
6665
+ ...options.headers
6666
+ }
6667
+ });
6668
+ /**
6669
+ * Retrieve video export
6670
+ *
6671
+ * Poll an export id returned by projects.exports.create or list to observe render progress. queued, fetching, rendering, stitching and saving are in progress; done provides asset in the target library, failed provides error, and canceled means the job stopped. Only done confirms a usable output asset.
6672
+ */
6673
+ export const cutRetrieveExport = (options) => (options.client ?? client).get({
6674
+ security: [{
6675
+ key: 'BearerAuth',
6676
+ scheme: 'bearer',
6677
+ type: 'http'
6678
+ }, {
6679
+ key: 'ApiKeyAuth',
6680
+ name: 'X-API-Key',
6681
+ type: 'apiKey'
6682
+ }],
6683
+ url: '/cut/v1/exports/{export_id}',
6684
+ ...options
6685
+ });
6686
+ /**
6687
+ * Cancel video export
6688
+ *
6689
+ * Request cancellation of an export obtained from projects.exports.create or list when its output is no longer needed. Read the returned job status and retrieve it to confirm the terminal outcome; do not interpret a cancellation request as successful rendering.
6690
+ */
6691
+ export const cutCancelExport = (options) => (options.client ?? client).post({
6692
+ security: [{
6693
+ key: 'BearerAuth',
6694
+ scheme: 'bearer',
6695
+ type: 'http'
6696
+ }, {
6697
+ key: 'ApiKeyAuth',
6698
+ name: 'X-API-Key',
6699
+ type: 'apiKey'
6700
+ }],
6701
+ url: '/cut/v1/exports/{export_id}:cancel',
6702
+ ...options
6703
+ });
6704
+ /**
6705
+ * List saved versions
6706
+ *
6707
+ * Find saved timeline snapshots for this project and obtain version_id values for restore. A saved version records its original revision; restoring it creates a new current revision rather than rewinding the revision counter. Continue with next_page_token as page_token until absent.
6708
+ */
6709
+ export const cutListVersions = (options) => (options.client ?? client).get({
6710
+ security: [{
6711
+ key: 'BearerAuth',
6712
+ scheme: 'bearer',
6713
+ type: 'http'
6714
+ }, {
6715
+ key: 'ApiKeyAuth',
6716
+ name: 'X-API-Key',
6717
+ type: 'apiKey'
6718
+ }],
6719
+ url: '/cut/v1/projects/{project_id}/versions',
6720
+ ...options
6721
+ });
6722
+ /**
6723
+ * Save project version
6724
+ *
6725
+ * Save the current project timeline as a named recovery point before a substantial edit. Supply an optional label or send an empty object; keep the returned version id for versions.restore. Saving a version does not publish a rendered asset; use projects.exports.create for video output.
6726
+ */
6727
+ export const cutCreateVersion = (options) => (options.client ?? client).post({
6728
+ security: [{
6729
+ key: 'BearerAuth',
6730
+ scheme: 'bearer',
6731
+ type: 'http'
6732
+ }, {
6733
+ key: 'ApiKeyAuth',
6734
+ name: 'X-API-Key',
6735
+ type: 'apiKey'
6736
+ }],
6737
+ url: '/cut/v1/projects/{project_id}/versions',
6738
+ ...options,
6739
+ headers: {
6740
+ 'Content-Type': 'application/json',
6741
+ ...options.headers
6742
+ }
6743
+ });
6744
+ /**
6745
+ * Restore saved version
6746
+ *
6747
+ * Replace current editing content with a saved project snapshot selected from projects.versions.list. The restore commits a new transaction and revision while preserving the saved version for future use. Inspect the returned summary and timeline before further editing; a response revision conflict can follow a committed restore, so retrieve current state before retrying.
6748
+ */
6749
+ export const cutRestoreVersion = (options) => (options.client ?? client).post({
6750
+ security: [{
6751
+ key: 'BearerAuth',
6752
+ scheme: 'bearer',
6753
+ type: 'http'
6754
+ }, {
6755
+ key: 'ApiKeyAuth',
6756
+ name: 'X-API-Key',
6757
+ type: 'apiKey'
6758
+ }],
6759
+ url: '/cut/v1/versions/{version_id}:restore',
6760
+ ...options
6761
+ });
6762
+ /**
6763
+ * List databases
6764
+ *
6765
+ * Find databases owned by your tenant and obtain their ids for schema or row operations. Excludes deleting by default. status=active or status=deleting selects that state; invalid values return 400 INVALID_PARAMS.
6766
+ */
6767
+ export const databaseListDatabases = (options) => (options?.client ?? client).get({
6768
+ security: [{
6769
+ key: 'database-bearerAuth',
6770
+ scheme: 'bearer',
6771
+ type: 'http'
6772
+ }],
6773
+ url: '/database/v1/databases',
6774
+ ...options
6775
+ });
6776
+ /**
6777
+ * Create database
6778
+ *
6779
+ * Creates an empty database for the caller and returns it with status active (HTTP 201); add tables next with praxis.database.databases.tables.create. name is required and is 1–64 visible characters after trimming. labels are optional string tags (at most 64; each key starts with a lowercase letter and uses up to 63 characters of a-z 0-9 _ -; each value is up to 63 characters of a-z 0-9 _ -) that databaseListDatabases can filter on. If initialization fails the call returns 503 CAPACITY and the half-created database is left with status failed; retry by calling create again, which makes a new database. Unlike Supabase, this creates a SQLite-backed database without a PostgreSQL connection or SQL execution endpoint. Use a Praxis credential; access is scoped to its tenant, not to Supabase Auth users or RLS policies.
6780
+ */
6781
+ export const databaseCreateDatabase = (options) => (options.client ?? client).post({
6782
+ security: [{
6783
+ key: 'database-bearerAuth',
6784
+ scheme: 'bearer',
6785
+ type: 'http'
6786
+ }],
6787
+ url: '/database/v1/databases',
6788
+ ...options,
6789
+ headers: {
6790
+ 'Content-Type': 'application/json',
6791
+ ...options.headers
6792
+ }
6793
+ });
6794
+ /**
6795
+ * Delete database
6796
+ *
6797
+ * Soft-delete a database when it should stop accepting schema and row operations. Idempotently enters deleting with a seven-day purge_at. GET remains available; child operations return 409 until restored.
6798
+ */
6799
+ export const databaseDeleteDatabase = (options) => (options.client ?? client).delete({
6800
+ security: [{
6801
+ key: 'database-bearerAuth',
6802
+ scheme: 'bearer',
6803
+ type: 'http'
6804
+ }],
6805
+ url: '/database/v1/databases/{database_id}',
6806
+ ...options
6807
+ });
6808
+ /**
6809
+ * Get database
6810
+ *
6811
+ * Returns one database by id, including a database in the deleting state (purge_at then shows when it will be permanently removed). Call it before table or row operations to confirm status is active: schema and row calls on a deleting database return 409 DATABASE_INVALID_STATE. size_bytes is refreshed from live storage at most once every five seconds. A purged or unknown id returns 404 DATABASE_NOT_FOUND.
6812
+ */
6813
+ export const databaseGetDatabase = (options) => (options.client ?? client).get({
6814
+ security: [{
6815
+ key: 'database-bearerAuth',
6816
+ scheme: 'bearer',
6817
+ type: 'http'
6818
+ }],
6819
+ url: '/database/v1/databases/{database_id}',
6820
+ ...options
6821
+ });
6822
+ /**
6823
+ * Update database
6824
+ *
6825
+ * Renames an active database and/or replaces its labels; send only the keys you want to change. labels is replaced as a whole, not merged, so include every label you want to keep. A body without name or labels, or with values equal to the current ones, changes nothing and leaves updated_at as is. A database in the deleting state returns 409 DATABASE_INVALID_STATE; restore it first with databaseRestoreDatabase.
6826
+ */
6827
+ export const databaseUpdateDatabase = (options) => (options.client ?? client).patch({
6828
+ security: [{
6829
+ key: 'database-bearerAuth',
6830
+ scheme: 'bearer',
6831
+ type: 'http'
6832
+ }],
6833
+ url: '/database/v1/databases/{database_id}',
6834
+ ...options,
6835
+ headers: {
6836
+ 'Content-Type': 'application/json',
6837
+ ...options.headers
6838
+ }
6839
+ });
6840
+ /**
6841
+ * Restore database
6842
+ *
6843
+ * Recover a soft-deleted database within its seven-day recovery window. Restore before purge_at. An empty body is accepted. Active databases return 409; purged databases return 404.
6844
+ */
6845
+ export const databaseRestoreDatabase = (options) => (options.client ?? client).post({
6846
+ security: [{
6847
+ key: 'database-bearerAuth',
6848
+ scheme: 'bearer',
6849
+ type: 'http'
6850
+ }],
6851
+ url: '/database/v1/databases/{database_id}/restore',
6852
+ ...options
6853
+ });
6854
+ /**
6855
+ * Permanently purge database
6856
+ *
6857
+ * Immediately and irreversibly purges a deleting database. Active databases return 409; absent or already purged databases return 404.
6858
+ */
6859
+ export const databasePurgeDatabase = (options) => (options.client ?? client).post({
6860
+ security: [{
6861
+ key: 'database-bearerAuth',
6862
+ scheme: 'bearer',
6863
+ type: 'http'
6864
+ }],
6865
+ url: '/database/v1/databases/{database_id}/purge',
6866
+ ...options
6867
+ });
6868
+ /**
6869
+ * List tables
6870
+ *
6871
+ * Lists every table of an active database with its field definitions. A database holds at most 50 tables, so the single page contains all of them and next_cursor is always null. Use databaseGetTable instead when you also need row_count for one table.
6872
+ */
6873
+ export const databaseListTables = (options) => (options.client ?? client).get({
6874
+ security: [{
6875
+ key: 'database-bearerAuth',
6876
+ scheme: 'bearer',
6877
+ type: 'http'
6878
+ }],
6879
+ url: '/database/v1/databases/{database_id}/tables',
6880
+ ...options
6881
+ });
6882
+ /**
6883
+ * Create table
6884
+ *
6885
+ * Creates a table together with its initial fields in one call and returns it (HTTP 201) with generated tbl_ and fld_ ids. name must match ^[a-z_][a-z0-9_]{0,62}$ and be unused in this database (duplicate: 409 UNIQUE_VIOLATION). fields is required and may be an empty array; fields can also be added later with databaseAddField. Limits: 50 tables per database, 64 fields per table, and 16 indexed or unique fields per table; exceeding one returns 400 LIMIT_EXCEEDED. Fields default to indexed:false. Set indexed:true explicitly for fields used in filters or ordering. Only indexed:true or unique:true consumes one of the 16 indexed-or-unique field slots; a field with both consumes one slot. Unique fields still consume a slot even with indexed:false. Existing fields are unchanged. Minimal field example: {"name":"notes","type":"string","indexed":false}. Every row also has a system id column, which is not declared as a field. Insert data afterwards with databaseInsert. Unlike Supabase, define schema with this table API and the field APIs; PostgreSQL DDL and SQL migration files cannot be submitted. Each table supports up to 1,000,000 rows.
6886
+ */
6887
+ export const databaseCreateTable = (options) => (options.client ?? client).post({
6888
+ security: [{
6889
+ key: 'database-bearerAuth',
6890
+ scheme: 'bearer',
6891
+ type: 'http'
6892
+ }],
6893
+ url: '/database/v1/databases/{database_id}/tables',
6894
+ ...options,
6895
+ headers: {
6896
+ 'Content-Type': 'application/json',
6897
+ ...options.headers
6898
+ }
6899
+ });
6900
+ /**
6901
+ * Delete table
6902
+ *
6903
+ * Permanently drops a table with all of its rows; the deletion is immediate and has no recovery window or undo. Refused with 409 REFERENCE_RESTRICT while a link field of another table points at this table, so delete or change those fields first. Returns {deleted: true}. A table name can be reused afterwards.
6904
+ */
6905
+ export const databaseDeleteTable = (options) => (options.client ?? client).delete({
6906
+ security: [{
6907
+ key: 'database-bearerAuth',
6908
+ scheme: 'bearer',
6909
+ type: 'http'
6910
+ }],
6911
+ url: '/database/v1/databases/{database_id}/tables/{table}',
6912
+ ...options
6913
+ });
6914
+ /**
6915
+ * Get table
6916
+ *
6917
+ * Returns one table by id or name with its field definitions, schema_revision and row_count. row_count is only returned by this operation, not by list or create. Use field ids from this response for stable references because field names can be renamed; an unknown table returns 404 TABLE_NOT_FOUND.
6918
+ */
6919
+ export const databaseGetTable = (options) => (options.client ?? client).get({
6920
+ security: [{
6921
+ key: 'database-bearerAuth',
6922
+ scheme: 'bearer',
6923
+ type: 'http'
6924
+ }],
6925
+ url: '/database/v1/databases/{database_id}/tables/{table}',
6926
+ ...options
6927
+ });
6928
+ /**
6929
+ * Update table
6930
+ *
6931
+ * Renames a table and/or changes its description; send only the keys to change, and send description null to clear it. The new name must follow ^[a-z_][a-z0-9_]{0,62}$ and be unused (409 UNIQUE_VIOLATION); ids are stable, so renaming never rewrites row data. A body with no changes or values equal to the current ones does not bump schema_revision. Fields cannot be changed here; use databaseAddField, databaseUpdateField and databaseDeleteField.
6932
+ */
6933
+ export const databaseUpdateTable = (options) => (options.client ?? client).patch({
6934
+ security: [{
6935
+ key: 'database-bearerAuth',
6936
+ scheme: 'bearer',
6937
+ type: 'http'
6938
+ }],
6939
+ url: '/database/v1/databases/{database_id}/tables/{table}',
6940
+ ...options,
6941
+ headers: {
6942
+ 'Content-Type': 'application/json',
6943
+ ...options.headers
6944
+ }
6945
+ });
6946
+ /**
6947
+ * Add field
6948
+ *
6949
+ * Adds one field to an existing table and returns the updated table (HTTP 201). Required inputs are name (lowercase letters, digits and underscores; id and names starting with _ are reserved) and type (string, integer, number, boolean, datetime, json or link); json needs options.schema and link needs options.linked_table_id and options.multiple. Adding a required field to a table that already has rows needs a default, otherwise the call fails with 400 VALIDATION_FAILED; a default is written into every existing row. Fields default to indexed:false. Set indexed:true explicitly for fields used in filters or ordering. Only indexed:true or unique:true consumes one of the 16 indexed-or-unique field slots; a field with both consumes one slot. Unique fields still consume a slot even with indexed:false. Existing fields are unchanged. Minimal field example: {"name":"notes","type":"string","indexed":false}. JSON and link fields cannot be indexed. Limits: 64 fields and 16 indexed or unique fields per table (400 LIMIT_EXCEEDED). Unlike Supabase, schema evolution uses field definitions rather than ALTER TABLE statements or SQL migrations.
6950
+ */
6951
+ export const databaseAddField = (options) => (options.client ?? client).post({
6952
+ security: [{
6953
+ key: 'database-bearerAuth',
6954
+ scheme: 'bearer',
6955
+ type: 'http'
6956
+ }],
6957
+ url: '/database/v1/databases/{database_id}/tables/{table}/fields',
6958
+ ...options,
6959
+ headers: {
6960
+ 'Content-Type': 'application/json',
6961
+ ...options.headers
6962
+ }
6963
+ });
6964
+ /**
6965
+ * Delete field
6966
+ *
6967
+ * Deletes one field definition from a table and returns the updated table; the deletion is immediate and has no recovery window. Look the field up by id or name. The field's index, if any, is dropped with it, and the name can be reused afterwards. Unknown fields return 400 FIELD_NOT_FOUND.
6968
+ */
6969
+ export const databaseDeleteField = (options) => (options.client ?? client).delete({
6970
+ security: [{
6971
+ key: 'database-bearerAuth',
6972
+ scheme: 'bearer',
6973
+ type: 'http'
6974
+ }],
6975
+ url: '/database/v1/databases/{database_id}/tables/{table}/fields/{field}',
6976
+ ...options
6977
+ });
6978
+ /**
6979
+ * Update field
6980
+ *
6981
+ * Changes a field's name, description, required flag, indexed flag, default or json options.schema and returns the updated table. The field type, a link field's linked_table_id and the unique flag cannot be changed (400 FIELD_TYPE_IMMUTABLE or INVALID_PARAMS). Setting required to true fails with 400 VALIDATION_FAILED while existing rows hold null for the field. A new json schema constrains only later writes; existing rows are not revalidated. Renaming never rewrites row data, and a request that changes nothing does not bump schema_revision. Unlike Supabase, field types and uniqueness cannot be altered through SQL migrations; use the supported field settings described here.
6982
+ */
6983
+ export const databaseUpdateField = (options) => (options.client ?? client).patch({
6984
+ security: [{
6985
+ key: 'database-bearerAuth',
6986
+ scheme: 'bearer',
6987
+ type: 'http'
6988
+ }],
6989
+ url: '/database/v1/databases/{database_id}/tables/{table}/fields/{field}',
6990
+ ...options,
6991
+ headers: {
6992
+ 'Content-Type': 'application/json',
6993
+ ...options.headers
6994
+ }
6995
+ });
6996
+ /**
6997
+ * List events
6998
+ *
6999
+ * Read lifecycle and schema events, including while the database is deleting. next_cursor is an opaque string cursor (do not do arithmetic on it): pass it as after_seq for asc or before_seq for desc. Supplying both cursors returns 400 INVALID_PARAMS. Unlike Supabase Realtime, this is paged lifecycle and schema history, not a subscription or a row-change feed; row inserts, updates and deletes do not appear here.
7000
+ */
7001
+ export const databaseListEvents = (options) => (options.client ?? client).get({
7002
+ security: [{
7003
+ key: 'database-bearerAuth',
7004
+ scheme: 'bearer',
7005
+ type: 'http'
7006
+ }],
7007
+ url: '/database/v1/databases/{database_id}/events',
7008
+ ...options
7009
+ });
7010
+ /**
7011
+ * Delete rows
7012
+ *
7013
+ * Deletes the rows matched by the filter query parameters (the same filters as databaseSelect); with no filter every row of the table matches. Deletion is immediate and cannot be undone. A row that a link field of another table still references makes the whole call fail with 409 REFERENCE_RESTRICT and nothing is deleted. The default response is 204 with no body; send Prefer: return=representation to get HTTP 200 with the deleted rows.
7014
+ */
7015
+ export const databaseDelete = (options) => (options.client ?? client).delete({
7016
+ security: [{
7017
+ key: 'database-bearerAuth',
7018
+ scheme: 'bearer',
7019
+ type: 'http'
7020
+ }],
7021
+ url: '/database/v1/databases/{database_id}/rest/{table}',
7022
+ ...options
7023
+ });
7024
+ /**
7025
+ * Select rows
7026
+ *
7027
+ * Read matching rows with filters, selected columns and ordering. Returns at most 1000 rows per request, including when limit is omitted. Content-Range reports the actual returned interval and the total when count is requested. PATCH and DELETE are not subject to this read cap. Unlike Supabase, casts, aggregates, spread and join modifiers are unsupported. Each table supports up to 1,000,000 rows. Query budget: 8,000 ms with a shared 3,000,000-row safety ceiling. Create indexes on filtered or sorted fields, or narrow the request when it exceeds its budget. Synchronous SQLite aggregates use candidate-row throughput estimates before execution; deployed Workers freeze clocks during synchronous CPU work, so the timer is not a guaranteed server-side interrupt. Count preferences: without filters, exact, planned and estimated all use SQLite's exact b-tree count. With filters, exact counts within budget; planned skips counting and reports an unknown total (Content-Range: 0-24*); estimated attempts exact counting only when the preflight budget allows it, otherwise reports an unknown total. Preference-Applied echoes the requested count mode. Error table: QUERY_CANCELED / PostgREST 57014 is HTTP 500, retryable=false: Query timed out: index filtered or sorted fields, or narrow the range. DATABASE_INVALID_STATE is HTTP 409 for operations on a deleting database. Cleared or nonexistent databases return DATABASE_NOT_FOUND / HTTP 404. The count is an HTTP Content-Range response header, not a JSON property. Use praxis.database.count in the SDK or codemode to return { count: number | null }; a page length is not a total unless you know all matches fit in that page.
7028
+ */
7029
+ export const databaseSelect = (options) => (options.client ?? client).get({
7030
+ security: [{
7031
+ key: 'database-bearerAuth',
7032
+ scheme: 'bearer',
7033
+ type: 'http'
7034
+ }],
7035
+ url: '/database/v1/databases/{database_id}/rest/{table}',
7036
+ ...options
7037
+ });
7038
+ /**
7039
+ * Count rows
7040
+ *
7041
+ * Inspect the HTTP row count and range without retrieving row data; send Prefer: count=exact for a filtered count. Returns no body and does not fetch or serialize row data. A known count determines the interval using limit/offset or Range with a default and maximum page size of 1000. Without a count preference, or when the selected count mode cannot supply a total, Content-Range is **. Singular Accept still validates page cardinality. Unlike Supabase, planned and estimated counts do not use PostgreSQL planner estimates. Count preferences: without filters, exact, planned and estimated all use SQLite's exact b-tree count. With filters, exact counts within budget; planned skips counting and reports an unknown total (Content-Range: 0-24*); estimated attempts exact counting only when the preflight budget allows it, otherwise reports an unknown total. Preference-Applied echoes the requested count mode. Use praxis.database.count in the SDK or codemode to return { count: number | null } from this header without retrieving rows.
7042
+ */
7043
+ export const databaseHead = (options) => (options.client ?? client).head({
7044
+ security: [{
7045
+ key: 'database-bearerAuth',
7046
+ scheme: 'bearer',
7047
+ type: 'http'
7048
+ }],
7049
+ url: '/database/v1/databases/{database_id}/rest/{table}',
7050
+ ...options
7051
+ });
7052
+ /**
7053
+ * Update rows
7054
+ *
7055
+ * Updates the rows matched by the filter query parameters (the same filters as databaseSelect); with no filter every row of the table matches. The JSON object body lists only the fields to change, other fields keep their values, and id cannot be changed. Values are validated against the field types and the required and unique settings (400 VALIDATION_FAILED, 409 UNIQUE_VIOLATION). The default response is 204 with no body; send Prefer: return=representation to get HTTP 200 with the updated rows. Each changed row's _version increases by one.
7056
+ */
7057
+ export const databaseUpdate = (options) => (options.client ?? client).patch({
7058
+ security: [{
7059
+ key: 'database-bearerAuth',
7060
+ scheme: 'bearer',
7061
+ type: 'http'
7062
+ }],
7063
+ url: '/database/v1/databases/{database_id}/rest/{table}',
7064
+ ...options,
7065
+ headers: {
7066
+ 'Content-Type': 'application/json',
7067
+ ...options.headers
7068
+ }
7069
+ });
7070
+ /**
7071
+ * Insert rows
7072
+ *
7073
+ * Insert rows into an existing table after defining its fields; at most 500 rows per request. Each request is atomic: any failure rolls back the entire batch. There are no transactions across requests.
7074
+ * Rows are filled to the union of their keys with null; send Prefer: missing=default to use field defaults for missing keys.
7075
+ * The default is return=minimal: success returns HTTP 201 with an empty body. Send Prefer: return=representation to return the inserted rows. With resolution=merge-duplicates, a conflicting row keeps columns omitted from the request; supplied values replace the whole field value (including JSON objects), and explicit null clears a nullable field. With resolution=ignore-duplicates, a conflicting row is left unchanged. Without a conflict, both modes insert a new row using field defaults for omitted fields. In a batch, a key present in another row is filled with null when omitted in this row unless missing=default is set; that null can overwrite a value during merge. With missing=default, omitted keys stay omitted for conflict merges (existing values are preserved); new rows use defaults, or null when no default exists. Explicit null never invokes a default. Unlike Supabase, upsert conflicts can target only id or one unique field, not a composite key. Each table supports up to 1,000,000 rows.
7076
+ */
7077
+ export const databaseInsert = (options) => (options.client ?? client).post({
7078
+ security: [{
7079
+ key: 'database-bearerAuth',
7080
+ scheme: 'bearer',
7081
+ type: 'http'
7082
+ }],
7083
+ url: '/database/v1/databases/{database_id}/rest/{table}',
7084
+ ...options,
7085
+ headers: {
7086
+ 'Content-Type': 'application/json',
7087
+ ...options.headers
7088
+ }
7089
+ });
7090
+ /**
7091
+ * List knowledge bases
7092
+ *
7093
+ * Lists knowledge bases visible to the caller, newest first by default. Use last_id as after to read the next page; for example, ?limit=20.
7094
+ */
7095
+ export const knowledgeListVectorStores = (options) => (options?.client ?? client).get({
7096
+ security: [{
7097
+ key: 'knowledge-bearerAuth',
7098
+ scheme: 'bearer',
7099
+ type: 'http'
7100
+ }],
7101
+ url: '/knowledge/v1/vector_stores',
7102
+ ...options
7103
+ });
7104
+ /**
7105
+ * Create knowledge base
7106
+ *
7107
+ * Create a knowledge base, optionally starting ingestion of uploaded file_ids in the same call; no separate attachment or batch is needed for those files. Use the returned id with vectorStores.files.retrieve to poll each attachment until completed, failed or cancelled; store status=completed alone does not mean every file succeeded. Each file accepts up to 52428800 bytes and 5000000 estimated tokens; each account holds up to 100 active/nondeleted stores. Minimal body: {"name":"Refund policies"}.
7108
+ */
7109
+ export const knowledgeCreateVectorStore = (options) => (options.client ?? client).post({
7110
+ security: [{
7111
+ key: 'knowledge-bearerAuth',
7112
+ scheme: 'bearer',
7113
+ type: 'http'
7114
+ }],
7115
+ url: '/knowledge/v1/vector_stores',
7116
+ ...options,
7117
+ headers: {
7118
+ 'Content-Type': 'application/json',
7119
+ ...options.headers
7120
+ }
7121
+ });
7122
+ /**
7123
+ * Delete knowledge base
7124
+ *
7125
+ * Remove a knowledge base from active use while keeping a recovery window. Unlike OpenAI vector stores, native DELETE returns the store with status=deleting and ISO purge_at, retains it for 7 days and is idempotent on repeat. Retrieve remains 200; object operations return 409. Use restore before purge_at to recover it, or purge to remove it irreversibly.
7126
+ */
7127
+ export const knowledgeDeleteVectorStore = (options) => (options.client ?? client).delete({
7128
+ security: [{
7129
+ key: 'knowledge-bearerAuth',
7130
+ scheme: 'bearer',
7131
+ type: 'http'
7132
+ }],
7133
+ url: '/knowledge/v1/vector_stores/{vector_store_id}',
7134
+ ...options
7135
+ });
7136
+ /**
7137
+ * Retrieve knowledge base
7138
+ *
7139
+ * Retrieves a knowledge base using an id returned by create or list. Add ?expand=files to include the first page of attached files. Soft-deleted stores remain readable with status=deleting until purged.
7140
+ */
7141
+ export const knowledgeRetrieveVectorStore = (options) => (options.client ?? client).get({
7142
+ security: [{
7143
+ key: 'knowledge-bearerAuth',
7144
+ scheme: 'bearer',
7145
+ type: 'http'
7146
+ }],
7147
+ url: '/knowledge/v1/vector_stores/{vector_store_id}',
7148
+ ...options
7149
+ });
7150
+ /**
7151
+ * Update knowledge base
7152
+ *
7153
+ * Updates an active knowledge base using its returned id. Omitted fields stay unchanged; metadata replaces the whole map. Example body: {"name":"Refund policies"}.
7154
+ */
7155
+ export const knowledgeUpdateVectorStore = (options) => (options.client ?? client).post({
7156
+ security: [{
7157
+ key: 'knowledge-bearerAuth',
7158
+ scheme: 'bearer',
7159
+ type: 'http'
7160
+ }],
7161
+ url: '/knowledge/v1/vector_stores/{vector_store_id}',
7162
+ ...options,
7163
+ headers: {
7164
+ 'Content-Type': 'application/json',
7165
+ ...options.headers
7166
+ }
7167
+ });
7168
+ /**
7169
+ * Search knowledge base
7170
+ *
7171
+ * Search ingested text to answer a question or find supporting passages. Native results contain one chunk each, so file_id can repeat; max_num_results counts chunks (1–50, default 10), while the compatible URL groups results by file. Unlike OpenAI vector stores, next_page is always null even when has_more is true. Only completed attachments are searchable. For keyword-only retrieval set ranking_options.hybrid_search to {"embedding_weight":0,"text_weight":1}; omit rewrite_query or set it to false to avoid query rewriting. Unlike OpenAI, ranker auto does not rerank; only default-2024-11-15 requests reranking. Set praxis.explain=true to inspect scores and use returned content[].chunk_id to retrieve a segment.
7172
+ */
7173
+ export const knowledgeSearchVectorStore = (options) => (options.client ?? client).post({
7174
+ security: [{
7175
+ key: 'knowledge-bearerAuth',
7176
+ scheme: 'bearer',
7177
+ type: 'http'
7178
+ }],
7179
+ url: '/knowledge/v1/vector_stores/{vector_store_id}/search',
7180
+ ...options,
7181
+ headers: {
7182
+ 'Content-Type': 'application/json',
7183
+ ...options.headers
7184
+ }
7185
+ });
7186
+ /**
7187
+ * List files
7188
+ *
7189
+ * Lists attached files and their ingestion status, newest attachment first by default. Use last_id as after to continue; ?filter=failed selects files that can be retried.
7190
+ */
7191
+ export const knowledgeListFiles = (options) => (options.client ?? client).get({
7192
+ security: [{
7193
+ key: 'knowledge-bearerAuth',
7194
+ scheme: 'bearer',
7195
+ type: 'http'
7196
+ }],
7197
+ url: '/knowledge/v1/vector_stores/{vector_store_id}/files',
7198
+ ...options
7199
+ });
7200
+ /**
7201
+ * Add file
7202
+ *
7203
+ * Attach an uploaded File for asynchronous ingestion, then poll this attachment until status is completed, failed or cancelled before searching. Each file accepts up to 52428800 bytes and 5000000 estimated tokens; chunk sizes use estimated tokens rather than a model tokenizer. Text, Markdown, CSV, JSON, HTML, PDF, DOCX, PPTX, XLSX and PNG/JPEG/GIF/WebP images can be extracted; audio and video uploads are not knowledge documents. Images may yield generated descriptions rather than verbatim OCR. auto chunking resolves to static 800/400; explicit sizes are 100–4096 with overlap at most half the size. Each store holds at most 10000 attached files. Reattaching the same file returns its existing record without applying new attributes or chunking; inspect last_error after failure.
7204
+ */
7205
+ export const knowledgeAttachFile = (options) => (options.client ?? client).post({
7206
+ security: [{
7207
+ key: 'knowledge-bearerAuth',
7208
+ scheme: 'bearer',
7209
+ type: 'http'
7210
+ }],
7211
+ url: '/knowledge/v1/vector_stores/{vector_store_id}/files',
7212
+ ...options,
7213
+ headers: {
7214
+ 'Content-Type': 'application/json',
7215
+ ...options.headers
7216
+ }
7217
+ });
7218
+ /**
7219
+ * Remove file
7220
+ *
7221
+ * Removes the file from search immediately; does not delete the original File.
7222
+ */
7223
+ export const knowledgeRemoveFile = (options) => (options.client ?? client).delete({
7224
+ security: [{
7225
+ key: 'knowledge-bearerAuth',
7226
+ scheme: 'bearer',
7227
+ type: 'http'
7228
+ }],
7229
+ url: '/knowledge/v1/vector_stores/{vector_store_id}/files/{file_id}',
7230
+ ...options
7231
+ });
7232
+ /**
7233
+ * Retrieve file
7234
+ *
7235
+ * Retrieves an attached file using the id returned by attachment or file listing. Poll this operation until status leaves in_progress to observe the ingestion outcome.
7236
+ */
7237
+ export const knowledgeRetrieveFile = (options) => (options.client ?? client).get({
7238
+ security: [{
7239
+ key: 'knowledge-bearerAuth',
7240
+ scheme: 'bearer',
7241
+ type: 'http'
7242
+ }],
7243
+ url: '/knowledge/v1/vector_stores/{vector_store_id}/files/{file_id}',
7244
+ ...options
7245
+ });
7246
+ /**
7247
+ * Update file attributes
7248
+ *
7249
+ * Replaces search-filter attributes of an existing attachment without reingesting its content. Use an attached file id. Example body: {"attributes":{"category":"refund"}}; null clears the attributes.
7250
+ */
7251
+ export const knowledgeUpdateFile = (options) => (options.client ?? client).post({
7252
+ security: [{
7253
+ key: 'knowledge-bearerAuth',
7254
+ scheme: 'bearer',
7255
+ type: 'http'
7256
+ }],
7257
+ url: '/knowledge/v1/vector_stores/{vector_store_id}/files/{file_id}',
7258
+ ...options,
7259
+ headers: {
7260
+ 'Content-Type': 'application/json',
7261
+ ...options.headers
7262
+ }
7263
+ });
7264
+ /**
7265
+ * Read extracted content
7266
+ *
7267
+ * Extracted text chunks may overlap. Image content can be a generated description rather than verbatim OCR.
7268
+ */
7269
+ export const knowledgeRetrieveFileContent = (options) => (options.client ?? client).get({
7270
+ security: [{
7271
+ key: 'knowledge-bearerAuth',
7272
+ scheme: 'bearer',
7273
+ type: 'http'
7274
+ }],
7275
+ url: '/knowledge/v1/vector_stores/{vector_store_id}/files/{file_id}/content',
7276
+ ...options
7277
+ });
7278
+ /**
7279
+ * Create file batch
7280
+ *
7281
+ * Attaches existing Files as a batch for asynchronous ingestion. Supply exactly one of file_ids or files; files allows per-file settings. Existing attachments are reused. Read the returned batch id to monitor status.
7282
+ */
7283
+ export const knowledgeCreateFileBatch = (options) => (options.client ?? client).post({
7284
+ security: [{
7285
+ key: 'knowledge-bearerAuth',
7286
+ scheme: 'bearer',
7287
+ type: 'http'
7288
+ }],
7289
+ url: '/knowledge/v1/vector_stores/{vector_store_id}/file_batches',
7290
+ ...options,
7291
+ headers: {
7292
+ 'Content-Type': 'application/json',
7293
+ ...options.headers
7294
+ }
7295
+ });
7296
+ /**
7297
+ * Retrieve file batch
7298
+ *
7299
+ * Retrieves a batch created in this knowledge base, including current status and file counts. Use the batch id returned by batch creation to monitor ingestion.
7300
+ */
7301
+ export const knowledgeRetrieveFileBatch = (options) => (options.client ?? client).get({
7302
+ security: [{
7303
+ key: 'knowledge-bearerAuth',
7304
+ scheme: 'bearer',
7305
+ type: 'http'
7306
+ }],
7307
+ url: '/knowledge/v1/vector_stores/{vector_store_id}/file_batches/{batch_id}',
7308
+ ...options
7309
+ });
7310
+ /**
7311
+ * Cancel file batch
7312
+ *
7313
+ * Cancels only in-progress batches and pending files. Completed, failed and cancelled batches return unchanged (200, idempotent).
7314
+ */
7315
+ export const knowledgeCancelFileBatch = (options) => (options.client ?? client).post({
7316
+ security: [{
7317
+ key: 'knowledge-bearerAuth',
7318
+ scheme: 'bearer',
7319
+ type: 'http'
7320
+ }],
7321
+ url: '/knowledge/v1/vector_stores/{vector_store_id}/file_batches/{batch_id}/cancel',
7322
+ ...options
7323
+ });
7324
+ /**
7325
+ * List batch files
7326
+ *
7327
+ * Lists files still attached from the identified batch, newest attachment first by default. Use the batch creation id and ?filter=failed to inspect failures; last_id is the next after cursor.
7328
+ */
7329
+ export const knowledgeListBatchFiles = (options) => (options.client ?? client).get({
7330
+ security: [{
7331
+ key: 'knowledge-bearerAuth',
7332
+ scheme: 'bearer',
7333
+ type: 'http'
7334
+ }],
7335
+ url: '/knowledge/v1/vector_stores/{vector_store_id}/file_batches/{batch_id}/files',
7336
+ ...options
7337
+ });
7338
+ /**
7339
+ * Restore knowledge base
7340
+ *
7341
+ * Restores a deleting store within 7 days. Active stores return 409 VECTOR_STORE_INVALID_STATE; absent stores return 404. Empty body is allowed.
7342
+ */
7343
+ export const knowledgeRestoreVectorStore = (options) => (options.client ?? client).post({
7344
+ security: [{
7345
+ key: 'knowledge-bearerAuth',
7346
+ scheme: 'bearer',
7347
+ type: 'http'
7348
+ }],
7349
+ url: '/knowledge/v1/vector_stores/{vector_store_id}/restore',
7350
+ ...options
7351
+ });
7352
+ /**
7353
+ * Permanently purge knowledge base
7354
+ *
7355
+ * Immediately and irreversibly clears a deleting store using the retention cleanup path. Active stores return 409; absent stores return 404. Empty body is allowed.
7356
+ */
7357
+ export const knowledgePurgeVectorStore = (options) => (options.client ?? client).post({
7358
+ security: [{
7359
+ key: 'knowledge-bearerAuth',
7360
+ scheme: 'bearer',
7361
+ type: 'http'
7362
+ }],
7363
+ url: '/knowledge/v1/vector_stores/{vector_store_id}/purge',
7364
+ ...options
7365
+ });
7366
+ /**
7367
+ * Retry failed file
7368
+ *
7369
+ * Retries only failed files; other states return 409 FILE_INVALID_STATE. Retry after failure has not yet been observed in the documented run.
7370
+ */
7371
+ export const knowledgeRetryFile = (options) => (options.client ?? client).post({
7372
+ security: [{
7373
+ key: 'knowledge-bearerAuth',
7374
+ scheme: 'bearer',
7375
+ type: 'http'
7376
+ }],
7377
+ url: '/knowledge/v1/vector_stores/{vector_store_id}/files/{file_id}/retry',
7378
+ ...options
7379
+ });
7380
+ /**
7381
+ * List file segments
7382
+ *
7383
+ * Lists the stored chunks of an attached file, ordered by increasing segment index by default. Use the attachment id and last_id as after to continue; returned chunk ids can be retrieved individually.
7384
+ */
7385
+ export const knowledgeListSegments = (options) => (options.client ?? client).get({
7386
+ security: [{
7387
+ key: 'knowledge-bearerAuth',
7388
+ scheme: 'bearer',
7389
+ type: 'http'
7390
+ }],
7391
+ url: '/knowledge/v1/vector_stores/{vector_store_id}/files/{file_id}/segments',
7392
+ ...options
7393
+ });
7394
+ /**
7395
+ * Retrieve segment
7396
+ *
7397
+ * Retrieves one chunk and its term statistics. Take chunk_id from segment listing or native search content; the chunk must belong to this knowledge base.
7398
+ */
7399
+ export const knowledgeRetrieveSegment = (options) => (options.client ?? client).get({
7400
+ security: [{
7401
+ key: 'knowledge-bearerAuth',
7402
+ scheme: 'bearer',
7403
+ type: 'http'
7404
+ }],
7405
+ url: '/knowledge/v1/vector_stores/{vector_store_id}/segments/{chunk_id}',
7406
+ ...options
7407
+ });
7408
+ /**
7409
+ * List events
7410
+ *
7411
+ * Reads events for this knowledge base in increasing sequence order, including while soft-deleted. Pass next_seq as after_seq to continue; null next_seq marks the current end. Example: ?after_seq=0&limit=20.
7412
+ */
7413
+ export const knowledgeListEvents = (options) => (options.client ?? client).get({
7414
+ security: [{
7415
+ key: 'knowledge-bearerAuth',
7416
+ scheme: 'bearer',
7417
+ type: 'http'
7418
+ }],
7419
+ url: '/knowledge/v1/vector_stores/{vector_store_id}/events',
7420
+ ...options
7421
+ });
7422
+ /**
7423
+ * List libraries
7424
+ *
7425
+ * List libraries owned by the caller, newest first. By default, deleting and deleted libraries are excluded; use status=deleting to find libraries awaiting purge. All supplied label pairs must match.
7426
+ */
7427
+ export const mediaListLibraries = (options) => (options?.client ?? client).get({
7428
+ security: [{
7429
+ key: 'media-BearerAuth',
7430
+ scheme: 'bearer',
7431
+ type: 'http'
7432
+ }],
7433
+ url: '/media/v1/libraries',
7434
+ ...options
7435
+ });
7436
+ /**
7437
+ * Create library
7438
+ *
7439
+ * Create a library owned by the caller with a name, optional labels and understanding settings. Understanding is enabled by default; the returned id is used for subsequent asset operations.
7440
+ */
7441
+ export const mediaCreateLibrary = (options) => (options.client ?? client).post({
7442
+ security: [{
7443
+ key: 'media-BearerAuth',
7444
+ scheme: 'bearer',
7445
+ type: 'http'
7446
+ }],
7447
+ url: '/media/v1/libraries',
7448
+ ...options,
7449
+ headers: {
7450
+ 'Content-Type': 'application/json',
7451
+ ...options.headers
7452
+ }
7453
+ });
7454
+ /**
7455
+ * Delete library
7456
+ *
7457
+ * Soft-delete an active library, returning its deleting status and purge_at deadline. Asset operations and delivery become unavailable; the library can be restored before purge_at. Repeated deletion while deleting returns the current library.
7458
+ */
7459
+ export const mediaDeleteLibrary = (options) => (options.client ?? client).delete({
7460
+ security: [{
7461
+ key: 'media-BearerAuth',
7462
+ scheme: 'bearer',
7463
+ type: 'http'
7464
+ }],
7465
+ url: '/media/v1/libraries/{library_id}',
7466
+ ...options
7467
+ });
7468
+ /**
7469
+ * Get library
7470
+ *
7471
+ * Read a caller-owned library’s current settings, usage and lifecycle status. A deleting library remains readable; missing, foreign or purged libraries return LIBRARY_NOT_FOUND.
7472
+ */
7473
+ export const mediaGetLibrary = (options) => (options.client ?? client).get({
7474
+ security: [{
7475
+ key: 'media-BearerAuth',
7476
+ scheme: 'bearer',
7477
+ type: 'http'
7478
+ }],
7479
+ url: '/media/v1/libraries/{library_id}',
7480
+ ...options
7481
+ });
7482
+ /**
7483
+ * Update library
7484
+ *
7485
+ * Update an active library’s supplied settings. Labels replace the complete map; understanding settings and model roles merge with current values. Changing the embedding model is rejected while assets exist.
7486
+ */
7487
+ export const mediaUpdateLibrary = (options) => (options.client ?? client).patch({
7488
+ security: [{
7489
+ key: 'media-BearerAuth',
7490
+ scheme: 'bearer',
7491
+ type: 'http'
7492
+ }],
7493
+ url: '/media/v1/libraries/{library_id}',
7494
+ ...options,
7495
+ headers: {
7496
+ 'Content-Type': 'application/json',
7497
+ ...options.headers
7498
+ }
7499
+ });
7500
+ /**
7501
+ * Restore library
7502
+ *
7503
+ * Restore a deleting library before its purge_at deadline. The library becomes active again and deleted_at and purge_at are cleared; expired or non-deleting libraries cannot be restored.
7504
+ */
7505
+ export const mediaRestoreLibrary = (options) => (options.client ?? client).post({
7506
+ security: [{
7507
+ key: 'media-BearerAuth',
7508
+ scheme: 'bearer',
7509
+ type: 'http'
7510
+ }],
7511
+ url: '/media/v1/libraries/{library_id}/restore',
7512
+ ...options
7513
+ });
7514
+ /**
7515
+ * Purge library
7516
+ *
7517
+ * Permanently remove a library that is already deleting, without waiting for purge_at. Its assets and related resources are removed and cannot be restored; first soft-delete an active library.
7518
+ */
7519
+ export const mediaPurgeLibrary = (options) => (options.client ?? client).post({
7520
+ security: [{
7521
+ key: 'media-BearerAuth',
7522
+ scheme: 'bearer',
7523
+ type: 'http'
7524
+ }],
7525
+ url: '/media/v1/libraries/{library_id}/purge',
7526
+ ...options
7527
+ });
7528
+ /**
7529
+ * List assets
7530
+ *
7531
+ * List assets in an active library, newest first, optionally filtering by exact folder and stored resource type. Continue using next_cursor; video includes audio-only assets.
7532
+ */
7533
+ export const mediaListAssets = (options) => (options.client ?? client).get({
7534
+ security: [{
7535
+ key: 'media-BearerAuth',
7536
+ scheme: 'bearer',
7537
+ type: 'http'
7538
+ }],
7539
+ url: '/media/v1/libraries/{library_id}/assets',
7540
+ ...options
7541
+ });
7542
+ /**
7543
+ * Upload asset
7544
+ *
7545
+ * Upload content into an active library and return a Cloudinary-compatible resource. Use file for a multipart file, data URI, public HTTPS URL or same-owner file identifier. Reusing public_id overwrites by default; overwrite=false returns the existing resource. Chunk uploads require both chunk headers.
7546
+ */
7547
+ export const mediaUploadAsset = (options) => (options.client ?? client).post({
7548
+ security: [{
7549
+ key: 'media-BearerAuth',
7550
+ scheme: 'bearer',
7551
+ type: 'http'
7552
+ }],
7553
+ url: '/media/v1/libraries/{library_id}/assets',
7554
+ ...options,
7555
+ headers: {
7556
+ 'Content-Type': 'application/json',
7557
+ ...options.headers
7558
+ }
7559
+ });
7560
+ /**
7561
+ * Import file
7562
+ *
7563
+ * Copy source content into an active library using upload options and return the full native Asset. The imported asset is independent of the source after copying. Reusing public_id follows overwrite semantics.
7564
+ */
7565
+ export const mediaImportAsset = (options) => (options.client ?? client).post({
7566
+ security: [{
7567
+ key: 'media-BearerAuth',
7568
+ scheme: 'bearer',
7569
+ type: 'http'
7570
+ }],
7571
+ url: '/media/v1/libraries/{library_id}/assets/import',
7572
+ ...options,
7573
+ headers: {
7574
+ 'Content-Type': 'application/json',
7575
+ ...options.headers
7576
+ }
7577
+ });
7578
+ /**
7579
+ * Delete asset
7580
+ *
7581
+ * Delete an asset from the library so it is no longer readable, searchable or deliverable. This removes the asset rather than placing it in the library’s restoration window; a missing asset returns ASSET_NOT_FOUND.
7582
+ */
7583
+ export const mediaDeleteAsset = (options) => (options.client ?? client).delete({
7584
+ security: [{
7585
+ key: 'media-BearerAuth',
7586
+ scheme: 'bearer',
7587
+ type: 'http'
7588
+ }],
7589
+ url: '/media/v1/libraries/{library_id}/assets/{asset_id}',
7590
+ ...options
7591
+ });
7592
+ /**
7593
+ * Get asset
7594
+ *
7595
+ * Read a non-deleted asset by its asset_id in an active library, including content hashes, processing progress and available previews. Missing or deleted assets return ASSET_NOT_FOUND.
7596
+ */
7597
+ export const mediaGetAsset = (options) => (options.client ?? client).get({
7598
+ security: [{
7599
+ key: 'media-BearerAuth',
7600
+ scheme: 'bearer',
7601
+ type: 'http'
7602
+ }],
7603
+ url: '/media/v1/libraries/{library_id}/assets/{asset_id}',
7604
+ ...options
7605
+ });
7606
+ /**
7607
+ * Update asset
7608
+ *
7609
+ * Update an asset’s supplied metadata fields. Tags and context replace their current collections; an empty collection clears them. Moving asset_folder or changing display_name preserves public_id and delivery URLs.
7610
+ */
7611
+ export const mediaUpdateAsset = (options) => (options.client ?? client).patch({
7612
+ security: [{
7613
+ key: 'media-BearerAuth',
7614
+ scheme: 'bearer',
7615
+ type: 'http'
7616
+ }],
7617
+ url: '/media/v1/libraries/{library_id}/assets/{asset_id}',
7618
+ ...options,
7619
+ headers: {
7620
+ 'Content-Type': 'application/json',
7621
+ ...options.headers
7622
+ }
7623
+ });
7624
+ /**
7625
+ * Reprocess asset
7626
+ *
7627
+ * Queue reprocessing of the asset’s current version and return its updated state immediately. Omit kinds to retry failed tasks; explicit kinds rerun applicable completed tasks. Replaced understandings become superseded, and processing finishes asynchronously.
7628
+ */
7629
+ export const mediaReprocessAsset = (options) => (options.client ?? client).post({
7630
+ security: [{
7631
+ key: 'media-BearerAuth',
7632
+ scheme: 'bearer',
7633
+ type: 'http'
7634
+ }],
7635
+ url: '/media/v1/libraries/{library_id}/assets/{asset_id}/reprocess',
7636
+ ...options,
7637
+ headers: {
7638
+ 'Content-Type': 'application/json',
7639
+ ...options.headers
7640
+ }
7641
+ });
7642
+ /**
7643
+ * List understandings
7644
+ *
7645
+ * List an asset’s understanding results in creation order. By default only current, non-superseded results are returned; use include_superseded=true for history or kind to select an output type.
7646
+ */
7647
+ export const mediaListUnderstandings = (options) => (options.client ?? client).get({
7648
+ security: [{
7649
+ key: 'media-BearerAuth',
7650
+ scheme: 'bearer',
7651
+ type: 'http'
7652
+ }],
7653
+ url: '/media/v1/libraries/{library_id}/assets/{asset_id}/understandings',
7654
+ ...options
7655
+ });
7656
+ /**
7657
+ * Expression search
7658
+ *
7659
+ * Search active assets using the supported filter-expression syntax, sorting and cursor pagination. Empty expression matches all assets. Tags and context require with_field; inspect the exactness flags before treating counts as complete.
7660
+ */
7661
+ export const mediaExpressionSearch = (options) => (options.client ?? client).post({
7662
+ security: [{
7663
+ key: 'media-BearerAuth',
7664
+ scheme: 'bearer',
7665
+ type: 'http'
7666
+ }],
7667
+ url: '/media/v1/libraries/{library_id}/search/expression',
7668
+ ...options,
7669
+ headers: {
7670
+ 'Content-Type': 'application/json',
7671
+ ...options.headers
7672
+ }
7673
+ });
7674
+ /**
7675
+ * Visual search
7676
+ *
7677
+ * Find visually similar assets using exactly one of asset_id or an inline base64 image. The library must support image search; an asset query needs a current image embedding and excludes that source asset from results.
7678
+ */
7679
+ export const mediaVisualSearch = (options) => (options.client ?? client).post({
7680
+ security: [{
7681
+ key: 'media-BearerAuth',
7682
+ scheme: 'bearer',
7683
+ type: 'http'
7684
+ }],
7685
+ url: '/media/v1/libraries/{library_id}/search/visual',
7686
+ ...options,
7687
+ headers: {
7688
+ 'Content-Type': 'application/json',
7689
+ ...options.headers
7690
+ }
7691
+ });
7692
+ /**
7693
+ * Semantic search
7694
+ *
7695
+ * Search assets with a nonblank text query and optional expression filter. Hybrid mode combines semantic and keyword matches; semantic mode uses vector similarity only. Results are ranked and limited by top_k.
7696
+ */
7697
+ export const mediaSemanticSearch = (options) => (options.client ?? client).post({
7698
+ security: [{
7699
+ key: 'media-BearerAuth',
7700
+ scheme: 'bearer',
7701
+ type: 'http'
7702
+ }],
7703
+ url: '/media/v1/libraries/{library_id}/search/semantic',
7704
+ ...options,
7705
+ headers: {
7706
+ 'Content-Type': 'application/json',
7707
+ ...options.headers
7708
+ }
7709
+ });
7710
+ /**
7711
+ * Semantic search alias
7712
+ *
7713
+ * Alias of semantic search. Search assets with a nonblank text query, optional expression filter and top_k; hybrid combines semantic and keyword matches, while semantic uses vector similarity only.
7714
+ */
7715
+ export const mediaSearch = (options) => (options.client ?? client).post({
7716
+ security: [{
7717
+ key: 'media-BearerAuth',
7718
+ scheme: 'bearer',
7719
+ type: 'http'
7720
+ }],
7721
+ url: '/media/v1/libraries/{library_id}/search',
7722
+ ...options,
7723
+ headers: {
7724
+ 'Content-Type': 'application/json',
7725
+ ...options.headers
7726
+ }
7727
+ });
7728
+ /**
7729
+ * List folders
7730
+ *
7731
+ * List all immediate child folders under parent, or under the root when parent is omitted. Counts include descendant assets. The result is unpaginated; limit and cursor are rejected.
7732
+ */
7733
+ export const mediaListFolders = (options) => (options.client ?? client).get({
7734
+ security: [{
7735
+ key: 'media-BearerAuth',
7736
+ scheme: 'bearer',
7737
+ type: 'http'
7738
+ }],
7739
+ url: '/media/v1/libraries/{library_id}/folders',
7740
+ ...options
7741
+ });
7742
+ /**
7743
+ * Create batch
7744
+ *
7745
+ * Create an asynchronous batch for tagging, untagging, replacing context, moving or deleting assets. Select ids or an expression; selection is frozen at creation. Poll the returned job id for completion and per-item failures.
7746
+ */
7747
+ export const mediaCreateBatch = (options) => (options.client ?? client).post({
7748
+ security: [{
7749
+ key: 'media-BearerAuth',
7750
+ scheme: 'bearer',
7751
+ type: 'http'
7752
+ }],
7753
+ url: '/media/v1/libraries/{library_id}/batches',
7754
+ ...options,
7755
+ headers: {
7756
+ 'Content-Type': 'application/json',
7757
+ ...options.headers
7758
+ }
7759
+ });
7760
+ /**
7761
+ * Get batch
7762
+ *
7763
+ * Read a batch job’s status, successful and failed item counts, and a bounded list of failed items. Use the id returned by batch creation; a job outside this library is not found.
7764
+ */
7765
+ export const mediaGetBatch = (options) => (options.client ?? client).get({
7766
+ security: [{
7767
+ key: 'media-BearerAuth',
7768
+ scheme: 'bearer',
7769
+ type: 'http'
7770
+ }],
7771
+ url: '/media/v1/libraries/{library_id}/batches/{job_id}',
7772
+ ...options
7773
+ });
7774
+ /**
7775
+ * Batch assets alias
7776
+ *
7777
+ * Alias of batch creation. Apply one metadata or deletion action to ids or a frozen expression selection asynchronously; poll the returned job id to inspect completion and item failures.
7778
+ */
7779
+ export const mediaBatchAssets = (options) => (options.client ?? client).post({
7780
+ security: [{
7781
+ key: 'media-BearerAuth',
7782
+ scheme: 'bearer',
7783
+ type: 'http'
7784
+ }],
7785
+ url: '/media/v1/libraries/{library_id}/assets:batch',
7786
+ ...options,
7787
+ headers: {
7788
+ 'Content-Type': 'application/json',
7789
+ ...options.headers
7790
+ }
7791
+ });
7792
+ /**
7793
+ * Get job alias
7794
+ *
7795
+ * Alias of batch retrieval. Read the job returned by a batch request, including terminal status, successful and failed counts, and individual failure codes.
7796
+ */
7797
+ export const mediaGetJob = (options) => (options.client ?? client).get({
7798
+ security: [{
7799
+ key: 'media-BearerAuth',
7800
+ scheme: 'bearer',
7801
+ type: 'http'
7802
+ }],
7803
+ url: '/media/v1/libraries/{library_id}/jobs/{job_id}',
7804
+ ...options
7805
+ });
7806
+ /**
7807
+ * List events
7808
+ *
7809
+ * Read library events in sequence order, including while the library is deleting. Page forward with asc and after_seq, or backward with desc and before_seq; never combine the two sequence cursors.
7810
+ */
7811
+ export const mediaListEvents = (options) => (options.client ?? client).get({
7812
+ security: [{
7813
+ key: 'media-BearerAuth',
7814
+ scheme: 'bearer',
7815
+ type: 'http'
7816
+ }],
7817
+ url: '/media/v1/libraries/{library_id}/events',
7818
+ ...options
7819
+ });
7820
+ /**
7821
+ * Create delivery token
7822
+ *
7823
+ * Issue a time-limited bearer token for originals and transformed authenticated assets in an active library. Use library_id from library creation or listing; read access is sufficient. Append token as the __cld_token__ query parameter on a matching delivery URL. The default ACL covers this library and the default lifetime is 3600 seconds; narrow acl and expires_in before sharing. Anyone holding the token can read matching paths until expires_at.
7824
+ */
7825
+ export const mediaCreateDeliveryToken = (options) => (options.client ?? client).post({
7826
+ security: [{
7827
+ key: 'media-BearerAuth',
7828
+ scheme: 'bearer',
7829
+ type: 'http'
7830
+ }],
7831
+ url: '/media/v1/libraries/{library_id}/delivery_tokens',
7832
+ ...options,
7833
+ headers: {
7834
+ 'Content-Type': 'application/json',
7835
+ ...options.headers
7836
+ }
7837
+ });
7838
+ /**
7839
+ * List sandboxes (v2)
7840
+ *
7841
+ * List your running and paused sandboxes with paging and filters. Use it to find a sandboxID before connecting to, pausing or killing a sandbox. Filter by state, template (id or alias), name, metadata (key=value pairs joined with &) and startedAfter; order sorts by start time (default newest first); limit is 1 to 100 (default 100). When more results exist the response carries an x-next-token header; send it back as nextToken for the next page. To read one sandbox use getSandbox.
7842
+ */
7843
+ export const getSandboxV1Sandboxes = (options) => (options?.client ?? client).get({
7844
+ querySerializer: { parameters: { state: { array: { explode: false } } } },
7845
+ security: [
7846
+ {
7847
+ key: 'sandbox-ApiKeyAuth',
7848
+ name: 'X-API-Key',
7849
+ type: 'apiKey'
7850
+ },
7851
+ {
7852
+ key: 'sandbox-AuthProviderBearerAuth',
7853
+ scheme: 'bearer',
7854
+ type: 'http'
7855
+ },
7856
+ {
7857
+ key: 'sandbox-AuthProviderTeamAuth',
7858
+ name: 'X-Team-ID',
7859
+ type: 'apiKey'
7860
+ },
7861
+ { name: 'X-Admin-Token', type: 'apiKey' },
7862
+ {
7863
+ key: 'sandbox-AdminTeamAuth',
7864
+ name: 'X-Team-ID',
7865
+ type: 'apiKey'
7866
+ },
7867
+ {
7868
+ key: 'sandbox-AdminJWTAuth',
7869
+ scheme: 'bearer',
7870
+ type: 'http'
7871
+ }
7872
+ ],
7873
+ url: '/sandbox/v1/sandboxes',
7874
+ ...options
7875
+ });
7876
+ /**
7877
+ * Create sandbox (v2)
7878
+ *
7879
+ * Create a sandbox from the template. All system communication with the sandbox is secured.
7880
+ */
7881
+ export const postSandboxV1Sandboxes = (options) => (options.client ?? client).post({
7882
+ security: [
7883
+ {
7884
+ key: 'sandbox-ApiKeyAuth',
7885
+ name: 'X-API-Key',
7886
+ type: 'apiKey'
7887
+ },
7888
+ {
7889
+ key: 'sandbox-AuthProviderBearerAuth',
7890
+ scheme: 'bearer',
7891
+ type: 'http'
7892
+ },
7893
+ {
7894
+ key: 'sandbox-AuthProviderTeamAuth',
7895
+ name: 'X-Team-ID',
7896
+ type: 'apiKey'
7897
+ },
7898
+ { name: 'X-Admin-Token', type: 'apiKey' },
7899
+ {
7900
+ key: 'sandbox-AdminTeamAuth',
7901
+ name: 'X-Team-ID',
7902
+ type: 'apiKey'
7903
+ },
7904
+ {
7905
+ key: 'sandbox-AdminJWTAuth',
7906
+ scheme: 'bearer',
7907
+ type: 'http'
7908
+ }
7909
+ ],
7910
+ url: '/sandbox/v1/sandboxes',
7911
+ ...options,
7912
+ headers: {
7913
+ 'Content-Type': 'application/json',
7914
+ ...options.headers
7915
+ }
7916
+ });
7917
+ /**
7918
+ * Sandbox metrics
7919
+ *
7920
+ * Read CPU, memory and disk usage samples of a sandbox over a time window. Use it to size a sandbox or find out why it is slow. start and end are Unix timestamps in seconds; without them the recent samples are returned. An unknown id answers 404.
7921
+ */
7922
+ export const getSandboxV1SandboxesBySandboxIdMetrics = (options) => (options.client ?? client).get({
7923
+ security: [
7924
+ {
7925
+ key: 'sandbox-ApiKeyAuth',
7926
+ name: 'X-API-Key',
7927
+ type: 'apiKey'
7928
+ },
7929
+ {
7930
+ key: 'sandbox-AuthProviderBearerAuth',
7931
+ scheme: 'bearer',
7932
+ type: 'http'
7933
+ },
7934
+ {
7935
+ key: 'sandbox-AuthProviderTeamAuth',
7936
+ name: 'X-Team-ID',
7937
+ type: 'apiKey'
7938
+ },
7939
+ { name: 'X-Admin-Token', type: 'apiKey' },
7940
+ {
7941
+ key: 'sandbox-AdminTeamAuth',
7942
+ name: 'X-Team-ID',
7943
+ type: 'apiKey'
7944
+ },
7945
+ {
7946
+ key: 'sandbox-AdminJWTAuth',
7947
+ scheme: 'bearer',
7948
+ type: 'http'
7949
+ }
7950
+ ],
7951
+ url: '/sandbox/v1/sandboxes/{sandboxID}/metrics',
7952
+ ...options
7953
+ });
7954
+ /**
7955
+ * Pause sandbox
7956
+ *
7957
+ * Pause a running sandbox, keeping its files and memory so that connectSandbox can resume it later. Use it to stop paying for compute without losing state; to discard the sandbox use killSandbox. Success answers 204. A sandbox that is not running answers 409.
7958
+ */
7959
+ export const postSandboxV1SandboxesBySandboxIdPause = (options) => (options.client ?? client).post({
7960
+ security: [
7961
+ {
7962
+ key: 'sandbox-ApiKeyAuth',
7963
+ name: 'X-API-Key',
7964
+ type: 'apiKey'
7965
+ },
7966
+ {
7967
+ key: 'sandbox-AuthProviderBearerAuth',
7968
+ scheme: 'bearer',
7969
+ type: 'http'
7970
+ },
7971
+ {
7972
+ key: 'sandbox-AuthProviderTeamAuth',
7973
+ name: 'X-Team-ID',
7974
+ type: 'apiKey'
7975
+ },
7976
+ { name: 'X-Admin-Token', type: 'apiKey' },
7977
+ {
7978
+ key: 'sandbox-AdminTeamAuth',
7979
+ name: 'X-Team-ID',
7980
+ type: 'apiKey'
7981
+ },
7982
+ {
7983
+ key: 'sandbox-AdminJWTAuth',
7984
+ scheme: 'bearer',
7985
+ type: 'http'
7986
+ }
7987
+ ],
7988
+ url: '/sandbox/v1/sandboxes/{sandboxID}/pause',
7989
+ ...options,
7990
+ headers: {
7991
+ 'Content-Type': 'application/json',
7992
+ ...options.headers
7993
+ }
7994
+ });
7995
+ /**
7996
+ * Set sandbox timeout
7997
+ *
7998
+ * Set the timeout for the sandbox. The sandbox will expire x seconds from the time of the request. Calling this method multiple times overwrites the TTL, each time using the current timestamp as the starting point to measure the timeout duration.
7999
+ */
8000
+ export const postSandboxV1SandboxesBySandboxIdTimeout = (options) => (options.client ?? client).post({
8001
+ security: [
8002
+ {
8003
+ key: 'sandbox-ApiKeyAuth',
8004
+ name: 'X-API-Key',
8005
+ type: 'apiKey'
8006
+ },
8007
+ {
8008
+ key: 'sandbox-AuthProviderBearerAuth',
8009
+ scheme: 'bearer',
8010
+ type: 'http'
8011
+ },
8012
+ {
8013
+ key: 'sandbox-AuthProviderTeamAuth',
8014
+ name: 'X-Team-ID',
8015
+ type: 'apiKey'
8016
+ },
8017
+ { name: 'X-Admin-Token', type: 'apiKey' },
8018
+ {
8019
+ key: 'sandbox-AdminTeamAuth',
8020
+ name: 'X-Team-ID',
8021
+ type: 'apiKey'
8022
+ },
8023
+ {
8024
+ key: 'sandbox-AdminJWTAuth',
8025
+ scheme: 'bearer',
8026
+ type: 'http'
8027
+ }
8028
+ ],
8029
+ url: '/sandbox/v1/sandboxes/{sandboxID}/timeout',
8030
+ ...options,
8031
+ headers: {
8032
+ 'Content-Type': 'application/json',
8033
+ ...options.headers
8034
+ }
8035
+ });
8036
+ /**
8037
+ * Connect sandbox (v2)
8038
+ *
8039
+ * Returns sandbox details. If the sandbox is paused, it will be resumed. TTL is only extended. The request body is optional; an omitted timeout defaults to 300 seconds.
8040
+ */
8041
+ export const postSandboxV1SandboxesBySandboxIdConnect = (options) => (options.client ?? client).post({
8042
+ security: [
8043
+ {
8044
+ key: 'sandbox-ApiKeyAuth',
8045
+ name: 'X-API-Key',
8046
+ type: 'apiKey'
8047
+ },
8048
+ {
8049
+ key: 'sandbox-AuthProviderBearerAuth',
8050
+ scheme: 'bearer',
8051
+ type: 'http'
8052
+ },
8053
+ {
8054
+ key: 'sandbox-AuthProviderTeamAuth',
8055
+ name: 'X-Team-ID',
8056
+ type: 'apiKey'
8057
+ },
8058
+ { name: 'X-Admin-Token', type: 'apiKey' },
8059
+ {
8060
+ key: 'sandbox-AdminTeamAuth',
8061
+ name: 'X-Team-ID',
8062
+ type: 'apiKey'
8063
+ },
8064
+ {
8065
+ key: 'sandbox-AdminJWTAuth',
6173
8066
  scheme: 'bearer',
6174
8067
  type: 'http'
6175
- }],
6176
- url: '/media/v1/libraries/{library_id}/assets:batch',
8068
+ }
8069
+ ],
8070
+ url: '/sandbox/v1/sandboxes/{sandboxID}/connect',
6177
8071
  ...options,
6178
8072
  headers: {
6179
8073
  'Content-Type': 'application/json',
@@ -6181,40 +8075,89 @@ export const mediaBatchAssets = (options) => (options.client ?? client).post({
6181
8075
  }
6182
8076
  });
6183
8077
  /**
6184
- * Get job alias
8078
+ * List templates (v2)
6185
8079
  *
6186
- * Alias of batch retrieval. Read the job returned by a batch request, including terminal status, successful and failed counts, and individual failure codes.
8080
+ * List official templates and all your custom templates, including waiting, building, ready and error builds. Custom templates appear first; each custom row describes its latest build, not necessarily the current ready build. Use templateID for build management and a ready template name when creating a sandbox. Own-face official distinguishes public catalog entries; sourceKind is omitted until a source is submitted and on official templates. Other organizations' templates are invisible.
6187
8081
  */
6188
- export const mediaGetJob = (options) => (options.client ?? client).get({
6189
- security: [{
6190
- key: 'media-BearerAuth',
8082
+ export const listSandboxTemplates = (options) => (options?.client ?? client).get({
8083
+ security: [
8084
+ {
8085
+ key: 'sandbox-ApiKeyAuth',
8086
+ name: 'X-API-Key',
8087
+ type: 'apiKey'
8088
+ },
8089
+ {
8090
+ key: 'sandbox-AuthProviderBearerAuth',
6191
8091
  scheme: 'bearer',
6192
8092
  type: 'http'
6193
- }],
6194
- url: '/media/v1/libraries/{library_id}/jobs/{job_id}',
8093
+ },
8094
+ {
8095
+ key: 'sandbox-AuthProviderTeamAuth',
8096
+ name: 'X-Team-ID',
8097
+ type: 'apiKey'
8098
+ },
8099
+ { name: 'X-Admin-Token', type: 'apiKey' },
8100
+ {
8101
+ key: 'sandbox-AdminTeamAuth',
8102
+ name: 'X-Team-ID',
8103
+ type: 'apiKey'
8104
+ },
8105
+ {
8106
+ key: 'sandbox-AdminJWTAuth',
8107
+ scheme: 'bearer',
8108
+ type: 'http'
8109
+ }
8110
+ ],
8111
+ url: '/sandbox/v1/templates',
6195
8112
  ...options
6196
8113
  });
6197
8114
  /**
6198
- * List events
8115
+ * Create template (v3)
6199
8116
  *
6200
- * Read library events in sequence order, including while the library is deleting. Page forward with asc and after_seq, or backward with desc and before_seq; never combine the two sequence cursors.
8117
+ * Reserve a waiting build before submitting its source. Reusing a name in your organization allocates a new build on the same template. Returns templateID and buildID; start it with templates.builds.update, then poll templates.builds.status.list. A name:tag suffix and tags are assigned after successful publication. Example: {"name":"my-template","cpuCount":2,"memoryMB":2048}. The own face also accepts diskGb, a positive integer defaulting to 10 GiB.
6201
8118
  */
6202
- export const mediaListEvents = (options) => (options.client ?? client).get({
6203
- security: [{
6204
- key: 'media-BearerAuth',
8119
+ export const requestTemplateBuild = (options) => (options.client ?? client).post({
8120
+ security: [
8121
+ {
8122
+ key: 'sandbox-ApiKeyAuth',
8123
+ name: 'X-API-Key',
8124
+ type: 'apiKey'
8125
+ },
8126
+ {
8127
+ key: 'sandbox-AuthProviderBearerAuth',
6205
8128
  scheme: 'bearer',
6206
8129
  type: 'http'
6207
- }],
6208
- url: '/media/v1/libraries/{library_id}/events',
6209
- ...options
8130
+ },
8131
+ {
8132
+ key: 'sandbox-AuthProviderTeamAuth',
8133
+ name: 'X-Team-ID',
8134
+ type: 'apiKey'
8135
+ },
8136
+ { name: 'X-Admin-Token', type: 'apiKey' },
8137
+ {
8138
+ key: 'sandbox-AdminTeamAuth',
8139
+ name: 'X-Team-ID',
8140
+ type: 'apiKey'
8141
+ },
8142
+ {
8143
+ key: 'sandbox-AdminJWTAuth',
8144
+ scheme: 'bearer',
8145
+ type: 'http'
8146
+ }
8147
+ ],
8148
+ url: '/sandbox/v1/templates',
8149
+ ...options,
8150
+ headers: {
8151
+ 'Content-Type': 'application/json',
8152
+ ...options.headers
8153
+ }
6210
8154
  });
6211
8155
  /**
6212
- * List sandboxes (v2)
8156
+ * List team volumes
6213
8157
  *
6214
- * List your running and paused sandboxes with paging and filters. Use it to find a sandboxID before connecting to, pausing or killing a sandbox. Filter by state, template (id or alias), name, metadata (key=value pairs joined with &) and startedAfter; order sorts by start time (default newest first); limit is 1 to 100 (default 100). When more results exist the response carries an x-next-token header; send it back as nextToken for the next page. To read one sandbox use getSandbox.
8158
+ * List the volumes of your team. Use it to find a volumeID before reading or deleting a volume, or to attach a volume to a sandbox by name when you create it.
6215
8159
  */
6216
- export const getSandboxV1Sandboxes = (options) => (options?.client ?? client).get({
6217
- querySerializer: { parameters: { state: { array: { explode: false } } } },
8160
+ export const getSandboxV1Volumes = (options) => (options?.client ?? client).get({
6218
8161
  security: [
6219
8162
  {
6220
8163
  key: 'sandbox-ApiKeyAuth',
@@ -6243,15 +8186,15 @@ export const getSandboxV1Sandboxes = (options) => (options?.client ?? client).ge
6243
8186
  type: 'http'
6244
8187
  }
6245
8188
  ],
6246
- url: '/sandbox/v1/sandboxes',
8189
+ url: '/sandbox/v1/volumes',
6247
8190
  ...options
6248
8191
  });
6249
8192
  /**
6250
- * Create sandbox (v2)
8193
+ * Create team volume
6251
8194
  *
6252
- * Create a sandbox from the template. All system communication with the sandbox is secured.
8195
+ * Create a team volume: persistent storage that can be mounted into sandboxes and outlives them. Send the volume name; the response returns the volume id and name. Use getVolume to read it back and deleteVolume to remove it.
6253
8196
  */
6254
- export const postSandboxV1Sandboxes = (options) => (options.client ?? client).post({
8197
+ export const postSandboxV1Volumes = (options) => (options.client ?? client).post({
6255
8198
  security: [
6256
8199
  {
6257
8200
  key: 'sandbox-ApiKeyAuth',
@@ -6280,7 +8223,7 @@ export const postSandboxV1Sandboxes = (options) => (options.client ?? client).po
6280
8223
  type: 'http'
6281
8224
  }
6282
8225
  ],
6283
- url: '/sandbox/v1/sandboxes',
8226
+ url: '/sandbox/v1/volumes',
6284
8227
  ...options,
6285
8228
  headers: {
6286
8229
  'Content-Type': 'application/json',
@@ -6288,11 +8231,11 @@ export const postSandboxV1Sandboxes = (options) => (options.client ?? client).po
6288
8231
  }
6289
8232
  });
6290
8233
  /**
6291
- * Sandbox metrics
8234
+ * Delete team volume
6292
8235
  *
6293
- * Read CPU, memory and disk usage samples of a sandbox over a time window. Use it to size a sandbox or find out why it is slow. start and end are Unix timestamps in seconds; without them the recent samples are returned. An unknown id answers 404.
8236
+ * Delete a team volume and its data permanently. Use it only when no sandbox needs the volume any more; the data cannot be recovered. Success answers 204; an unknown id answers 404.
6294
8237
  */
6295
- export const getSandboxV1SandboxesBySandboxIdMetrics = (options) => (options.client ?? client).get({
8238
+ export const deleteSandboxV1VolumesByVolumeId = (options) => (options.client ?? client).delete({
6296
8239
  security: [
6297
8240
  {
6298
8241
  key: 'sandbox-ApiKeyAuth',
@@ -6321,15 +8264,15 @@ export const getSandboxV1SandboxesBySandboxIdMetrics = (options) => (options.cli
6321
8264
  type: 'http'
6322
8265
  }
6323
8266
  ],
6324
- url: '/sandbox/v1/sandboxes/{sandboxID}/metrics',
8267
+ url: '/sandbox/v1/volumes/{volumeID}',
6325
8268
  ...options
6326
8269
  });
6327
8270
  /**
6328
- * Pause sandbox
8271
+ * Team volume
6329
8272
  *
6330
- * Pause a running sandbox, keeping its files and memory so that connectSandbox can resume it later. Use it to stop paying for compute without losing state; to discard the sandbox use killSandbox. Success answers 204. A sandbox that is not running answers 409.
8273
+ * Read one team volume by id. Use it to confirm a volume exists and to read its name before mounting it in a sandbox. An unknown id answers 404.
6331
8274
  */
6332
- export const postSandboxV1SandboxesBySandboxIdPause = (options) => (options.client ?? client).post({
8275
+ export const getSandboxV1VolumesByVolumeId = (options) => (options.client ?? client).get({
6333
8276
  security: [
6334
8277
  {
6335
8278
  key: 'sandbox-ApiKeyAuth',
@@ -6358,19 +8301,15 @@ export const postSandboxV1SandboxesBySandboxIdPause = (options) => (options.clie
6358
8301
  type: 'http'
6359
8302
  }
6360
8303
  ],
6361
- url: '/sandbox/v1/sandboxes/{sandboxID}/pause',
6362
- ...options,
6363
- headers: {
6364
- 'Content-Type': 'application/json',
6365
- ...options.headers
6366
- }
8304
+ url: '/sandbox/v1/volumes/{volumeID}',
8305
+ ...options
6367
8306
  });
6368
8307
  /**
6369
- * Set sandbox timeout
8308
+ * Fork sandbox
6370
8309
  *
6371
- * Set the timeout for the sandbox. The sandbox will expire x seconds from the time of the request. Calling this method multiple times overwrites the TTL, each time using the current timestamp as the starting point to measure the timeout duration.
8310
+ * Fork the sandbox: checkpoint the running sandbox in place (it is briefly paused, snapshotted with its full memory state, and resumed on its node, keeping its ID and expiration untouched) and create count new sandboxes from that snapshot. Returns one result per requested fork, each carrying either the created sandbox or the error that prevented it from starting. A non-201 status means the request failed before any fork was attempted.
6372
8311
  */
6373
- export const postSandboxV1SandboxesBySandboxIdTimeout = (options) => (options.client ?? client).post({
8312
+ export const postSandboxV1SandboxesBySandboxIdFork = (options) => (options.client ?? client).post({
6374
8313
  security: [
6375
8314
  {
6376
8315
  key: 'sandbox-ApiKeyAuth',
@@ -6399,7 +8338,7 @@ export const postSandboxV1SandboxesBySandboxIdTimeout = (options) => (options.cl
6399
8338
  type: 'http'
6400
8339
  }
6401
8340
  ],
6402
- url: '/sandbox/v1/sandboxes/{sandboxID}/timeout',
8341
+ url: '/sandbox/v1/sandboxes/{sandboxID}/fork',
6403
8342
  ...options,
6404
8343
  headers: {
6405
8344
  'Content-Type': 'application/json',
@@ -6407,11 +8346,11 @@ export const postSandboxV1SandboxesBySandboxIdTimeout = (options) => (options.cl
6407
8346
  }
6408
8347
  });
6409
8348
  /**
6410
- * Connect sandbox (v2)
8349
+ * Create snapshot
6411
8350
  *
6412
- * Returns sandbox details. If the sandbox is paused, it will be resumed. TTL is only extended. The request body is optional; an omitted timeout defaults to 300 seconds.
8351
+ * Create a persistent snapshot from the sandbox's current state. Snapshots can be used to create new sandboxes and persist beyond the original sandbox's lifetime.
6413
8352
  */
6414
- export const postSandboxV1SandboxesBySandboxIdConnect = (options) => (options.client ?? client).post({
8353
+ export const postSandboxV1SandboxesBySandboxIdSnapshots = (options) => (options.client ?? client).post({
6415
8354
  security: [
6416
8355
  {
6417
8356
  key: 'sandbox-ApiKeyAuth',
@@ -6440,7 +8379,7 @@ export const postSandboxV1SandboxesBySandboxIdConnect = (options) => (options.cl
6440
8379
  type: 'http'
6441
8380
  }
6442
8381
  ],
6443
- url: '/sandbox/v1/sandboxes/{sandboxID}/connect',
8382
+ url: '/sandbox/v1/sandboxes/{sandboxID}/snapshots',
6444
8383
  ...options,
6445
8384
  headers: {
6446
8385
  'Content-Type': 'application/json',
@@ -6448,11 +8387,11 @@ export const postSandboxV1SandboxesBySandboxIdConnect = (options) => (options.cl
6448
8387
  }
6449
8388
  });
6450
8389
  /**
6451
- * List templates (v2)
8390
+ * List snapshots
6452
8391
  *
6453
- * List the templates you can create sandboxes from. Use it to pick the template id or alias for createSandbox. `base` is the default template that createSandbox uses when templateID is omitted. limit is 1 to 100 (default 100); send the cursor from the response back as nextToken to continue.
8392
+ * List the snapshots you created, one cursor page at a time. Use it to find a snapshot id before you create a sandbox from it or delete it. Filter by sandboxID (the source sandbox) or by name or snapshot id, optionally tag-qualified; limit is 1 to 100 (default 100). When more results exist send the cursor from the response back as nextToken.
6454
8393
  */
6455
- export const getSandboxV1Templates = (options) => (options?.client ?? client).get({
8394
+ export const getSandboxV1Snapshots = (options) => (options?.client ?? client).get({
6456
8395
  security: [
6457
8396
  {
6458
8397
  key: 'sandbox-ApiKeyAuth',
@@ -6481,15 +8420,15 @@ export const getSandboxV1Templates = (options) => (options?.client ?? client).ge
6481
8420
  type: 'http'
6482
8421
  }
6483
8422
  ],
6484
- url: '/sandbox/v1/templates',
8423
+ url: '/sandbox/v1/snapshots',
6485
8424
  ...options
6486
8425
  });
6487
8426
  /**
6488
- * List team volumes
8427
+ * Delete template
6489
8428
  *
6490
- * List the volumes of your team. Use it to find a volumeID before reading or deleting a volume, or to attach a volume to a sandbox by name when you create it.
8429
+ * Delete one of your snapshots. Sandboxes already created from it keep running; no new sandbox can be created from it afterwards. Success answers 204. A snapshot that does not exist or belongs to someone else answers 404.
6491
8430
  */
6492
- export const getSandboxV1Volumes = (options) => (options?.client ?? client).get({
8431
+ export const deleteSandboxV1SnapshotsBySnapshotId = (options) => (options.client ?? client).delete({
6493
8432
  security: [
6494
8433
  {
6495
8434
  key: 'sandbox-ApiKeyAuth',
@@ -6518,15 +8457,15 @@ export const getSandboxV1Volumes = (options) => (options?.client ?? client).get(
6518
8457
  type: 'http'
6519
8458
  }
6520
8459
  ],
6521
- url: '/sandbox/v1/volumes',
8460
+ url: '/sandbox/v1/snapshots/{snapshotID}',
6522
8461
  ...options
6523
8462
  });
6524
8463
  /**
6525
- * Create team volume
8464
+ * Update sandbox network
6526
8465
  *
6527
- * Create a team volume: persistent storage that can be mounted into sandboxes and outlives them. Send the volume name; the response returns the volume id and name. Use getVolume to read it back and deleteVolume to remove it.
8466
+ * Update the network configuration for a running sandbox. Replaces the current egress rules with the provided configuration. Omitting field clears it.
6528
8467
  */
6529
- export const postSandboxV1Volumes = (options) => (options.client ?? client).post({
8468
+ export const putSandboxV1SandboxesBySandboxIdNetwork = (options) => (options.client ?? client).put({
6530
8469
  security: [
6531
8470
  {
6532
8471
  key: 'sandbox-ApiKeyAuth',
@@ -6555,7 +8494,7 @@ export const postSandboxV1Volumes = (options) => (options.client ?? client).post
6555
8494
  type: 'http'
6556
8495
  }
6557
8496
  ],
6558
- url: '/sandbox/v1/volumes',
8497
+ url: '/sandbox/v1/sandboxes/{sandboxID}/network',
6559
8498
  ...options,
6560
8499
  headers: {
6561
8500
  'Content-Type': 'application/json',
@@ -6563,11 +8502,11 @@ export const postSandboxV1Volumes = (options) => (options.client ?? client).post
6563
8502
  }
6564
8503
  });
6565
8504
  /**
6566
- * Delete team volume
8505
+ * Sandbox logs (v2)
6567
8506
  *
6568
- * Delete a team volume and its data permanently. Use it only when no sandbox needs the volume any more; the data cannot be recovered. Success answers 204; an unknown id answers 404.
8507
+ * Read the log lines of a sandbox. Use it to debug what ran inside a sandbox. cursor is a start timestamp in milliseconds, direction chooses forward or backward from it, level sets the lowest level to return, search is a case-sensitive substring filter (at most 256 characters) and limit caps the count (at most 1000, default 1000). To continue, pass the timestamp of the last entry as the next cursor.
6569
8508
  */
6570
- export const deleteSandboxV1VolumesByVolumeId = (options) => (options.client ?? client).delete({
8509
+ export const getSandboxV1SandboxesBySandboxIdLogs = (options) => (options.client ?? client).get({
6571
8510
  security: [
6572
8511
  {
6573
8512
  key: 'sandbox-ApiKeyAuth',
@@ -6596,15 +8535,15 @@ export const deleteSandboxV1VolumesByVolumeId = (options) => (options.client ??
6596
8535
  type: 'http'
6597
8536
  }
6598
8537
  ],
6599
- url: '/sandbox/v1/volumes/{volumeID}',
8538
+ url: '/sandbox/v1/sandboxes/{sandboxID}/logs',
6600
8539
  ...options
6601
8540
  });
6602
8541
  /**
6603
- * Team volume
8542
+ * Start template build (v2)
6604
8543
  *
6605
- * Read one team volume by id. Use it to confirm a volume exists and to read its name before mounting it in a sandbox. An unknown id answers 404.
8544
+ * Submit source for a waiting build returned by templates.create; returns 202 after queueing, not after successful publication. Unlike E2B, COPY is rejected (use RUN curl or git clone), fromTemplate accepts official catalog names only, and plaintext registry credentials are rejected. The own face also accepts dockerfile, mutually exclusive with fromImage/fromTemplate/steps, and fromImageRegistry vault references for nonofficial images. Poll templates.builds.status.list until ready or error. Example: {"fromImage":"node:22","steps":[{"type":"RUN","args":["echo hello"]}]}.
6606
8545
  */
6607
- export const getSandboxV1VolumesByVolumeId = (options) => (options.client ?? client).get({
8546
+ export const startTemplateBuild = (options) => (options.client ?? client).post({
6608
8547
  security: [
6609
8548
  {
6610
8549
  key: 'sandbox-ApiKeyAuth',
@@ -6633,15 +8572,19 @@ export const getSandboxV1VolumesByVolumeId = (options) => (options.client ?? cli
6633
8572
  type: 'http'
6634
8573
  }
6635
8574
  ],
6636
- url: '/sandbox/v1/volumes/{volumeID}',
6637
- ...options
8575
+ url: '/sandbox/v1/templates/{templateID}/builds/{buildID}',
8576
+ ...options,
8577
+ headers: {
8578
+ 'Content-Type': 'application/json',
8579
+ ...options.headers
8580
+ }
6638
8581
  });
6639
8582
  /**
6640
- * Fork sandbox
8583
+ * Template build status
6641
8584
  *
6642
- * Fork the sandbox: checkpoint the running sandbox in place (it is briefly paused, snapshotted with its full memory state, and resumed on its node, keeping its ID and expiration untouched) and create count new sandboxes from that snapshot. Returns one result per requested fork, each carrying either the created sandbox or the error that prevented it from starting. A non-201 status means the request failed before any fork was attempted.
8585
+ * Poll a build using templateID and buildID from templates.create. waiting means source has not been submitted; building includes queued work; ready permits sandbox creation; error is terminal, with reason when available. logsOffset counts previously read log entries, starting at zero; add logEntries.length after each response. limit is 0–100, default 100. level selects one log level; offsets then count entries at that level. Drain logs until an empty page, including after a terminal status.
6643
8586
  */
6644
- export const postSandboxV1SandboxesBySandboxIdFork = (options) => (options.client ?? client).post({
8587
+ export const getTemplateBuildStatus = (options) => (options.client ?? client).get({
6645
8588
  security: [
6646
8589
  {
6647
8590
  key: 'sandbox-ApiKeyAuth',
@@ -6670,19 +8613,15 @@ export const postSandboxV1SandboxesBySandboxIdFork = (options) => (options.clien
6670
8613
  type: 'http'
6671
8614
  }
6672
8615
  ],
6673
- url: '/sandbox/v1/sandboxes/{sandboxID}/fork',
6674
- ...options,
6675
- headers: {
6676
- 'Content-Type': 'application/json',
6677
- ...options.headers
6678
- }
8616
+ url: '/sandbox/v1/templates/{templateID}/builds/{buildID}/status',
8617
+ ...options
6679
8618
  });
6680
8619
  /**
6681
- * Create snapshot
8620
+ * Delete template
6682
8621
  *
6683
- * Create a persistent snapshot from the sandbox's current state. Snapshots can be used to create new sandboxes and persist beyond the original sandbox's lifetime.
8622
+ * Permanently remove your template, its builds and tag assignments using templateID from templates.create. Active instances prevent deletion with 409; terminate them first. Unknown or other-organization IDs return 404. Snapshot IDs use snapshots.delete instead.
6684
8623
  */
6685
- export const postSandboxV1SandboxesBySandboxIdSnapshots = (options) => (options.client ?? client).post({
8624
+ export const deleteUserTemplate = (options) => (options.client ?? client).delete({
6686
8625
  security: [
6687
8626
  {
6688
8627
  key: 'sandbox-ApiKeyAuth',
@@ -6711,19 +8650,15 @@ export const postSandboxV1SandboxesBySandboxIdSnapshots = (options) => (options.
6711
8650
  type: 'http'
6712
8651
  }
6713
8652
  ],
6714
- url: '/sandbox/v1/sandboxes/{sandboxID}/snapshots',
6715
- ...options,
6716
- headers: {
6717
- 'Content-Type': 'application/json',
6718
- ...options.headers
6719
- }
8653
+ url: '/sandbox/v1/templates/{templateID}',
8654
+ ...options
6720
8655
  });
6721
8656
  /**
6722
- * List snapshots
8657
+ * List template builds
6723
8658
  *
6724
- * List the snapshots you created, one cursor page at a time. Use it to find a snapshot id before you create a sandbox from it or delete it. Filter by sandboxID (the source sandbox) or by name or snapshot id, optionally tag-qualified; limit is 1 to 100 (default 100). When more results exist send the cursor from the response back as nextToken.
8659
+ * Inspect your template and its newest builds using templateID from templates.create. Build states are waiting, building, ready or error. Use limit and the returned x-next-token header to page builds. Unknown or other-organization templates return 404.
6725
8660
  */
6726
- export const getSandboxV1Snapshots = (options) => (options?.client ?? client).get({
8661
+ export const getTemplateWithBuilds = (options) => (options.client ?? client).get({
6727
8662
  security: [
6728
8663
  {
6729
8664
  key: 'sandbox-ApiKeyAuth',
@@ -6752,15 +8687,15 @@ export const getSandboxV1Snapshots = (options) => (options?.client ?? client).ge
6752
8687
  type: 'http'
6753
8688
  }
6754
8689
  ],
6755
- url: '/sandbox/v1/snapshots',
8690
+ url: '/sandbox/v1/templates/{templateID}',
6756
8691
  ...options
6757
8692
  });
6758
8693
  /**
6759
- * Delete template
8694
+ * Delete template tags
6760
8695
  *
6761
- * Delete one of your snapshots. Sandboxes already created from it keep running; no new sandbox can be created from it afterwards. Success answers 204. A snapshot that does not exist or belongs to someone else answers 404.
8696
+ * Remove the specified tag labels from your template by name, for example {"name":"my-template","tags":["stable"]}. Builds remain available. Removing default means untagged sandbox creation no longer resolves this template. Unknown or other-organization names return 404. b<number> names are reserved read-only build aliases and cannot be assigned or deleted as tags.
6762
8697
  */
6763
- export const deleteSandboxV1SnapshotsBySnapshotId = (options) => (options.client ?? client).delete({
8698
+ export const deleteTemplateTags = (options) => (options.client ?? client).delete({
6764
8699
  security: [
6765
8700
  {
6766
8701
  key: 'sandbox-ApiKeyAuth',
@@ -6789,15 +8724,19 @@ export const deleteSandboxV1SnapshotsBySnapshotId = (options) => (options.client
6789
8724
  type: 'http'
6790
8725
  }
6791
8726
  ],
6792
- url: '/sandbox/v1/snapshots/{snapshotID}',
6793
- ...options
8727
+ url: '/sandbox/v1/templates/tags',
8728
+ ...options,
8729
+ headers: {
8730
+ 'Content-Type': 'application/json',
8731
+ ...options.headers
8732
+ }
6794
8733
  });
6795
8734
  /**
6796
- * Update sandbox network
8735
+ * Assign template tags
6797
8736
  *
6798
- * Update the network configuration for a running sandbox. Replaces the current egress rules with the provided configuration. Omitting field clears it.
8737
+ * Assign tags to the ready build selected by target in name:tag format, for example {"target":"my-template:default","tags":["stable"]}. Names belong to your organization. Tags move an existing label to this build without rebuilding. Obtain available names from templates.list and tags from templates.tags.list. b<number> names are reserved read-only build aliases and cannot be assigned or deleted as tags. target also accepts name:b<number> to select a ready build by number, for example my-template:b1.
6799
8738
  */
6800
- export const putSandboxV1SandboxesBySandboxIdNetwork = (options) => (options.client ?? client).put({
8739
+ export const assignTemplateTags = (options) => (options.client ?? client).post({
6801
8740
  security: [
6802
8741
  {
6803
8742
  key: 'sandbox-ApiKeyAuth',
@@ -6826,7 +8765,7 @@ export const putSandboxV1SandboxesBySandboxIdNetwork = (options) => (options.cli
6826
8765
  type: 'http'
6827
8766
  }
6828
8767
  ],
6829
- url: '/sandbox/v1/sandboxes/{sandboxID}/network',
8768
+ url: '/sandbox/v1/templates/tags',
6830
8769
  ...options,
6831
8770
  headers: {
6832
8771
  'Content-Type': 'application/json',
@@ -6834,11 +8773,11 @@ export const putSandboxV1SandboxesBySandboxIdNetwork = (options) => (options.cli
6834
8773
  }
6835
8774
  });
6836
8775
  /**
6837
- * Sandbox logs (v2)
8776
+ * List template tags
6838
8777
  *
6839
- * Read the log lines of a sandbox. Use it to debug what ran inside a sandbox. cursor is a start timestamp in milliseconds, direction chooses forward or backward from it, level sets the lowest level to return, search is a case-sensitive substring filter (at most 256 characters) and limit caps the count (at most 1000, default 1000). To continue, pass the timestamp of the last entry as the next cursor.
8778
+ * Read the tag-to-build assignments for your template using templateID from templates.create. Only ready builds acquire tags. Use a returned tag with the template name as name:tag when creating a sandbox or assigning additional tags. Foreign IDs return 404.
6840
8779
  */
6841
- export const getSandboxV1SandboxesBySandboxIdLogs = (options) => (options.client ?? client).get({
8780
+ export const listTemplateTags = (options) => (options.client ?? client).get({
6842
8781
  security: [
6843
8782
  {
6844
8783
  key: 'sandbox-ApiKeyAuth',
@@ -6867,7 +8806,44 @@ export const getSandboxV1SandboxesBySandboxIdLogs = (options) => (options.client
6867
8806
  type: 'http'
6868
8807
  }
6869
8808
  ],
6870
- url: '/sandbox/v1/sandboxes/{sandboxID}/logs',
8809
+ url: '/sandbox/v1/templates/{templateID}/tags',
8810
+ ...options
8811
+ });
8812
+ /**
8813
+ * Check template alias
8814
+ *
8815
+ * Resolve a name within your organization to its templateID before reading or managing builds. Use the bare template name, without a :tag suffix. Unknown and other-organization names return 404. The response public field is false for your private templates.
8816
+ */
8817
+ export const resolveTemplateAlias = (options) => (options.client ?? client).get({
8818
+ security: [
8819
+ {
8820
+ key: 'sandbox-ApiKeyAuth',
8821
+ name: 'X-API-Key',
8822
+ type: 'apiKey'
8823
+ },
8824
+ {
8825
+ key: 'sandbox-AuthProviderBearerAuth',
8826
+ scheme: 'bearer',
8827
+ type: 'http'
8828
+ },
8829
+ {
8830
+ key: 'sandbox-AuthProviderTeamAuth',
8831
+ name: 'X-Team-ID',
8832
+ type: 'apiKey'
8833
+ },
8834
+ { name: 'X-Admin-Token', type: 'apiKey' },
8835
+ {
8836
+ key: 'sandbox-AdminTeamAuth',
8837
+ name: 'X-Team-ID',
8838
+ type: 'apiKey'
8839
+ },
8840
+ {
8841
+ key: 'sandbox-AdminJWTAuth',
8842
+ scheme: 'bearer',
8843
+ type: 'http'
8844
+ }
8845
+ ],
8846
+ url: '/sandbox/v1/templates/aliases/{alias}',
6871
8847
  ...options
6872
8848
  });
6873
8849
  /**
@@ -7083,7 +9059,7 @@ export const vaultListSecrets = (options) => (options.client ?? client).get({
7083
9059
  /**
7084
9060
  * Create secret
7085
9061
  *
7086
- * Store a manually supplied token in an active vault for use on requests to its allowed_hosts. Unlike Anthropic credentials, this native operation takes name, value and allowed_hosts directly and creates only static secrets; use praxis.vault.authorizations.create for OAuth. Its name must be unused by any non-archived secret in that vault; the response contains metadata but never the supplied value. Application praxis_vault_ref bindings declare vault_id and secret (the secret name), but currently return 501; do not copy the value into a plain-text binding or metadata as a substitute.
9062
+ * Store a manually supplied token in an active vault. Omit allowed_hosts for name-based resolution only; host-based redemption never matches an empty host list. Unlike Anthropic credentials, this native operation takes name and value directly, with optional allowed_hosts and creates only static secrets; use praxis.vault.authorizations.create for OAuth. Its name must be unused by any non-archived secret in that vault; the response contains metadata but never the supplied value. Application praxis_vault_ref bindings declare vault_id and secret (the secret name), but currently return 501; do not copy the value into a plain-text binding or metadata as a substitute.
7087
9063
  */
7088
9064
  export const vaultCreateSecret = (options) => (options.client ?? client).post({
7089
9065
  security: [{
@@ -7101,7 +9077,7 @@ export const vaultCreateSecret = (options) => (options.client ?? client).post({
7101
9077
  /**
7102
9078
  * Import secrets
7103
9079
  *
7104
- * Import lines or dotenv text into an active vault, reporting success or failure for each entry. Existing names have their values replaced; their hosts change only when that line supplies allowed_hosts. Shared hosts apply only to newly created secrets.
9080
+ * Import lines or dotenv text into an active vault, reporting success or failure for each entry. Existing names have their values replaced; their hosts change only when that line supplies allowed_hosts. Shared hosts apply only to newly created secrets; if neither shared nor per-line hosts are supplied, new secrets use an empty host list for name-based resolution only.
7105
9081
  */
7106
9082
  export const vaultImportSecrets = (options) => (options.client ?? client).post({
7107
9083
  security: [{
@@ -7653,7 +9629,7 @@ export const ticketGetMilestones = (options) => (options?.client ?? client).get(
7653
9629
  /**
7654
9630
  * Create or add milestones
7655
9631
  *
7656
- * Create or add milestones within the authenticated organization. Obtain resource identifiers from the corresponding list or create response. Writes complete synchronously; read the returned resource to observe the result. Organization owner or admin authority is required for this write; API keys without role information act as members.
9632
+ * Create or add milestones within the authenticated organization. Obtain resource identifiers from the corresponding list or create response. Writes complete synchronously; read the returned resource to observe the result. Service authorization applies to the verified human subject.
7657
9633
  */
7658
9634
  export const ticketPostMilestones = (options) => (options.client ?? client).post({
7659
9635
  security: [{
@@ -7675,7 +9651,7 @@ export const ticketPostMilestones = (options) => (options.client ?? client).post
7675
9651
  /**
7676
9652
  * Remove milestones
7677
9653
  *
7678
- * Remove milestones within the authenticated organization. Obtain resource identifiers from the corresponding list or create response. Writes complete synchronously; read the returned resource to observe the result. Organization owner or admin authority is required for this write; API keys without role information act as members.
9654
+ * Remove milestones within the authenticated organization. Obtain resource identifiers from the corresponding list or create response. Writes complete synchronously; read the returned resource to observe the result. Service authorization applies to the verified human subject.
7679
9655
  */
7680
9656
  export const ticketDeleteMilestonesNumber = (options) => (options.client ?? client).delete({
7681
9657
  security: [{
@@ -7711,7 +9687,7 @@ export const ticketGetMilestonesNumber = (options) => (options.client ?? client)
7711
9687
  /**
7712
9688
  * Update milestones
7713
9689
  *
7714
- * Update milestones within the authenticated organization. Obtain resource identifiers from the corresponding list or create response. Writes complete synchronously; read the returned resource to observe the result. Organization owner or admin authority is required for this write; API keys without role information act as members.
9690
+ * Update milestones within the authenticated organization. Obtain resource identifiers from the corresponding list or create response. Writes complete synchronously; read the returned resource to observe the result. Service authorization applies to the verified human subject.
7715
9691
  */
7716
9692
  export const ticketPatchMilestonesNumber = (options) => (options.client ?? client).patch({
7717
9693
  security: [{