@deepraxis/sdk 0.1.1-dev.c636c4e → 0.1.1-dev.cc34a92

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
  *
@@ -2406,7 +2472,7 @@ export const makeSandboxDirectory = (options) => (options.client ?? client).post
2406
2472
  /**
2407
2473
  * Run a command in the sandbox
2408
2474
  *
2409
- * 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"}.
2475
+ * 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"}.
2410
2476
  */
2411
2477
  export const runSandboxCommand = (options) => (options.client ?? client).post({
2412
2478
  security: [{
@@ -3791,7 +3857,7 @@ export const automationActionsGet = (options) => (options.client ?? client).get(
3791
3857
  /**
3792
3858
  * Update an action
3793
3859
  *
3794
- * 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.
3860
+ * 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.
3795
3861
  */
3796
3862
  export const automationActionsUpdate = (options) => (options.client ?? client).put({
3797
3863
  security: [{
@@ -4234,7 +4300,7 @@ export const automationWorkflowsList = (options) => (options?.client ?? client).
4234
4300
  /**
4235
4301
  * Create a workflow
4236
4302
  *
4237
- * 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. 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.
4303
+ * 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.
4238
4304
  */
4239
4305
  export const automationWorkflowsCreate = (options) => (options.client ?? client).post({
4240
4306
  security: [{
@@ -4566,7 +4632,7 @@ export const automationRunsList = (options) => (options?.client ?? client).get({
4566
4632
  /**
4567
4633
  * Run a published target or execute draft source
4568
4634
  *
4569
- * 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.
4635
+ * 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.
4570
4636
  */
4571
4637
  export const automationRunsCreate = (options) => (options.client ?? client).post({
4572
4638
  security: [{
@@ -5172,6 +5238,122 @@ export const automationHumanTasksDelegate = (options) => (options.client ?? clie
5172
5238
  ...options.headers
5173
5239
  }
5174
5240
  });
5241
+ /**
5242
+ * List script vault bindings
5243
+ *
5244
+ * 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.
5245
+ */
5246
+ export const automationScriptsVaultsList = (options) => (options.client ?? client).get({
5247
+ security: [{
5248
+ key: 'BearerAuth',
5249
+ scheme: 'bearer',
5250
+ type: 'http'
5251
+ }, {
5252
+ key: 'ApiKeyAuth',
5253
+ name: 'X-API-Key',
5254
+ type: 'apiKey'
5255
+ }],
5256
+ url: '/automation/v1/scripts/{ns}/{name}/vaults',
5257
+ ...options
5258
+ });
5259
+ /**
5260
+ * Delete a script vault binding
5261
+ *
5262
+ * 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.
5263
+ */
5264
+ export const automationScriptsVaultsDelete = (options) => (options.client ?? client).delete({
5265
+ security: [{
5266
+ key: 'BearerAuth',
5267
+ scheme: 'bearer',
5268
+ type: 'http'
5269
+ }, {
5270
+ key: 'ApiKeyAuth',
5271
+ name: 'X-API-Key',
5272
+ type: 'apiKey'
5273
+ }],
5274
+ url: '/automation/v1/scripts/{ns}/{name}/vaults/{alias}',
5275
+ ...options
5276
+ });
5277
+ /**
5278
+ * Set a script vault binding
5279
+ *
5280
+ * 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"}.
5281
+ */
5282
+ export const automationScriptsVaultsSet = (options) => (options.client ?? client).put({
5283
+ security: [{
5284
+ key: 'BearerAuth',
5285
+ scheme: 'bearer',
5286
+ type: 'http'
5287
+ }, {
5288
+ key: 'ApiKeyAuth',
5289
+ name: 'X-API-Key',
5290
+ type: 'apiKey'
5291
+ }],
5292
+ url: '/automation/v1/scripts/{ns}/{name}/vaults/{alias}',
5293
+ ...options,
5294
+ headers: {
5295
+ 'Content-Type': 'application/json',
5296
+ ...options.headers
5297
+ }
5298
+ });
5299
+ /**
5300
+ * List workflow vault bindings
5301
+ *
5302
+ * 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.
5303
+ */
5304
+ export const automationWorkflowsVaultsList = (options) => (options.client ?? client).get({
5305
+ security: [{
5306
+ key: 'BearerAuth',
5307
+ scheme: 'bearer',
5308
+ type: 'http'
5309
+ }, {
5310
+ key: 'ApiKeyAuth',
5311
+ name: 'X-API-Key',
5312
+ type: 'apiKey'
5313
+ }],
5314
+ url: '/automation/v1/workflows/{ns}/{name}/vaults',
5315
+ ...options
5316
+ });
5317
+ /**
5318
+ * Delete a workflow vault binding
5319
+ *
5320
+ * 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.
5321
+ */
5322
+ export const automationWorkflowsVaultsDelete = (options) => (options.client ?? client).delete({
5323
+ security: [{
5324
+ key: 'BearerAuth',
5325
+ scheme: 'bearer',
5326
+ type: 'http'
5327
+ }, {
5328
+ key: 'ApiKeyAuth',
5329
+ name: 'X-API-Key',
5330
+ type: 'apiKey'
5331
+ }],
5332
+ url: '/automation/v1/workflows/{ns}/{name}/vaults/{alias}',
5333
+ ...options
5334
+ });
5335
+ /**
5336
+ * Set a workflow vault binding
5337
+ *
5338
+ * 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"}.
5339
+ */
5340
+ export const automationWorkflowsVaultsSet = (options) => (options.client ?? client).put({
5341
+ security: [{
5342
+ key: 'BearerAuth',
5343
+ scheme: 'bearer',
5344
+ type: 'http'
5345
+ }, {
5346
+ key: 'ApiKeyAuth',
5347
+ name: 'X-API-Key',
5348
+ type: 'apiKey'
5349
+ }],
5350
+ url: '/automation/v1/workflows/{ns}/{name}/vaults/{alias}',
5351
+ ...options,
5352
+ headers: {
5353
+ 'Content-Type': 'application/json',
5354
+ ...options.headers
5355
+ }
5356
+ });
5175
5357
  /**
5176
5358
  * List canvases
5177
5359
  *
@@ -5232,6 +5414,28 @@ export const canvasRetrieveCanvas = (options) => (options.client ?? client).get(
5232
5414
  url: '/canvas/v1/canvases/{canvas_id}',
5233
5415
  ...options
5234
5416
  });
5417
+ /**
5418
+ * Update canvas
5419
+ *
5420
+ * 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.
5421
+ */
5422
+ export const canvasUpdateCanvas = (options) => (options.client ?? client).patch({
5423
+ security: [{
5424
+ key: 'BearerAuth',
5425
+ scheme: 'bearer',
5426
+ type: 'http'
5427
+ }, {
5428
+ key: 'ApiKeyAuth',
5429
+ name: 'X-API-Key',
5430
+ type: 'apiKey'
5431
+ }],
5432
+ url: '/canvas/v1/canvases/{canvas_id}',
5433
+ ...options,
5434
+ headers: {
5435
+ 'Content-Type': 'application/json',
5436
+ ...options.headers
5437
+ }
5438
+ });
5235
5439
  /**
5236
5440
  * Read canvas nodes
5237
5441
  *
@@ -5271,10 +5475,21 @@ export const canvasListImages = (options) => (options.client ?? client).get({
5271
5475
  * 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)
5272
5476
  * ```
5273
5477
  *
5478
+ * 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:
5479
+ *
5480
+ * ```js canvas-example="copy-page"
5481
+ * const page = Insert(document, {type:"frame",name:"Original",width:320,height:160,layout:"vertical",padding:16});
5482
+ * const title = Insert(page, {type:"text",name:"Title",content:"Original",fontSize:24});
5483
+ * const copy = Copy(page, document, {name:"Copy",x:360,descendants:{[title]:{content:"Updated"}}});
5484
+ * Print(copy); Print(Get(copy).children[0].content);
5485
+ * ```
5486
+ *
5274
5487
  * 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.
5275
5488
  *
5276
5489
  * 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.
5277
5490
  *
5491
+ * 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.
5492
+ *
5278
5493
  */
5279
5494
  export const canvasExecute = (options) => (options.client ?? client).post({
5280
5495
  security: [{
@@ -5290,11 +5505,11 @@ export const canvasExecute = (options) => (options.client ?? client).post({
5290
5505
  }
5291
5506
  });
5292
5507
  /**
5293
- * List projects
5508
+ * List collections
5294
5509
  *
5295
- * 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.
5510
+ * 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.
5296
5511
  */
5297
- export const cutListProjects = (options) => (options?.client ?? client).get({
5512
+ export const canvasListCollections = (options) => (options?.client ?? client).get({
5298
5513
  security: [{
5299
5514
  key: 'BearerAuth',
5300
5515
  scheme: 'bearer',
@@ -5304,15 +5519,15 @@ export const cutListProjects = (options) => (options?.client ?? client).get({
5304
5519
  name: 'X-API-Key',
5305
5520
  type: 'apiKey'
5306
5521
  }],
5307
- url: '/cut/v1/projects',
5522
+ url: '/canvas/v1/collections',
5308
5523
  ...options
5309
5524
  });
5310
5525
  /**
5311
- * Create project
5526
+ * Create collection
5312
5527
  *
5313
- * 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.
5528
+ * 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.
5314
5529
  */
5315
- export const cutCreateProject = (options) => (options.client ?? client).post({
5530
+ export const canvasCreateCollection = (options) => (options.client ?? client).post({
5316
5531
  security: [{
5317
5532
  key: 'BearerAuth',
5318
5533
  scheme: 'bearer',
@@ -5322,7 +5537,7 @@ export const cutCreateProject = (options) => (options.client ?? client).post({
5322
5537
  name: 'X-API-Key',
5323
5538
  type: 'apiKey'
5324
5539
  }],
5325
- url: '/cut/v1/projects',
5540
+ url: '/canvas/v1/collections',
5326
5541
  ...options,
5327
5542
  headers: {
5328
5543
  'Content-Type': 'application/json',
@@ -5330,11 +5545,11 @@ export const cutCreateProject = (options) => (options.client ?? client).post({
5330
5545
  }
5331
5546
  });
5332
5547
  /**
5333
- * Delete project
5548
+ * Delete collection
5334
5549
  *
5335
- * 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.
5550
+ * 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.
5336
5551
  */
5337
- export const cutDeleteProject = (options) => (options.client ?? client).delete({
5552
+ export const canvasDeleteCollection = (options) => (options.client ?? client).delete({
5338
5553
  security: [{
5339
5554
  key: 'BearerAuth',
5340
5555
  scheme: 'bearer',
@@ -5344,15 +5559,15 @@ export const cutDeleteProject = (options) => (options.client ?? client).delete({
5344
5559
  name: 'X-API-Key',
5345
5560
  type: 'apiKey'
5346
5561
  }],
5347
- url: '/cut/v1/projects/{project_id}',
5562
+ url: '/canvas/v1/collections/{collection_id}',
5348
5563
  ...options
5349
5564
  });
5350
5565
  /**
5351
- * Retrieve project
5566
+ * Retrieve collection
5352
5567
  *
5353
- * 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.
5568
+ * 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.
5354
5569
  */
5355
- export const cutRetrieveProject = (options) => (options.client ?? client).get({
5570
+ export const canvasRetrieveCollection = (options) => (options.client ?? client).get({
5356
5571
  security: [{
5357
5572
  key: 'BearerAuth',
5358
5573
  scheme: 'bearer',
@@ -5362,15 +5577,15 @@ export const cutRetrieveProject = (options) => (options.client ?? client).get({
5362
5577
  name: 'X-API-Key',
5363
5578
  type: 'apiKey'
5364
5579
  }],
5365
- url: '/cut/v1/projects/{project_id}',
5580
+ url: '/canvas/v1/collections/{collection_id}',
5366
5581
  ...options
5367
5582
  });
5368
5583
  /**
5369
- * Update project metadata
5584
+ * Rename collection
5370
5585
  *
5371
- * 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.
5586
+ * 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.
5372
5587
  */
5373
- export const cutUpdateProject = (options) => (options.client ?? client).patch({
5588
+ export const canvasUpdateCollection = (options) => (options.client ?? client).patch({
5374
5589
  security: [{
5375
5590
  key: 'BearerAuth',
5376
5591
  scheme: 'bearer',
@@ -5380,7 +5595,7 @@ export const cutUpdateProject = (options) => (options.client ?? client).patch({
5380
5595
  name: 'X-API-Key',
5381
5596
  type: 'apiKey'
5382
5597
  }],
5383
- url: '/cut/v1/projects/{project_id}',
5598
+ url: '/canvas/v1/collections/{collection_id}',
5384
5599
  ...options,
5385
5600
  headers: {
5386
5601
  'Content-Type': 'application/json',
@@ -5388,11 +5603,11 @@ export const cutUpdateProject = (options) => (options.client ?? client).patch({
5388
5603
  }
5389
5604
  });
5390
5605
  /**
5391
- * Restore deleted project
5606
+ * List canvas versions
5392
5607
  *
5393
- * 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.
5608
+ * 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.
5394
5609
  */
5395
- export const cutUndeleteProject = (options) => (options.client ?? client).post({
5610
+ export const canvasListVersions = (options) => (options.client ?? client).get({
5396
5611
  security: [{
5397
5612
  key: 'BearerAuth',
5398
5613
  scheme: 'bearer',
@@ -5402,21 +5617,15 @@ export const cutUndeleteProject = (options) => (options.client ?? client).post({
5402
5617
  name: 'X-API-Key',
5403
5618
  type: 'apiKey'
5404
5619
  }],
5405
- url: '/cut/v1/projects/{project_id}:undelete',
5620
+ url: '/canvas/v1/canvases/{canvas_id}/versions',
5406
5621
  ...options
5407
5622
  });
5408
5623
  /**
5409
- * Execute editing script
5410
- *
5411
- * 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. Use AddTrack, Insert, Update, Delete, Split, Trim, Move, RippleDeleteRange, UpdateTrack, DeleteTrack, SetSettings, AddCaptionsFromTranscript and SetMarker for writes; GetTimeline, GetItem, FindItems, GetMedia, GetTranscript and GetAnalysis read editing context; Print emits text and Preview requests frame previews. All script times are seconds; script object fields use camelCase, for example `media: {libraryId, assetId}`. 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:
5624
+ * Restore canvas version
5412
5625
  *
5413
- * ```js
5414
- * const t = AddTrack("video");
5415
- * Insert(t, {type: "color", color: "#123456", start: 0, length: 3});
5416
- * Print(t);
5417
- * ```
5626
+ * 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.
5418
5627
  */
5419
- export const cutExecute = (options) => (options.client ?? client).post({
5628
+ export const canvasRestoreCanvas = (options) => (options.client ?? client).post({
5420
5629
  security: [{
5421
5630
  key: 'BearerAuth',
5422
5631
  scheme: 'bearer',
@@ -5426,7 +5635,7 @@ export const cutExecute = (options) => (options.client ?? client).post({
5426
5635
  name: 'X-API-Key',
5427
5636
  type: 'apiKey'
5428
5637
  }],
5429
- url: '/cut/v1/projects/{project_id}:execute',
5638
+ url: '/canvas/v1/canvases/{canvas_id}:restore',
5430
5639
  ...options,
5431
5640
  headers: {
5432
5641
  'Content-Type': 'application/json',
@@ -5434,75 +5643,87 @@ export const cutExecute = (options) => (options.client ?? client).post({
5434
5643
  }
5435
5644
  });
5436
5645
  /**
5437
- * Read editing state
5646
+ * List records
5438
5647
  *
5439
- * 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.
5648
+ * 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.
5440
5649
  */
5441
- export const cutRetrieveState = (options) => (options.client ?? client).get({
5650
+ export const crmObjectsList = (options) => (options.client ?? client).get({
5651
+ querySerializer: { parameters: {
5652
+ associations: { array: { explode: false } },
5653
+ properties: { array: { explode: false } },
5654
+ propertiesWithHistory: { array: { explode: false } }
5655
+ } },
5442
5656
  security: [{
5443
- key: 'BearerAuth',
5657
+ key: 'crm-bearerAuth',
5444
5658
  scheme: 'bearer',
5445
5659
  type: 'http'
5446
- }, {
5447
- key: 'ApiKeyAuth',
5448
- name: 'X-API-Key',
5449
- type: 'apiKey'
5450
5660
  }],
5451
- url: '/cut/v1/projects/{project_id}/state',
5661
+ url: '/crm/v1/objects/{objectType}',
5452
5662
  ...options
5453
5663
  });
5454
5664
  /**
5455
- * Read project timeline
5665
+ * Create record
5456
5666
  *
5457
- * 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.
5667
+ * 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.
5458
5668
  */
5459
- export const cutRetrieveTimeline = (options) => (options.client ?? client).get({
5669
+ export const crmObjectsCreate = (options) => (options.client ?? client).post({
5460
5670
  security: [{
5461
- key: 'BearerAuth',
5671
+ key: 'crm-bearerAuth',
5462
5672
  scheme: 'bearer',
5463
5673
  type: 'http'
5464
- }, {
5465
- key: 'ApiKeyAuth',
5466
- name: 'X-API-Key',
5467
- type: 'apiKey'
5468
5674
  }],
5469
- url: '/cut/v1/projects/{project_id}/timeline',
5675
+ url: '/crm/v1/objects/{objectType}',
5676
+ ...options,
5677
+ headers: {
5678
+ 'Content-Type': 'application/json',
5679
+ ...options.headers
5680
+ }
5681
+ });
5682
+ /**
5683
+ * Archive record
5684
+ *
5685
+ * 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.
5686
+ */
5687
+ export const crmObjectsArchive = (options) => (options.client ?? client).delete({
5688
+ security: [{
5689
+ key: 'crm-bearerAuth',
5690
+ scheme: 'bearer',
5691
+ type: 'http'
5692
+ }],
5693
+ url: '/crm/v1/objects/{objectType}/{objectId}',
5470
5694
  ...options
5471
5695
  });
5472
5696
  /**
5473
- * Render preview frames
5697
+ * Retrieve record
5474
5698
  *
5475
- * 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. Fetch the returned image URLs before expires_at; render again when they expire.
5699
+ * 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.
5476
5700
  */
5477
- export const cutListFrames = (options) => (options.client ?? client).get({
5701
+ export const crmObjectsRetrieve = (options) => (options.client ?? client).get({
5702
+ querySerializer: { parameters: {
5703
+ associations: { array: { explode: false } },
5704
+ properties: { array: { explode: false } },
5705
+ propertiesWithHistory: { array: { explode: false } }
5706
+ } },
5478
5707
  security: [{
5479
- key: 'BearerAuth',
5708
+ key: 'crm-bearerAuth',
5480
5709
  scheme: 'bearer',
5481
5710
  type: 'http'
5482
- }, {
5483
- key: 'ApiKeyAuth',
5484
- name: 'X-API-Key',
5485
- type: 'apiKey'
5486
5711
  }],
5487
- url: '/cut/v1/projects/{project_id}/frames',
5712
+ url: '/crm/v1/objects/{objectType}/{objectId}',
5488
5713
  ...options
5489
5714
  });
5490
5715
  /**
5491
- * Analyze project media
5716
+ * Update record
5492
5717
  *
5493
- * 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.
5718
+ * 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.
5494
5719
  */
5495
- export const cutCreateAnalysis = (options) => (options.client ?? client).post({
5720
+ export const crmObjectsUpdate = (options) => (options.client ?? client).patch({
5496
5721
  security: [{
5497
- key: 'BearerAuth',
5722
+ key: 'crm-bearerAuth',
5498
5723
  scheme: 'bearer',
5499
5724
  type: 'http'
5500
- }, {
5501
- key: 'ApiKeyAuth',
5502
- name: 'X-API-Key',
5503
- type: 'apiKey'
5504
5725
  }],
5505
- url: '/cut/v1/projects/{project_id}/analysis',
5726
+ url: '/crm/v1/objects/{objectType}/{objectId}',
5506
5727
  ...options,
5507
5728
  headers: {
5508
5729
  'Content-Type': 'application/json',
@@ -5510,39 +5731,35 @@ export const cutCreateAnalysis = (options) => (options.client ?? client).post({
5510
5731
  }
5511
5732
  });
5512
5733
  /**
5513
- * List library bindings
5734
+ * Search records
5514
5735
  *
5515
- * 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.
5736
+ * 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.
5516
5737
  */
5517
- export const cutListBindings = (options) => (options.client ?? client).get({
5738
+ export const crmObjectsSearch = (options) => (options.client ?? client).post({
5518
5739
  security: [{
5519
- key: 'BearerAuth',
5740
+ key: 'crm-bearerAuth',
5520
5741
  scheme: 'bearer',
5521
5742
  type: 'http'
5522
- }, {
5523
- key: 'ApiKeyAuth',
5524
- name: 'X-API-Key',
5525
- type: 'apiKey'
5526
5743
  }],
5527
- url: '/cut/v1/projects/{project_id}/bindings',
5528
- ...options
5744
+ url: '/crm/v1/objects/{objectType}/search',
5745
+ ...options,
5746
+ headers: {
5747
+ 'Content-Type': 'application/json',
5748
+ ...options.headers
5749
+ }
5529
5750
  });
5530
5751
  /**
5531
- * Bind media library
5752
+ * Batch read records
5532
5753
  *
5533
- * 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.
5754
+ * 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.
5534
5755
  */
5535
- export const cutCreateBinding = (options) => (options.client ?? client).post({
5756
+ export const crmObjectsBatchRead = (options) => (options.client ?? client).post({
5536
5757
  security: [{
5537
- key: 'BearerAuth',
5758
+ key: 'crm-bearerAuth',
5538
5759
  scheme: 'bearer',
5539
5760
  type: 'http'
5540
- }, {
5541
- key: 'ApiKeyAuth',
5542
- name: 'X-API-Key',
5543
- type: 'apiKey'
5544
5761
  }],
5545
- url: '/cut/v1/projects/{project_id}/bindings',
5762
+ url: '/crm/v1/objects/{objectType}/batch/read',
5546
5763
  ...options,
5547
5764
  headers: {
5548
5765
  'Content-Type': 'application/json',
@@ -5550,39 +5767,35 @@ export const cutCreateBinding = (options) => (options.client ?? client).post({
5550
5767
  }
5551
5768
  });
5552
5769
  /**
5553
- * Remove library binding
5770
+ * Batch create records
5554
5771
  *
5555
- * 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.
5772
+ * 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.
5556
5773
  */
5557
- export const cutDeleteBinding = (options) => (options.client ?? client).delete({
5774
+ export const crmObjectsBatchCreate = (options) => (options.client ?? client).post({
5558
5775
  security: [{
5559
- key: 'BearerAuth',
5776
+ key: 'crm-bearerAuth',
5560
5777
  scheme: 'bearer',
5561
5778
  type: 'http'
5562
- }, {
5563
- key: 'ApiKeyAuth',
5564
- name: 'X-API-Key',
5565
- type: 'apiKey'
5566
5779
  }],
5567
- url: '/cut/v1/projects/{project_id}/bindings/{name}',
5568
- ...options
5780
+ url: '/crm/v1/objects/{objectType}/batch/create',
5781
+ ...options,
5782
+ headers: {
5783
+ 'Content-Type': 'application/json',
5784
+ ...options.headers
5785
+ }
5569
5786
  });
5570
5787
  /**
5571
- * Import project media
5788
+ * Batch update records
5572
5789
  *
5573
- * 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.
5790
+ * 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.
5574
5791
  */
5575
- export const cutImportMedia = (options) => (options.client ?? client).post({
5792
+ export const crmObjectsBatchUpdate = (options) => (options.client ?? client).post({
5576
5793
  security: [{
5577
- key: 'BearerAuth',
5794
+ key: 'crm-bearerAuth',
5578
5795
  scheme: 'bearer',
5579
5796
  type: 'http'
5580
- }, {
5581
- key: 'ApiKeyAuth',
5582
- name: 'X-API-Key',
5583
- type: 'apiKey'
5584
5797
  }],
5585
- url: '/cut/v1/projects/{project_id}/media:import',
5798
+ url: '/crm/v1/objects/{objectType}/batch/update',
5586
5799
  ...options,
5587
5800
  headers: {
5588
5801
  'Content-Type': 'application/json',
@@ -5590,39 +5803,35 @@ export const cutImportMedia = (options) => (options.client ?? client).post({
5590
5803
  }
5591
5804
  });
5592
5805
  /**
5593
- * List project exports
5806
+ * Batch upsert records
5594
5807
  *
5595
- * 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.
5808
+ * 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.
5596
5809
  */
5597
- export const cutListExports = (options) => (options.client ?? client).get({
5810
+ export const crmObjectsBatchUpsert = (options) => (options.client ?? client).post({
5598
5811
  security: [{
5599
- key: 'BearerAuth',
5812
+ key: 'crm-bearerAuth',
5600
5813
  scheme: 'bearer',
5601
5814
  type: 'http'
5602
- }, {
5603
- key: 'ApiKeyAuth',
5604
- name: 'X-API-Key',
5605
- type: 'apiKey'
5606
5815
  }],
5607
- url: '/cut/v1/projects/{project_id}/exports',
5608
- ...options
5816
+ url: '/crm/v1/objects/{objectType}/batch/upsert',
5817
+ ...options,
5818
+ headers: {
5819
+ 'Content-Type': 'application/json',
5820
+ ...options.headers
5821
+ }
5609
5822
  });
5610
5823
  /**
5611
- * Create video export
5824
+ * Batch archive records
5612
5825
  *
5613
- * 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.
5826
+ * 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.
5614
5827
  */
5615
- export const cutCreateExport = (options) => (options.client ?? client).post({
5828
+ export const crmObjectsBatchArchive = (options) => (options.client ?? client).post({
5616
5829
  security: [{
5617
- key: 'BearerAuth',
5830
+ key: 'crm-bearerAuth',
5618
5831
  scheme: 'bearer',
5619
5832
  type: 'http'
5620
- }, {
5621
- key: 'ApiKeyAuth',
5622
- name: 'X-API-Key',
5623
- type: 'apiKey'
5624
5833
  }],
5625
- url: '/cut/v1/projects/{project_id}/exports',
5834
+ url: '/crm/v1/objects/{objectType}/batch/archive',
5626
5835
  ...options,
5627
5836
  headers: {
5628
5837
  'Content-Type': 'application/json',
@@ -5630,75 +5839,77 @@ export const cutCreateExport = (options) => (options.client ?? client).post({
5630
5839
  }
5631
5840
  });
5632
5841
  /**
5633
- * Retrieve video export
5842
+ * List properties
5634
5843
  *
5635
- * 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.
5844
+ * 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.
5636
5845
  */
5637
- export const cutRetrieveExport = (options) => (options.client ?? client).get({
5846
+ export const crmPropertiesList = (options) => (options.client ?? client).get({
5638
5847
  security: [{
5639
- key: 'BearerAuth',
5848
+ key: 'crm-bearerAuth',
5640
5849
  scheme: 'bearer',
5641
5850
  type: 'http'
5642
- }, {
5643
- key: 'ApiKeyAuth',
5644
- name: 'X-API-Key',
5645
- type: 'apiKey'
5646
5851
  }],
5647
- url: '/cut/v1/exports/{export_id}',
5852
+ url: '/crm/v1/properties/{objectType}',
5648
5853
  ...options
5649
5854
  });
5650
5855
  /**
5651
- * Cancel video export
5856
+ * Create property
5652
5857
  *
5653
- * 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.
5858
+ * 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.
5654
5859
  */
5655
- export const cutCancelExport = (options) => (options.client ?? client).post({
5860
+ export const crmPropertiesCreate = (options) => (options.client ?? client).post({
5656
5861
  security: [{
5657
- key: 'BearerAuth',
5862
+ key: 'crm-bearerAuth',
5658
5863
  scheme: 'bearer',
5659
5864
  type: 'http'
5660
- }, {
5661
- key: 'ApiKeyAuth',
5662
- name: 'X-API-Key',
5663
- type: 'apiKey'
5664
5865
  }],
5665
- url: '/cut/v1/exports/{export_id}:cancel',
5866
+ url: '/crm/v1/properties/{objectType}',
5867
+ ...options,
5868
+ headers: {
5869
+ 'Content-Type': 'application/json',
5870
+ ...options.headers
5871
+ }
5872
+ });
5873
+ /**
5874
+ * Archive property
5875
+ *
5876
+ * 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.
5877
+ */
5878
+ export const crmPropertiesArchive = (options) => (options.client ?? client).delete({
5879
+ security: [{
5880
+ key: 'crm-bearerAuth',
5881
+ scheme: 'bearer',
5882
+ type: 'http'
5883
+ }],
5884
+ url: '/crm/v1/properties/{objectType}/{propertyName}',
5666
5885
  ...options
5667
5886
  });
5668
5887
  /**
5669
- * List saved versions
5888
+ * Retrieve property
5670
5889
  *
5671
- * 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.
5890
+ * 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.
5672
5891
  */
5673
- export const cutListVersions = (options) => (options.client ?? client).get({
5892
+ export const crmPropertiesRetrieve = (options) => (options.client ?? client).get({
5674
5893
  security: [{
5675
- key: 'BearerAuth',
5894
+ key: 'crm-bearerAuth',
5676
5895
  scheme: 'bearer',
5677
5896
  type: 'http'
5678
- }, {
5679
- key: 'ApiKeyAuth',
5680
- name: 'X-API-Key',
5681
- type: 'apiKey'
5682
5897
  }],
5683
- url: '/cut/v1/projects/{project_id}/versions',
5898
+ url: '/crm/v1/properties/{objectType}/{propertyName}',
5684
5899
  ...options
5685
5900
  });
5686
5901
  /**
5687
- * Save project version
5902
+ * Update property
5688
5903
  *
5689
- * 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.
5904
+ * 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.
5690
5905
  */
5691
- export const cutCreateVersion = (options) => (options.client ?? client).post({
5906
+ export const crmPropertiesUpdate = (options) => (options.client ?? client).patch({
5692
5907
  security: [{
5693
- key: 'BearerAuth',
5908
+ key: 'crm-bearerAuth',
5694
5909
  scheme: 'bearer',
5695
5910
  type: 'http'
5696
- }, {
5697
- key: 'ApiKeyAuth',
5698
- name: 'X-API-Key',
5699
- type: 'apiKey'
5700
5911
  }],
5701
- url: '/cut/v1/projects/{project_id}/versions',
5912
+ url: '/crm/v1/properties/{objectType}/{propertyName}',
5702
5913
  ...options,
5703
5914
  headers: {
5704
5915
  'Content-Type': 'application/json',
@@ -5706,49 +5917,63 @@ export const cutCreateVersion = (options) => (options.client ?? client).post({
5706
5917
  }
5707
5918
  });
5708
5919
  /**
5709
- * Restore saved version
5920
+ * List property groups
5710
5921
  *
5711
- * 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.
5922
+ * 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.
5712
5923
  */
5713
- export const cutRestoreVersion = (options) => (options.client ?? client).post({
5924
+ export const crmPropertiesGroupsList = (options) => (options.client ?? client).get({
5714
5925
  security: [{
5715
- key: 'BearerAuth',
5926
+ key: 'crm-bearerAuth',
5716
5927
  scheme: 'bearer',
5717
5928
  type: 'http'
5718
- }, {
5719
- key: 'ApiKeyAuth',
5720
- name: 'X-API-Key',
5721
- type: 'apiKey'
5722
5929
  }],
5723
- url: '/cut/v1/versions/{version_id}:restore',
5930
+ url: '/crm/v1/properties/{objectType}/groups',
5724
5931
  ...options
5725
5932
  });
5726
5933
  /**
5727
- * List databases
5934
+ * Create property group
5728
5935
  *
5729
- * 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.
5936
+ * 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.
5730
5937
  */
5731
- export const databaseListDatabases = (options) => (options?.client ?? client).get({
5938
+ export const crmPropertiesGroupsCreate = (options) => (options.client ?? client).post({
5732
5939
  security: [{
5733
- key: 'database-bearerAuth',
5940
+ key: 'crm-bearerAuth',
5734
5941
  scheme: 'bearer',
5735
5942
  type: 'http'
5736
5943
  }],
5737
- url: '/database/v1/databases',
5944
+ url: '/crm/v1/properties/{objectType}/groups',
5945
+ ...options,
5946
+ headers: {
5947
+ 'Content-Type': 'application/json',
5948
+ ...options.headers
5949
+ }
5950
+ });
5951
+ /**
5952
+ * List pipelines
5953
+ *
5954
+ * 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\"]"}.
5955
+ */
5956
+ export const crmPipelinesList = (options) => (options.client ?? client).get({
5957
+ security: [{
5958
+ key: 'crm-bearerAuth',
5959
+ scheme: 'bearer',
5960
+ type: 'http'
5961
+ }],
5962
+ url: '/crm/v1/pipelines/{objectType}',
5738
5963
  ...options
5739
5964
  });
5740
5965
  /**
5741
- * Create database
5966
+ * Create pipeline
5742
5967
  *
5743
- * 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.
5968
+ * 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\"]"}.
5744
5969
  */
5745
- export const databaseCreateDatabase = (options) => (options.client ?? client).post({
5970
+ export const crmPipelinesCreate = (options) => (options.client ?? client).post({
5746
5971
  security: [{
5747
- key: 'database-bearerAuth',
5972
+ key: 'crm-bearerAuth',
5748
5973
  scheme: 'bearer',
5749
5974
  type: 'http'
5750
5975
  }],
5751
- url: '/database/v1/databases',
5976
+ url: '/crm/v1/pipelines/{objectType}',
5752
5977
  ...options,
5753
5978
  headers: {
5754
5979
  'Content-Type': 'application/json',
@@ -5756,45 +5981,45 @@ export const databaseCreateDatabase = (options) => (options.client ?? client).po
5756
5981
  }
5757
5982
  });
5758
5983
  /**
5759
- * Delete database
5984
+ * Archive pipeline
5760
5985
  *
5761
- * 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.
5986
+ * 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\"]"}.
5762
5987
  */
5763
- export const databaseDeleteDatabase = (options) => (options.client ?? client).delete({
5988
+ export const crmPipelinesArchive = (options) => (options.client ?? client).delete({
5764
5989
  security: [{
5765
- key: 'database-bearerAuth',
5990
+ key: 'crm-bearerAuth',
5766
5991
  scheme: 'bearer',
5767
5992
  type: 'http'
5768
5993
  }],
5769
- url: '/database/v1/databases/{database_id}',
5994
+ url: '/crm/v1/pipelines/{objectType}/{pipelineId}',
5770
5995
  ...options
5771
5996
  });
5772
5997
  /**
5773
- * Get database
5998
+ * Retrieve pipeline
5774
5999
  *
5775
- * 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.
6000
+ * 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\"]"}.
5776
6001
  */
5777
- export const databaseGetDatabase = (options) => (options.client ?? client).get({
6002
+ export const crmPipelinesRetrieve = (options) => (options.client ?? client).get({
5778
6003
  security: [{
5779
- key: 'database-bearerAuth',
6004
+ key: 'crm-bearerAuth',
5780
6005
  scheme: 'bearer',
5781
6006
  type: 'http'
5782
6007
  }],
5783
- url: '/database/v1/databases/{database_id}',
6008
+ url: '/crm/v1/pipelines/{objectType}/{pipelineId}',
5784
6009
  ...options
5785
6010
  });
5786
6011
  /**
5787
- * Update database
6012
+ * Update pipeline
5788
6013
  *
5789
- * 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.
6014
+ * 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\"]"}.
5790
6015
  */
5791
- export const databaseUpdateDatabase = (options) => (options.client ?? client).patch({
6016
+ export const crmPipelinesUpdate = (options) => (options.client ?? client).patch({
5792
6017
  security: [{
5793
- key: 'database-bearerAuth',
6018
+ key: 'crm-bearerAuth',
5794
6019
  scheme: 'bearer',
5795
6020
  type: 'http'
5796
6021
  }],
5797
- url: '/database/v1/databases/{database_id}',
6022
+ url: '/crm/v1/pipelines/{objectType}/{pipelineId}',
5798
6023
  ...options,
5799
6024
  headers: {
5800
6025
  'Content-Type': 'application/json',
@@ -5802,59 +6027,49 @@ export const databaseUpdateDatabase = (options) => (options.client ?? client).pa
5802
6027
  }
5803
6028
  });
5804
6029
  /**
5805
- * Restore database
5806
- *
5807
- * 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.
5808
- */
5809
- export const databaseRestoreDatabase = (options) => (options.client ?? client).post({
5810
- security: [{
5811
- key: 'database-bearerAuth',
5812
- scheme: 'bearer',
5813
- type: 'http'
5814
- }],
5815
- url: '/database/v1/databases/{database_id}/restore',
5816
- ...options
5817
- });
5818
- /**
5819
- * Permanently purge database
6030
+ * Create pipeline stage
5820
6031
  *
5821
- * Immediately and irreversibly purges a deleting database. Active databases return 409; absent or already purged databases return 404.
6032
+ * 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\"]"}.
5822
6033
  */
5823
- export const databasePurgeDatabase = (options) => (options.client ?? client).post({
6034
+ export const crmPipelinesStagesCreate = (options) => (options.client ?? client).post({
5824
6035
  security: [{
5825
- key: 'database-bearerAuth',
6036
+ key: 'crm-bearerAuth',
5826
6037
  scheme: 'bearer',
5827
6038
  type: 'http'
5828
6039
  }],
5829
- url: '/database/v1/databases/{database_id}/purge',
5830
- ...options
6040
+ url: '/crm/v1/pipelines/{objectType}/{pipelineId}/stages',
6041
+ ...options,
6042
+ headers: {
6043
+ 'Content-Type': 'application/json',
6044
+ ...options.headers
6045
+ }
5831
6046
  });
5832
6047
  /**
5833
- * List tables
6048
+ * Archive pipeline stage
5834
6049
  *
5835
- * 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.
6050
+ * 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\"]"}.
5836
6051
  */
5837
- export const databaseListTables = (options) => (options.client ?? client).get({
6052
+ export const crmPipelinesStagesArchive = (options) => (options.client ?? client).delete({
5838
6053
  security: [{
5839
- key: 'database-bearerAuth',
6054
+ key: 'crm-bearerAuth',
5840
6055
  scheme: 'bearer',
5841
6056
  type: 'http'
5842
6057
  }],
5843
- url: '/database/v1/databases/{database_id}/tables',
6058
+ url: '/crm/v1/pipelines/{objectType}/{pipelineId}/stages/{stageId}',
5844
6059
  ...options
5845
6060
  });
5846
6061
  /**
5847
- * Create table
6062
+ * Update pipeline stage
5848
6063
  *
5849
- * 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.
6064
+ * 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\"]"}.
5850
6065
  */
5851
- export const databaseCreateTable = (options) => (options.client ?? client).post({
6066
+ export const crmPipelinesStagesUpdate = (options) => (options.client ?? client).patch({
5852
6067
  security: [{
5853
- key: 'database-bearerAuth',
6068
+ key: 'crm-bearerAuth',
5854
6069
  scheme: 'bearer',
5855
6070
  type: 'http'
5856
6071
  }],
5857
- url: '/database/v1/databases/{database_id}/tables',
6072
+ url: '/crm/v1/pipelines/{objectType}/{pipelineId}/stages/{stageId}',
5858
6073
  ...options,
5859
6074
  headers: {
5860
6075
  'Content-Type': 'application/json',
@@ -5862,45 +6077,45 @@ export const databaseCreateTable = (options) => (options.client ?? client).post(
5862
6077
  }
5863
6078
  });
5864
6079
  /**
5865
- * Delete table
6080
+ * List record associations
5866
6081
  *
5867
- * 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.
6082
+ * 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.
5868
6083
  */
5869
- export const databaseDeleteTable = (options) => (options.client ?? client).delete({
6084
+ export const crmAssociationsList = (options) => (options.client ?? client).get({
5870
6085
  security: [{
5871
- key: 'database-bearerAuth',
6086
+ key: 'crm-bearerAuth',
5872
6087
  scheme: 'bearer',
5873
6088
  type: 'http'
5874
6089
  }],
5875
- url: '/database/v1/databases/{database_id}/tables/{table}',
6090
+ url: '/crm/v1/objects/{objectType}/{objectId}/associations/{toObjectType}',
5876
6091
  ...options
5877
6092
  });
5878
6093
  /**
5879
- * Get table
6094
+ * Remove association
5880
6095
  *
5881
- * 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.
6096
+ * 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.
5882
6097
  */
5883
- export const databaseGetTable = (options) => (options.client ?? client).get({
6098
+ export const crmAssociationsRemove = (options) => (options.client ?? client).delete({
5884
6099
  security: [{
5885
- key: 'database-bearerAuth',
6100
+ key: 'crm-bearerAuth',
5886
6101
  scheme: 'bearer',
5887
6102
  type: 'http'
5888
6103
  }],
5889
- url: '/database/v1/databases/{database_id}/tables/{table}',
6104
+ url: '/crm/v1/objects/{objectType}/{objectId}/associations/{toObjectType}/{toObjectId}',
5890
6105
  ...options
5891
6106
  });
5892
6107
  /**
5893
- * Update table
6108
+ * Create labelled association
5894
6109
  *
5895
- * 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.
6110
+ * 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.
5896
6111
  */
5897
- export const databaseUpdateTable = (options) => (options.client ?? client).patch({
6112
+ export const crmAssociationsCreate = (options) => (options.client ?? client).put({
5898
6113
  security: [{
5899
- key: 'database-bearerAuth',
6114
+ key: 'crm-bearerAuth',
5900
6115
  scheme: 'bearer',
5901
6116
  type: 'http'
5902
6117
  }],
5903
- url: '/database/v1/databases/{database_id}/tables/{table}',
6118
+ url: '/crm/v1/objects/{objectType}/{objectId}/associations/{toObjectType}/{toObjectId}',
5904
6119
  ...options,
5905
6120
  headers: {
5906
6121
  'Content-Type': 'application/json',
@@ -5908,49 +6123,45 @@ export const databaseUpdateTable = (options) => (options.client ?? client).patch
5908
6123
  }
5909
6124
  });
5910
6125
  /**
5911
- * Add field
6126
+ * Create default association
5912
6127
  *
5913
- * 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.
6128
+ * 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.
5914
6129
  */
5915
- export const databaseAddField = (options) => (options.client ?? client).post({
6130
+ export const crmAssociationsCreateDefault = (options) => (options.client ?? client).put({
5916
6131
  security: [{
5917
- key: 'database-bearerAuth',
6132
+ key: 'crm-bearerAuth',
5918
6133
  scheme: 'bearer',
5919
6134
  type: 'http'
5920
6135
  }],
5921
- url: '/database/v1/databases/{database_id}/tables/{table}/fields',
5922
- ...options,
5923
- headers: {
5924
- 'Content-Type': 'application/json',
5925
- ...options.headers
5926
- }
6136
+ url: '/crm/v1/objects/{objectType}/{objectId}/associations/default/{toObjectType}/{toObjectId}',
6137
+ ...options
5927
6138
  });
5928
6139
  /**
5929
- * Delete field
6140
+ * List object schemas
5930
6141
  *
5931
- * 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.
6142
+ * 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.
5932
6143
  */
5933
- export const databaseDeleteField = (options) => (options.client ?? client).delete({
6144
+ export const crmSchemasList = (options) => (options?.client ?? client).get({
5934
6145
  security: [{
5935
- key: 'database-bearerAuth',
6146
+ key: 'crm-bearerAuth',
5936
6147
  scheme: 'bearer',
5937
6148
  type: 'http'
5938
6149
  }],
5939
- url: '/database/v1/databases/{database_id}/tables/{table}/fields/{field}',
6150
+ url: '/crm/v1/schemas',
5940
6151
  ...options
5941
6152
  });
5942
6153
  /**
5943
- * Update field
6154
+ * Create object schema
5944
6155
  *
5945
- * 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.
6156
+ * 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.
5946
6157
  */
5947
- export const databaseUpdateField = (options) => (options.client ?? client).patch({
6158
+ export const crmSchemasCreate = (options) => (options.client ?? client).post({
5948
6159
  security: [{
5949
- key: 'database-bearerAuth',
6160
+ key: 'crm-bearerAuth',
5950
6161
  scheme: 'bearer',
5951
6162
  type: 'http'
5952
6163
  }],
5953
- url: '/database/v1/databases/{database_id}/tables/{table}/fields/{field}',
6164
+ url: '/crm/v1/schemas',
5954
6165
  ...options,
5955
6166
  headers: {
5956
6167
  'Content-Type': 'application/json',
@@ -5958,93 +6169,63 @@ export const databaseUpdateField = (options) => (options.client ?? client).patch
5958
6169
  }
5959
6170
  });
5960
6171
  /**
5961
- * List events
6172
+ * Qualify lead
5962
6173
  *
5963
- * 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.
6174
+ * 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.
5964
6175
  */
5965
- export const databaseListEvents = (options) => (options.client ?? client).get({
6176
+ export const crmLeadsQualify = (options) => (options.client ?? client).post({
5966
6177
  security: [{
5967
- key: 'database-bearerAuth',
6178
+ key: 'crm-bearerAuth',
5968
6179
  scheme: 'bearer',
5969
6180
  type: 'http'
5970
6181
  }],
5971
- url: '/database/v1/databases/{database_id}/events',
5972
- ...options
6182
+ url: '/crm/v1/leads/{leadId}:qualify',
6183
+ ...options,
6184
+ headers: {
6185
+ 'Content-Type': 'application/json',
6186
+ ...options.headers
6187
+ }
5973
6188
  });
5974
6189
  /**
5975
- * Delete rows
6190
+ * Revert change set
5976
6191
  *
5977
- * 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.
6192
+ * 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.
5978
6193
  */
5979
- export const databaseDelete = (options) => (options.client ?? client).delete({
6194
+ export const crmChangesRevert = (options) => (options.client ?? client).post({
5980
6195
  security: [{
5981
- key: 'database-bearerAuth',
6196
+ key: 'crm-bearerAuth',
5982
6197
  scheme: 'bearer',
5983
6198
  type: 'http'
5984
6199
  }],
5985
- url: '/database/v1/databases/{database_id}/rest/{table}',
6200
+ url: '/crm/v1/changes/{changeSetId}:revert',
5986
6201
  ...options
5987
6202
  });
5988
6203
  /**
5989
- * Select rows
6204
+ * Retrieve record layout
5990
6205
  *
5991
- * 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.
5992
- */
5993
- export const databaseSelect = (options) => (options.client ?? client).get({
5994
- security: [{
5995
- key: 'database-bearerAuth',
5996
- scheme: 'bearer',
5997
- type: 'http'
5998
- }],
5999
- url: '/database/v1/databases/{database_id}/rest/{table}',
6000
- ...options
6001
- });
6002
- /**
6003
- * Count rows
6004
- *
6005
- * 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.
6206
+ * 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.
6006
6207
  */
6007
- export const databaseHead = (options) => (options.client ?? client).head({
6208
+ export const crmLayoutsRetrieve = (options) => (options.client ?? client).get({
6008
6209
  security: [{
6009
- key: 'database-bearerAuth',
6210
+ key: 'crm-bearerAuth',
6010
6211
  scheme: 'bearer',
6011
6212
  type: 'http'
6012
6213
  }],
6013
- url: '/database/v1/databases/{database_id}/rest/{table}',
6214
+ url: '/crm/v1/layouts/{objectType}',
6014
6215
  ...options
6015
6216
  });
6016
6217
  /**
6017
- * Update rows
6018
- *
6019
- * 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.
6020
- */
6021
- export const databaseUpdate = (options) => (options.client ?? client).patch({
6022
- security: [{
6023
- key: 'database-bearerAuth',
6024
- scheme: 'bearer',
6025
- type: 'http'
6026
- }],
6027
- url: '/database/v1/databases/{database_id}/rest/{table}',
6028
- ...options,
6029
- headers: {
6030
- 'Content-Type': 'application/json',
6031
- ...options.headers
6032
- }
6033
- });
6034
- /**
6035
- * Insert rows
6218
+ * Update record layout
6036
6219
  *
6037
- * 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.
6038
- * Rows are filled to the union of their keys with null; send Prefer: missing=default to use field defaults for missing keys.
6039
- * 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.
6220
+ * 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.
6040
6221
  */
6041
- export const databaseInsert = (options) => (options.client ?? client).post({
6222
+ export const crmLayoutsUpdate = (options) => (options.client ?? client).put({
6042
6223
  security: [{
6043
- key: 'database-bearerAuth',
6224
+ key: 'crm-bearerAuth',
6044
6225
  scheme: 'bearer',
6045
6226
  type: 'http'
6046
6227
  }],
6047
- url: '/database/v1/databases/{database_id}/rest/{table}',
6228
+ url: '/crm/v1/layouts/{objectType}',
6048
6229
  ...options,
6049
6230
  headers: {
6050
6231
  'Content-Type': 'application/json',
@@ -6052,31 +6233,39 @@ export const databaseInsert = (options) => (options.client ?? client).post({
6052
6233
  }
6053
6234
  });
6054
6235
  /**
6055
- * List knowledge bases
6236
+ * List projects
6056
6237
  *
6057
- * 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.
6238
+ * 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.
6058
6239
  */
6059
- export const knowledgeListVectorStores = (options) => (options?.client ?? client).get({
6240
+ export const cutListProjects = (options) => (options?.client ?? client).get({
6060
6241
  security: [{
6061
- key: 'knowledge-bearerAuth',
6242
+ key: 'BearerAuth',
6062
6243
  scheme: 'bearer',
6063
6244
  type: 'http'
6245
+ }, {
6246
+ key: 'ApiKeyAuth',
6247
+ name: 'X-API-Key',
6248
+ type: 'apiKey'
6064
6249
  }],
6065
- url: '/knowledge/v1/vector_stores',
6250
+ url: '/cut/v1/projects',
6066
6251
  ...options
6067
6252
  });
6068
6253
  /**
6069
- * Create knowledge base
6254
+ * Create project
6070
6255
  *
6071
- * 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"}.
6256
+ * 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.
6072
6257
  */
6073
- export const knowledgeCreateVectorStore = (options) => (options.client ?? client).post({
6258
+ export const cutCreateProject = (options) => (options.client ?? client).post({
6074
6259
  security: [{
6075
- key: 'knowledge-bearerAuth',
6260
+ key: 'BearerAuth',
6076
6261
  scheme: 'bearer',
6077
6262
  type: 'http'
6263
+ }, {
6264
+ key: 'ApiKeyAuth',
6265
+ name: 'X-API-Key',
6266
+ type: 'apiKey'
6078
6267
  }],
6079
- url: '/knowledge/v1/vector_stores',
6268
+ url: '/cut/v1/projects',
6080
6269
  ...options,
6081
6270
  headers: {
6082
6271
  'Content-Type': 'application/json',
@@ -6084,45 +6273,57 @@ export const knowledgeCreateVectorStore = (options) => (options.client ?? client
6084
6273
  }
6085
6274
  });
6086
6275
  /**
6087
- * Delete knowledge base
6276
+ * Delete project
6088
6277
  *
6089
- * 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.
6278
+ * 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.
6090
6279
  */
6091
- export const knowledgeDeleteVectorStore = (options) => (options.client ?? client).delete({
6280
+ export const cutDeleteProject = (options) => (options.client ?? client).delete({
6092
6281
  security: [{
6093
- key: 'knowledge-bearerAuth',
6282
+ key: 'BearerAuth',
6094
6283
  scheme: 'bearer',
6095
6284
  type: 'http'
6285
+ }, {
6286
+ key: 'ApiKeyAuth',
6287
+ name: 'X-API-Key',
6288
+ type: 'apiKey'
6096
6289
  }],
6097
- url: '/knowledge/v1/vector_stores/{vector_store_id}',
6290
+ url: '/cut/v1/projects/{project_id}',
6098
6291
  ...options
6099
6292
  });
6100
6293
  /**
6101
- * Retrieve knowledge base
6294
+ * Retrieve project
6102
6295
  *
6103
- * 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.
6296
+ * 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.
6104
6297
  */
6105
- export const knowledgeRetrieveVectorStore = (options) => (options.client ?? client).get({
6298
+ export const cutRetrieveProject = (options) => (options.client ?? client).get({
6106
6299
  security: [{
6107
- key: 'knowledge-bearerAuth',
6300
+ key: 'BearerAuth',
6108
6301
  scheme: 'bearer',
6109
6302
  type: 'http'
6303
+ }, {
6304
+ key: 'ApiKeyAuth',
6305
+ name: 'X-API-Key',
6306
+ type: 'apiKey'
6110
6307
  }],
6111
- url: '/knowledge/v1/vector_stores/{vector_store_id}',
6308
+ url: '/cut/v1/projects/{project_id}',
6112
6309
  ...options
6113
6310
  });
6114
6311
  /**
6115
- * Update knowledge base
6312
+ * Update project metadata
6116
6313
  *
6117
- * Updates an active knowledge base using its returned id. Omitted fields stay unchanged; metadata replaces the whole map. Example body: {"name":"Refund policies"}.
6314
+ * 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.
6118
6315
  */
6119
- export const knowledgeUpdateVectorStore = (options) => (options.client ?? client).post({
6316
+ export const cutUpdateProject = (options) => (options.client ?? client).patch({
6120
6317
  security: [{
6121
- key: 'knowledge-bearerAuth',
6318
+ key: 'BearerAuth',
6122
6319
  scheme: 'bearer',
6123
6320
  type: 'http'
6321
+ }, {
6322
+ key: 'ApiKeyAuth',
6323
+ name: 'X-API-Key',
6324
+ type: 'apiKey'
6124
6325
  }],
6125
- url: '/knowledge/v1/vector_stores/{vector_store_id}',
6326
+ url: '/cut/v1/projects/{project_id}',
6126
6327
  ...options,
6127
6328
  headers: {
6128
6329
  'Content-Type': 'application/json',
@@ -6130,95 +6331,121 @@ export const knowledgeUpdateVectorStore = (options) => (options.client ?? client
6130
6331
  }
6131
6332
  });
6132
6333
  /**
6133
- * Search knowledge base
6334
+ * Restore deleted project
6134
6335
  *
6135
- * 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.
6336
+ * 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.
6136
6337
  */
6137
- export const knowledgeSearchVectorStore = (options) => (options.client ?? client).post({
6338
+ export const cutUndeleteProject = (options) => (options.client ?? client).post({
6138
6339
  security: [{
6139
- key: 'knowledge-bearerAuth',
6340
+ key: 'BearerAuth',
6140
6341
  scheme: 'bearer',
6141
6342
  type: 'http'
6343
+ }, {
6344
+ key: 'ApiKeyAuth',
6345
+ name: 'X-API-Key',
6346
+ type: 'apiKey'
6142
6347
  }],
6143
- url: '/knowledge/v1/vector_stores/{vector_store_id}/search',
6144
- ...options,
6145
- headers: {
6146
- 'Content-Type': 'application/json',
6147
- ...options.headers
6148
- }
6348
+ url: '/cut/v1/projects/{project_id}:undelete',
6349
+ ...options
6149
6350
  });
6150
6351
  /**
6151
- * List files
6352
+ * Execute editing script
6152
6353
  *
6153
- * 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.
6354
+ * 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. Use AddTrack, Insert, Update, Delete, Split, Trim, Move, RippleDeleteRange, UpdateTrack, DeleteTrack, SetSettings, AddCaptionsFromTranscript and SetMarker for writes; GetTimeline, GetItem, FindItems, GetMedia, GetTranscript and GetAnalysis read editing context; Print emits text and Preview requests frame previews. All script times are seconds; script object fields use camelCase, for example `media: {libraryId, assetId}`. 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:
6355
+ *
6356
+ * ```js
6357
+ * const t = AddTrack("video");
6358
+ * Insert(t, {type: "color", color: "#123456", start: 0, length: 3});
6359
+ * Print(t);
6360
+ * ```
6154
6361
  */
6155
- export const knowledgeListFiles = (options) => (options.client ?? client).get({
6362
+ export const cutExecute = (options) => (options.client ?? client).post({
6156
6363
  security: [{
6157
- key: 'knowledge-bearerAuth',
6364
+ key: 'BearerAuth',
6158
6365
  scheme: 'bearer',
6159
6366
  type: 'http'
6367
+ }, {
6368
+ key: 'ApiKeyAuth',
6369
+ name: 'X-API-Key',
6370
+ type: 'apiKey'
6160
6371
  }],
6161
- url: '/knowledge/v1/vector_stores/{vector_store_id}/files',
6162
- ...options
6372
+ url: '/cut/v1/projects/{project_id}:execute',
6373
+ ...options,
6374
+ headers: {
6375
+ 'Content-Type': 'application/json',
6376
+ ...options.headers
6377
+ }
6163
6378
  });
6164
6379
  /**
6165
- * Add file
6380
+ * Read editing state
6166
6381
  *
6167
- * 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.
6382
+ * 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.
6168
6383
  */
6169
- export const knowledgeAttachFile = (options) => (options.client ?? client).post({
6384
+ export const cutRetrieveState = (options) => (options.client ?? client).get({
6170
6385
  security: [{
6171
- key: 'knowledge-bearerAuth',
6386
+ key: 'BearerAuth',
6172
6387
  scheme: 'bearer',
6173
6388
  type: 'http'
6389
+ }, {
6390
+ key: 'ApiKeyAuth',
6391
+ name: 'X-API-Key',
6392
+ type: 'apiKey'
6174
6393
  }],
6175
- url: '/knowledge/v1/vector_stores/{vector_store_id}/files',
6176
- ...options,
6177
- headers: {
6178
- 'Content-Type': 'application/json',
6179
- ...options.headers
6180
- }
6394
+ url: '/cut/v1/projects/{project_id}/state',
6395
+ ...options
6181
6396
  });
6182
6397
  /**
6183
- * Remove file
6398
+ * Read project timeline
6184
6399
  *
6185
- * Removes the file from search immediately; does not delete the original File.
6400
+ * 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.
6186
6401
  */
6187
- export const knowledgeRemoveFile = (options) => (options.client ?? client).delete({
6402
+ export const cutRetrieveTimeline = (options) => (options.client ?? client).get({
6188
6403
  security: [{
6189
- key: 'knowledge-bearerAuth',
6404
+ key: 'BearerAuth',
6190
6405
  scheme: 'bearer',
6191
6406
  type: 'http'
6407
+ }, {
6408
+ key: 'ApiKeyAuth',
6409
+ name: 'X-API-Key',
6410
+ type: 'apiKey'
6192
6411
  }],
6193
- url: '/knowledge/v1/vector_stores/{vector_store_id}/files/{file_id}',
6412
+ url: '/cut/v1/projects/{project_id}/timeline',
6194
6413
  ...options
6195
6414
  });
6196
6415
  /**
6197
- * Retrieve file
6416
+ * Render preview frames
6198
6417
  *
6199
- * 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.
6418
+ * 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. Fetch the returned image URLs before expires_at; render again when they expire.
6200
6419
  */
6201
- export const knowledgeRetrieveFile = (options) => (options.client ?? client).get({
6420
+ export const cutListFrames = (options) => (options.client ?? client).get({
6202
6421
  security: [{
6203
- key: 'knowledge-bearerAuth',
6422
+ key: 'BearerAuth',
6204
6423
  scheme: 'bearer',
6205
6424
  type: 'http'
6425
+ }, {
6426
+ key: 'ApiKeyAuth',
6427
+ name: 'X-API-Key',
6428
+ type: 'apiKey'
6206
6429
  }],
6207
- url: '/knowledge/v1/vector_stores/{vector_store_id}/files/{file_id}',
6430
+ url: '/cut/v1/projects/{project_id}/frames',
6208
6431
  ...options
6209
6432
  });
6210
6433
  /**
6211
- * Update file attributes
6434
+ * Analyze project media
6212
6435
  *
6213
- * 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.
6436
+ * 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.
6214
6437
  */
6215
- export const knowledgeUpdateFile = (options) => (options.client ?? client).post({
6438
+ export const cutCreateAnalysis = (options) => (options.client ?? client).post({
6216
6439
  security: [{
6217
- key: 'knowledge-bearerAuth',
6440
+ key: 'BearerAuth',
6218
6441
  scheme: 'bearer',
6219
6442
  type: 'http'
6443
+ }, {
6444
+ key: 'ApiKeyAuth',
6445
+ name: 'X-API-Key',
6446
+ type: 'apiKey'
6220
6447
  }],
6221
- url: '/knowledge/v1/vector_stores/{vector_store_id}/files/{file_id}',
6448
+ url: '/cut/v1/projects/{project_id}/analysis',
6222
6449
  ...options,
6223
6450
  headers: {
6224
6451
  'Content-Type': 'application/json',
@@ -6226,31 +6453,39 @@ export const knowledgeUpdateFile = (options) => (options.client ?? client).post(
6226
6453
  }
6227
6454
  });
6228
6455
  /**
6229
- * Read extracted content
6456
+ * List library bindings
6230
6457
  *
6231
- * Extracted text chunks may overlap. Image content can be a generated description rather than verbatim OCR.
6458
+ * 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.
6232
6459
  */
6233
- export const knowledgeRetrieveFileContent = (options) => (options.client ?? client).get({
6460
+ export const cutListBindings = (options) => (options.client ?? client).get({
6234
6461
  security: [{
6235
- key: 'knowledge-bearerAuth',
6462
+ key: 'BearerAuth',
6236
6463
  scheme: 'bearer',
6237
6464
  type: 'http'
6465
+ }, {
6466
+ key: 'ApiKeyAuth',
6467
+ name: 'X-API-Key',
6468
+ type: 'apiKey'
6238
6469
  }],
6239
- url: '/knowledge/v1/vector_stores/{vector_store_id}/files/{file_id}/content',
6470
+ url: '/cut/v1/projects/{project_id}/bindings',
6240
6471
  ...options
6241
6472
  });
6242
6473
  /**
6243
- * Create file batch
6474
+ * Bind media library
6244
6475
  *
6245
- * 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.
6476
+ * 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.
6246
6477
  */
6247
- export const knowledgeCreateFileBatch = (options) => (options.client ?? client).post({
6478
+ export const cutCreateBinding = (options) => (options.client ?? client).post({
6248
6479
  security: [{
6249
- key: 'knowledge-bearerAuth',
6480
+ key: 'BearerAuth',
6250
6481
  scheme: 'bearer',
6251
6482
  type: 'http'
6483
+ }, {
6484
+ key: 'ApiKeyAuth',
6485
+ name: 'X-API-Key',
6486
+ type: 'apiKey'
6252
6487
  }],
6253
- url: '/knowledge/v1/vector_stores/{vector_store_id}/file_batches',
6488
+ url: '/cut/v1/projects/{project_id}/bindings',
6254
6489
  ...options,
6255
6490
  headers: {
6256
6491
  'Content-Type': 'application/json',
@@ -6258,157 +6493,205 @@ export const knowledgeCreateFileBatch = (options) => (options.client ?? client).
6258
6493
  }
6259
6494
  });
6260
6495
  /**
6261
- * Retrieve file batch
6496
+ * Remove library binding
6262
6497
  *
6263
- * 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.
6498
+ * 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.
6264
6499
  */
6265
- export const knowledgeRetrieveFileBatch = (options) => (options.client ?? client).get({
6500
+ export const cutDeleteBinding = (options) => (options.client ?? client).delete({
6266
6501
  security: [{
6267
- key: 'knowledge-bearerAuth',
6502
+ key: 'BearerAuth',
6268
6503
  scheme: 'bearer',
6269
6504
  type: 'http'
6270
- }],
6271
- url: '/knowledge/v1/vector_stores/{vector_store_id}/file_batches/{batch_id}',
6505
+ }, {
6506
+ key: 'ApiKeyAuth',
6507
+ name: 'X-API-Key',
6508
+ type: 'apiKey'
6509
+ }],
6510
+ url: '/cut/v1/projects/{project_id}/bindings/{name}',
6272
6511
  ...options
6273
6512
  });
6274
6513
  /**
6275
- * Cancel file batch
6514
+ * Import project media
6276
6515
  *
6277
- * Cancels only in-progress batches and pending files. Completed, failed and cancelled batches return unchanged (200, idempotent).
6516
+ * 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.
6278
6517
  */
6279
- export const knowledgeCancelFileBatch = (options) => (options.client ?? client).post({
6518
+ export const cutImportMedia = (options) => (options.client ?? client).post({
6280
6519
  security: [{
6281
- key: 'knowledge-bearerAuth',
6520
+ key: 'BearerAuth',
6282
6521
  scheme: 'bearer',
6283
6522
  type: 'http'
6523
+ }, {
6524
+ key: 'ApiKeyAuth',
6525
+ name: 'X-API-Key',
6526
+ type: 'apiKey'
6284
6527
  }],
6285
- url: '/knowledge/v1/vector_stores/{vector_store_id}/file_batches/{batch_id}/cancel',
6286
- ...options
6528
+ url: '/cut/v1/projects/{project_id}/media:import',
6529
+ ...options,
6530
+ headers: {
6531
+ 'Content-Type': 'application/json',
6532
+ ...options.headers
6533
+ }
6287
6534
  });
6288
6535
  /**
6289
- * List batch files
6536
+ * List project exports
6290
6537
  *
6291
- * 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.
6538
+ * 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.
6292
6539
  */
6293
- export const knowledgeListBatchFiles = (options) => (options.client ?? client).get({
6540
+ export const cutListExports = (options) => (options.client ?? client).get({
6294
6541
  security: [{
6295
- key: 'knowledge-bearerAuth',
6542
+ key: 'BearerAuth',
6296
6543
  scheme: 'bearer',
6297
6544
  type: 'http'
6545
+ }, {
6546
+ key: 'ApiKeyAuth',
6547
+ name: 'X-API-Key',
6548
+ type: 'apiKey'
6298
6549
  }],
6299
- url: '/knowledge/v1/vector_stores/{vector_store_id}/file_batches/{batch_id}/files',
6550
+ url: '/cut/v1/projects/{project_id}/exports',
6300
6551
  ...options
6301
6552
  });
6302
6553
  /**
6303
- * Restore knowledge base
6554
+ * Create video export
6304
6555
  *
6305
- * Restores a deleting store within 7 days. Active stores return 409 VECTOR_STORE_INVALID_STATE; absent stores return 404. Empty body is allowed.
6556
+ * 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.
6306
6557
  */
6307
- export const knowledgeRestoreVectorStore = (options) => (options.client ?? client).post({
6558
+ export const cutCreateExport = (options) => (options.client ?? client).post({
6308
6559
  security: [{
6309
- key: 'knowledge-bearerAuth',
6560
+ key: 'BearerAuth',
6310
6561
  scheme: 'bearer',
6311
6562
  type: 'http'
6563
+ }, {
6564
+ key: 'ApiKeyAuth',
6565
+ name: 'X-API-Key',
6566
+ type: 'apiKey'
6312
6567
  }],
6313
- url: '/knowledge/v1/vector_stores/{vector_store_id}/restore',
6314
- ...options
6568
+ url: '/cut/v1/projects/{project_id}/exports',
6569
+ ...options,
6570
+ headers: {
6571
+ 'Content-Type': 'application/json',
6572
+ ...options.headers
6573
+ }
6315
6574
  });
6316
6575
  /**
6317
- * Permanently purge knowledge base
6576
+ * Retrieve video export
6318
6577
  *
6319
- * Immediately and irreversibly clears a deleting store using the retention cleanup path. Active stores return 409; absent stores return 404. Empty body is allowed.
6578
+ * 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.
6320
6579
  */
6321
- export const knowledgePurgeVectorStore = (options) => (options.client ?? client).post({
6580
+ export const cutRetrieveExport = (options) => (options.client ?? client).get({
6322
6581
  security: [{
6323
- key: 'knowledge-bearerAuth',
6582
+ key: 'BearerAuth',
6324
6583
  scheme: 'bearer',
6325
6584
  type: 'http'
6585
+ }, {
6586
+ key: 'ApiKeyAuth',
6587
+ name: 'X-API-Key',
6588
+ type: 'apiKey'
6326
6589
  }],
6327
- url: '/knowledge/v1/vector_stores/{vector_store_id}/purge',
6590
+ url: '/cut/v1/exports/{export_id}',
6328
6591
  ...options
6329
6592
  });
6330
6593
  /**
6331
- * Retry failed file
6594
+ * Cancel video export
6332
6595
  *
6333
- * Retries only failed files; other states return 409 FILE_INVALID_STATE. Retry after failure has not yet been observed in the documented run.
6596
+ * 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.
6334
6597
  */
6335
- export const knowledgeRetryFile = (options) => (options.client ?? client).post({
6598
+ export const cutCancelExport = (options) => (options.client ?? client).post({
6336
6599
  security: [{
6337
- key: 'knowledge-bearerAuth',
6600
+ key: 'BearerAuth',
6338
6601
  scheme: 'bearer',
6339
6602
  type: 'http'
6603
+ }, {
6604
+ key: 'ApiKeyAuth',
6605
+ name: 'X-API-Key',
6606
+ type: 'apiKey'
6340
6607
  }],
6341
- url: '/knowledge/v1/vector_stores/{vector_store_id}/files/{file_id}/retry',
6608
+ url: '/cut/v1/exports/{export_id}:cancel',
6342
6609
  ...options
6343
6610
  });
6344
6611
  /**
6345
- * List file segments
6612
+ * List saved versions
6346
6613
  *
6347
- * 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.
6614
+ * 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.
6348
6615
  */
6349
- export const knowledgeListSegments = (options) => (options.client ?? client).get({
6616
+ export const cutListVersions = (options) => (options.client ?? client).get({
6350
6617
  security: [{
6351
- key: 'knowledge-bearerAuth',
6618
+ key: 'BearerAuth',
6352
6619
  scheme: 'bearer',
6353
6620
  type: 'http'
6621
+ }, {
6622
+ key: 'ApiKeyAuth',
6623
+ name: 'X-API-Key',
6624
+ type: 'apiKey'
6354
6625
  }],
6355
- url: '/knowledge/v1/vector_stores/{vector_store_id}/files/{file_id}/segments',
6626
+ url: '/cut/v1/projects/{project_id}/versions',
6356
6627
  ...options
6357
6628
  });
6358
6629
  /**
6359
- * Retrieve segment
6630
+ * Save project version
6360
6631
  *
6361
- * 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.
6632
+ * 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.
6362
6633
  */
6363
- export const knowledgeRetrieveSegment = (options) => (options.client ?? client).get({
6634
+ export const cutCreateVersion = (options) => (options.client ?? client).post({
6364
6635
  security: [{
6365
- key: 'knowledge-bearerAuth',
6636
+ key: 'BearerAuth',
6366
6637
  scheme: 'bearer',
6367
6638
  type: 'http'
6639
+ }, {
6640
+ key: 'ApiKeyAuth',
6641
+ name: 'X-API-Key',
6642
+ type: 'apiKey'
6368
6643
  }],
6369
- url: '/knowledge/v1/vector_stores/{vector_store_id}/segments/{chunk_id}',
6370
- ...options
6644
+ url: '/cut/v1/projects/{project_id}/versions',
6645
+ ...options,
6646
+ headers: {
6647
+ 'Content-Type': 'application/json',
6648
+ ...options.headers
6649
+ }
6371
6650
  });
6372
6651
  /**
6373
- * List events
6652
+ * Restore saved version
6374
6653
  *
6375
- * 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.
6654
+ * 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.
6376
6655
  */
6377
- export const knowledgeListEvents = (options) => (options.client ?? client).get({
6656
+ export const cutRestoreVersion = (options) => (options.client ?? client).post({
6378
6657
  security: [{
6379
- key: 'knowledge-bearerAuth',
6658
+ key: 'BearerAuth',
6380
6659
  scheme: 'bearer',
6381
6660
  type: 'http'
6661
+ }, {
6662
+ key: 'ApiKeyAuth',
6663
+ name: 'X-API-Key',
6664
+ type: 'apiKey'
6382
6665
  }],
6383
- url: '/knowledge/v1/vector_stores/{vector_store_id}/events',
6666
+ url: '/cut/v1/versions/{version_id}:restore',
6384
6667
  ...options
6385
6668
  });
6386
6669
  /**
6387
- * List libraries
6670
+ * List databases
6388
6671
  *
6389
- * 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.
6672
+ * 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.
6390
6673
  */
6391
- export const mediaListLibraries = (options) => (options?.client ?? client).get({
6674
+ export const databaseListDatabases = (options) => (options?.client ?? client).get({
6392
6675
  security: [{
6393
- key: 'media-BearerAuth',
6676
+ key: 'database-bearerAuth',
6394
6677
  scheme: 'bearer',
6395
6678
  type: 'http'
6396
6679
  }],
6397
- url: '/media/v1/libraries',
6680
+ url: '/database/v1/databases',
6398
6681
  ...options
6399
6682
  });
6400
6683
  /**
6401
- * Create library
6684
+ * Create database
6402
6685
  *
6403
- * 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.
6686
+ * 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.
6404
6687
  */
6405
- export const mediaCreateLibrary = (options) => (options.client ?? client).post({
6688
+ export const databaseCreateDatabase = (options) => (options.client ?? client).post({
6406
6689
  security: [{
6407
- key: 'media-BearerAuth',
6690
+ key: 'database-bearerAuth',
6408
6691
  scheme: 'bearer',
6409
6692
  type: 'http'
6410
6693
  }],
6411
- url: '/media/v1/libraries',
6694
+ url: '/database/v1/databases',
6412
6695
  ...options,
6413
6696
  headers: {
6414
6697
  'Content-Type': 'application/json',
@@ -6416,45 +6699,45 @@ export const mediaCreateLibrary = (options) => (options.client ?? client).post({
6416
6699
  }
6417
6700
  });
6418
6701
  /**
6419
- * Delete library
6702
+ * Delete database
6420
6703
  *
6421
- * 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.
6704
+ * 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.
6422
6705
  */
6423
- export const mediaDeleteLibrary = (options) => (options.client ?? client).delete({
6706
+ export const databaseDeleteDatabase = (options) => (options.client ?? client).delete({
6424
6707
  security: [{
6425
- key: 'media-BearerAuth',
6708
+ key: 'database-bearerAuth',
6426
6709
  scheme: 'bearer',
6427
6710
  type: 'http'
6428
6711
  }],
6429
- url: '/media/v1/libraries/{library_id}',
6712
+ url: '/database/v1/databases/{database_id}',
6430
6713
  ...options
6431
6714
  });
6432
6715
  /**
6433
- * Get library
6716
+ * Get database
6434
6717
  *
6435
- * 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.
6718
+ * 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.
6436
6719
  */
6437
- export const mediaGetLibrary = (options) => (options.client ?? client).get({
6720
+ export const databaseGetDatabase = (options) => (options.client ?? client).get({
6438
6721
  security: [{
6439
- key: 'media-BearerAuth',
6722
+ key: 'database-bearerAuth',
6440
6723
  scheme: 'bearer',
6441
6724
  type: 'http'
6442
6725
  }],
6443
- url: '/media/v1/libraries/{library_id}',
6726
+ url: '/database/v1/databases/{database_id}',
6444
6727
  ...options
6445
6728
  });
6446
6729
  /**
6447
- * Update library
6730
+ * Update database
6448
6731
  *
6449
- * 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.
6732
+ * 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.
6450
6733
  */
6451
- export const mediaUpdateLibrary = (options) => (options.client ?? client).patch({
6734
+ export const databaseUpdateDatabase = (options) => (options.client ?? client).patch({
6452
6735
  security: [{
6453
- key: 'media-BearerAuth',
6736
+ key: 'database-bearerAuth',
6454
6737
  scheme: 'bearer',
6455
6738
  type: 'http'
6456
6739
  }],
6457
- url: '/media/v1/libraries/{library_id}',
6740
+ url: '/database/v1/databases/{database_id}',
6458
6741
  ...options,
6459
6742
  headers: {
6460
6743
  'Content-Type': 'application/json',
@@ -6462,59 +6745,59 @@ export const mediaUpdateLibrary = (options) => (options.client ?? client).patch(
6462
6745
  }
6463
6746
  });
6464
6747
  /**
6465
- * Restore library
6748
+ * Restore database
6466
6749
  *
6467
- * 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.
6750
+ * 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.
6468
6751
  */
6469
- export const mediaRestoreLibrary = (options) => (options.client ?? client).post({
6752
+ export const databaseRestoreDatabase = (options) => (options.client ?? client).post({
6470
6753
  security: [{
6471
- key: 'media-BearerAuth',
6754
+ key: 'database-bearerAuth',
6472
6755
  scheme: 'bearer',
6473
6756
  type: 'http'
6474
6757
  }],
6475
- url: '/media/v1/libraries/{library_id}/restore',
6758
+ url: '/database/v1/databases/{database_id}/restore',
6476
6759
  ...options
6477
6760
  });
6478
6761
  /**
6479
- * Purge library
6762
+ * Permanently purge database
6480
6763
  *
6481
- * 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.
6764
+ * Immediately and irreversibly purges a deleting database. Active databases return 409; absent or already purged databases return 404.
6482
6765
  */
6483
- export const mediaPurgeLibrary = (options) => (options.client ?? client).post({
6766
+ export const databasePurgeDatabase = (options) => (options.client ?? client).post({
6484
6767
  security: [{
6485
- key: 'media-BearerAuth',
6768
+ key: 'database-bearerAuth',
6486
6769
  scheme: 'bearer',
6487
6770
  type: 'http'
6488
6771
  }],
6489
- url: '/media/v1/libraries/{library_id}/purge',
6772
+ url: '/database/v1/databases/{database_id}/purge',
6490
6773
  ...options
6491
6774
  });
6492
6775
  /**
6493
- * List assets
6776
+ * List tables
6494
6777
  *
6495
- * 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.
6778
+ * 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.
6496
6779
  */
6497
- export const mediaListAssets = (options) => (options.client ?? client).get({
6780
+ export const databaseListTables = (options) => (options.client ?? client).get({
6498
6781
  security: [{
6499
- key: 'media-BearerAuth',
6782
+ key: 'database-bearerAuth',
6500
6783
  scheme: 'bearer',
6501
6784
  type: 'http'
6502
6785
  }],
6503
- url: '/media/v1/libraries/{library_id}/assets',
6786
+ url: '/database/v1/databases/{database_id}/tables',
6504
6787
  ...options
6505
6788
  });
6506
6789
  /**
6507
- * Upload asset
6790
+ * Create table
6508
6791
  *
6509
- * 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.
6792
+ * 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.
6510
6793
  */
6511
- export const mediaUploadAsset = (options) => (options.client ?? client).post({
6794
+ export const databaseCreateTable = (options) => (options.client ?? client).post({
6512
6795
  security: [{
6513
- key: 'media-BearerAuth',
6796
+ key: 'database-bearerAuth',
6514
6797
  scheme: 'bearer',
6515
6798
  type: 'http'
6516
6799
  }],
6517
- url: '/media/v1/libraries/{library_id}/assets',
6800
+ url: '/database/v1/databases/{database_id}/tables',
6518
6801
  ...options,
6519
6802
  headers: {
6520
6803
  'Content-Type': 'application/json',
@@ -6522,63 +6805,63 @@ export const mediaUploadAsset = (options) => (options.client ?? client).post({
6522
6805
  }
6523
6806
  });
6524
6807
  /**
6525
- * Import file
6808
+ * Delete table
6526
6809
  *
6527
- * 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.
6810
+ * 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.
6528
6811
  */
6529
- export const mediaImportAsset = (options) => (options.client ?? client).post({
6812
+ export const databaseDeleteTable = (options) => (options.client ?? client).delete({
6530
6813
  security: [{
6531
- key: 'media-BearerAuth',
6814
+ key: 'database-bearerAuth',
6532
6815
  scheme: 'bearer',
6533
6816
  type: 'http'
6534
6817
  }],
6535
- url: '/media/v1/libraries/{library_id}/assets/import',
6536
- ...options,
6537
- headers: {
6538
- 'Content-Type': 'application/json',
6539
- ...options.headers
6540
- }
6818
+ url: '/database/v1/databases/{database_id}/tables/{table}',
6819
+ ...options
6541
6820
  });
6542
6821
  /**
6543
- * Delete asset
6822
+ * Get table
6544
6823
  *
6545
- * 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.
6824
+ * 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.
6546
6825
  */
6547
- export const mediaDeleteAsset = (options) => (options.client ?? client).delete({
6826
+ export const databaseGetTable = (options) => (options.client ?? client).get({
6548
6827
  security: [{
6549
- key: 'media-BearerAuth',
6828
+ key: 'database-bearerAuth',
6550
6829
  scheme: 'bearer',
6551
6830
  type: 'http'
6552
6831
  }],
6553
- url: '/media/v1/libraries/{library_id}/assets/{asset_id}',
6832
+ url: '/database/v1/databases/{database_id}/tables/{table}',
6554
6833
  ...options
6555
6834
  });
6556
6835
  /**
6557
- * Get asset
6836
+ * Update table
6558
6837
  *
6559
- * 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.
6838
+ * 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.
6560
6839
  */
6561
- export const mediaGetAsset = (options) => (options.client ?? client).get({
6840
+ export const databaseUpdateTable = (options) => (options.client ?? client).patch({
6562
6841
  security: [{
6563
- key: 'media-BearerAuth',
6842
+ key: 'database-bearerAuth',
6564
6843
  scheme: 'bearer',
6565
6844
  type: 'http'
6566
6845
  }],
6567
- url: '/media/v1/libraries/{library_id}/assets/{asset_id}',
6568
- ...options
6846
+ url: '/database/v1/databases/{database_id}/tables/{table}',
6847
+ ...options,
6848
+ headers: {
6849
+ 'Content-Type': 'application/json',
6850
+ ...options.headers
6851
+ }
6569
6852
  });
6570
6853
  /**
6571
- * Update asset
6854
+ * Add field
6572
6855
  *
6573
- * 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.
6856
+ * 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.
6574
6857
  */
6575
- export const mediaUpdateAsset = (options) => (options.client ?? client).patch({
6858
+ export const databaseAddField = (options) => (options.client ?? client).post({
6576
6859
  security: [{
6577
- key: 'media-BearerAuth',
6860
+ key: 'database-bearerAuth',
6578
6861
  scheme: 'bearer',
6579
6862
  type: 'http'
6580
6863
  }],
6581
- url: '/media/v1/libraries/{library_id}/assets/{asset_id}',
6864
+ url: '/database/v1/databases/{database_id}/tables/{table}/fields',
6582
6865
  ...options,
6583
6866
  headers: {
6584
6867
  'Content-Type': 'application/json',
@@ -6586,17 +6869,31 @@ export const mediaUpdateAsset = (options) => (options.client ?? client).patch({
6586
6869
  }
6587
6870
  });
6588
6871
  /**
6589
- * Reprocess asset
6872
+ * Delete field
6590
6873
  *
6591
- * 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.
6874
+ * 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.
6592
6875
  */
6593
- export const mediaReprocessAsset = (options) => (options.client ?? client).post({
6876
+ export const databaseDeleteField = (options) => (options.client ?? client).delete({
6594
6877
  security: [{
6595
- key: 'media-BearerAuth',
6878
+ key: 'database-bearerAuth',
6596
6879
  scheme: 'bearer',
6597
6880
  type: 'http'
6598
6881
  }],
6599
- url: '/media/v1/libraries/{library_id}/assets/{asset_id}/reprocess',
6882
+ url: '/database/v1/databases/{database_id}/tables/{table}/fields/{field}',
6883
+ ...options
6884
+ });
6885
+ /**
6886
+ * Update field
6887
+ *
6888
+ * 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.
6889
+ */
6890
+ export const databaseUpdateField = (options) => (options.client ?? client).patch({
6891
+ security: [{
6892
+ key: 'database-bearerAuth',
6893
+ scheme: 'bearer',
6894
+ type: 'http'
6895
+ }],
6896
+ url: '/database/v1/databases/{database_id}/tables/{table}/fields/{field}',
6600
6897
  ...options,
6601
6898
  headers: {
6602
6899
  'Content-Type': 'application/json',
@@ -6604,31 +6901,73 @@ export const mediaReprocessAsset = (options) => (options.client ?? client).post(
6604
6901
  }
6605
6902
  });
6606
6903
  /**
6607
- * List understandings
6904
+ * List events
6608
6905
  *
6609
- * 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.
6906
+ * 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.
6610
6907
  */
6611
- export const mediaListUnderstandings = (options) => (options.client ?? client).get({
6908
+ export const databaseListEvents = (options) => (options.client ?? client).get({
6612
6909
  security: [{
6613
- key: 'media-BearerAuth',
6910
+ key: 'database-bearerAuth',
6614
6911
  scheme: 'bearer',
6615
6912
  type: 'http'
6616
6913
  }],
6617
- url: '/media/v1/libraries/{library_id}/assets/{asset_id}/understandings',
6914
+ url: '/database/v1/databases/{database_id}/events',
6618
6915
  ...options
6619
6916
  });
6620
6917
  /**
6621
- * Expression search
6918
+ * Delete rows
6622
6919
  *
6623
- * 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.
6920
+ * 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.
6624
6921
  */
6625
- export const mediaExpressionSearch = (options) => (options.client ?? client).post({
6922
+ export const databaseDelete = (options) => (options.client ?? client).delete({
6626
6923
  security: [{
6627
- key: 'media-BearerAuth',
6924
+ key: 'database-bearerAuth',
6628
6925
  scheme: 'bearer',
6629
6926
  type: 'http'
6630
6927
  }],
6631
- url: '/media/v1/libraries/{library_id}/search/expression',
6928
+ url: '/database/v1/databases/{database_id}/rest/{table}',
6929
+ ...options
6930
+ });
6931
+ /**
6932
+ * Select rows
6933
+ *
6934
+ * 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.
6935
+ */
6936
+ export const databaseSelect = (options) => (options.client ?? client).get({
6937
+ security: [{
6938
+ key: 'database-bearerAuth',
6939
+ scheme: 'bearer',
6940
+ type: 'http'
6941
+ }],
6942
+ url: '/database/v1/databases/{database_id}/rest/{table}',
6943
+ ...options
6944
+ });
6945
+ /**
6946
+ * Count rows
6947
+ *
6948
+ * 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.
6949
+ */
6950
+ export const databaseHead = (options) => (options.client ?? client).head({
6951
+ security: [{
6952
+ key: 'database-bearerAuth',
6953
+ scheme: 'bearer',
6954
+ type: 'http'
6955
+ }],
6956
+ url: '/database/v1/databases/{database_id}/rest/{table}',
6957
+ ...options
6958
+ });
6959
+ /**
6960
+ * Update rows
6961
+ *
6962
+ * 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.
6963
+ */
6964
+ export const databaseUpdate = (options) => (options.client ?? client).patch({
6965
+ security: [{
6966
+ key: 'database-bearerAuth',
6967
+ scheme: 'bearer',
6968
+ type: 'http'
6969
+ }],
6970
+ url: '/database/v1/databases/{database_id}/rest/{table}',
6632
6971
  ...options,
6633
6972
  headers: {
6634
6973
  'Content-Type': 'application/json',
@@ -6636,17 +6975,19 @@ export const mediaExpressionSearch = (options) => (options.client ?? client).pos
6636
6975
  }
6637
6976
  });
6638
6977
  /**
6639
- * Visual search
6978
+ * Insert rows
6640
6979
  *
6641
- * 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.
6980
+ * 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.
6981
+ * Rows are filled to the union of their keys with null; send Prefer: missing=default to use field defaults for missing keys.
6982
+ * 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.
6642
6983
  */
6643
- export const mediaVisualSearch = (options) => (options.client ?? client).post({
6984
+ export const databaseInsert = (options) => (options.client ?? client).post({
6644
6985
  security: [{
6645
- key: 'media-BearerAuth',
6986
+ key: 'database-bearerAuth',
6646
6987
  scheme: 'bearer',
6647
6988
  type: 'http'
6648
6989
  }],
6649
- url: '/media/v1/libraries/{library_id}/search/visual',
6990
+ url: '/database/v1/databases/{database_id}/rest/{table}',
6650
6991
  ...options,
6651
6992
  headers: {
6652
6993
  'Content-Type': 'application/json',
@@ -6654,17 +6995,31 @@ export const mediaVisualSearch = (options) => (options.client ?? client).post({
6654
6995
  }
6655
6996
  });
6656
6997
  /**
6657
- * Semantic search
6998
+ * List knowledge bases
6658
6999
  *
6659
- * 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.
7000
+ * 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.
6660
7001
  */
6661
- export const mediaSemanticSearch = (options) => (options.client ?? client).post({
7002
+ export const knowledgeListVectorStores = (options) => (options?.client ?? client).get({
6662
7003
  security: [{
6663
- key: 'media-BearerAuth',
7004
+ key: 'knowledge-bearerAuth',
6664
7005
  scheme: 'bearer',
6665
7006
  type: 'http'
6666
7007
  }],
6667
- url: '/media/v1/libraries/{library_id}/search/semantic',
7008
+ url: '/knowledge/v1/vector_stores',
7009
+ ...options
7010
+ });
7011
+ /**
7012
+ * Create knowledge base
7013
+ *
7014
+ * 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"}.
7015
+ */
7016
+ export const knowledgeCreateVectorStore = (options) => (options.client ?? client).post({
7017
+ security: [{
7018
+ key: 'knowledge-bearerAuth',
7019
+ scheme: 'bearer',
7020
+ type: 'http'
7021
+ }],
7022
+ url: '/knowledge/v1/vector_stores',
6668
7023
  ...options,
6669
7024
  headers: {
6670
7025
  'Content-Type': 'application/json',
@@ -6672,17 +7027,45 @@ export const mediaSemanticSearch = (options) => (options.client ?? client).post(
6672
7027
  }
6673
7028
  });
6674
7029
  /**
6675
- * Semantic search alias
7030
+ * Delete knowledge base
6676
7031
  *
6677
- * 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.
7032
+ * 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.
6678
7033
  */
6679
- export const mediaSearch = (options) => (options.client ?? client).post({
7034
+ export const knowledgeDeleteVectorStore = (options) => (options.client ?? client).delete({
6680
7035
  security: [{
6681
- key: 'media-BearerAuth',
7036
+ key: 'knowledge-bearerAuth',
6682
7037
  scheme: 'bearer',
6683
7038
  type: 'http'
6684
7039
  }],
6685
- url: '/media/v1/libraries/{library_id}/search',
7040
+ url: '/knowledge/v1/vector_stores/{vector_store_id}',
7041
+ ...options
7042
+ });
7043
+ /**
7044
+ * Retrieve knowledge base
7045
+ *
7046
+ * 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.
7047
+ */
7048
+ export const knowledgeRetrieveVectorStore = (options) => (options.client ?? client).get({
7049
+ security: [{
7050
+ key: 'knowledge-bearerAuth',
7051
+ scheme: 'bearer',
7052
+ type: 'http'
7053
+ }],
7054
+ url: '/knowledge/v1/vector_stores/{vector_store_id}',
7055
+ ...options
7056
+ });
7057
+ /**
7058
+ * Update knowledge base
7059
+ *
7060
+ * Updates an active knowledge base using its returned id. Omitted fields stay unchanged; metadata replaces the whole map. Example body: {"name":"Refund policies"}.
7061
+ */
7062
+ export const knowledgeUpdateVectorStore = (options) => (options.client ?? client).post({
7063
+ security: [{
7064
+ key: 'knowledge-bearerAuth',
7065
+ scheme: 'bearer',
7066
+ type: 'http'
7067
+ }],
7068
+ url: '/knowledge/v1/vector_stores/{vector_store_id}',
6686
7069
  ...options,
6687
7070
  headers: {
6688
7071
  'Content-Type': 'application/json',
@@ -6690,31 +7073,49 @@ export const mediaSearch = (options) => (options.client ?? client).post({
6690
7073
  }
6691
7074
  });
6692
7075
  /**
6693
- * List folders
7076
+ * Search knowledge base
6694
7077
  *
6695
- * 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.
7078
+ * 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.
6696
7079
  */
6697
- export const mediaListFolders = (options) => (options.client ?? client).get({
7080
+ export const knowledgeSearchVectorStore = (options) => (options.client ?? client).post({
6698
7081
  security: [{
6699
- key: 'media-BearerAuth',
7082
+ key: 'knowledge-bearerAuth',
6700
7083
  scheme: 'bearer',
6701
7084
  type: 'http'
6702
7085
  }],
6703
- url: '/media/v1/libraries/{library_id}/folders',
7086
+ url: '/knowledge/v1/vector_stores/{vector_store_id}/search',
7087
+ ...options,
7088
+ headers: {
7089
+ 'Content-Type': 'application/json',
7090
+ ...options.headers
7091
+ }
7092
+ });
7093
+ /**
7094
+ * List files
7095
+ *
7096
+ * 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.
7097
+ */
7098
+ export const knowledgeListFiles = (options) => (options.client ?? client).get({
7099
+ security: [{
7100
+ key: 'knowledge-bearerAuth',
7101
+ scheme: 'bearer',
7102
+ type: 'http'
7103
+ }],
7104
+ url: '/knowledge/v1/vector_stores/{vector_store_id}/files',
6704
7105
  ...options
6705
7106
  });
6706
7107
  /**
6707
- * Create batch
7108
+ * Add file
6708
7109
  *
6709
- * 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.
7110
+ * 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.
6710
7111
  */
6711
- export const mediaCreateBatch = (options) => (options.client ?? client).post({
7112
+ export const knowledgeAttachFile = (options) => (options.client ?? client).post({
6712
7113
  security: [{
6713
- key: 'media-BearerAuth',
7114
+ key: 'knowledge-bearerAuth',
6714
7115
  scheme: 'bearer',
6715
7116
  type: 'http'
6716
7117
  }],
6717
- url: '/media/v1/libraries/{library_id}/batches',
7118
+ url: '/knowledge/v1/vector_stores/{vector_store_id}/files',
6718
7119
  ...options,
6719
7120
  headers: {
6720
7121
  'Content-Type': 'application/json',
@@ -6722,31 +7123,858 @@ export const mediaCreateBatch = (options) => (options.client ?? client).post({
6722
7123
  }
6723
7124
  });
6724
7125
  /**
6725
- * Get batch
7126
+ * Remove file
6726
7127
  *
6727
- * 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.
7128
+ * Removes the file from search immediately; does not delete the original File.
6728
7129
  */
6729
- export const mediaGetBatch = (options) => (options.client ?? client).get({
7130
+ export const knowledgeRemoveFile = (options) => (options.client ?? client).delete({
6730
7131
  security: [{
6731
- key: 'media-BearerAuth',
7132
+ key: 'knowledge-bearerAuth',
6732
7133
  scheme: 'bearer',
6733
7134
  type: 'http'
6734
7135
  }],
6735
- url: '/media/v1/libraries/{library_id}/batches/{job_id}',
7136
+ url: '/knowledge/v1/vector_stores/{vector_store_id}/files/{file_id}',
6736
7137
  ...options
6737
7138
  });
6738
7139
  /**
6739
- * Batch assets alias
7140
+ * Retrieve file
6740
7141
  *
6741
- * 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.
7142
+ * 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.
6742
7143
  */
6743
- export const mediaBatchAssets = (options) => (options.client ?? client).post({
7144
+ export const knowledgeRetrieveFile = (options) => (options.client ?? client).get({
6744
7145
  security: [{
6745
- key: 'media-BearerAuth',
7146
+ key: 'knowledge-bearerAuth',
7147
+ scheme: 'bearer',
7148
+ type: 'http'
7149
+ }],
7150
+ url: '/knowledge/v1/vector_stores/{vector_store_id}/files/{file_id}',
7151
+ ...options
7152
+ });
7153
+ /**
7154
+ * Update file attributes
7155
+ *
7156
+ * 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.
7157
+ */
7158
+ export const knowledgeUpdateFile = (options) => (options.client ?? client).post({
7159
+ security: [{
7160
+ key: 'knowledge-bearerAuth',
7161
+ scheme: 'bearer',
7162
+ type: 'http'
7163
+ }],
7164
+ url: '/knowledge/v1/vector_stores/{vector_store_id}/files/{file_id}',
7165
+ ...options,
7166
+ headers: {
7167
+ 'Content-Type': 'application/json',
7168
+ ...options.headers
7169
+ }
7170
+ });
7171
+ /**
7172
+ * Read extracted content
7173
+ *
7174
+ * Extracted text chunks may overlap. Image content can be a generated description rather than verbatim OCR.
7175
+ */
7176
+ export const knowledgeRetrieveFileContent = (options) => (options.client ?? client).get({
7177
+ security: [{
7178
+ key: 'knowledge-bearerAuth',
7179
+ scheme: 'bearer',
7180
+ type: 'http'
7181
+ }],
7182
+ url: '/knowledge/v1/vector_stores/{vector_store_id}/files/{file_id}/content',
7183
+ ...options
7184
+ });
7185
+ /**
7186
+ * Create file batch
7187
+ *
7188
+ * 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.
7189
+ */
7190
+ export const knowledgeCreateFileBatch = (options) => (options.client ?? client).post({
7191
+ security: [{
7192
+ key: 'knowledge-bearerAuth',
7193
+ scheme: 'bearer',
7194
+ type: 'http'
7195
+ }],
7196
+ url: '/knowledge/v1/vector_stores/{vector_store_id}/file_batches',
7197
+ ...options,
7198
+ headers: {
7199
+ 'Content-Type': 'application/json',
7200
+ ...options.headers
7201
+ }
7202
+ });
7203
+ /**
7204
+ * Retrieve file batch
7205
+ *
7206
+ * 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.
7207
+ */
7208
+ export const knowledgeRetrieveFileBatch = (options) => (options.client ?? client).get({
7209
+ security: [{
7210
+ key: 'knowledge-bearerAuth',
7211
+ scheme: 'bearer',
7212
+ type: 'http'
7213
+ }],
7214
+ url: '/knowledge/v1/vector_stores/{vector_store_id}/file_batches/{batch_id}',
7215
+ ...options
7216
+ });
7217
+ /**
7218
+ * Cancel file batch
7219
+ *
7220
+ * Cancels only in-progress batches and pending files. Completed, failed and cancelled batches return unchanged (200, idempotent).
7221
+ */
7222
+ export const knowledgeCancelFileBatch = (options) => (options.client ?? client).post({
7223
+ security: [{
7224
+ key: 'knowledge-bearerAuth',
7225
+ scheme: 'bearer',
7226
+ type: 'http'
7227
+ }],
7228
+ url: '/knowledge/v1/vector_stores/{vector_store_id}/file_batches/{batch_id}/cancel',
7229
+ ...options
7230
+ });
7231
+ /**
7232
+ * List batch files
7233
+ *
7234
+ * 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.
7235
+ */
7236
+ export const knowledgeListBatchFiles = (options) => (options.client ?? client).get({
7237
+ security: [{
7238
+ key: 'knowledge-bearerAuth',
7239
+ scheme: 'bearer',
7240
+ type: 'http'
7241
+ }],
7242
+ url: '/knowledge/v1/vector_stores/{vector_store_id}/file_batches/{batch_id}/files',
7243
+ ...options
7244
+ });
7245
+ /**
7246
+ * Restore knowledge base
7247
+ *
7248
+ * Restores a deleting store within 7 days. Active stores return 409 VECTOR_STORE_INVALID_STATE; absent stores return 404. Empty body is allowed.
7249
+ */
7250
+ export const knowledgeRestoreVectorStore = (options) => (options.client ?? client).post({
7251
+ security: [{
7252
+ key: 'knowledge-bearerAuth',
7253
+ scheme: 'bearer',
7254
+ type: 'http'
7255
+ }],
7256
+ url: '/knowledge/v1/vector_stores/{vector_store_id}/restore',
7257
+ ...options
7258
+ });
7259
+ /**
7260
+ * Permanently purge knowledge base
7261
+ *
7262
+ * Immediately and irreversibly clears a deleting store using the retention cleanup path. Active stores return 409; absent stores return 404. Empty body is allowed.
7263
+ */
7264
+ export const knowledgePurgeVectorStore = (options) => (options.client ?? client).post({
7265
+ security: [{
7266
+ key: 'knowledge-bearerAuth',
7267
+ scheme: 'bearer',
7268
+ type: 'http'
7269
+ }],
7270
+ url: '/knowledge/v1/vector_stores/{vector_store_id}/purge',
7271
+ ...options
7272
+ });
7273
+ /**
7274
+ * Retry failed file
7275
+ *
7276
+ * Retries only failed files; other states return 409 FILE_INVALID_STATE. Retry after failure has not yet been observed in the documented run.
7277
+ */
7278
+ export const knowledgeRetryFile = (options) => (options.client ?? client).post({
7279
+ security: [{
7280
+ key: 'knowledge-bearerAuth',
7281
+ scheme: 'bearer',
7282
+ type: 'http'
7283
+ }],
7284
+ url: '/knowledge/v1/vector_stores/{vector_store_id}/files/{file_id}/retry',
7285
+ ...options
7286
+ });
7287
+ /**
7288
+ * List file segments
7289
+ *
7290
+ * 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.
7291
+ */
7292
+ export const knowledgeListSegments = (options) => (options.client ?? client).get({
7293
+ security: [{
7294
+ key: 'knowledge-bearerAuth',
7295
+ scheme: 'bearer',
7296
+ type: 'http'
7297
+ }],
7298
+ url: '/knowledge/v1/vector_stores/{vector_store_id}/files/{file_id}/segments',
7299
+ ...options
7300
+ });
7301
+ /**
7302
+ * Retrieve segment
7303
+ *
7304
+ * 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.
7305
+ */
7306
+ export const knowledgeRetrieveSegment = (options) => (options.client ?? client).get({
7307
+ security: [{
7308
+ key: 'knowledge-bearerAuth',
7309
+ scheme: 'bearer',
7310
+ type: 'http'
7311
+ }],
7312
+ url: '/knowledge/v1/vector_stores/{vector_store_id}/segments/{chunk_id}',
7313
+ ...options
7314
+ });
7315
+ /**
7316
+ * List events
7317
+ *
7318
+ * 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.
7319
+ */
7320
+ export const knowledgeListEvents = (options) => (options.client ?? client).get({
7321
+ security: [{
7322
+ key: 'knowledge-bearerAuth',
7323
+ scheme: 'bearer',
7324
+ type: 'http'
7325
+ }],
7326
+ url: '/knowledge/v1/vector_stores/{vector_store_id}/events',
7327
+ ...options
7328
+ });
7329
+ /**
7330
+ * List libraries
7331
+ *
7332
+ * 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.
7333
+ */
7334
+ export const mediaListLibraries = (options) => (options?.client ?? client).get({
7335
+ security: [{
7336
+ key: 'media-BearerAuth',
7337
+ scheme: 'bearer',
7338
+ type: 'http'
7339
+ }],
7340
+ url: '/media/v1/libraries',
7341
+ ...options
7342
+ });
7343
+ /**
7344
+ * Create library
7345
+ *
7346
+ * 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.
7347
+ */
7348
+ export const mediaCreateLibrary = (options) => (options.client ?? client).post({
7349
+ security: [{
7350
+ key: 'media-BearerAuth',
7351
+ scheme: 'bearer',
7352
+ type: 'http'
7353
+ }],
7354
+ url: '/media/v1/libraries',
7355
+ ...options,
7356
+ headers: {
7357
+ 'Content-Type': 'application/json',
7358
+ ...options.headers
7359
+ }
7360
+ });
7361
+ /**
7362
+ * Delete library
7363
+ *
7364
+ * 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.
7365
+ */
7366
+ export const mediaDeleteLibrary = (options) => (options.client ?? client).delete({
7367
+ security: [{
7368
+ key: 'media-BearerAuth',
7369
+ scheme: 'bearer',
7370
+ type: 'http'
7371
+ }],
7372
+ url: '/media/v1/libraries/{library_id}',
7373
+ ...options
7374
+ });
7375
+ /**
7376
+ * Get library
7377
+ *
7378
+ * 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.
7379
+ */
7380
+ export const mediaGetLibrary = (options) => (options.client ?? client).get({
7381
+ security: [{
7382
+ key: 'media-BearerAuth',
7383
+ scheme: 'bearer',
7384
+ type: 'http'
7385
+ }],
7386
+ url: '/media/v1/libraries/{library_id}',
7387
+ ...options
7388
+ });
7389
+ /**
7390
+ * Update library
7391
+ *
7392
+ * 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.
7393
+ */
7394
+ export const mediaUpdateLibrary = (options) => (options.client ?? client).patch({
7395
+ security: [{
7396
+ key: 'media-BearerAuth',
7397
+ scheme: 'bearer',
7398
+ type: 'http'
7399
+ }],
7400
+ url: '/media/v1/libraries/{library_id}',
7401
+ ...options,
7402
+ headers: {
7403
+ 'Content-Type': 'application/json',
7404
+ ...options.headers
7405
+ }
7406
+ });
7407
+ /**
7408
+ * Restore library
7409
+ *
7410
+ * 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.
7411
+ */
7412
+ export const mediaRestoreLibrary = (options) => (options.client ?? client).post({
7413
+ security: [{
7414
+ key: 'media-BearerAuth',
7415
+ scheme: 'bearer',
7416
+ type: 'http'
7417
+ }],
7418
+ url: '/media/v1/libraries/{library_id}/restore',
7419
+ ...options
7420
+ });
7421
+ /**
7422
+ * Purge library
7423
+ *
7424
+ * 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.
7425
+ */
7426
+ export const mediaPurgeLibrary = (options) => (options.client ?? client).post({
7427
+ security: [{
7428
+ key: 'media-BearerAuth',
7429
+ scheme: 'bearer',
7430
+ type: 'http'
7431
+ }],
7432
+ url: '/media/v1/libraries/{library_id}/purge',
7433
+ ...options
7434
+ });
7435
+ /**
7436
+ * List assets
7437
+ *
7438
+ * 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.
7439
+ */
7440
+ export const mediaListAssets = (options) => (options.client ?? client).get({
7441
+ security: [{
7442
+ key: 'media-BearerAuth',
7443
+ scheme: 'bearer',
7444
+ type: 'http'
7445
+ }],
7446
+ url: '/media/v1/libraries/{library_id}/assets',
7447
+ ...options
7448
+ });
7449
+ /**
7450
+ * Upload asset
7451
+ *
7452
+ * 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.
7453
+ */
7454
+ export const mediaUploadAsset = (options) => (options.client ?? client).post({
7455
+ security: [{
7456
+ key: 'media-BearerAuth',
7457
+ scheme: 'bearer',
7458
+ type: 'http'
7459
+ }],
7460
+ url: '/media/v1/libraries/{library_id}/assets',
7461
+ ...options,
7462
+ headers: {
7463
+ 'Content-Type': 'application/json',
7464
+ ...options.headers
7465
+ }
7466
+ });
7467
+ /**
7468
+ * Import file
7469
+ *
7470
+ * 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.
7471
+ */
7472
+ export const mediaImportAsset = (options) => (options.client ?? client).post({
7473
+ security: [{
7474
+ key: 'media-BearerAuth',
7475
+ scheme: 'bearer',
7476
+ type: 'http'
7477
+ }],
7478
+ url: '/media/v1/libraries/{library_id}/assets/import',
7479
+ ...options,
7480
+ headers: {
7481
+ 'Content-Type': 'application/json',
7482
+ ...options.headers
7483
+ }
7484
+ });
7485
+ /**
7486
+ * Delete asset
7487
+ *
7488
+ * 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.
7489
+ */
7490
+ export const mediaDeleteAsset = (options) => (options.client ?? client).delete({
7491
+ security: [{
7492
+ key: 'media-BearerAuth',
7493
+ scheme: 'bearer',
7494
+ type: 'http'
7495
+ }],
7496
+ url: '/media/v1/libraries/{library_id}/assets/{asset_id}',
7497
+ ...options
7498
+ });
7499
+ /**
7500
+ * Get asset
7501
+ *
7502
+ * 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.
7503
+ */
7504
+ export const mediaGetAsset = (options) => (options.client ?? client).get({
7505
+ security: [{
7506
+ key: 'media-BearerAuth',
7507
+ scheme: 'bearer',
7508
+ type: 'http'
7509
+ }],
7510
+ url: '/media/v1/libraries/{library_id}/assets/{asset_id}',
7511
+ ...options
7512
+ });
7513
+ /**
7514
+ * Update asset
7515
+ *
7516
+ * 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.
7517
+ */
7518
+ export const mediaUpdateAsset = (options) => (options.client ?? client).patch({
7519
+ security: [{
7520
+ key: 'media-BearerAuth',
7521
+ scheme: 'bearer',
7522
+ type: 'http'
7523
+ }],
7524
+ url: '/media/v1/libraries/{library_id}/assets/{asset_id}',
7525
+ ...options,
7526
+ headers: {
7527
+ 'Content-Type': 'application/json',
7528
+ ...options.headers
7529
+ }
7530
+ });
7531
+ /**
7532
+ * Reprocess asset
7533
+ *
7534
+ * 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.
7535
+ */
7536
+ export const mediaReprocessAsset = (options) => (options.client ?? client).post({
7537
+ security: [{
7538
+ key: 'media-BearerAuth',
7539
+ scheme: 'bearer',
7540
+ type: 'http'
7541
+ }],
7542
+ url: '/media/v1/libraries/{library_id}/assets/{asset_id}/reprocess',
7543
+ ...options,
7544
+ headers: {
7545
+ 'Content-Type': 'application/json',
7546
+ ...options.headers
7547
+ }
7548
+ });
7549
+ /**
7550
+ * List understandings
7551
+ *
7552
+ * 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.
7553
+ */
7554
+ export const mediaListUnderstandings = (options) => (options.client ?? client).get({
7555
+ security: [{
7556
+ key: 'media-BearerAuth',
7557
+ scheme: 'bearer',
7558
+ type: 'http'
7559
+ }],
7560
+ url: '/media/v1/libraries/{library_id}/assets/{asset_id}/understandings',
7561
+ ...options
7562
+ });
7563
+ /**
7564
+ * Expression search
7565
+ *
7566
+ * 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.
7567
+ */
7568
+ export const mediaExpressionSearch = (options) => (options.client ?? client).post({
7569
+ security: [{
7570
+ key: 'media-BearerAuth',
7571
+ scheme: 'bearer',
7572
+ type: 'http'
7573
+ }],
7574
+ url: '/media/v1/libraries/{library_id}/search/expression',
7575
+ ...options,
7576
+ headers: {
7577
+ 'Content-Type': 'application/json',
7578
+ ...options.headers
7579
+ }
7580
+ });
7581
+ /**
7582
+ * Visual search
7583
+ *
7584
+ * 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.
7585
+ */
7586
+ export const mediaVisualSearch = (options) => (options.client ?? client).post({
7587
+ security: [{
7588
+ key: 'media-BearerAuth',
7589
+ scheme: 'bearer',
7590
+ type: 'http'
7591
+ }],
7592
+ url: '/media/v1/libraries/{library_id}/search/visual',
7593
+ ...options,
7594
+ headers: {
7595
+ 'Content-Type': 'application/json',
7596
+ ...options.headers
7597
+ }
7598
+ });
7599
+ /**
7600
+ * Semantic search
7601
+ *
7602
+ * 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.
7603
+ */
7604
+ export const mediaSemanticSearch = (options) => (options.client ?? client).post({
7605
+ security: [{
7606
+ key: 'media-BearerAuth',
7607
+ scheme: 'bearer',
7608
+ type: 'http'
7609
+ }],
7610
+ url: '/media/v1/libraries/{library_id}/search/semantic',
7611
+ ...options,
7612
+ headers: {
7613
+ 'Content-Type': 'application/json',
7614
+ ...options.headers
7615
+ }
7616
+ });
7617
+ /**
7618
+ * Semantic search alias
7619
+ *
7620
+ * 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.
7621
+ */
7622
+ export const mediaSearch = (options) => (options.client ?? client).post({
7623
+ security: [{
7624
+ key: 'media-BearerAuth',
7625
+ scheme: 'bearer',
7626
+ type: 'http'
7627
+ }],
7628
+ url: '/media/v1/libraries/{library_id}/search',
7629
+ ...options,
7630
+ headers: {
7631
+ 'Content-Type': 'application/json',
7632
+ ...options.headers
7633
+ }
7634
+ });
7635
+ /**
7636
+ * List folders
7637
+ *
7638
+ * 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.
7639
+ */
7640
+ export const mediaListFolders = (options) => (options.client ?? client).get({
7641
+ security: [{
7642
+ key: 'media-BearerAuth',
7643
+ scheme: 'bearer',
7644
+ type: 'http'
7645
+ }],
7646
+ url: '/media/v1/libraries/{library_id}/folders',
7647
+ ...options
7648
+ });
7649
+ /**
7650
+ * Create batch
7651
+ *
7652
+ * 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.
7653
+ */
7654
+ export const mediaCreateBatch = (options) => (options.client ?? client).post({
7655
+ security: [{
7656
+ key: 'media-BearerAuth',
7657
+ scheme: 'bearer',
7658
+ type: 'http'
7659
+ }],
7660
+ url: '/media/v1/libraries/{library_id}/batches',
7661
+ ...options,
7662
+ headers: {
7663
+ 'Content-Type': 'application/json',
7664
+ ...options.headers
7665
+ }
7666
+ });
7667
+ /**
7668
+ * Get batch
7669
+ *
7670
+ * 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.
7671
+ */
7672
+ export const mediaGetBatch = (options) => (options.client ?? client).get({
7673
+ security: [{
7674
+ key: 'media-BearerAuth',
7675
+ scheme: 'bearer',
7676
+ type: 'http'
7677
+ }],
7678
+ url: '/media/v1/libraries/{library_id}/batches/{job_id}',
7679
+ ...options
7680
+ });
7681
+ /**
7682
+ * Batch assets alias
7683
+ *
7684
+ * 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.
7685
+ */
7686
+ export const mediaBatchAssets = (options) => (options.client ?? client).post({
7687
+ security: [{
7688
+ key: 'media-BearerAuth',
7689
+ scheme: 'bearer',
7690
+ type: 'http'
7691
+ }],
7692
+ url: '/media/v1/libraries/{library_id}/assets:batch',
7693
+ ...options,
7694
+ headers: {
7695
+ 'Content-Type': 'application/json',
7696
+ ...options.headers
7697
+ }
7698
+ });
7699
+ /**
7700
+ * Get job alias
7701
+ *
7702
+ * Alias of batch retrieval. Read the job returned by a batch request, including terminal status, successful and failed counts, and individual failure codes.
7703
+ */
7704
+ export const mediaGetJob = (options) => (options.client ?? client).get({
7705
+ security: [{
7706
+ key: 'media-BearerAuth',
7707
+ scheme: 'bearer',
7708
+ type: 'http'
7709
+ }],
7710
+ url: '/media/v1/libraries/{library_id}/jobs/{job_id}',
7711
+ ...options
7712
+ });
7713
+ /**
7714
+ * List events
7715
+ *
7716
+ * 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.
7717
+ */
7718
+ export const mediaListEvents = (options) => (options.client ?? client).get({
7719
+ security: [{
7720
+ key: 'media-BearerAuth',
7721
+ scheme: 'bearer',
7722
+ type: 'http'
7723
+ }],
7724
+ url: '/media/v1/libraries/{library_id}/events',
7725
+ ...options
7726
+ });
7727
+ /**
7728
+ * Create delivery token
7729
+ *
7730
+ * 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.
7731
+ */
7732
+ export const mediaCreateDeliveryToken = (options) => (options.client ?? client).post({
7733
+ security: [{
7734
+ key: 'media-BearerAuth',
7735
+ scheme: 'bearer',
7736
+ type: 'http'
7737
+ }],
7738
+ url: '/media/v1/libraries/{library_id}/delivery_tokens',
7739
+ ...options,
7740
+ headers: {
7741
+ 'Content-Type': 'application/json',
7742
+ ...options.headers
7743
+ }
7744
+ });
7745
+ /**
7746
+ * List sandboxes (v2)
7747
+ *
7748
+ * 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.
7749
+ */
7750
+ export const getSandboxV1Sandboxes = (options) => (options?.client ?? client).get({
7751
+ querySerializer: { parameters: { state: { array: { explode: false } } } },
7752
+ security: [
7753
+ {
7754
+ key: 'sandbox-ApiKeyAuth',
7755
+ name: 'X-API-Key',
7756
+ type: 'apiKey'
7757
+ },
7758
+ {
7759
+ key: 'sandbox-AuthProviderBearerAuth',
7760
+ scheme: 'bearer',
7761
+ type: 'http'
7762
+ },
7763
+ {
7764
+ key: 'sandbox-AuthProviderTeamAuth',
7765
+ name: 'X-Team-ID',
7766
+ type: 'apiKey'
7767
+ },
7768
+ { name: 'X-Admin-Token', type: 'apiKey' },
7769
+ {
7770
+ key: 'sandbox-AdminTeamAuth',
7771
+ name: 'X-Team-ID',
7772
+ type: 'apiKey'
7773
+ },
7774
+ {
7775
+ key: 'sandbox-AdminJWTAuth',
7776
+ scheme: 'bearer',
7777
+ type: 'http'
7778
+ }
7779
+ ],
7780
+ url: '/sandbox/v1/sandboxes',
7781
+ ...options
7782
+ });
7783
+ /**
7784
+ * Create sandbox (v2)
7785
+ *
7786
+ * Create a sandbox from the template. All system communication with the sandbox is secured.
7787
+ */
7788
+ export const postSandboxV1Sandboxes = (options) => (options.client ?? client).post({
7789
+ security: [
7790
+ {
7791
+ key: 'sandbox-ApiKeyAuth',
7792
+ name: 'X-API-Key',
7793
+ type: 'apiKey'
7794
+ },
7795
+ {
7796
+ key: 'sandbox-AuthProviderBearerAuth',
7797
+ scheme: 'bearer',
7798
+ type: 'http'
7799
+ },
7800
+ {
7801
+ key: 'sandbox-AuthProviderTeamAuth',
7802
+ name: 'X-Team-ID',
7803
+ type: 'apiKey'
7804
+ },
7805
+ { name: 'X-Admin-Token', type: 'apiKey' },
7806
+ {
7807
+ key: 'sandbox-AdminTeamAuth',
7808
+ name: 'X-Team-ID',
7809
+ type: 'apiKey'
7810
+ },
7811
+ {
7812
+ key: 'sandbox-AdminJWTAuth',
7813
+ scheme: 'bearer',
7814
+ type: 'http'
7815
+ }
7816
+ ],
7817
+ url: '/sandbox/v1/sandboxes',
7818
+ ...options,
7819
+ headers: {
7820
+ 'Content-Type': 'application/json',
7821
+ ...options.headers
7822
+ }
7823
+ });
7824
+ /**
7825
+ * Sandbox metrics
7826
+ *
7827
+ * 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.
7828
+ */
7829
+ export const getSandboxV1SandboxesBySandboxIdMetrics = (options) => (options.client ?? client).get({
7830
+ security: [
7831
+ {
7832
+ key: 'sandbox-ApiKeyAuth',
7833
+ name: 'X-API-Key',
7834
+ type: 'apiKey'
7835
+ },
7836
+ {
7837
+ key: 'sandbox-AuthProviderBearerAuth',
7838
+ scheme: 'bearer',
7839
+ type: 'http'
7840
+ },
7841
+ {
7842
+ key: 'sandbox-AuthProviderTeamAuth',
7843
+ name: 'X-Team-ID',
7844
+ type: 'apiKey'
7845
+ },
7846
+ { name: 'X-Admin-Token', type: 'apiKey' },
7847
+ {
7848
+ key: 'sandbox-AdminTeamAuth',
7849
+ name: 'X-Team-ID',
7850
+ type: 'apiKey'
7851
+ },
7852
+ {
7853
+ key: 'sandbox-AdminJWTAuth',
7854
+ scheme: 'bearer',
7855
+ type: 'http'
7856
+ }
7857
+ ],
7858
+ url: '/sandbox/v1/sandboxes/{sandboxID}/metrics',
7859
+ ...options
7860
+ });
7861
+ /**
7862
+ * Pause sandbox
7863
+ *
7864
+ * 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.
7865
+ */
7866
+ export const postSandboxV1SandboxesBySandboxIdPause = (options) => (options.client ?? client).post({
7867
+ security: [
7868
+ {
7869
+ key: 'sandbox-ApiKeyAuth',
7870
+ name: 'X-API-Key',
7871
+ type: 'apiKey'
7872
+ },
7873
+ {
7874
+ key: 'sandbox-AuthProviderBearerAuth',
7875
+ scheme: 'bearer',
7876
+ type: 'http'
7877
+ },
7878
+ {
7879
+ key: 'sandbox-AuthProviderTeamAuth',
7880
+ name: 'X-Team-ID',
7881
+ type: 'apiKey'
7882
+ },
7883
+ { name: 'X-Admin-Token', type: 'apiKey' },
7884
+ {
7885
+ key: 'sandbox-AdminTeamAuth',
7886
+ name: 'X-Team-ID',
7887
+ type: 'apiKey'
7888
+ },
7889
+ {
7890
+ key: 'sandbox-AdminJWTAuth',
7891
+ scheme: 'bearer',
7892
+ type: 'http'
7893
+ }
7894
+ ],
7895
+ url: '/sandbox/v1/sandboxes/{sandboxID}/pause',
7896
+ ...options,
7897
+ headers: {
7898
+ 'Content-Type': 'application/json',
7899
+ ...options.headers
7900
+ }
7901
+ });
7902
+ /**
7903
+ * Set sandbox timeout
7904
+ *
7905
+ * 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.
7906
+ */
7907
+ export const postSandboxV1SandboxesBySandboxIdTimeout = (options) => (options.client ?? client).post({
7908
+ security: [
7909
+ {
7910
+ key: 'sandbox-ApiKeyAuth',
7911
+ name: 'X-API-Key',
7912
+ type: 'apiKey'
7913
+ },
7914
+ {
7915
+ key: 'sandbox-AuthProviderBearerAuth',
7916
+ scheme: 'bearer',
7917
+ type: 'http'
7918
+ },
7919
+ {
7920
+ key: 'sandbox-AuthProviderTeamAuth',
7921
+ name: 'X-Team-ID',
7922
+ type: 'apiKey'
7923
+ },
7924
+ { name: 'X-Admin-Token', type: 'apiKey' },
7925
+ {
7926
+ key: 'sandbox-AdminTeamAuth',
7927
+ name: 'X-Team-ID',
7928
+ type: 'apiKey'
7929
+ },
7930
+ {
7931
+ key: 'sandbox-AdminJWTAuth',
7932
+ scheme: 'bearer',
7933
+ type: 'http'
7934
+ }
7935
+ ],
7936
+ url: '/sandbox/v1/sandboxes/{sandboxID}/timeout',
7937
+ ...options,
7938
+ headers: {
7939
+ 'Content-Type': 'application/json',
7940
+ ...options.headers
7941
+ }
7942
+ });
7943
+ /**
7944
+ * Connect sandbox (v2)
7945
+ *
7946
+ * 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.
7947
+ */
7948
+ export const postSandboxV1SandboxesBySandboxIdConnect = (options) => (options.client ?? client).post({
7949
+ security: [
7950
+ {
7951
+ key: 'sandbox-ApiKeyAuth',
7952
+ name: 'X-API-Key',
7953
+ type: 'apiKey'
7954
+ },
7955
+ {
7956
+ key: 'sandbox-AuthProviderBearerAuth',
7957
+ scheme: 'bearer',
7958
+ type: 'http'
7959
+ },
7960
+ {
7961
+ key: 'sandbox-AuthProviderTeamAuth',
7962
+ name: 'X-Team-ID',
7963
+ type: 'apiKey'
7964
+ },
7965
+ { name: 'X-Admin-Token', type: 'apiKey' },
7966
+ {
7967
+ key: 'sandbox-AdminTeamAuth',
7968
+ name: 'X-Team-ID',
7969
+ type: 'apiKey'
7970
+ },
7971
+ {
7972
+ key: 'sandbox-AdminJWTAuth',
6746
7973
  scheme: 'bearer',
6747
7974
  type: 'http'
6748
- }],
6749
- url: '/media/v1/libraries/{library_id}/assets:batch',
7975
+ }
7976
+ ],
7977
+ url: '/sandbox/v1/sandboxes/{sandboxID}/connect',
6750
7978
  ...options,
6751
7979
  headers: {
6752
7980
  'Content-Type': 'application/json',
@@ -6754,40 +7982,89 @@ export const mediaBatchAssets = (options) => (options.client ?? client).post({
6754
7982
  }
6755
7983
  });
6756
7984
  /**
6757
- * Get job alias
7985
+ * List templates (v2)
6758
7986
  *
6759
- * Alias of batch retrieval. Read the job returned by a batch request, including terminal status, successful and failed counts, and individual failure codes.
7987
+ * 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.
6760
7988
  */
6761
- export const mediaGetJob = (options) => (options.client ?? client).get({
6762
- security: [{
6763
- key: 'media-BearerAuth',
7989
+ export const listSandboxTemplates = (options) => (options?.client ?? client).get({
7990
+ security: [
7991
+ {
7992
+ key: 'sandbox-ApiKeyAuth',
7993
+ name: 'X-API-Key',
7994
+ type: 'apiKey'
7995
+ },
7996
+ {
7997
+ key: 'sandbox-AuthProviderBearerAuth',
6764
7998
  scheme: 'bearer',
6765
7999
  type: 'http'
6766
- }],
6767
- url: '/media/v1/libraries/{library_id}/jobs/{job_id}',
8000
+ },
8001
+ {
8002
+ key: 'sandbox-AuthProviderTeamAuth',
8003
+ name: 'X-Team-ID',
8004
+ type: 'apiKey'
8005
+ },
8006
+ { name: 'X-Admin-Token', type: 'apiKey' },
8007
+ {
8008
+ key: 'sandbox-AdminTeamAuth',
8009
+ name: 'X-Team-ID',
8010
+ type: 'apiKey'
8011
+ },
8012
+ {
8013
+ key: 'sandbox-AdminJWTAuth',
8014
+ scheme: 'bearer',
8015
+ type: 'http'
8016
+ }
8017
+ ],
8018
+ url: '/sandbox/v1/templates',
6768
8019
  ...options
6769
8020
  });
6770
8021
  /**
6771
- * List events
8022
+ * Create template (v3)
6772
8023
  *
6773
- * 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.
8024
+ * 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.
6774
8025
  */
6775
- export const mediaListEvents = (options) => (options.client ?? client).get({
6776
- security: [{
6777
- key: 'media-BearerAuth',
8026
+ export const requestTemplateBuild = (options) => (options.client ?? client).post({
8027
+ security: [
8028
+ {
8029
+ key: 'sandbox-ApiKeyAuth',
8030
+ name: 'X-API-Key',
8031
+ type: 'apiKey'
8032
+ },
8033
+ {
8034
+ key: 'sandbox-AuthProviderBearerAuth',
6778
8035
  scheme: 'bearer',
6779
8036
  type: 'http'
6780
- }],
6781
- url: '/media/v1/libraries/{library_id}/events',
6782
- ...options
8037
+ },
8038
+ {
8039
+ key: 'sandbox-AuthProviderTeamAuth',
8040
+ name: 'X-Team-ID',
8041
+ type: 'apiKey'
8042
+ },
8043
+ { name: 'X-Admin-Token', type: 'apiKey' },
8044
+ {
8045
+ key: 'sandbox-AdminTeamAuth',
8046
+ name: 'X-Team-ID',
8047
+ type: 'apiKey'
8048
+ },
8049
+ {
8050
+ key: 'sandbox-AdminJWTAuth',
8051
+ scheme: 'bearer',
8052
+ type: 'http'
8053
+ }
8054
+ ],
8055
+ url: '/sandbox/v1/templates',
8056
+ ...options,
8057
+ headers: {
8058
+ 'Content-Type': 'application/json',
8059
+ ...options.headers
8060
+ }
6783
8061
  });
6784
8062
  /**
6785
- * List sandboxes (v2)
8063
+ * List team volumes
6786
8064
  *
6787
- * 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.
8065
+ * 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.
6788
8066
  */
6789
- export const getSandboxV1Sandboxes = (options) => (options?.client ?? client).get({
6790
- querySerializer: { parameters: { state: { array: { explode: false } } } },
8067
+ export const getSandboxV1Volumes = (options) => (options?.client ?? client).get({
6791
8068
  security: [
6792
8069
  {
6793
8070
  key: 'sandbox-ApiKeyAuth',
@@ -6816,15 +8093,15 @@ export const getSandboxV1Sandboxes = (options) => (options?.client ?? client).ge
6816
8093
  type: 'http'
6817
8094
  }
6818
8095
  ],
6819
- url: '/sandbox/v1/sandboxes',
8096
+ url: '/sandbox/v1/volumes',
6820
8097
  ...options
6821
8098
  });
6822
8099
  /**
6823
- * Create sandbox (v2)
8100
+ * Create team volume
6824
8101
  *
6825
- * Create a sandbox from the template. All system communication with the sandbox is secured.
8102
+ * 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.
6826
8103
  */
6827
- export const postSandboxV1Sandboxes = (options) => (options.client ?? client).post({
8104
+ export const postSandboxV1Volumes = (options) => (options.client ?? client).post({
6828
8105
  security: [
6829
8106
  {
6830
8107
  key: 'sandbox-ApiKeyAuth',
@@ -6853,7 +8130,7 @@ export const postSandboxV1Sandboxes = (options) => (options.client ?? client).po
6853
8130
  type: 'http'
6854
8131
  }
6855
8132
  ],
6856
- url: '/sandbox/v1/sandboxes',
8133
+ url: '/sandbox/v1/volumes',
6857
8134
  ...options,
6858
8135
  headers: {
6859
8136
  'Content-Type': 'application/json',
@@ -6861,11 +8138,11 @@ export const postSandboxV1Sandboxes = (options) => (options.client ?? client).po
6861
8138
  }
6862
8139
  });
6863
8140
  /**
6864
- * Sandbox metrics
8141
+ * Delete team volume
6865
8142
  *
6866
- * 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.
8143
+ * 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.
6867
8144
  */
6868
- export const getSandboxV1SandboxesBySandboxIdMetrics = (options) => (options.client ?? client).get({
8145
+ export const deleteSandboxV1VolumesByVolumeId = (options) => (options.client ?? client).delete({
6869
8146
  security: [
6870
8147
  {
6871
8148
  key: 'sandbox-ApiKeyAuth',
@@ -6894,15 +8171,15 @@ export const getSandboxV1SandboxesBySandboxIdMetrics = (options) => (options.cli
6894
8171
  type: 'http'
6895
8172
  }
6896
8173
  ],
6897
- url: '/sandbox/v1/sandboxes/{sandboxID}/metrics',
8174
+ url: '/sandbox/v1/volumes/{volumeID}',
6898
8175
  ...options
6899
8176
  });
6900
8177
  /**
6901
- * Pause sandbox
8178
+ * Team volume
6902
8179
  *
6903
- * 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.
8180
+ * 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.
6904
8181
  */
6905
- export const postSandboxV1SandboxesBySandboxIdPause = (options) => (options.client ?? client).post({
8182
+ export const getSandboxV1VolumesByVolumeId = (options) => (options.client ?? client).get({
6906
8183
  security: [
6907
8184
  {
6908
8185
  key: 'sandbox-ApiKeyAuth',
@@ -6931,19 +8208,15 @@ export const postSandboxV1SandboxesBySandboxIdPause = (options) => (options.clie
6931
8208
  type: 'http'
6932
8209
  }
6933
8210
  ],
6934
- url: '/sandbox/v1/sandboxes/{sandboxID}/pause',
6935
- ...options,
6936
- headers: {
6937
- 'Content-Type': 'application/json',
6938
- ...options.headers
6939
- }
8211
+ url: '/sandbox/v1/volumes/{volumeID}',
8212
+ ...options
6940
8213
  });
6941
8214
  /**
6942
- * Set sandbox timeout
8215
+ * Fork sandbox
6943
8216
  *
6944
- * 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.
8217
+ * 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.
6945
8218
  */
6946
- export const postSandboxV1SandboxesBySandboxIdTimeout = (options) => (options.client ?? client).post({
8219
+ export const postSandboxV1SandboxesBySandboxIdFork = (options) => (options.client ?? client).post({
6947
8220
  security: [
6948
8221
  {
6949
8222
  key: 'sandbox-ApiKeyAuth',
@@ -6972,7 +8245,7 @@ export const postSandboxV1SandboxesBySandboxIdTimeout = (options) => (options.cl
6972
8245
  type: 'http'
6973
8246
  }
6974
8247
  ],
6975
- url: '/sandbox/v1/sandboxes/{sandboxID}/timeout',
8248
+ url: '/sandbox/v1/sandboxes/{sandboxID}/fork',
6976
8249
  ...options,
6977
8250
  headers: {
6978
8251
  'Content-Type': 'application/json',
@@ -6980,11 +8253,11 @@ export const postSandboxV1SandboxesBySandboxIdTimeout = (options) => (options.cl
6980
8253
  }
6981
8254
  });
6982
8255
  /**
6983
- * Connect sandbox (v2)
8256
+ * Create snapshot
6984
8257
  *
6985
- * 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.
8258
+ * 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.
6986
8259
  */
6987
- export const postSandboxV1SandboxesBySandboxIdConnect = (options) => (options.client ?? client).post({
8260
+ export const postSandboxV1SandboxesBySandboxIdSnapshots = (options) => (options.client ?? client).post({
6988
8261
  security: [
6989
8262
  {
6990
8263
  key: 'sandbox-ApiKeyAuth',
@@ -7013,7 +8286,7 @@ export const postSandboxV1SandboxesBySandboxIdConnect = (options) => (options.cl
7013
8286
  type: 'http'
7014
8287
  }
7015
8288
  ],
7016
- url: '/sandbox/v1/sandboxes/{sandboxID}/connect',
8289
+ url: '/sandbox/v1/sandboxes/{sandboxID}/snapshots',
7017
8290
  ...options,
7018
8291
  headers: {
7019
8292
  'Content-Type': 'application/json',
@@ -7021,11 +8294,11 @@ export const postSandboxV1SandboxesBySandboxIdConnect = (options) => (options.cl
7021
8294
  }
7022
8295
  });
7023
8296
  /**
7024
- * List templates (v2)
8297
+ * List snapshots
7025
8298
  *
7026
- * 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.
8299
+ * 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.
7027
8300
  */
7028
- export const getSandboxV1Templates = (options) => (options?.client ?? client).get({
8301
+ export const getSandboxV1Snapshots = (options) => (options?.client ?? client).get({
7029
8302
  security: [
7030
8303
  {
7031
8304
  key: 'sandbox-ApiKeyAuth',
@@ -7054,15 +8327,15 @@ export const getSandboxV1Templates = (options) => (options?.client ?? client).ge
7054
8327
  type: 'http'
7055
8328
  }
7056
8329
  ],
7057
- url: '/sandbox/v1/templates',
8330
+ url: '/sandbox/v1/snapshots',
7058
8331
  ...options
7059
8332
  });
7060
8333
  /**
7061
- * List team volumes
8334
+ * Delete template
7062
8335
  *
7063
- * 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.
8336
+ * 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.
7064
8337
  */
7065
- export const getSandboxV1Volumes = (options) => (options?.client ?? client).get({
8338
+ export const deleteSandboxV1SnapshotsBySnapshotId = (options) => (options.client ?? client).delete({
7066
8339
  security: [
7067
8340
  {
7068
8341
  key: 'sandbox-ApiKeyAuth',
@@ -7091,15 +8364,15 @@ export const getSandboxV1Volumes = (options) => (options?.client ?? client).get(
7091
8364
  type: 'http'
7092
8365
  }
7093
8366
  ],
7094
- url: '/sandbox/v1/volumes',
8367
+ url: '/sandbox/v1/snapshots/{snapshotID}',
7095
8368
  ...options
7096
8369
  });
7097
8370
  /**
7098
- * Create team volume
8371
+ * Update sandbox network
7099
8372
  *
7100
- * 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.
8373
+ * Update the network configuration for a running sandbox. Replaces the current egress rules with the provided configuration. Omitting field clears it.
7101
8374
  */
7102
- export const postSandboxV1Volumes = (options) => (options.client ?? client).post({
8375
+ export const putSandboxV1SandboxesBySandboxIdNetwork = (options) => (options.client ?? client).put({
7103
8376
  security: [
7104
8377
  {
7105
8378
  key: 'sandbox-ApiKeyAuth',
@@ -7128,7 +8401,7 @@ export const postSandboxV1Volumes = (options) => (options.client ?? client).post
7128
8401
  type: 'http'
7129
8402
  }
7130
8403
  ],
7131
- url: '/sandbox/v1/volumes',
8404
+ url: '/sandbox/v1/sandboxes/{sandboxID}/network',
7132
8405
  ...options,
7133
8406
  headers: {
7134
8407
  'Content-Type': 'application/json',
@@ -7136,11 +8409,11 @@ export const postSandboxV1Volumes = (options) => (options.client ?? client).post
7136
8409
  }
7137
8410
  });
7138
8411
  /**
7139
- * Delete team volume
8412
+ * Sandbox logs (v2)
7140
8413
  *
7141
- * 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.
8414
+ * 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.
7142
8415
  */
7143
- export const deleteSandboxV1VolumesByVolumeId = (options) => (options.client ?? client).delete({
8416
+ export const getSandboxV1SandboxesBySandboxIdLogs = (options) => (options.client ?? client).get({
7144
8417
  security: [
7145
8418
  {
7146
8419
  key: 'sandbox-ApiKeyAuth',
@@ -7169,15 +8442,15 @@ export const deleteSandboxV1VolumesByVolumeId = (options) => (options.client ??
7169
8442
  type: 'http'
7170
8443
  }
7171
8444
  ],
7172
- url: '/sandbox/v1/volumes/{volumeID}',
8445
+ url: '/sandbox/v1/sandboxes/{sandboxID}/logs',
7173
8446
  ...options
7174
8447
  });
7175
8448
  /**
7176
- * Team volume
8449
+ * Start template build (v2)
7177
8450
  *
7178
- * 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.
8451
+ * 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"]}]}.
7179
8452
  */
7180
- export const getSandboxV1VolumesByVolumeId = (options) => (options.client ?? client).get({
8453
+ export const startTemplateBuild = (options) => (options.client ?? client).post({
7181
8454
  security: [
7182
8455
  {
7183
8456
  key: 'sandbox-ApiKeyAuth',
@@ -7206,15 +8479,19 @@ export const getSandboxV1VolumesByVolumeId = (options) => (options.client ?? cli
7206
8479
  type: 'http'
7207
8480
  }
7208
8481
  ],
7209
- url: '/sandbox/v1/volumes/{volumeID}',
7210
- ...options
8482
+ url: '/sandbox/v1/templates/{templateID}/builds/{buildID}',
8483
+ ...options,
8484
+ headers: {
8485
+ 'Content-Type': 'application/json',
8486
+ ...options.headers
8487
+ }
7211
8488
  });
7212
8489
  /**
7213
- * Fork sandbox
8490
+ * Template build status
7214
8491
  *
7215
- * 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.
8492
+ * 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.
7216
8493
  */
7217
- export const postSandboxV1SandboxesBySandboxIdFork = (options) => (options.client ?? client).post({
8494
+ export const getTemplateBuildStatus = (options) => (options.client ?? client).get({
7218
8495
  security: [
7219
8496
  {
7220
8497
  key: 'sandbox-ApiKeyAuth',
@@ -7243,19 +8520,15 @@ export const postSandboxV1SandboxesBySandboxIdFork = (options) => (options.clien
7243
8520
  type: 'http'
7244
8521
  }
7245
8522
  ],
7246
- url: '/sandbox/v1/sandboxes/{sandboxID}/fork',
7247
- ...options,
7248
- headers: {
7249
- 'Content-Type': 'application/json',
7250
- ...options.headers
7251
- }
8523
+ url: '/sandbox/v1/templates/{templateID}/builds/{buildID}/status',
8524
+ ...options
7252
8525
  });
7253
8526
  /**
7254
- * Create snapshot
8527
+ * Delete template
7255
8528
  *
7256
- * 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.
8529
+ * 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.
7257
8530
  */
7258
- export const postSandboxV1SandboxesBySandboxIdSnapshots = (options) => (options.client ?? client).post({
8531
+ export const deleteUserTemplate = (options) => (options.client ?? client).delete({
7259
8532
  security: [
7260
8533
  {
7261
8534
  key: 'sandbox-ApiKeyAuth',
@@ -7284,19 +8557,15 @@ export const postSandboxV1SandboxesBySandboxIdSnapshots = (options) => (options.
7284
8557
  type: 'http'
7285
8558
  }
7286
8559
  ],
7287
- url: '/sandbox/v1/sandboxes/{sandboxID}/snapshots',
7288
- ...options,
7289
- headers: {
7290
- 'Content-Type': 'application/json',
7291
- ...options.headers
7292
- }
8560
+ url: '/sandbox/v1/templates/{templateID}',
8561
+ ...options
7293
8562
  });
7294
8563
  /**
7295
- * List snapshots
8564
+ * List template builds
7296
8565
  *
7297
- * 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.
8566
+ * 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.
7298
8567
  */
7299
- export const getSandboxV1Snapshots = (options) => (options?.client ?? client).get({
8568
+ export const getTemplateWithBuilds = (options) => (options.client ?? client).get({
7300
8569
  security: [
7301
8570
  {
7302
8571
  key: 'sandbox-ApiKeyAuth',
@@ -7325,15 +8594,15 @@ export const getSandboxV1Snapshots = (options) => (options?.client ?? client).ge
7325
8594
  type: 'http'
7326
8595
  }
7327
8596
  ],
7328
- url: '/sandbox/v1/snapshots',
8597
+ url: '/sandbox/v1/templates/{templateID}',
7329
8598
  ...options
7330
8599
  });
7331
8600
  /**
7332
- * Delete template
8601
+ * Delete template tags
7333
8602
  *
7334
- * 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.
8603
+ * 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.
7335
8604
  */
7336
- export const deleteSandboxV1SnapshotsBySnapshotId = (options) => (options.client ?? client).delete({
8605
+ export const deleteTemplateTags = (options) => (options.client ?? client).delete({
7337
8606
  security: [
7338
8607
  {
7339
8608
  key: 'sandbox-ApiKeyAuth',
@@ -7362,15 +8631,19 @@ export const deleteSandboxV1SnapshotsBySnapshotId = (options) => (options.client
7362
8631
  type: 'http'
7363
8632
  }
7364
8633
  ],
7365
- url: '/sandbox/v1/snapshots/{snapshotID}',
7366
- ...options
8634
+ url: '/sandbox/v1/templates/tags',
8635
+ ...options,
8636
+ headers: {
8637
+ 'Content-Type': 'application/json',
8638
+ ...options.headers
8639
+ }
7367
8640
  });
7368
8641
  /**
7369
- * Update sandbox network
8642
+ * Assign template tags
7370
8643
  *
7371
- * Update the network configuration for a running sandbox. Replaces the current egress rules with the provided configuration. Omitting field clears it.
8644
+ * 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.
7372
8645
  */
7373
- export const putSandboxV1SandboxesBySandboxIdNetwork = (options) => (options.client ?? client).put({
8646
+ export const assignTemplateTags = (options) => (options.client ?? client).post({
7374
8647
  security: [
7375
8648
  {
7376
8649
  key: 'sandbox-ApiKeyAuth',
@@ -7399,7 +8672,7 @@ export const putSandboxV1SandboxesBySandboxIdNetwork = (options) => (options.cli
7399
8672
  type: 'http'
7400
8673
  }
7401
8674
  ],
7402
- url: '/sandbox/v1/sandboxes/{sandboxID}/network',
8675
+ url: '/sandbox/v1/templates/tags',
7403
8676
  ...options,
7404
8677
  headers: {
7405
8678
  'Content-Type': 'application/json',
@@ -7407,11 +8680,11 @@ export const putSandboxV1SandboxesBySandboxIdNetwork = (options) => (options.cli
7407
8680
  }
7408
8681
  });
7409
8682
  /**
7410
- * Sandbox logs (v2)
8683
+ * List template tags
7411
8684
  *
7412
- * 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.
8685
+ * 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.
7413
8686
  */
7414
- export const getSandboxV1SandboxesBySandboxIdLogs = (options) => (options.client ?? client).get({
8687
+ export const listTemplateTags = (options) => (options.client ?? client).get({
7415
8688
  security: [
7416
8689
  {
7417
8690
  key: 'sandbox-ApiKeyAuth',
@@ -7440,7 +8713,44 @@ export const getSandboxV1SandboxesBySandboxIdLogs = (options) => (options.client
7440
8713
  type: 'http'
7441
8714
  }
7442
8715
  ],
7443
- url: '/sandbox/v1/sandboxes/{sandboxID}/logs',
8716
+ url: '/sandbox/v1/templates/{templateID}/tags',
8717
+ ...options
8718
+ });
8719
+ /**
8720
+ * Check template alias
8721
+ *
8722
+ * 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.
8723
+ */
8724
+ export const resolveTemplateAlias = (options) => (options.client ?? client).get({
8725
+ security: [
8726
+ {
8727
+ key: 'sandbox-ApiKeyAuth',
8728
+ name: 'X-API-Key',
8729
+ type: 'apiKey'
8730
+ },
8731
+ {
8732
+ key: 'sandbox-AuthProviderBearerAuth',
8733
+ scheme: 'bearer',
8734
+ type: 'http'
8735
+ },
8736
+ {
8737
+ key: 'sandbox-AuthProviderTeamAuth',
8738
+ name: 'X-Team-ID',
8739
+ type: 'apiKey'
8740
+ },
8741
+ { name: 'X-Admin-Token', type: 'apiKey' },
8742
+ {
8743
+ key: 'sandbox-AdminTeamAuth',
8744
+ name: 'X-Team-ID',
8745
+ type: 'apiKey'
8746
+ },
8747
+ {
8748
+ key: 'sandbox-AdminJWTAuth',
8749
+ scheme: 'bearer',
8750
+ type: 'http'
8751
+ }
8752
+ ],
8753
+ url: '/sandbox/v1/templates/aliases/{alias}',
7444
8754
  ...options
7445
8755
  });
7446
8756
  /**
@@ -7656,7 +8966,7 @@ export const vaultListSecrets = (options) => (options.client ?? client).get({
7656
8966
  /**
7657
8967
  * Create secret
7658
8968
  *
7659
- * 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.
8969
+ * 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.
7660
8970
  */
7661
8971
  export const vaultCreateSecret = (options) => (options.client ?? client).post({
7662
8972
  security: [{
@@ -7674,7 +8984,7 @@ export const vaultCreateSecret = (options) => (options.client ?? client).post({
7674
8984
  /**
7675
8985
  * Import secrets
7676
8986
  *
7677
- * 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.
8987
+ * 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.
7678
8988
  */
7679
8989
  export const vaultImportSecrets = (options) => (options.client ?? client).post({
7680
8990
  security: [{
@@ -8226,7 +9536,7 @@ export const ticketGetMilestones = (options) => (options?.client ?? client).get(
8226
9536
  /**
8227
9537
  * Create or add milestones
8228
9538
  *
8229
- * 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.
9539
+ * 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.
8230
9540
  */
8231
9541
  export const ticketPostMilestones = (options) => (options.client ?? client).post({
8232
9542
  security: [{
@@ -8248,7 +9558,7 @@ export const ticketPostMilestones = (options) => (options.client ?? client).post
8248
9558
  /**
8249
9559
  * Remove milestones
8250
9560
  *
8251
- * 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.
9561
+ * 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.
8252
9562
  */
8253
9563
  export const ticketDeleteMilestonesNumber = (options) => (options.client ?? client).delete({
8254
9564
  security: [{
@@ -8284,7 +9594,7 @@ export const ticketGetMilestonesNumber = (options) => (options.client ?? client)
8284
9594
  /**
8285
9595
  * Update milestones
8286
9596
  *
8287
- * 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.
9597
+ * 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.
8288
9598
  */
8289
9599
  export const ticketPatchMilestonesNumber = (options) => (options.client ?? client).patch({
8290
9600
  security: [{