@deepraxis/sdk 0.1.1-dev.daf2585 → 0.1.1-dev.dc553d7

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.
@@ -971,6 +971,20 @@ export const browserViewerHeartbeat = (options) => (options.client ?? client).po
971
971
  ...options.headers
972
972
  }
973
973
  });
974
+ /**
975
+ * 读取会话只读画面帧
976
+ *
977
+ * 读取会话的一张只读画面帧(JPEG 字节)。创建者可读,同组织其他成员只在该会话声明为组织可见时可读;其余情况一律返回 404 SESSION_NOT_FOUND,不提示会话是否存在。响应体没有任何可控制浏览器的凭据,且不接受任何动作参数。
978
+ */
979
+ export const browserGetSessionFrame = (options) => (options.client ?? client).get({
980
+ security: [{
981
+ key: 'BrowserBearer',
982
+ scheme: 'bearer',
983
+ type: 'http'
984
+ }],
985
+ url: '/browser/v1/sessions/{sessionId}/frame',
986
+ ...options
987
+ });
974
988
  /**
975
989
  * 列出浏览器上下文
976
990
  *
@@ -1099,6 +1113,20 @@ export const browserStreamSession = (options) => (options.client ?? client).sse.
1099
1113
  url: '/browser/v1/sessions/{sessionId}/stream',
1100
1114
  ...options
1101
1115
  });
1116
+ /**
1117
+ * 订阅会话只读画面
1118
+ *
1119
+ * SSE:只推送只读画面帧,event 为 frame 或 end,data 为帧的 JSON 或 null;帧 data 是 JPEG 的 base64 编码,ts 是浏览器产生该帧的时刻(epoch 毫秒),约每秒最多 5 帧。评论 ping 每 15 秒一次,end 后关闭。这条通道与 /sessions/{sessionId}/stream 相互独立:它的消息只含画面,绝不含 wsUrl、signingKey、connectUrl、debuggerUrl、debuggerFullscreenUrl。创建者可订阅,同组织其他成员只在该会话声明为组织可见时可订阅;其余情况一律返回 404 SESSION_NOT_FOUND。
1120
+ */
1121
+ export const browserStreamSessionFrames = (options) => (options.client ?? client).sse.get({
1122
+ security: [{
1123
+ key: 'BrowserBearer',
1124
+ scheme: 'bearer',
1125
+ type: 'http'
1126
+ }],
1127
+ url: '/browser/v1/sessions/{sessionId}/frames',
1128
+ ...options
1129
+ });
1102
1130
  /**
1103
1131
  * 读取 Selenium 不支持提示
1104
1132
  *
@@ -7546,77 +7574,59 @@ export const devopsTestReportsUpload = (options) => (options.client ?? client).p
7546
7574
  }
7547
7575
  });
7548
7576
  /**
7549
- * List knowledge bases
7577
+ * List projects
7550
7578
  *
7551
- * 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.
7579
+ * List the delivery projects this organization has, newest first, with each project's repository binding and settings. Call this first when you do not already hold a project id: every other operation in this domain is addressed by one. A project from another organization is never listed, so an empty page means this organization has none rather than that they are hidden. The order is by creation time descending; follow nextPageToken until it is empty to see them all.
7552
7580
  */
7553
- export const knowledgeListVectorStores = (options) => (options?.client ?? client).get({
7581
+ export const devopsProjectsList = (options) => (options?.client ?? client).get({
7554
7582
  security: [{
7555
- key: 'knowledge-bearerAuth',
7583
+ key: 'devops-bearerAuth',
7556
7584
  scheme: 'bearer',
7557
7585
  type: 'http'
7558
7586
  }],
7559
- url: '/knowledge/v1/vector_stores',
7587
+ url: '/devops/v1/projects',
7560
7588
  ...options
7561
7589
  });
7562
7590
  /**
7563
- * Create knowledge base
7564
- *
7565
- * 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. PDF files accept up to 536870912 bytes (512 MiB), while other formats accept up to 52428800 bytes (50 MiB), constrained by Router conversion; every file is limited to 5000000 estimated tokens; each account holds up to 100 active/nondeleted stores. Minimal body: {"name":"Refund policies"}.
7566
- */
7567
- export const knowledgeCreateVectorStore = (options) => (options.client ?? client).post({
7568
- security: [{
7569
- key: 'knowledge-bearerAuth',
7570
- scheme: 'bearer',
7571
- type: 'http'
7572
- }],
7573
- url: '/knowledge/v1/vector_stores',
7574
- ...options,
7575
- headers: {
7576
- 'Content-Type': 'application/json',
7577
- ...options.headers
7578
- }
7579
- });
7580
- /**
7581
- * Delete knowledge base
7591
+ * Retrieve a project
7582
7592
  *
7583
- * 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.
7593
+ * Read one project by id: its repository binding, its release schedule and its gate settings. Use it to confirm a project's configuration before releasing into it, and to learn which environment a promotion order starts from. A project that was deleted, or that belongs to another organization, answers PROJECT_NOT_FOUND — the two are indistinguishable on purpose, so the answer never tells you whether a project exists elsewhere.
7584
7594
  */
7585
- export const knowledgeDeleteVectorStore = (options) => (options.client ?? client).delete({
7595
+ export const devopsProjectsGet = (options) => (options.client ?? client).get({
7586
7596
  security: [{
7587
- key: 'knowledge-bearerAuth',
7597
+ key: 'devops-bearerAuth',
7588
7598
  scheme: 'bearer',
7589
7599
  type: 'http'
7590
7600
  }],
7591
- url: '/knowledge/v1/vector_stores/{vector_store_id}',
7601
+ url: '/devops/v1/projects/{id}',
7592
7602
  ...options
7593
7603
  });
7594
7604
  /**
7595
- * Retrieve knowledge base
7605
+ * List releases
7596
7606
  *
7597
- * 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.
7607
+ * List the project's releases, newest first. Use it to find the release a promotion should carry, or to see what has been released recently and whether any of it was abandoned. The list carries the render state and the abandoned flag, so a caller can skip a release that is still rendering or that was withdrawn without reading each one. Neither filter nor orderBy is accepted on this collection yet; a request that sends one is refused rather than silently ignored.
7598
7608
  */
7599
- export const knowledgeRetrieveVectorStore = (options) => (options.client ?? client).get({
7609
+ export const devopsReleasesList = (options) => (options.client ?? client).get({
7600
7610
  security: [{
7601
- key: 'knowledge-bearerAuth',
7611
+ key: 'devops-bearerAuth',
7602
7612
  scheme: 'bearer',
7603
7613
  type: 'http'
7604
7614
  }],
7605
- url: '/knowledge/v1/vector_stores/{vector_store_id}',
7615
+ url: '/devops/v1/projects/{project}/releases',
7606
7616
  ...options
7607
7617
  });
7608
7618
  /**
7609
- * Update knowledge base
7619
+ * Create a release
7610
7620
  *
7611
- * Updates an active knowledge base using its returned id. Omitted fields stay unchanged; metadata replaces the whole map. Example body: {"name":"Refund policies"}.
7621
+ * Create a release: an immutable snapshot of what will be deployed, named and fingerprinted once so later promotions can be compared against it. Send commit to release a commit as it stands, or base plus picks to build a patch release on a release that is already in production; the two shapes are exclusive and the patch shape is refused with PATCH_NOT_ELIGIBLE when the picks do not qualify. Rendering starts immediately and the answer reports its state; a promotion refuses a release that is still rendering with RELEASE_NOT_READY rather than deploying half of it. Set validateOnly to see the plan and the refusals without writing a release, and requestId to make a retry of the same call answer the first release instead of creating a second.
7612
7622
  */
7613
- export const knowledgeUpdateVectorStore = (options) => (options.client ?? client).post({
7623
+ export const devopsReleasesCreate = (options) => (options.client ?? client).post({
7614
7624
  security: [{
7615
- key: 'knowledge-bearerAuth',
7625
+ key: 'devops-bearerAuth',
7616
7626
  scheme: 'bearer',
7617
7627
  type: 'http'
7618
7628
  }],
7619
- url: '/knowledge/v1/vector_stores/{vector_store_id}',
7629
+ url: '/devops/v1/projects/{project}/releases',
7620
7630
  ...options,
7621
7631
  headers: {
7622
7632
  'Content-Type': 'application/json',
@@ -7624,49 +7634,49 @@ export const knowledgeUpdateVectorStore = (options) => (options.client ?? client
7624
7634
  }
7625
7635
  });
7626
7636
  /**
7627
- * Search knowledge base
7637
+ * Retrieve a release
7628
7638
  *
7629
- * 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.
7639
+ * Read one release in full: the commit it carries, the targets and source digests it was rendered from, which environments have verified it, and where it currently runs. Call it before promoting to confirm the release is not abandoned and that its render succeeded, and after deploying to learn which environments already hold it so the same release is not promoted twice. A release from another organization answers RELEASE_NOT_FOUND, which is also the answer for one that never existed.
7630
7640
  */
7631
- export const knowledgeSearchVectorStore = (options) => (options.client ?? client).post({
7641
+ export const devopsReleasesGet = (options) => (options.client ?? client).get({
7632
7642
  security: [{
7633
- key: 'knowledge-bearerAuth',
7643
+ key: 'devops-bearerAuth',
7634
7644
  scheme: 'bearer',
7635
7645
  type: 'http'
7636
7646
  }],
7637
- url: '/knowledge/v1/vector_stores/{vector_store_id}/search',
7638
- ...options,
7639
- headers: {
7640
- 'Content-Type': 'application/json',
7641
- ...options.headers
7642
- }
7647
+ url: '/devops/v1/releases/{id}',
7648
+ ...options
7643
7649
  });
7644
7650
  /**
7645
- * List files
7651
+ * Abandon a release
7646
7652
  *
7647
- * 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.
7653
+ * Withdraw a release so it can no longer be promoted: a later promotion of it is refused with RELEASE_ABANDONED. Use it when a release was created by mistake or has been superseded, and record why in reason — the reason is stored on the release as the attribution of the act. A release with a promotion still in flight cannot be abandoned, because the queue is mid-flight on it; cancel that promotion first, which is the door for stopping a deployment. Abandoning is one-way: a withdrawn release is never un-abandoned, and a new release is created instead.
7648
7654
  */
7649
- export const knowledgeListFiles = (options) => (options.client ?? client).get({
7655
+ export const devopsReleasesAbandon = (options) => (options.client ?? client).post({
7650
7656
  security: [{
7651
- key: 'knowledge-bearerAuth',
7657
+ key: 'devops-bearerAuth',
7652
7658
  scheme: 'bearer',
7653
7659
  type: 'http'
7654
7660
  }],
7655
- url: '/knowledge/v1/vector_stores/{vector_store_id}/files',
7656
- ...options
7661
+ url: '/devops/v1/releases/{id}:abandon',
7662
+ ...options,
7663
+ headers: {
7664
+ 'Content-Type': 'application/json',
7665
+ ...options.headers
7666
+ }
7657
7667
  });
7658
7668
  /**
7659
- * Add file
7669
+ * Create a promotion
7660
7670
  *
7661
- * Attach an uploaded File for asynchronous ingestion, then poll this attachment until status is completed, failed or cancelled before searching. PDF files accept up to 536870912 bytes (512 MiB), while other formats accept up to 52428800 bytes (50 MiB), constrained by Router conversion; every file is limited to 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.
7671
+ * Promote a release into one environment: this is the operation that actually schedules a deployment. Name the release and the environment; path is regular for an ordinary promotion, patch to carry a patch release, targeted to deploy only the targets you list, and rollback to return the environment to an earlier release. The service reads the environment's promotion order and refuses when an upstream environment has not verified this release yet, unless a bypass carries the authorization for that gate. An environment takes one promotion at a time, so a create while another is running is queued behind it rather than refused. Set validateOnly to read the plan and its refusals — layers, skipped targets, pending migrations, missing configuration keys — without scheduling anything, which is the safe way to find out what a promotion will do.
7662
7672
  */
7663
- export const knowledgeAttachFile = (options) => (options.client ?? client).post({
7673
+ export const devopsPromotionsCreate = (options) => (options.client ?? client).post({
7664
7674
  security: [{
7665
- key: 'knowledge-bearerAuth',
7675
+ key: 'devops-bearerAuth',
7666
7676
  scheme: 'bearer',
7667
7677
  type: 'http'
7668
7678
  }],
7669
- url: '/knowledge/v1/vector_stores/{vector_store_id}/files',
7679
+ url: '/devops/v1/promotions',
7670
7680
  ...options,
7671
7681
  headers: {
7672
7682
  'Content-Type': 'application/json',
@@ -7674,45 +7684,45 @@ export const knowledgeAttachFile = (options) => (options.client ?? client).post(
7674
7684
  }
7675
7685
  });
7676
7686
  /**
7677
- * Remove file
7687
+ * List promotions
7678
7688
  *
7679
- * Removes the file from search immediately; does not delete the original File.
7689
+ * List the project's promotions, newest first, across every environment. Use it to see what is queued, what is observing, and what finished recently, without reading each environment separately. A promotion in a terminal state stays in this list, which is how a caller tells "never promoted" apart from "promoted and then rolled back". Neither filter nor orderBy is accepted yet, so page through with pageToken instead of narrowing the query.
7680
7690
  */
7681
- export const knowledgeRemoveFile = (options) => (options.client ?? client).delete({
7691
+ export const devopsPromotionsList = (options) => (options.client ?? client).get({
7682
7692
  security: [{
7683
- key: 'knowledge-bearerAuth',
7693
+ key: 'devops-bearerAuth',
7684
7694
  scheme: 'bearer',
7685
7695
  type: 'http'
7686
7696
  }],
7687
- url: '/knowledge/v1/vector_stores/{vector_store_id}/files/{file_id}',
7697
+ url: '/devops/v1/projects/{project}/promotions',
7688
7698
  ...options
7689
7699
  });
7690
7700
  /**
7691
- * Retrieve file
7701
+ * Retrieve a promotion
7692
7702
  *
7693
- * 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.
7703
+ * Read one promotion: its state, its approval, its plan, and the failure that stopped it when there is one. Poll this after creating a promotion to follow it to a terminal state, or read it to find out why a deployment stopped — failure.cause tells plan refusal apart from a failed deploy, and executor names the runs involved. Pass expand=rollouts to receive the per-target rollouts in the same answer instead of listing them separately. state observing means the environment is deployed and the observation window is running, so the promotion is not finished and conclude is still to come.
7694
7704
  */
7695
- export const knowledgeRetrieveFile = (options) => (options.client ?? client).get({
7705
+ export const devopsPromotionsGet = (options) => (options.client ?? client).get({
7696
7706
  security: [{
7697
- key: 'knowledge-bearerAuth',
7707
+ key: 'devops-bearerAuth',
7698
7708
  scheme: 'bearer',
7699
7709
  type: 'http'
7700
7710
  }],
7701
- url: '/knowledge/v1/vector_stores/{vector_store_id}/files/{file_id}',
7711
+ url: '/devops/v1/promotions/{id}',
7702
7712
  ...options
7703
7713
  });
7704
7714
  /**
7705
- * Update file attributes
7715
+ * Approve or reject a promotion
7706
7716
  *
7707
- * 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.
7717
+ * Answer the approval an environment asked for: send approved true to let the promotion proceed, false to reject it and end it in approval_rejected. This is the environment-level gate an environment with requireApproval raises, not the per-rollout approval. Comment records the reasoning next to the decision, which is what a later reader sees instead of the bare verdict. The call is refused with PROMOTION_NOT_AWAITING_APPROVAL when the promotion is not waiting for one, so a stale approval cannot restart something that already finished. Approving is attributed to the credential that sends it.
7708
7718
  */
7709
- export const knowledgeUpdateFile = (options) => (options.client ?? client).post({
7719
+ export const devopsPromotionsApprove = (options) => (options.client ?? client).post({
7710
7720
  security: [{
7711
- key: 'knowledge-bearerAuth',
7721
+ key: 'devops-bearerAuth',
7712
7722
  scheme: 'bearer',
7713
7723
  type: 'http'
7714
7724
  }],
7715
- url: '/knowledge/v1/vector_stores/{vector_store_id}/files/{file_id}',
7725
+ url: '/devops/v1/promotions/{id}:approve',
7716
7726
  ...options,
7717
7727
  headers: {
7718
7728
  'Content-Type': 'application/json',
@@ -7720,189 +7730,201 @@ export const knowledgeUpdateFile = (options) => (options.client ?? client).post(
7720
7730
  }
7721
7731
  });
7722
7732
  /**
7723
- * Read extracted content
7733
+ * Cancel a promotion
7724
7734
  *
7725
- * Extracted text chunks may overlap. Image content can be a generated description rather than verbatim OCR.
7735
+ * Stop a promotion that has not finished, moving it through cancelling to cancelled and stopping the deploys it had scheduled. Use it to halt a deployment that is failing or that should no longer continue; reason is recorded as the attribution of the stop. Cancelling does not undo what already deployed: an environment whose targets were written keeps those targets, and returning them to an earlier release is a separate rollback promotion. A promotion that already reached a terminal state is refused with PROMOTION_ALREADY_FINISHED rather than silently ignored.
7726
7736
  */
7727
- export const knowledgeRetrieveFileContent = (options) => (options.client ?? client).get({
7737
+ export const devopsPromotionsCancel = (options) => (options.client ?? client).post({
7728
7738
  security: [{
7729
- key: 'knowledge-bearerAuth',
7739
+ key: 'devops-bearerAuth',
7730
7740
  scheme: 'bearer',
7731
7741
  type: 'http'
7732
7742
  }],
7733
- url: '/knowledge/v1/vector_stores/{vector_store_id}/files/{file_id}/content',
7734
- ...options
7743
+ url: '/devops/v1/promotions/{id}:cancel',
7744
+ ...options,
7745
+ headers: {
7746
+ 'Content-Type': 'application/json',
7747
+ ...options.headers
7748
+ }
7735
7749
  });
7736
7750
  /**
7737
- * Create file batch
7751
+ * Retry a promotion
7738
7752
  *
7739
- * 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.
7753
+ * Continue a promotion that stopped part-way, such as one in halted where some targets succeeded and others failed. The retry re-runs the targets that did not succeed and leaves the ones that did alone, so a partially deployed environment is completed rather than redeployed from the start. A promotion that is still running is refused, and so is one that already reached a terminal state; read the promotion first and retry only a halted or errored one. The retry is attributed to the credential that sends it and is recorded on the promotion.
7740
7754
  */
7741
- export const knowledgeCreateFileBatch = (options) => (options.client ?? client).post({
7755
+ export const devopsPromotionsRetry = (options) => (options.client ?? client).post({
7742
7756
  security: [{
7743
- key: 'knowledge-bearerAuth',
7757
+ key: 'devops-bearerAuth',
7744
7758
  scheme: 'bearer',
7745
7759
  type: 'http'
7746
7760
  }],
7747
- url: '/knowledge/v1/vector_stores/{vector_store_id}/file_batches',
7748
- ...options,
7749
- headers: {
7750
- 'Content-Type': 'application/json',
7751
- ...options.headers
7752
- }
7761
+ url: '/devops/v1/promotions/{id}:retry',
7762
+ ...options
7753
7763
  });
7754
7764
  /**
7755
- * Retrieve file batch
7765
+ * Conclude an observation
7756
7766
  *
7757
- * 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.
7767
+ * Record the verdict on a promotion that is observing: send keep to accept the deployment as the environment's new state, or rollback to return the environment to the release it held before. This is the decision the observation window exists for, so a promotion in observing state stays open until it is concluded; reason is stored as the attribution. Concluding with rollback schedules the return, it does not merely label the promotion. A promotion that is not observing is refused with PROMOTION_NOT_OBSERVING, which is how a caller tells "already concluded" apart from a call that had no effect.
7758
7768
  */
7759
- export const knowledgeRetrieveFileBatch = (options) => (options.client ?? client).get({
7769
+ export const devopsPromotionsConclude = (options) => (options.client ?? client).post({
7760
7770
  security: [{
7761
- key: 'knowledge-bearerAuth',
7771
+ key: 'devops-bearerAuth',
7762
7772
  scheme: 'bearer',
7763
7773
  type: 'http'
7764
7774
  }],
7765
- url: '/knowledge/v1/vector_stores/{vector_store_id}/file_batches/{batch_id}',
7766
- ...options
7775
+ url: '/devops/v1/promotions/{id}:conclude',
7776
+ ...options,
7777
+ headers: {
7778
+ 'Content-Type': 'application/json',
7779
+ ...options.headers
7780
+ }
7767
7781
  });
7768
7782
  /**
7769
- * Cancel file batch
7783
+ * List a promotion's rollouts
7770
7784
  *
7771
- * Cancels only in-progress batches and pending files. Completed, failed and cancelled batches return unchanged (200, idempotent).
7785
+ * List the per-target rollouts of one promotion: which target each is deploying, which layer it waits on, and where in its phases it has got to. Call it when a promotion is halted or failed to find the target that stopped, since the promotion's own state summarises what the rollouts show one by one. A promotion with nothing to deploy answers an empty page rather than a refusal. Neither filter nor orderBy is accepted here, and the rollouts come in the order the plan laid them out.
7772
7786
  */
7773
- export const knowledgeCancelFileBatch = (options) => (options.client ?? client).post({
7787
+ export const devopsRolloutsList = (options) => (options.client ?? client).get({
7774
7788
  security: [{
7775
- key: 'knowledge-bearerAuth',
7789
+ key: 'devops-bearerAuth',
7776
7790
  scheme: 'bearer',
7777
7791
  type: 'http'
7778
7792
  }],
7779
- url: '/knowledge/v1/vector_stores/{vector_store_id}/file_batches/{batch_id}/cancel',
7793
+ url: '/devops/v1/promotions/{promotion}/rollouts',
7780
7794
  ...options
7781
7795
  });
7782
7796
  /**
7783
- * List batch files
7797
+ * Retrieve a rollout
7784
7798
  *
7785
- * 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.
7799
+ * Read one rollout in full: its phases and the jobs inside them, each job's most recent attempt, the checkpoint it was deploying from, and why it failed when it did. This is the level that names the failing step — a promotion tells you that a target failed, a rollout tells you which job run did and what it reported. Use logFileId or a job run's eventLogPath to reach the logs that step produced. A rollout from another organization answers ROLLOUT_NOT_FOUND, the same answer as one that never existed.
7786
7800
  */
7787
- export const knowledgeListBatchFiles = (options) => (options.client ?? client).get({
7801
+ export const devopsRolloutsGet = (options) => (options.client ?? client).get({
7788
7802
  security: [{
7789
- key: 'knowledge-bearerAuth',
7803
+ key: 'devops-bearerAuth',
7790
7804
  scheme: 'bearer',
7791
7805
  type: 'http'
7792
7806
  }],
7793
- url: '/knowledge/v1/vector_stores/{vector_store_id}/file_batches/{batch_id}/files',
7807
+ url: '/devops/v1/rollouts/{id}',
7794
7808
  ...options
7795
7809
  });
7796
7810
  /**
7797
- * Restore knowledge base
7811
+ * List environments
7798
7812
  *
7799
- * Restores a deleting store within 7 days. Active stores return 409 VECTOR_STORE_INVALID_STATE; absent stores return 404. Empty body is allowed.
7813
+ * List the project's environments in promotion order: development first, production last. order is the promotion sequence, so the environment before the one you are promoting into is the one that must have verified the release first. Each entry carries its tier, whether it requires approval, and whether its queue is idle or busy; a busy queue names the promotion holding it and how many wait behind. This collection is not paged: a project has few environments and the whole ordered list is the answer.
7800
7814
  */
7801
- export const knowledgeRestoreVectorStore = (options) => (options.client ?? client).post({
7815
+ export const devopsEnvironmentsList = (options) => (options.client ?? client).get({
7802
7816
  security: [{
7803
- key: 'knowledge-bearerAuth',
7817
+ key: 'devops-bearerAuth',
7804
7818
  scheme: 'bearer',
7805
7819
  type: 'http'
7806
7820
  }],
7807
- url: '/knowledge/v1/vector_stores/{vector_store_id}/restore',
7821
+ url: '/devops/v1/projects/{project}/environments',
7808
7822
  ...options
7809
7823
  });
7810
7824
  /**
7811
- * Permanently purge knowledge base
7825
+ * List environment checkpoints
7812
7826
  *
7813
- * Immediately and irreversibly clears a deleting store using the retention cleanup path. Active stores return 409; absent stores return 404. Empty body is allowed.
7827
+ * List where each target of an environment currently stands: the release and commit deployed to it, the promotion that put it there, and how far behind the default branch that commit is. Read it to answer "what is running in production right now" and to tell a promotion that will change something apart from one that will skip every target as unchanged. behindMain counts commits on the default branch that the deployed commit does not have, so zero means the environment carries the current branch head. Targets that were never deployed to have no checkpoints until something deploys to them.
7814
7828
  */
7815
- export const knowledgePurgeVectorStore = (options) => (options.client ?? client).post({
7829
+ export const devopsEnvironmentsCheckpointsList = (options) => (options.client ?? client).get({
7816
7830
  security: [{
7817
- key: 'knowledge-bearerAuth',
7831
+ key: 'devops-bearerAuth',
7818
7832
  scheme: 'bearer',
7819
7833
  type: 'http'
7820
7834
  }],
7821
- url: '/knowledge/v1/vector_stores/{vector_store_id}/purge',
7835
+ url: '/devops/v1/environments/{id}/checkpoints',
7822
7836
  ...options
7823
7837
  });
7824
7838
  /**
7825
- * Retry failed file
7839
+ * List targets
7826
7840
  *
7827
- * Retries only failed files; other states return 409 FILE_INVALID_STATE. Retry after failure has not yet been observed in the documented run.
7841
+ * List what the project deploys — one target per deployable path in the repository, with its kind, its destination and the targets it depends on. Targets are discovered from the code, not entered by hand, so this list is the service's reading of the repository rather than a configuration you maintain here. A project whose catalog has never been read has it read on the first call, at the default branch's head, so the first answer is already the catalog instead of an empty page. Archived targets, which the repository no longer deploys, are left out.
7828
7842
  */
7829
- export const knowledgeRetryFile = (options) => (options.client ?? client).post({
7843
+ export const devopsTargetsList = (options) => (options.client ?? client).get({
7830
7844
  security: [{
7831
- key: 'knowledge-bearerAuth',
7845
+ key: 'devops-bearerAuth',
7832
7846
  scheme: 'bearer',
7833
7847
  type: 'http'
7834
7848
  }],
7835
- url: '/knowledge/v1/vector_stores/{vector_store_id}/files/{file_id}/retry',
7849
+ url: '/devops/v1/projects/{project}/targets',
7836
7850
  ...options
7837
7851
  });
7838
7852
  /**
7839
- * List file segments
7853
+ * Refresh the target catalog
7840
7854
  *
7841
- * 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.
7855
+ * Re-read the repository at a commit and answer the deployment targets it implies, recording what was found. Call it after adding or removing a deployable service so later promotions see the current layout; omit commit to read the default branch's head, or name one to read that commit. The answer includes the dependency graph and any cycles in it, and a cycle is reported rather than refused, matching how the deploy pipeline treats one. This is a read of the repository that also remembers what it read, so it is safe to call again; nothing is deployed by it.
7842
7856
  */
7843
- export const knowledgeListSegments = (options) => (options.client ?? client).get({
7857
+ export const devopsTargetsRefresh = (options) => (options.client ?? client).post({
7844
7858
  security: [{
7845
- key: 'knowledge-bearerAuth',
7859
+ key: 'devops-bearerAuth',
7846
7860
  scheme: 'bearer',
7847
7861
  type: 'http'
7848
7862
  }],
7849
- url: '/knowledge/v1/vector_stores/{vector_store_id}/files/{file_id}/segments',
7850
- ...options
7863
+ url: '/devops/v1/projects/{project}/targets:refresh',
7864
+ ...options,
7865
+ headers: {
7866
+ 'Content-Type': 'application/json',
7867
+ ...options.headers
7868
+ }
7851
7869
  });
7852
7870
  /**
7853
- * Retrieve segment
7871
+ * List flags
7854
7872
  *
7855
- * 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.
7873
+ * List the project's flags with their per-environment configuration, newest first. Use it to find a flag by key when code names one, and to review the flags of a project — the entries carry lifecycle, staleness, the observation deadline and the removal ticket, which is what an expiry review reads. filter accepts exactly one term, lifecycle=archived, to list the archived flags instead of the live ones; any other filter or orderBy is refused rather than ignored. totalSize is answered on the first page only.
7856
7874
  */
7857
- export const knowledgeRetrieveSegment = (options) => (options.client ?? client).get({
7875
+ export const devopsFlagsList = (options) => (options.client ?? client).get({
7858
7876
  security: [{
7859
- key: 'knowledge-bearerAuth',
7877
+ key: 'devops-bearerAuth',
7860
7878
  scheme: 'bearer',
7861
7879
  type: 'http'
7862
7880
  }],
7863
- url: '/knowledge/v1/vector_stores/{vector_store_id}/segments/{chunk_id}',
7881
+ url: '/devops/v1/projects/{project}/flags',
7864
7882
  ...options
7865
7883
  });
7866
7884
  /**
7867
- * List events
7885
+ * Create a flag
7868
7886
  *
7869
- * 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.
7887
+ * Create a feature flag in a project: its key, what kind of flag it is, the values it can serve, and which variation is served when it is off. The key is what code names, so it is unique per project and a key already in use is refused with FLAG_KEY_TAKEN rather than reused — an archived flag keeps its key. owner, observeUntil and removalTicket carry the flag's lifecycle: a release or experiment flag expects an observation deadline and the ticket that removes it, and a flag missing them is refused with FLAG_LIFECYCLE_INCOMPLETE. A new flag starts with every environment off, so creating one changes no runtime behaviour; turn an environment on with the environment update.
7870
7888
  */
7871
- export const knowledgeListEvents = (options) => (options.client ?? client).get({
7889
+ export const devopsFlagsCreate = (options) => (options.client ?? client).post({
7872
7890
  security: [{
7873
- key: 'knowledge-bearerAuth',
7891
+ key: 'devops-bearerAuth',
7874
7892
  scheme: 'bearer',
7875
7893
  type: 'http'
7876
7894
  }],
7877
- url: '/knowledge/v1/vector_stores/{vector_store_id}/events',
7878
- ...options
7895
+ url: '/devops/v1/projects/{project}/flags',
7896
+ ...options,
7897
+ headers: {
7898
+ 'Content-Type': 'application/json',
7899
+ ...options.headers
7900
+ }
7879
7901
  });
7880
7902
  /**
7881
- * List libraries
7903
+ * Retrieve a flag
7882
7904
  *
7883
- * 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.
7905
+ * Read one flag in full: every environment's configuration, the rules and rollouts each environment serves, the flag's lifecycle, and where code references its key as of the last scan. Call it before changing an environment so you can send the version you read, and after a release to confirm the flag reached the state you expected. An archived flag is still readable here — that is how its key and history stay answerable after it stopped evaluating. codeRefs.count tells you how much code still names the key, which is what decides whether removing the flag is safe.
7884
7906
  */
7885
- export const mediaListLibraries = (options) => (options?.client ?? client).get({
7907
+ export const devopsFlagsGet = (options) => (options.client ?? client).get({
7886
7908
  security: [{
7887
- key: 'media-BearerAuth',
7909
+ key: 'devops-bearerAuth',
7888
7910
  scheme: 'bearer',
7889
7911
  type: 'http'
7890
7912
  }],
7891
- url: '/media/v1/libraries',
7913
+ url: '/devops/v1/flags/{id}',
7892
7914
  ...options
7893
7915
  });
7894
7916
  /**
7895
- * Create library
7917
+ * Update a flag
7896
7918
  *
7897
- * 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.
7919
+ * Change a flag's metadata — its name, description, owner, observation deadline, removal ticket or tags — without touching what any environment serves. Send the fields to change inside flag and name them in updateMask; a field present in flag but absent from the mask is left alone, and a mask naming a field this operation cannot change is refused rather than ignored. Sending null clears a nullable field such as observeUntil. Served values are not changed here: use the environment update for what an environment serves, which is versioned and checked. An archived flag cannot be updated.
7898
7920
  */
7899
- export const mediaCreateLibrary = (options) => (options.client ?? client).post({
7921
+ export const devopsFlagsUpdate = (options) => (options.client ?? client).patch({
7900
7922
  security: [{
7901
- key: 'media-BearerAuth',
7923
+ key: 'devops-bearerAuth',
7902
7924
  scheme: 'bearer',
7903
7925
  type: 'http'
7904
7926
  }],
7905
- url: '/media/v1/libraries',
7927
+ url: '/devops/v1/flags/{id}',
7906
7928
  ...options,
7907
7929
  headers: {
7908
7930
  'Content-Type': 'application/json',
@@ -7910,17 +7932,17 @@ export const mediaCreateLibrary = (options) => (options.client ?? client).post({
7910
7932
  }
7911
7933
  });
7912
7934
  /**
7913
- * Create frame URLs
7935
+ * Update a flag's environment
7914
7936
  *
7915
- * Media creates JPEG frame URLs for inspecting one or more moments in a video without downloading the original. Obtain library_id from libraries and asset_id plus duration from assets. Send 1–20 integer microsecond timestamps strictly below duration, for example {"at_micros":[0,1000000],"width":640}. Only video assets are supported; audio and images return INVALID_PARAMS. Width defaults to 640 and accepts 160, 320 or 640. This read operation does not store a new asset or rerun understanding. Fetch each returned URL to obtain the frame; delivery usage follows media pricing. Authenticated links expire after 300 seconds; upload links remain public and permanent. Reissue expired links. Foreign libraries and assets return 404 without revealing their existence.
7937
+ * Change what one environment of a flag serves: whether it is on, its targeting rules, its prerequisite flags, its individually targeted keys, its fallthrough, and the progressive rollout it runs. This is the write that changes runtime behaviour, so it is versioned: send the version you read and a change based on a stale version is refused with FLAG_VERSION_CONFLICT instead of silently overwriting someone else's edit. comment records why the configuration changed, next to the change itself. Targets whose keys are not deployed yet are refused with FLAG_CODE_NOT_DEPLOYED, because serving a variation the running code cannot name would fail at evaluation time.
7916
7938
  */
7917
- export const mediaCreateFrameUrls = (options) => (options.client ?? client).post({
7939
+ export const devopsFlagsUpdateEnvironment = (options) => (options.client ?? client).patch({
7918
7940
  security: [{
7919
- key: 'media-BearerAuth',
7941
+ key: 'devops-bearerAuth',
7920
7942
  scheme: 'bearer',
7921
7943
  type: 'http'
7922
7944
  }],
7923
- url: '/media/v1/libraries/{library_id}/assets/{asset_id}/frames',
7945
+ url: '/devops/v1/flags/{id}/environments/{environment}',
7924
7946
  ...options,
7925
7947
  headers: {
7926
7948
  'Content-Type': 'application/json',
@@ -7928,45 +7950,49 @@ export const mediaCreateFrameUrls = (options) => (options.client ?? client).post
7928
7950
  }
7929
7951
  });
7930
7952
  /**
7931
- * Delete library
7953
+ * Conclude a flag
7932
7954
  *
7933
- * 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.
7955
+ * Record the decision a temporary flag's observation window ended with: promote makes the chosen variation the permanent behaviour and moves the flag to launched, rollback returns the environment to its off behaviour, and extend keeps observing with a new observeUntil deadline. reason is stored as the attribution of the decision. This is the act the observation flag machinery requires when the deadline arrives, so an expired flag is concluded rather than left standing. A promote or rollback finishes the flag's rollout; the code and the flag are then removed by the ticket the flag recorded, which this call does not do.
7934
7956
  */
7935
- export const mediaDeleteLibrary = (options) => (options.client ?? client).delete({
7957
+ export const devopsFlagsConclude = (options) => (options.client ?? client).post({
7936
7958
  security: [{
7937
- key: 'media-BearerAuth',
7959
+ key: 'devops-bearerAuth',
7938
7960
  scheme: 'bearer',
7939
7961
  type: 'http'
7940
7962
  }],
7941
- url: '/media/v1/libraries/{library_id}',
7942
- ...options
7963
+ url: '/devops/v1/flags/{id}:conclude',
7964
+ ...options,
7965
+ headers: {
7966
+ 'Content-Type': 'application/json',
7967
+ ...options.headers
7968
+ }
7943
7969
  });
7944
7970
  /**
7945
- * Get library
7971
+ * Archive a flag
7946
7972
  *
7947
- * 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.
7973
+ * Archive a flag once it is no longer needed: it stops evaluating in every environment, leaves the ordinary flag list, and keeps its key and history. Use it for a flag whose code has been removed and whose key nothing names any more; codeRefs.count on the flag is what tells you whether that is true. Archiving is the terminal lifecycle state — an archived flag is never un-archived and its key is never reused, so a flag that may come back is turned off in its environment instead. The key stays reserved, which is why a later create with the same key is refused.
7948
7974
  */
7949
- export const mediaGetLibrary = (options) => (options.client ?? client).get({
7975
+ export const devopsFlagsArchive = (options) => (options.client ?? client).post({
7950
7976
  security: [{
7951
- key: 'media-BearerAuth',
7977
+ key: 'devops-bearerAuth',
7952
7978
  scheme: 'bearer',
7953
7979
  type: 'http'
7954
7980
  }],
7955
- url: '/media/v1/libraries/{library_id}',
7981
+ url: '/devops/v1/flags/{id}:archive',
7956
7982
  ...options
7957
7983
  });
7958
7984
  /**
7959
- * Update library
7985
+ * Create a progressive rollout
7960
7986
  *
7961
- * Update an active library. Set hotwords for spelling evidence in subsequent transcripts; [] disables inferred vocabulary. Transcript understanding calls the timestamped ASR, optional reference ASR and correction model through the existing metered model path. Reprocess assets to apply new settings to existing transcripts.
7987
+ * Start a staged rollout of one variation of a flag in one environment: the steps are percentages with a hold time each, and the guard says which signals are watched and whether a bad reading pauses the rollout or rolls it back. Use it instead of turning a flag fully on, so a bad variation is caught at a small percentage. bucketBy names the context attribute that decides which bucket a caller falls into, so the same caller stays in the same bucket across steps. One progressive rollout runs per flag and environment; a second one while the first is active is refused with ROLLOUT_ALREADY_ACTIVE.
7962
7988
  */
7963
- export const mediaUpdateLibrary = (options) => (options.client ?? client).patch({
7989
+ export const devopsProgressiveRolloutsCreate = (options) => (options.client ?? client).post({
7964
7990
  security: [{
7965
- key: 'media-BearerAuth',
7991
+ key: 'devops-bearerAuth',
7966
7992
  scheme: 'bearer',
7967
7993
  type: 'http'
7968
7994
  }],
7969
- url: '/media/v1/libraries/{library_id}',
7995
+ url: '/devops/v1/progressive-rollouts',
7970
7996
  ...options,
7971
7997
  headers: {
7972
7998
  'Content-Type': 'application/json',
@@ -7974,59 +8000,63 @@ export const mediaUpdateLibrary = (options) => (options.client ?? client).patch(
7974
8000
  }
7975
8001
  });
7976
8002
  /**
7977
- * Restore library
8003
+ * Retrieve a progressive rollout
7978
8004
  *
7979
- * 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.
8005
+ * Read one progressive rollout: which step it is on, how much of the audience that is, when the next step is due, and every step it has already taken with who moved it and why. Poll it to follow a rollout, and read history to find out why it paused or rolled back — a guard that fired leaves the step and the reason there. state scheduled means the first step has not started, running means it is advancing on its hold times, and rolled_back is terminal. nextStepTime is the time the current hold ends.
7980
8006
  */
7981
- export const mediaRestoreLibrary = (options) => (options.client ?? client).post({
8007
+ export const devopsProgressiveRolloutsGet = (options) => (options.client ?? client).get({
7982
8008
  security: [{
7983
- key: 'media-BearerAuth',
8009
+ key: 'devops-bearerAuth',
7984
8010
  scheme: 'bearer',
7985
8011
  type: 'http'
7986
8012
  }],
7987
- url: '/media/v1/libraries/{library_id}/restore',
8013
+ url: '/devops/v1/progressive-rollouts/{id}',
7988
8014
  ...options
7989
8015
  });
7990
8016
  /**
7991
- * Purge library
8017
+ * Pause a progressive rollout
7992
8018
  *
7993
- * 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.
8019
+ * Hold a running progressive rollout at its current percentage: no further step is taken until it is resumed, and the percentage already served keeps being served. Use it when a guard signal looks wrong but not wrong enough to roll back, so a person can look before the rollout advances. reason is recorded on the rollout as the attribution of the hold. Pausing a rollout that already completed or was rolled back is refused; read it first to see whether there is anything to hold.
7994
8020
  */
7995
- export const mediaPurgeLibrary = (options) => (options.client ?? client).post({
8021
+ export const devopsProgressiveRolloutsPause = (options) => (options.client ?? client).post({
7996
8022
  security: [{
7997
- key: 'media-BearerAuth',
8023
+ key: 'devops-bearerAuth',
7998
8024
  scheme: 'bearer',
7999
8025
  type: 'http'
8000
8026
  }],
8001
- url: '/media/v1/libraries/{library_id}/purge',
8002
- ...options
8027
+ url: '/devops/v1/progressive-rollouts/{id}:pause',
8028
+ ...options,
8029
+ headers: {
8030
+ 'Content-Type': 'application/json',
8031
+ ...options.headers
8032
+ }
8003
8033
  });
8004
8034
  /**
8005
- * List assets
8035
+ * Resume a progressive rollout
8006
8036
  *
8007
- * 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.
8037
+ * Continue a paused progressive rollout from the step it stopped at, restarting the hold time for the current step rather than skipping it. Use it after a pause has been looked into and the rollout is judged safe to continue. A rollout that is running already, or that finished, is refused; read it first to see whether it is paused. The resumption is attributed to the credential that sends it and recorded in the rollout's step history.
8008
8038
  */
8009
- export const mediaListAssets = (options) => (options.client ?? client).get({
8039
+ export const devopsProgressiveRolloutsResume = (options) => (options.client ?? client).post({
8010
8040
  security: [{
8011
- key: 'media-BearerAuth',
8041
+ key: 'devops-bearerAuth',
8012
8042
  scheme: 'bearer',
8013
8043
  type: 'http'
8014
8044
  }],
8015
- url: '/media/v1/libraries/{library_id}/assets',
8045
+ url: '/devops/v1/progressive-rollouts/{id}:resume',
8016
8046
  ...options
8017
8047
  });
8018
8048
  /**
8019
- * Upload asset
8049
+ * Roll back a progressive rollout
8020
8050
  *
8021
- * For understanding, Media generates proxies for video sources of 25 MB or more or longer than 10 minutes, and for audio-only sources of 100 MB or more; originals remain available unchanged. Long videos are supported. When a video proxy is needed and is still above 95 MB after recompression, the source is reported as UNSUPPORTED with the limit in the failure message. Proxy preparation uses the organization’s metered sandbox resources.
8051
+ * End a progressive rollout by returning the flag's environment to the variation it served before the rollout started, so the audience that was already switched over goes back. Use it when a guard signal says the variation is bad and waiting for the next step would expose more callers. reason is recorded on the rollout as the attribution of the decision. The rollback is terminal: the rollout does not restart, and a new rollout is created if the variation should be tried again. It changes what the environment serves, not the flag's other environments.
8022
8052
  */
8023
- export const mediaUploadAsset = (options) => (options.client ?? client).post({
8053
+ export const devopsProgressiveRolloutsRollback = (options) => (options.client ?? client).post({
8024
8054
  security: [{
8025
- key: 'media-BearerAuth',
8055
+ key: 'devops-bearerAuth',
8026
8056
  scheme: 'bearer',
8027
8057
  type: 'http'
8028
8058
  }],
8029
- url: '/media/v1/libraries/{library_id}/assets',
8059
+ url: '/devops/v1/progressive-rollouts/{id}:rollback',
8030
8060
  ...options,
8031
8061
  headers: {
8032
8062
  'Content-Type': 'application/json',
@@ -8034,17 +8064,31 @@ export const mediaUploadAsset = (options) => (options.client ?? client).post({
8034
8064
  }
8035
8065
  });
8036
8066
  /**
8037
- * Import file
8067
+ * List knowledge bases
8038
8068
  *
8039
- * Copy a File into an independent Media asset. New assets default to organization-private delivery (type=authenticated); explicitly set type=upload for public originals and derivatives. Omitting type on overwrite preserves the current type. Deleting the source File does not delete this copy. For understanding, Media generates proxies for video sources of 25 MB or more or longer than 10 minutes, and for audio-only sources of 100 MB or more; originals remain available unchanged. Long videos are supported. When a video proxy is needed and is still above 95 MB after recompression, the source is reported as UNSUPPORTED with the limit in the failure message. Proxy preparation uses the organization’s metered sandbox resources.
8069
+ * 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.
8040
8070
  */
8041
- export const mediaImportAsset = (options) => (options.client ?? client).post({
8071
+ export const knowledgeListVectorStores = (options) => (options?.client ?? client).get({
8042
8072
  security: [{
8043
- key: 'media-BearerAuth',
8073
+ key: 'knowledge-bearerAuth',
8044
8074
  scheme: 'bearer',
8045
8075
  type: 'http'
8046
8076
  }],
8047
- url: '/media/v1/libraries/{library_id}/assets/import',
8077
+ url: '/knowledge/v1/vector_stores',
8078
+ ...options
8079
+ });
8080
+ /**
8081
+ * Create knowledge base
8082
+ *
8083
+ * 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. PDF files accept up to 536870912 bytes (512 MiB), while other formats accept up to 52428800 bytes (50 MiB), constrained by Router conversion; every file is limited to 5000000 estimated tokens; each account holds up to 100 active/nondeleted stores. Minimal body: {"name":"Refund policies"}.
8084
+ */
8085
+ export const knowledgeCreateVectorStore = (options) => (options.client ?? client).post({
8086
+ security: [{
8087
+ key: 'knowledge-bearerAuth',
8088
+ scheme: 'bearer',
8089
+ type: 'http'
8090
+ }],
8091
+ url: '/knowledge/v1/vector_stores',
8048
8092
  ...options,
8049
8093
  headers: {
8050
8094
  'Content-Type': 'application/json',
@@ -8052,45 +8096,45 @@ export const mediaImportAsset = (options) => (options.client ?? client).post({
8052
8096
  }
8053
8097
  });
8054
8098
  /**
8055
- * Delete asset
8099
+ * Delete knowledge base
8056
8100
  *
8057
- * Queue reprocessing of the asset’s current version and return its updated state immediately. Omit kinds to retry failed tasks and legacy source-size unsupported tasks; explicit kinds rerun applicable completed tasks and recoverable source-size unsupported tasks. Other unsupported causes remain unchanged. Replaced understandings become superseded, and processing finishes asynchronously.
8101
+ * 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.
8058
8102
  */
8059
- export const mediaDeleteAsset = (options) => (options.client ?? client).delete({
8103
+ export const knowledgeDeleteVectorStore = (options) => (options.client ?? client).delete({
8060
8104
  security: [{
8061
- key: 'media-BearerAuth',
8105
+ key: 'knowledge-bearerAuth',
8062
8106
  scheme: 'bearer',
8063
8107
  type: 'http'
8064
8108
  }],
8065
- url: '/media/v1/libraries/{library_id}/assets/{asset_id}',
8109
+ url: '/knowledge/v1/vector_stores/{vector_store_id}',
8066
8110
  ...options
8067
8111
  });
8068
8112
  /**
8069
- * Get asset
8113
+ * Retrieve knowledge base
8070
8114
  *
8071
- * 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.
8115
+ * 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.
8072
8116
  */
8073
- export const mediaGetAsset = (options) => (options.client ?? client).get({
8117
+ export const knowledgeRetrieveVectorStore = (options) => (options.client ?? client).get({
8074
8118
  security: [{
8075
- key: 'media-BearerAuth',
8119
+ key: 'knowledge-bearerAuth',
8076
8120
  scheme: 'bearer',
8077
8121
  type: 'http'
8078
8122
  }],
8079
- url: '/media/v1/libraries/{library_id}/assets/{asset_id}',
8123
+ url: '/knowledge/v1/vector_stores/{vector_store_id}',
8080
8124
  ...options
8081
8125
  });
8082
8126
  /**
8083
- * Update asset
8127
+ * Update knowledge base
8084
8128
  *
8085
- * 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.
8129
+ * Updates an active knowledge base using its returned id. Omitted fields stay unchanged; metadata replaces the whole map. Example body: {"name":"Refund policies"}.
8086
8130
  */
8087
- export const mediaUpdateAsset = (options) => (options.client ?? client).patch({
8131
+ export const knowledgeUpdateVectorStore = (options) => (options.client ?? client).post({
8088
8132
  security: [{
8089
- key: 'media-BearerAuth',
8133
+ key: 'knowledge-bearerAuth',
8090
8134
  scheme: 'bearer',
8091
8135
  type: 'http'
8092
8136
  }],
8093
- url: '/media/v1/libraries/{library_id}/assets/{asset_id}',
8137
+ url: '/knowledge/v1/vector_stores/{vector_store_id}',
8094
8138
  ...options,
8095
8139
  headers: {
8096
8140
  'Content-Type': 'application/json',
@@ -8098,17 +8142,17 @@ export const mediaUpdateAsset = (options) => (options.client ?? client).patch({
8098
8142
  }
8099
8143
  });
8100
8144
  /**
8101
- * Reprocess asset
8145
+ * Search knowledge base
8102
8146
  *
8103
- * For understanding, Media generates proxies for video sources of 25 MB or more or longer than 10 minutes, and for audio-only sources of 100 MB or more; originals remain available unchanged. Long videos are supported. When a video proxy is needed and is still above 95 MB after recompression, the source is reported as UNSUPPORTED with the limit in the failure message. Proxy preparation uses the organization’s metered sandbox resources.
8147
+ * 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.
8104
8148
  */
8105
- export const mediaReprocessAsset = (options) => (options.client ?? client).post({
8149
+ export const knowledgeSearchVectorStore = (options) => (options.client ?? client).post({
8106
8150
  security: [{
8107
- key: 'media-BearerAuth',
8151
+ key: 'knowledge-bearerAuth',
8108
8152
  scheme: 'bearer',
8109
8153
  type: 'http'
8110
8154
  }],
8111
- url: '/media/v1/libraries/{library_id}/assets/{asset_id}/reprocess',
8155
+ url: '/knowledge/v1/vector_stores/{vector_store_id}/search',
8112
8156
  ...options,
8113
8157
  headers: {
8114
8158
  'Content-Type': 'application/json',
@@ -8116,31 +8160,31 @@ export const mediaReprocessAsset = (options) => (options.client ?? client).post(
8116
8160
  }
8117
8161
  });
8118
8162
  /**
8119
- * List understandings
8163
+ * List files
8120
8164
  *
8121
- * List understanding results for an asset, ordered by creation time. Use the cursor to continue; include_superseded also returns replaced records. The optional shots array contains current-version shot boundaries and per-shot captions, scene, location guesses, visible text and confidence flags; it is absent on legacy records. Location guesses and folder mismatch are unverified hints. Correction-enabled transcripts expose text_original, corrected text and a correction audit. Their timed data array remains suitable for subtitles. Reference failure is marked missing; correction failure returns the original verbatim. Model inference uses the existing metered model path.
8165
+ * 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.
8122
8166
  */
8123
- export const mediaListUnderstandings = (options) => (options.client ?? client).get({
8167
+ export const knowledgeListFiles = (options) => (options.client ?? client).get({
8124
8168
  security: [{
8125
- key: 'media-BearerAuth',
8169
+ key: 'knowledge-bearerAuth',
8126
8170
  scheme: 'bearer',
8127
8171
  type: 'http'
8128
8172
  }],
8129
- url: '/media/v1/libraries/{library_id}/assets/{asset_id}/understandings',
8173
+ url: '/knowledge/v1/vector_stores/{vector_store_id}/files',
8130
8174
  ...options
8131
8175
  });
8132
8176
  /**
8133
- * Expression search
8177
+ * Add file
8134
8178
  *
8135
- * 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.
8179
+ * Attach an uploaded File for asynchronous ingestion, then poll this attachment until status is completed, failed or cancelled before searching. PDF files accept up to 536870912 bytes (512 MiB), while other formats accept up to 52428800 bytes (50 MiB), constrained by Router conversion; every file is limited to 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.
8136
8180
  */
8137
- export const mediaExpressionSearch = (options) => (options.client ?? client).post({
8181
+ export const knowledgeAttachFile = (options) => (options.client ?? client).post({
8138
8182
  security: [{
8139
- key: 'media-BearerAuth',
8183
+ key: 'knowledge-bearerAuth',
8140
8184
  scheme: 'bearer',
8141
8185
  type: 'http'
8142
8186
  }],
8143
- url: '/media/v1/libraries/{library_id}/search/expression',
8187
+ url: '/knowledge/v1/vector_stores/{vector_store_id}/files',
8144
8188
  ...options,
8145
8189
  headers: {
8146
8190
  'Content-Type': 'application/json',
@@ -8148,53 +8192,45 @@ export const mediaExpressionSearch = (options) => (options.client ?? client).pos
8148
8192
  }
8149
8193
  });
8150
8194
  /**
8151
- * Visual search
8195
+ * Remove file
8152
8196
  *
8153
- * 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.
8197
+ * Removes the file from search immediately; does not delete the original File.
8154
8198
  */
8155
- export const mediaVisualSearch = (options) => (options.client ?? client).post({
8199
+ export const knowledgeRemoveFile = (options) => (options.client ?? client).delete({
8156
8200
  security: [{
8157
- key: 'media-BearerAuth',
8201
+ key: 'knowledge-bearerAuth',
8158
8202
  scheme: 'bearer',
8159
8203
  type: 'http'
8160
8204
  }],
8161
- url: '/media/v1/libraries/{library_id}/search/visual',
8162
- ...options,
8163
- headers: {
8164
- 'Content-Type': 'application/json',
8165
- ...options.headers
8166
- }
8205
+ url: '/knowledge/v1/vector_stores/{vector_store_id}/files/{file_id}',
8206
+ ...options
8167
8207
  });
8168
8208
  /**
8169
- * Semantic search
8209
+ * Retrieve file
8170
8210
  *
8171
- * 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.
8211
+ * 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.
8172
8212
  */
8173
- export const mediaSemanticSearch = (options) => (options.client ?? client).post({
8213
+ export const knowledgeRetrieveFile = (options) => (options.client ?? client).get({
8174
8214
  security: [{
8175
- key: 'media-BearerAuth',
8215
+ key: 'knowledge-bearerAuth',
8176
8216
  scheme: 'bearer',
8177
8217
  type: 'http'
8178
8218
  }],
8179
- url: '/media/v1/libraries/{library_id}/search/semantic',
8180
- ...options,
8181
- headers: {
8182
- 'Content-Type': 'application/json',
8183
- ...options.headers
8184
- }
8219
+ url: '/knowledge/v1/vector_stores/{vector_store_id}/files/{file_id}',
8220
+ ...options
8185
8221
  });
8186
8222
  /**
8187
- * Semantic search alias
8223
+ * Update file attributes
8188
8224
  *
8189
- * 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.
8225
+ * 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.
8190
8226
  */
8191
- export const mediaSearch = (options) => (options.client ?? client).post({
8227
+ export const knowledgeUpdateFile = (options) => (options.client ?? client).post({
8192
8228
  security: [{
8193
- key: 'media-BearerAuth',
8229
+ key: 'knowledge-bearerAuth',
8194
8230
  scheme: 'bearer',
8195
8231
  type: 'http'
8196
8232
  }],
8197
- url: '/media/v1/libraries/{library_id}/search',
8233
+ url: '/knowledge/v1/vector_stores/{vector_store_id}/files/{file_id}',
8198
8234
  ...options,
8199
8235
  headers: {
8200
8236
  'Content-Type': 'application/json',
@@ -8202,31 +8238,31 @@ export const mediaSearch = (options) => (options.client ?? client).post({
8202
8238
  }
8203
8239
  });
8204
8240
  /**
8205
- * List folders
8241
+ * Read extracted content
8206
8242
  *
8207
- * undefined understood_count includes ready and partial assets; failed_count includes failed assets. Both accumulate descendants. counts_complete is false during historical backfill.
8243
+ * Extracted text chunks may overlap. Image content can be a generated description rather than verbatim OCR.
8208
8244
  */
8209
- export const mediaListFolders = (options) => (options.client ?? client).get({
8245
+ export const knowledgeRetrieveFileContent = (options) => (options.client ?? client).get({
8210
8246
  security: [{
8211
- key: 'media-BearerAuth',
8247
+ key: 'knowledge-bearerAuth',
8212
8248
  scheme: 'bearer',
8213
8249
  type: 'http'
8214
8250
  }],
8215
- url: '/media/v1/libraries/{library_id}/folders',
8251
+ url: '/knowledge/v1/vector_stores/{vector_store_id}/files/{file_id}/content',
8216
8252
  ...options
8217
8253
  });
8218
8254
  /**
8219
- * Create batch
8255
+ * Create file batch
8220
8256
  *
8221
- * Queue a frozen selection for tagging, untagging, context replacement, moving, deleting or reprocessing. IDs are limited to 1000; use an expression for larger selections, subject to the search scan budget. reprocess starts at most 30 assets per rolling minute per library. Only retryable failed steps and legacy source-size unsupported steps rerun. Omit kinds to inspect all recoverable steps, or supply kinds to narrow them. Other unsupported, permanent and completed steps remain unchanged; a permanent output blocks only its own step. Assets without any selected recoverable step count as failed items without starting understanding. Poll the returned job id; done counts accepted launches, not successful model inference. Staff Admin only permits reprocess and requires a nonblank reason. Example: {"action":"reprocess","selector":{"expression":"processing_state=failed AND failure_code=UPSTREAM_FAILED"}}. For understanding, Media generates proxies for video sources of 25 MB or more or longer than 10 minutes, and for audio-only sources of 100 MB or more; originals remain available unchanged. Long videos are supported. When a video proxy is needed and is still above 95 MB after recompression, the source is reported as UNSUPPORTED with the limit in the failure message. Proxy preparation uses the organization’s metered sandbox resources.
8257
+ * 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.
8222
8258
  */
8223
- export const mediaCreateBatch = (options) => (options.client ?? client).post({
8259
+ export const knowledgeCreateFileBatch = (options) => (options.client ?? client).post({
8224
8260
  security: [{
8225
- key: 'media-BearerAuth',
8261
+ key: 'knowledge-bearerAuth',
8226
8262
  scheme: 'bearer',
8227
8263
  type: 'http'
8228
8264
  }],
8229
- url: '/media/v1/libraries/{library_id}/batches',
8265
+ url: '/knowledge/v1/vector_stores/{vector_store_id}/file_batches',
8230
8266
  ...options,
8231
8267
  headers: {
8232
8268
  'Content-Type': 'application/json',
@@ -8234,169 +8270,157 @@ export const mediaCreateBatch = (options) => (options.client ?? client).post({
8234
8270
  }
8235
8271
  });
8236
8272
  /**
8237
- * Get batch
8273
+ * Retrieve file batch
8238
8274
  *
8239
- * 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.
8275
+ * 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.
8240
8276
  */
8241
- export const mediaGetBatch = (options) => (options.client ?? client).get({
8277
+ export const knowledgeRetrieveFileBatch = (options) => (options.client ?? client).get({
8242
8278
  security: [{
8243
- key: 'media-BearerAuth',
8279
+ key: 'knowledge-bearerAuth',
8244
8280
  scheme: 'bearer',
8245
8281
  type: 'http'
8246
8282
  }],
8247
- url: '/media/v1/libraries/{library_id}/batches/{job_id}',
8283
+ url: '/knowledge/v1/vector_stores/{vector_store_id}/file_batches/{batch_id}',
8248
8284
  ...options
8249
8285
  });
8250
8286
  /**
8251
- * Batch assets alias
8287
+ * Cancel file batch
8252
8288
  *
8253
- * Queue a frozen selection for tagging, untagging, context replacement, moving, deleting or reprocessing. IDs are limited to 1000; use an expression for larger selections, subject to the search scan budget. reprocess starts at most 30 assets per rolling minute per library. Only retryable failed steps and legacy source-size unsupported steps rerun. Omit kinds to inspect all recoverable steps, or supply kinds to narrow them. Other unsupported, permanent and completed steps remain unchanged; a permanent output blocks only its own step. Assets without any selected recoverable step count as failed items without starting understanding. Poll the returned job id; done counts accepted launches, not successful model inference. Staff Admin only permits reprocess and requires a nonblank reason. Example: {"action":"reprocess","selector":{"expression":"processing_state=failed AND failure_code=UPSTREAM_FAILED"}}. For understanding, Media generates proxies for video sources of 25 MB or more or longer than 10 minutes, and for audio-only sources of 100 MB or more; originals remain available unchanged. Long videos are supported. When a video proxy is needed and is still above 95 MB after recompression, the source is reported as UNSUPPORTED with the limit in the failure message. Proxy preparation uses the organization’s metered sandbox resources.
8289
+ * Cancels only in-progress batches and pending files. Completed, failed and cancelled batches return unchanged (200, idempotent).
8254
8290
  */
8255
- export const mediaBatchAssets = (options) => (options.client ?? client).post({
8291
+ export const knowledgeCancelFileBatch = (options) => (options.client ?? client).post({
8256
8292
  security: [{
8257
- key: 'media-BearerAuth',
8293
+ key: 'knowledge-bearerAuth',
8258
8294
  scheme: 'bearer',
8259
8295
  type: 'http'
8260
8296
  }],
8261
- url: '/media/v1/libraries/{library_id}/assets:batch',
8262
- ...options,
8263
- headers: {
8264
- 'Content-Type': 'application/json',
8265
- ...options.headers
8266
- }
8297
+ url: '/knowledge/v1/vector_stores/{vector_store_id}/file_batches/{batch_id}/cancel',
8298
+ ...options
8267
8299
  });
8268
8300
  /**
8269
- * Get job
8301
+ * List batch files
8270
8302
  *
8271
- * Read the current batch or video-generation Job status and progress. For generation, inspect outputs and failures, then save successful candidates before their preview and save window expires after 7 days.
8303
+ * 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.
8272
8304
  */
8273
- export const mediaGetJob = (options) => (options.client ?? client).get({
8305
+ export const knowledgeListBatchFiles = (options) => (options.client ?? client).get({
8274
8306
  security: [{
8275
- key: 'media-BearerAuth',
8307
+ key: 'knowledge-bearerAuth',
8276
8308
  scheme: 'bearer',
8277
8309
  type: 'http'
8278
8310
  }],
8279
- url: '/media/v1/libraries/{library_id}/jobs/{job_id}',
8311
+ url: '/knowledge/v1/vector_stores/{vector_store_id}/file_batches/{batch_id}/files',
8280
8312
  ...options
8281
8313
  });
8282
8314
  /**
8283
- * List events
8315
+ * Restore knowledge base
8284
8316
  *
8285
- * Read library events in sequence order for observing asset writes and understanding progress. Obtain library_id from creation or listing; continue with after_seq for asc or before_seq for desc, without combining both. Use next_cursor when supplied. Reads do not start or retry understanding.
8317
+ * Restores a deleting store within 7 days. Active stores return 409 VECTOR_STORE_INVALID_STATE; absent stores return 404. Empty body is allowed.
8286
8318
  */
8287
- export const mediaListEvents = (options) => (options.client ?? client).get({
8319
+ export const knowledgeRestoreVectorStore = (options) => (options.client ?? client).post({
8288
8320
  security: [{
8289
- key: 'media-BearerAuth',
8321
+ key: 'knowledge-bearerAuth',
8290
8322
  scheme: 'bearer',
8291
8323
  type: 'http'
8292
8324
  }],
8293
- url: '/media/v1/libraries/{library_id}/events',
8325
+ url: '/knowledge/v1/vector_stores/{vector_store_id}/restore',
8294
8326
  ...options
8295
8327
  });
8296
8328
  /**
8297
- * Create delivery token
8329
+ * Permanently purge knowledge base
8298
8330
  *
8299
- * 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 900 seconds; narrow acl and expires_in before sharing. Anyone holding the token can read matching paths until expires_at.
8331
+ * Immediately and irreversibly clears a deleting store using the retention cleanup path. Active stores return 409; absent stores return 404. Empty body is allowed.
8300
8332
  */
8301
- export const mediaCreateDeliveryToken = (options) => (options.client ?? client).post({
8333
+ export const knowledgePurgeVectorStore = (options) => (options.client ?? client).post({
8302
8334
  security: [{
8303
- key: 'media-BearerAuth',
8335
+ key: 'knowledge-bearerAuth',
8304
8336
  scheme: 'bearer',
8305
8337
  type: 'http'
8306
8338
  }],
8307
- url: '/media/v1/libraries/{library_id}/delivery_tokens',
8308
- ...options,
8309
- headers: {
8310
- 'Content-Type': 'application/json',
8311
- ...options.headers
8312
- }
8339
+ url: '/knowledge/v1/vector_stores/{vector_store_id}/purge',
8340
+ ...options
8313
8341
  });
8314
8342
  /**
8315
- * Summarize understanding failures
8343
+ * Retry failed file
8316
8344
  *
8317
- * Inspect current understanding failures before retrying. Use library_id from library creation or listing. Groups include code, output kind, actual producer model, retryability and up to five sample asset IDs. At most 1024 detailed groups plus two overflow groups are returned; overflow groups separate retryable and unrecoverable entries and mark overflow=true. Unknown failure codes remain retryable. Historical counts are provisional while counts_complete is false. Example: GET /media/v1/libraries/lib_example/understandings/failure_summary.
8345
+ * Retries only failed files; other states return 409 FILE_INVALID_STATE. Retry after failure has not yet been observed in the documented run.
8318
8346
  */
8319
- export const mediaUnderstandingFailureSummary = (options) => (options.client ?? client).get({
8347
+ export const knowledgeRetryFile = (options) => (options.client ?? client).post({
8320
8348
  security: [{
8321
- key: 'media-BearerAuth',
8349
+ key: 'knowledge-bearerAuth',
8322
8350
  scheme: 'bearer',
8323
8351
  type: 'http'
8324
8352
  }],
8325
- url: '/media/v1/libraries/{library_id}/understandings/failure_summary',
8353
+ url: '/knowledge/v1/vector_stores/{vector_store_id}/files/{file_id}/retry',
8326
8354
  ...options
8327
8355
  });
8328
8356
  /**
8329
- * List understanding results across a library
8357
+ * List file segments
8330
8358
  *
8331
- * Read current understanding entries across one library without fetching every asset separately. Use library_id from creation or listing. folder includes descendants; kinds is a comma-separated list of output kinds. Entries are ordered by asset_id and then understanding id. Continue with next_cursor and the same folder and kinds; limit defaults to 100 and cannot exceed 100. Superseded, deleted and old-version entries are excluded. During historical backfill, this method returns 503 CAPACITY rather than incomplete pages; poll failureSummary until counts_complete is true, then start pagination. Example: GET /media/v1/libraries/lib_example/understandings?folder=travel&kinds=caption,transcript&limit=100.
8359
+ * 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.
8332
8360
  */
8333
- export const mediaListUnderstandingsByLibrary = (options) => (options.client ?? client).get({
8361
+ export const knowledgeListSegments = (options) => (options.client ?? client).get({
8334
8362
  security: [{
8335
- key: 'media-BearerAuth',
8363
+ key: 'knowledge-bearerAuth',
8336
8364
  scheme: 'bearer',
8337
8365
  type: 'http'
8338
8366
  }],
8339
- url: '/media/v1/libraries/{library_id}/understandings',
8367
+ url: '/knowledge/v1/vector_stores/{vector_store_id}/files/{file_id}/segments',
8340
8368
  ...options
8341
8369
  });
8342
8370
  /**
8343
- * Create video generation
8371
+ * Retrieve segment
8344
8372
  *
8345
- * Create a video.generate job. Generation is charged per second. The response is 202 with a queued Job; poll GET /media/v1/libraries/{library_id}/jobs/{job_id} until terminal, then save successful outputs. Unsaved candidate Files expire after 7 days.
8373
+ * 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.
8346
8374
  */
8347
- export const mediaCreateGeneration = (options) => (options.client ?? client).post({
8375
+ export const knowledgeRetrieveSegment = (options) => (options.client ?? client).get({
8348
8376
  security: [{
8349
- key: 'media-BearerAuth',
8377
+ key: 'knowledge-bearerAuth',
8350
8378
  scheme: 'bearer',
8351
8379
  type: 'http'
8352
8380
  }],
8353
- url: '/media/v1/libraries/{library_id}/generations',
8354
- ...options,
8355
- headers: {
8356
- 'Content-Type': 'application/json',
8357
- ...options.headers
8358
- }
8381
+ url: '/knowledge/v1/vector_stores/{vector_store_id}/segments/{chunk_id}',
8382
+ ...options
8359
8383
  });
8360
8384
  /**
8361
- * List jobs
8385
+ * List events
8362
8386
  *
8363
- * List batch and video-generation jobs in a library. Filter by status and continue with next_cursor. Poll a generation Job until terminal, then save successful candidate outputs before they expire after 7 days.
8387
+ * 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.
8364
8388
  */
8365
- export const mediaListJobs = (options) => (options.client ?? client).get({
8389
+ export const knowledgeListEvents = (options) => (options.client ?? client).get({
8366
8390
  security: [{
8367
- key: 'media-BearerAuth',
8391
+ key: 'knowledge-bearerAuth',
8368
8392
  scheme: 'bearer',
8369
8393
  type: 'http'
8370
8394
  }],
8371
- url: '/media/v1/libraries/{library_id}/jobs',
8395
+ url: '/knowledge/v1/vector_stores/{vector_store_id}/events',
8372
8396
  ...options
8373
8397
  });
8374
8398
  /**
8375
- * Cancel job
8399
+ * List libraries
8376
8400
  *
8377
- * Cancel a queued or running generation job. Already completed outputs remain available to save; poll or read the returned Job to confirm its status.
8401
+ * 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.
8378
8402
  */
8379
- export const mediaCancelJob = (options) => (options.client ?? client).post({
8403
+ export const mediaListLibraries = (options) => (options?.client ?? client).get({
8380
8404
  security: [{
8381
8405
  key: 'media-BearerAuth',
8382
8406
  scheme: 'bearer',
8383
8407
  type: 'http'
8384
8408
  }],
8385
- url: '/media/v1/libraries/{library_id}/jobs/{job_id}/cancel',
8409
+ url: '/media/v1/libraries',
8386
8410
  ...options
8387
8411
  });
8388
8412
  /**
8389
- * Save generation output
8413
+ * Create library
8390
8414
  *
8391
- * Save a successful candidate as a library asset. Candidate outputs expire after 7 days; save before expiry. Generation is charged per second when the job runs, not when an output is saved.
8415
+ * 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.
8392
8416
  */
8393
- export const mediaSaveGenerationOutput = (options) => (options.client ?? client).post({
8417
+ export const mediaCreateLibrary = (options) => (options.client ?? client).post({
8394
8418
  security: [{
8395
8419
  key: 'media-BearerAuth',
8396
8420
  scheme: 'bearer',
8397
8421
  type: 'http'
8398
8422
  }],
8399
- url: '/media/v1/libraries/{library_id}/jobs/{job_id}/outputs/{index}/save',
8423
+ url: '/media/v1/libraries',
8400
8424
  ...options,
8401
8425
  headers: {
8402
8426
  'Content-Type': 'application/json',
@@ -8404,45 +8428,63 @@ export const mediaSaveGenerationOutput = (options) => (options.client ?? client)
8404
8428
  }
8405
8429
  });
8406
8430
  /**
8407
- * Get generation capabilities
8431
+ * Create frame URLs
8408
8432
  *
8409
- * Read supported text-to-video intent, default model, duration and aspect-ratio limits, per-library concurrency and candidate retention. Generation is charged per second; unsaved candidates expire after 7 days.
8433
+ * Media creates JPEG frame URLs for inspecting one or more moments in a video without downloading the original. Obtain library_id from libraries and asset_id plus duration from assets. Send 1–20 integer microsecond timestamps strictly below duration, for example {"at_micros":[0,1000000],"width":640}. Only video assets are supported; audio and images return INVALID_PARAMS. Width defaults to 640 and accepts 160, 320 or 640. This read operation does not store a new asset or rerun understanding. Fetch each returned URL to obtain the frame; delivery usage follows media pricing. Authenticated links expire after 300 seconds; upload links remain public and permanent. Reissue expired links. Foreign libraries and assets return 404 without revealing their existence.
8410
8434
  */
8411
- export const mediaGetGenerationCapabilities = (options) => (options?.client ?? client).get({
8435
+ export const mediaCreateFrameUrls = (options) => (options.client ?? client).post({
8412
8436
  security: [{
8413
8437
  key: 'media-BearerAuth',
8414
8438
  scheme: 'bearer',
8415
8439
  type: 'http'
8416
8440
  }],
8417
- url: '/media/v1/generation/capabilities',
8441
+ url: '/media/v1/libraries/{library_id}/assets/{asset_id}/frames',
8442
+ ...options,
8443
+ headers: {
8444
+ 'Content-Type': 'application/json',
8445
+ ...options.headers
8446
+ }
8447
+ });
8448
+ /**
8449
+ * Delete library
8450
+ *
8451
+ * 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.
8452
+ */
8453
+ export const mediaDeleteLibrary = (options) => (options.client ?? client).delete({
8454
+ security: [{
8455
+ key: 'media-BearerAuth',
8456
+ scheme: 'bearer',
8457
+ type: 'http'
8458
+ }],
8459
+ url: '/media/v1/libraries/{library_id}',
8418
8460
  ...options
8419
8461
  });
8420
8462
  /**
8421
- * List types
8463
+ * Get library
8422
8464
  *
8423
- * Read the node and relation types registered for this organization before writing, so a create names a type the graph accepts. Each entry is one registrant's registration with its owner, version and definitions. Types cannot be created at runtime; they are registered by the owning service at deploy time, so a type missing here is not available to write.
8465
+ * 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.
8424
8466
  */
8425
- export const ontologyListTypes = (options) => (options?.client ?? client).get({
8467
+ export const mediaGetLibrary = (options) => (options.client ?? client).get({
8426
8468
  security: [{
8427
- key: 'ontology-bearerAuth',
8469
+ key: 'media-BearerAuth',
8428
8470
  scheme: 'bearer',
8429
8471
  type: 'http'
8430
8472
  }],
8431
- url: '/ontology/v1/types',
8473
+ url: '/media/v1/libraries/{library_id}',
8432
8474
  ...options
8433
8475
  });
8434
8476
  /**
8435
- * Register type
8477
+ * Update library
8436
8478
  *
8437
- * Register a node or relation type for this organization. Not open yet — this call currently answers 501 NOT_IMPLEMENTED and writes nothing, because a registration is checked and stored by the deploy gate that ships the registering service, not by a runtime call. Until it opens, read the types already in force with praxis.ontology.types.list and create records only of those types.
8479
+ * Update an active library. Set hotwords for spelling evidence in subsequent transcripts; [] disables inferred vocabulary. Transcript understanding calls the timestamped ASR, optional reference ASR and correction model through the existing metered model path. Reprocess assets to apply new settings to existing transcripts.
8438
8480
  */
8439
- export const ontologyRegisterType = (options) => (options.client ?? client).post({
8481
+ export const mediaUpdateLibrary = (options) => (options.client ?? client).patch({
8440
8482
  security: [{
8441
- key: 'ontology-bearerAuth',
8483
+ key: 'media-BearerAuth',
8442
8484
  scheme: 'bearer',
8443
8485
  type: 'http'
8444
8486
  }],
8445
- url: '/ontology/v1/types',
8487
+ url: '/media/v1/libraries/{library_id}',
8446
8488
  ...options,
8447
8489
  headers: {
8448
8490
  'Content-Type': 'application/json',
@@ -8450,77 +8492,77 @@ export const ontologyRegisterType = (options) => (options.client ?? client).post
8450
8492
  }
8451
8493
  });
8452
8494
  /**
8453
- * Retrieve type
8495
+ * Restore library
8454
8496
  *
8455
- * Read one registered type's definition before writing a record of it, to learn whether it is a node or an edge, which endpoints an edge type admits, and which origins it accepts. The name comes from types.list; a name that is not registered answers ONTOLOGY_TYPE_UNKNOWN, and writes of that type are refused.
8497
+ * 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.
8456
8498
  */
8457
- export const ontologyRetrieveType = (options) => (options.client ?? client).get({
8499
+ export const mediaRestoreLibrary = (options) => (options.client ?? client).post({
8458
8500
  security: [{
8459
- key: 'ontology-bearerAuth',
8501
+ key: 'media-BearerAuth',
8460
8502
  scheme: 'bearer',
8461
8503
  type: 'http'
8462
8504
  }],
8463
- url: '/ontology/v1/types/{name}',
8505
+ url: '/media/v1/libraries/{library_id}/restore',
8464
8506
  ...options
8465
8507
  });
8466
8508
  /**
8467
- * List nodes
8509
+ * Purge library
8468
8510
  *
8469
- * Discover the entities in this organization's graph and obtain node ids for retrieval, updates and relations. Filter by type, by free text over names, aliases, descriptions and facts, or by owner; limit is 1–100 and defaults to 50. Omit cursor for the first page, then copy next_cursor into the next request until it is null. A node whose content belongs to somebody else comes back as a restricted entry carrying only its id, type and name.
8511
+ * 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.
8470
8512
  */
8471
- export const ontologyListNodes = (options) => (options?.client ?? client).get({
8513
+ export const mediaPurgeLibrary = (options) => (options.client ?? client).post({
8472
8514
  security: [{
8473
- key: 'ontology-bearerAuth',
8515
+ key: 'media-BearerAuth',
8474
8516
  scheme: 'bearer',
8475
8517
  type: 'http'
8476
8518
  }],
8477
- url: '/ontology/v1/nodes',
8519
+ url: '/media/v1/libraries/{library_id}/purge',
8478
8520
  ...options
8479
8521
  });
8480
8522
  /**
8481
- * Create node
8523
+ * List assets
8482
8524
  *
8483
- * Record one entity in the graph, for a system mirroring a record it owns. type must already be registered and ref, when given, must match that type's ref_prefix. Send an Idempotency-Key header; repeating the same key with the same content returns the first result instead of creating a second node. This writes structure only — to give an agent something to remember, use POST /agent/v1/agents/{agent_id}/consolidations.
8525
+ * Upload content into an active library and return the stored asset. 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 asset. Chunk uploads require both chunk headers.
8484
8526
  */
8485
- export const ontologyCreateNode = (options) => (options.client ?? client).post({
8527
+ export const mediaListAssets = (options) => (options.client ?? client).get({
8486
8528
  security: [{
8487
- key: 'ontology-bearerAuth',
8529
+ key: 'media-BearerAuth',
8488
8530
  scheme: 'bearer',
8489
8531
  type: 'http'
8490
8532
  }],
8491
- url: '/ontology/v1/nodes',
8492
- ...options,
8493
- headers: {
8494
- 'Content-Type': 'application/json',
8495
- ...options.headers
8496
- }
8533
+ url: '/media/v1/libraries/{library_id}/assets',
8534
+ ...options
8497
8535
  });
8498
8536
  /**
8499
- * Retrieve node
8537
+ * Upload asset
8500
8538
  *
8501
- * Read one node's content and, with expand=relations, every relation on and around it. as_of reads the node as it was at that time. A node id from another organization, or one that never existed, answers ONTOLOGY_NODE_NOT_FOUND; a node you may reach but not read returns restricted true with its name only.
8539
+ * For understanding, Media generates proxies for video sources of 25 MB or more or longer than 10 minutes, and for audio-only sources of 100 MB or more; originals remain available unchanged. Long videos are supported. When a video proxy is needed and is still above 95 MB after recompression, the source is reported as UNSUPPORTED with the limit in the failure message. Proxy preparation uses the organization’s metered sandbox resources.
8502
8540
  */
8503
- export const ontologyRetrieveNode = (options) => (options.client ?? client).get({
8541
+ export const mediaUploadAsset = (options) => (options.client ?? client).post({
8504
8542
  security: [{
8505
- key: 'ontology-bearerAuth',
8543
+ key: 'media-BearerAuth',
8506
8544
  scheme: 'bearer',
8507
8545
  type: 'http'
8508
8546
  }],
8509
- url: '/ontology/v1/nodes/{node_id}',
8510
- ...options
8547
+ url: '/media/v1/libraries/{library_id}/assets',
8548
+ ...options,
8549
+ headers: {
8550
+ 'Content-Type': 'application/json',
8551
+ ...options.headers
8552
+ }
8511
8553
  });
8512
8554
  /**
8513
- * Update node
8555
+ * Import file
8514
8556
  *
8515
- * Change a node's name, aliases or description when the mirrored record was renamed, without touching its type or identity. Send only the fields to change; omitted fields keep their current values and an explicitly null description clears it. Repeating the same edit converges on the same node, so this needs no Idempotency-Key.
8557
+ * Copy a File into an independent Media asset. New assets default to organization-private delivery (type=authenticated); explicitly set type=upload for public originals and derivatives. Omitting type on overwrite preserves the current type. Deleting the source File does not delete this copy. For understanding, Media generates proxies for video sources of 25 MB or more or longer than 10 minutes, and for audio-only sources of 100 MB or more; originals remain available unchanged. Long videos are supported. When a video proxy is needed and is still above 95 MB after recompression, the source is reported as UNSUPPORTED with the limit in the failure message. Proxy preparation uses the organization’s metered sandbox resources.
8516
8558
  */
8517
- export const ontologyUpdateNode = (options) => (options.client ?? client).patch({
8559
+ export const mediaImportAsset = (options) => (options.client ?? client).post({
8518
8560
  security: [{
8519
- key: 'ontology-bearerAuth',
8561
+ key: 'media-BearerAuth',
8520
8562
  scheme: 'bearer',
8521
8563
  type: 'http'
8522
8564
  }],
8523
- url: '/ontology/v1/nodes/{node_id}',
8565
+ url: '/media/v1/libraries/{library_id}/assets/import',
8524
8566
  ...options,
8525
8567
  headers: {
8526
8568
  'Content-Type': 'application/json',
@@ -8528,63 +8570,63 @@ export const ontologyUpdateNode = (options) => (options.client ?? client).patch(
8528
8570
  }
8529
8571
  });
8530
8572
  /**
8531
- * Retrieve neighborhood
8573
+ * Delete asset
8532
8574
  *
8533
- * Load the subgraph around one node instead of the whole graph — the read to use when a screen or an agent needs the context of one entity. Returns the start node, every node within depth hops of it, the relations whose both ends are in that set, and truncated true when the node limit cut the walk short. direction chooses which way relations are followed; as_of and include_invalid read the graph as those parameters do elsewhere. Visibility is exactly nodes.retrieve's — a node you may reach but not read comes back restricted with its name only, and relations touching it are withheld, so this read never reaches further than a node read does. The node id comes from nodes.list, nodes.create or a changeset; an unknown one answers ONTOLOGY_NODE_NOT_FOUND, the same answer nodes.retrieve gives.
8575
+ * Queue reprocessing of the asset’s current version and return its updated state immediately. Omit kinds to retry failed tasks and legacy source-size unsupported tasks; explicit kinds rerun applicable completed tasks and recoverable source-size unsupported tasks. Other unsupported causes remain unchanged. Replaced understandings become superseded, and processing finishes asynchronously.
8534
8576
  */
8535
- export const ontologyNeighborhood = (options) => (options.client ?? client).get({
8577
+ export const mediaDeleteAsset = (options) => (options.client ?? client).delete({
8536
8578
  security: [{
8537
- key: 'ontology-bearerAuth',
8579
+ key: 'media-BearerAuth',
8538
8580
  scheme: 'bearer',
8539
8581
  type: 'http'
8540
8582
  }],
8541
- url: '/ontology/v1/nodes/{node_id}/neighborhood',
8583
+ url: '/media/v1/libraries/{library_id}/assets/{asset_id}',
8542
8584
  ...options
8543
8585
  });
8544
8586
  /**
8545
- * Merge node
8587
+ * Get asset
8546
8588
  *
8547
- * Fold a duplicate node into the node that should survive, when two records are discovered to be the same entity. The merged node's relations and aliases move to the survivor and later reads of the duplicate resolve to it. Send an Idempotency-Key header; repeating the same key replays the first result. Reversal is a staff operation, not available here.
8589
+ * 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.
8548
8590
  */
8549
- export const ontologyMergeNode = (options) => (options.client ?? client).post({
8591
+ export const mediaGetAsset = (options) => (options.client ?? client).get({
8550
8592
  security: [{
8551
- key: 'ontology-bearerAuth',
8593
+ key: 'media-BearerAuth',
8552
8594
  scheme: 'bearer',
8553
8595
  type: 'http'
8554
8596
  }],
8555
- url: '/ontology/v1/nodes/{node_id}/merge',
8556
- ...options,
8557
- headers: {
8558
- 'Content-Type': 'application/json',
8559
- ...options.headers
8560
- }
8597
+ url: '/media/v1/libraries/{library_id}/assets/{asset_id}',
8598
+ ...options
8561
8599
  });
8562
8600
  /**
8563
- * List relations
8601
+ * Update asset
8564
8602
  *
8565
- * Read the facts in the graph and obtain relation ids for retrieval, invalidation or spreading. Filter by endpoint node, by type and by direction; as_of reads the relations as they were then. Invalidated relations are omitted unless include_invalid is true. limit is 1–100 and defaults to 50; follow next_cursor until it is null.
8603
+ * 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.
8566
8604
  */
8567
- export const ontologyListRelations = (options) => (options?.client ?? client).get({
8605
+ export const mediaUpdateAsset = (options) => (options.client ?? client).patch({
8568
8606
  security: [{
8569
- key: 'ontology-bearerAuth',
8607
+ key: 'media-BearerAuth',
8570
8608
  scheme: 'bearer',
8571
8609
  type: 'http'
8572
8610
  }],
8573
- url: '/ontology/v1/relations',
8574
- ...options
8611
+ url: '/media/v1/libraries/{library_id}/assets/{asset_id}',
8612
+ ...options,
8613
+ headers: {
8614
+ 'Content-Type': 'application/json',
8615
+ ...options.headers
8616
+ }
8575
8617
  });
8576
8618
  /**
8577
- * Create relation
8619
+ * Reprocess asset
8578
8620
  *
8579
- * Record one fact between two existing nodes, for a system mirroring a relationship it owns. type must be registered and must admit these endpoints; fact states the relationship in one sentence. Send an Idempotency-Key header; repeating the same key returns the first result instead of writing a second relation. This writes structure only — to give an agent something to remember, use POST /agent/v1/agents/{agent_id}/consolidations.
8621
+ * For understanding, Media generates proxies for video sources of 25 MB or more or longer than 10 minutes, and for audio-only sources of 100 MB or more; originals remain available unchanged. Long videos are supported. When a video proxy is needed and is still above 95 MB after recompression, the source is reported as UNSUPPORTED with the limit in the failure message. Proxy preparation uses the organization’s metered sandbox resources.
8580
8622
  */
8581
- export const ontologyCreateRelation = (options) => (options.client ?? client).post({
8623
+ export const mediaReprocessAsset = (options) => (options.client ?? client).post({
8582
8624
  security: [{
8583
- key: 'ontology-bearerAuth',
8625
+ key: 'media-BearerAuth',
8584
8626
  scheme: 'bearer',
8585
8627
  type: 'http'
8586
8628
  }],
8587
- url: '/ontology/v1/relations',
8629
+ url: '/media/v1/libraries/{library_id}/assets/{asset_id}/reprocess',
8588
8630
  ...options,
8589
8631
  headers: {
8590
8632
  'Content-Type': 'application/json',
@@ -8592,31 +8634,31 @@ export const ontologyCreateRelation = (options) => (options.client ?? client).po
8592
8634
  }
8593
8635
  });
8594
8636
  /**
8595
- * Retrieve relation
8637
+ * List understandings
8596
8638
  *
8597
- * Read one relation's fact and both of its clocks — valid_at and invalid_at for when it was true in the world, created_at and expired_at for when it was recorded and retired. An id from another organization, or one that never existed, answers ONTOLOGY_EDGE_NOT_FOUND.
8639
+ * List understanding results for an asset, ordered by creation time. Use the cursor to continue; include_superseded also returns replaced records. The optional shots array contains current-version shot boundaries and per-shot captions, scene, location guesses, visible text and confidence flags; it is absent on legacy records. Location guesses and folder mismatch are unverified hints. Correction-enabled transcripts expose text_original, corrected text and a correction audit. Their timed data array remains suitable for subtitles. Reference failure is marked missing; correction failure returns the original verbatim. Model inference uses the existing metered model path.
8598
8640
  */
8599
- export const ontologyRetrieveRelation = (options) => (options.client ?? client).get({
8641
+ export const mediaListUnderstandings = (options) => (options.client ?? client).get({
8600
8642
  security: [{
8601
- key: 'ontology-bearerAuth',
8643
+ key: 'media-BearerAuth',
8602
8644
  scheme: 'bearer',
8603
8645
  type: 'http'
8604
8646
  }],
8605
- url: '/ontology/v1/relations/{relation_id}',
8647
+ url: '/media/v1/libraries/{library_id}/assets/{asset_id}/understandings',
8606
8648
  ...options
8607
8649
  });
8608
8650
  /**
8609
- * Invalidate relation
8651
+ * Expression search
8610
8652
  *
8611
- * Mark a relation as no longer true from a world time, when the mirrored record changed. The relation is kept — invalid_at moves and the relation still reads at an earlier as_of, so history stays answerable. Send an Idempotency-Key header; repeating the same key replays the first result. There is no delete.
8653
+ * 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.
8612
8654
  */
8613
- export const ontologyInvalidateRelation = (options) => (options.client ?? client).post({
8655
+ export const mediaExpressionSearch = (options) => (options.client ?? client).post({
8614
8656
  security: [{
8615
- key: 'ontology-bearerAuth',
8657
+ key: 'media-BearerAuth',
8616
8658
  scheme: 'bearer',
8617
8659
  type: 'http'
8618
8660
  }],
8619
- url: '/ontology/v1/relations/{relation_id}/invalidate',
8661
+ url: '/media/v1/libraries/{library_id}/search/expression',
8620
8662
  ...options,
8621
8663
  headers: {
8622
8664
  'Content-Type': 'application/json',
@@ -8624,17 +8666,17 @@ export const ontologyInvalidateRelation = (options) => (options.client ?? client
8624
8666
  }
8625
8667
  });
8626
8668
  /**
8627
- * Apply changeset
8669
+ * Visual search
8628
8670
  *
8629
- * Apply a batch of node, relation and invalidation operations as one transaction, when a mirror has several records to write together and a partial write would leave the graph inconsistent. Every operation succeeds or none is applied. Send an Idempotency-Key header; the same key with the same content replays the first result, and the same key with different content is ONTOLOGY_CONFLICT.
8671
+ * 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.
8630
8672
  */
8631
- export const ontologyApplyChangeset = (options) => (options.client ?? client).post({
8673
+ export const mediaVisualSearch = (options) => (options.client ?? client).post({
8632
8674
  security: [{
8633
- key: 'ontology-bearerAuth',
8675
+ key: 'media-BearerAuth',
8634
8676
  scheme: 'bearer',
8635
8677
  type: 'http'
8636
8678
  }],
8637
- url: '/ontology/v1/changesets',
8679
+ url: '/media/v1/libraries/{library_id}/search/visual',
8638
8680
  ...options,
8639
8681
  headers: {
8640
8682
  'Content-Type': 'application/json',
@@ -8642,17 +8684,17 @@ export const ontologyApplyChangeset = (options) => (options.client ?? client).po
8642
8684
  }
8643
8685
  });
8644
8686
  /**
8645
- * Search nodes
8687
+ * Semantic search
8646
8688
  *
8647
- * Resolve text to the nodes it most likely names, when a mirror holds a name and needs the node id it corresponds to. Results are ranked candidates, not an answer, each reporting whether the match came from the node's name, an alias, its description or a relation's fact. Narrow with types, and cap the result count with limit (1–50, default 20). This reads structure; it is not an agent recall — agents recall through POST /agent/v1/agents/{agent_id}/consolidations.
8689
+ * 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.
8648
8690
  */
8649
- export const ontologySearch = (options) => (options.client ?? client).post({
8691
+ export const mediaSemanticSearch = (options) => (options.client ?? client).post({
8650
8692
  security: [{
8651
- key: 'ontology-bearerAuth',
8693
+ key: 'media-BearerAuth',
8652
8694
  scheme: 'bearer',
8653
8695
  type: 'http'
8654
8696
  }],
8655
- url: '/ontology/v1/search',
8697
+ url: '/media/v1/libraries/{library_id}/search/semantic',
8656
8698
  ...options,
8657
8699
  headers: {
8658
8700
  'Content-Type': 'application/json',
@@ -8660,47 +8702,605 @@ export const ontologySearch = (options) => (options.client ?? client).post({
8660
8702
  }
8661
8703
  });
8662
8704
  /**
8663
- * List sandboxes (v2)
8705
+ * Semantic search alias
8664
8706
  *
8665
- * 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.
8707
+ * 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.
8666
8708
  */
8667
- export const getSandboxV1Sandboxes = (options) => (options?.client ?? client).get({
8668
- querySerializer: { parameters: { state: { array: { explode: false } } } },
8669
- security: [
8670
- {
8671
- key: 'sandbox-ApiKeyAuth',
8672
- name: 'X-API-Key',
8673
- type: 'apiKey'
8674
- },
8675
- {
8676
- key: 'sandbox-AuthProviderBearerAuth',
8677
- scheme: 'bearer',
8678
- type: 'http'
8679
- },
8680
- {
8681
- key: 'sandbox-AuthProviderTeamAuth',
8682
- name: 'X-Team-ID',
8683
- type: 'apiKey'
8684
- },
8685
- { name: 'X-Admin-Token', type: 'apiKey' },
8686
- {
8687
- key: 'sandbox-AdminTeamAuth',
8688
- name: 'X-Team-ID',
8689
- type: 'apiKey'
8690
- },
8691
- {
8692
- key: 'sandbox-AdminJWTAuth',
8709
+ export const mediaSearch = (options) => (options.client ?? client).post({
8710
+ security: [{
8711
+ key: 'media-BearerAuth',
8693
8712
  scheme: 'bearer',
8694
8713
  type: 'http'
8695
- }
8696
- ],
8714
+ }],
8715
+ url: '/media/v1/libraries/{library_id}/search',
8716
+ ...options,
8717
+ headers: {
8718
+ 'Content-Type': 'application/json',
8719
+ ...options.headers
8720
+ }
8721
+ });
8722
+ /**
8723
+ * List folders
8724
+ *
8725
+ * undefined understood_count includes ready and partial assets; failed_count includes failed assets. Both accumulate descendants. counts_complete is false during historical backfill.
8726
+ */
8727
+ export const mediaListFolders = (options) => (options.client ?? client).get({
8728
+ security: [{
8729
+ key: 'media-BearerAuth',
8730
+ scheme: 'bearer',
8731
+ type: 'http'
8732
+ }],
8733
+ url: '/media/v1/libraries/{library_id}/folders',
8734
+ ...options
8735
+ });
8736
+ /**
8737
+ * Create batch
8738
+ *
8739
+ * Queue a frozen selection for tagging, untagging, context replacement, moving, deleting or reprocessing. IDs are limited to 1000; use an expression for larger selections, subject to the search scan budget. reprocess starts at most 30 assets per rolling minute per library. Only retryable failed steps and legacy source-size unsupported steps rerun. Omit kinds to inspect all recoverable steps, or supply kinds to narrow them. Other unsupported, permanent and completed steps remain unchanged; a permanent output blocks only its own step. Assets without any selected recoverable step count as failed items without starting understanding. Poll the returned job id; done counts accepted launches, not successful model inference. Staff Admin only permits reprocess and requires a nonblank reason. Example: {"action":"reprocess","selector":{"expression":"processing_state=failed AND failure_code=UPSTREAM_FAILED"}}. For understanding, Media generates proxies for video sources of 25 MB or more or longer than 10 minutes, and for audio-only sources of 100 MB or more; originals remain available unchanged. Long videos are supported. When a video proxy is needed and is still above 95 MB after recompression, the source is reported as UNSUPPORTED with the limit in the failure message. Proxy preparation uses the organization’s metered sandbox resources.
8740
+ */
8741
+ export const mediaCreateBatch = (options) => (options.client ?? client).post({
8742
+ security: [{
8743
+ key: 'media-BearerAuth',
8744
+ scheme: 'bearer',
8745
+ type: 'http'
8746
+ }],
8747
+ url: '/media/v1/libraries/{library_id}/batches',
8748
+ ...options,
8749
+ headers: {
8750
+ 'Content-Type': 'application/json',
8751
+ ...options.headers
8752
+ }
8753
+ });
8754
+ /**
8755
+ * Get batch
8756
+ *
8757
+ * 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.
8758
+ */
8759
+ export const mediaGetBatch = (options) => (options.client ?? client).get({
8760
+ security: [{
8761
+ key: 'media-BearerAuth',
8762
+ scheme: 'bearer',
8763
+ type: 'http'
8764
+ }],
8765
+ url: '/media/v1/libraries/{library_id}/batches/{job_id}',
8766
+ ...options
8767
+ });
8768
+ /**
8769
+ * Batch assets alias
8770
+ *
8771
+ * Queue a frozen selection for tagging, untagging, context replacement, moving, deleting or reprocessing. IDs are limited to 1000; use an expression for larger selections, subject to the search scan budget. reprocess starts at most 30 assets per rolling minute per library. Only retryable failed steps and legacy source-size unsupported steps rerun. Omit kinds to inspect all recoverable steps, or supply kinds to narrow them. Other unsupported, permanent and completed steps remain unchanged; a permanent output blocks only its own step. Assets without any selected recoverable step count as failed items without starting understanding. Poll the returned job id; done counts accepted launches, not successful model inference. Staff Admin only permits reprocess and requires a nonblank reason. Example: {"action":"reprocess","selector":{"expression":"processing_state=failed AND failure_code=UPSTREAM_FAILED"}}. For understanding, Media generates proxies for video sources of 25 MB or more or longer than 10 minutes, and for audio-only sources of 100 MB or more; originals remain available unchanged. Long videos are supported. When a video proxy is needed and is still above 95 MB after recompression, the source is reported as UNSUPPORTED with the limit in the failure message. Proxy preparation uses the organization’s metered sandbox resources.
8772
+ */
8773
+ export const mediaBatchAssets = (options) => (options.client ?? client).post({
8774
+ security: [{
8775
+ key: 'media-BearerAuth',
8776
+ scheme: 'bearer',
8777
+ type: 'http'
8778
+ }],
8779
+ url: '/media/v1/libraries/{library_id}/assets:batch',
8780
+ ...options,
8781
+ headers: {
8782
+ 'Content-Type': 'application/json',
8783
+ ...options.headers
8784
+ }
8785
+ });
8786
+ /**
8787
+ * Get job
8788
+ *
8789
+ * Read the current batch or generation Job status and progress. For generation, inspect outputs and failures; a successful output has already landed in the library as an asset.
8790
+ */
8791
+ export const mediaGetJob = (options) => (options.client ?? client).get({
8792
+ security: [{
8793
+ key: 'media-BearerAuth',
8794
+ scheme: 'bearer',
8795
+ type: 'http'
8796
+ }],
8797
+ url: '/media/v1/libraries/{library_id}/jobs/{job_id}',
8798
+ ...options
8799
+ });
8800
+ /**
8801
+ * List events
8802
+ *
8803
+ * Read library events in sequence order for observing asset writes and understanding progress. Obtain library_id from creation or listing; continue with after_seq for asc or before_seq for desc, without combining both. Use next_cursor when supplied. Reads do not start or retry understanding.
8804
+ */
8805
+ export const mediaListEvents = (options) => (options.client ?? client).get({
8806
+ security: [{
8807
+ key: 'media-BearerAuth',
8808
+ scheme: 'bearer',
8809
+ type: 'http'
8810
+ }],
8811
+ url: '/media/v1/libraries/{library_id}/events',
8812
+ ...options
8813
+ });
8814
+ /**
8815
+ * Create delivery token
8816
+ *
8817
+ * 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 900 seconds; narrow acl and expires_in before sharing. Anyone holding the token can read matching paths until expires_at.
8818
+ */
8819
+ export const mediaCreateDeliveryToken = (options) => (options.client ?? client).post({
8820
+ security: [{
8821
+ key: 'media-BearerAuth',
8822
+ scheme: 'bearer',
8823
+ type: 'http'
8824
+ }],
8825
+ url: '/media/v1/libraries/{library_id}/delivery_tokens',
8826
+ ...options,
8827
+ headers: {
8828
+ 'Content-Type': 'application/json',
8829
+ ...options.headers
8830
+ }
8831
+ });
8832
+ /**
8833
+ * Get default library
8834
+ *
8835
+ * Return this organization’s default library. Calling ensures the organization’s default library exists (ADR-093): the first call creates it and later calls return the same library, so this is the method to call before writing when no library id is known. Generated and edited media land here when no library is named. The path segment {lib} accepts the literal default, which resolves to this library before the credential check — so an agent that has never listed libraries can still write to the right place. Returns the same Library object as libraries.retrieve; a credential bound to one library reaches this only when that binding covers the default library.
8836
+ */
8837
+ export const mediaGetDefaultLibrary = (options) => (options?.client ?? client).get({
8838
+ security: [{
8839
+ key: 'media-BearerAuth',
8840
+ scheme: 'bearer',
8841
+ type: 'http'
8842
+ }],
8843
+ url: '/media/v1/libraries/default',
8844
+ ...options
8845
+ });
8846
+ /**
8847
+ * Set default library
8848
+ *
8849
+ * Point this organization’s default library at an existing library. Calling ensures the organization’s default library exists (ADR-093): the path is resolved before the credential check, so a first call creates the default library when there is none and then repoints it. The path segment {lib} accepts the literal default, which resolves to this library before the credential check. Supply library_id from library creation or listing; the library must be active and belong to the organization. This changes where library-less generation and uploads land across the whole organization, so it affects other callers as well as this one. It does not move or copy any asset — assets already in the previous default library stay there. Returns the library now set as the default. Deleting the default library is refused with LIBRARY_IS_DEFAULT until another library is made the default.
8850
+ */
8851
+ export const mediaSetDefaultLibrary = (options) => (options.client ?? client).put({
8852
+ security: [{
8853
+ key: 'media-BearerAuth',
8854
+ scheme: 'bearer',
8855
+ type: 'http'
8856
+ }],
8857
+ url: '/media/v1/libraries/default',
8858
+ ...options,
8859
+ headers: {
8860
+ 'Content-Type': 'application/json',
8861
+ ...options.headers
8862
+ }
8863
+ });
8864
+ /**
8865
+ * Get asset lineage
8866
+ *
8867
+ * Read the whole edit tree containing one asset, so a caller sees what it was edited from and what was edited from it. Use library_id from creation or listing and asset_id from asset creation or listing; library_id also accepts the literal default, which resolves to the organization’s default library before the credential check. The response names the root the tree descends from, the asset asked about, and every step between them, each with the operation, prompt and creation time that produced it. Deleted assets stay in the tree, marked deleted, so the chain stays connected after cleanup. This is a read: it starts no processing and changes no asset. Example: GET /media/v1/libraries/lib_example/assets/9dfa312ef9bc4b00816339b598b1152c/lineage.
8868
+ */
8869
+ export const mediaGetAssetLineage = (options) => (options.client ?? client).get({
8870
+ security: [{
8871
+ key: 'media-BearerAuth',
8872
+ scheme: 'bearer',
8873
+ type: 'http'
8874
+ }],
8875
+ url: '/media/v1/libraries/{library_id}/assets/{asset_id}/lineage',
8876
+ ...options
8877
+ });
8878
+ /**
8879
+ * Generate image
8880
+ *
8881
+ * Generate one or more images from a text prompt and store them straight into the library. Use library_id from creation or listing; the path segment {library_id} also accepts the literal default, which resolves to the organization’s default library before the credential check, so an agent that has never listed a library can still generate. The request body is the image request itself: prompt is required, and n, size, background, output_format, output, references, seed, model, asset_folder and understanding are optional. Set output to sticker for a cut-out with a transparent background. references attach existing assets with a role — edit_target, style, structure or subject — and a model that cannot honour a role returns REFERENCE_TYPE_MISMATCH. Aspect ratio is not accepted for images; name size instead. Generation is charged through Router and the job records the charge in usage; nothing is charged for a request refused before it starts. The response is 202 with a queued Job whose type is image and whose operation is generate; poll GET /media/v1/libraries/{library_id}/jobs/{job_id} until its status is completed or failed, then read the produced assets from the library. Send Idempotency-Key, or idempotency_key in the body, to retry without generating and charging twice. Example: POST /media/v1/libraries/default/images/generations with {"prompt":"A red kite above a calm sea at sunrise","n":1,"output":"sticker"}.
8882
+ */
8883
+ export const mediaGenerateImage = (options) => (options.client ?? client).post({
8884
+ security: [{
8885
+ key: 'media-BearerAuth',
8886
+ scheme: 'bearer',
8887
+ type: 'http'
8888
+ }],
8889
+ url: '/media/v1/libraries/{library_id}/images/generations',
8890
+ ...options,
8891
+ headers: {
8892
+ 'Content-Type': 'application/json',
8893
+ ...options.headers
8894
+ }
8895
+ });
8896
+ /**
8897
+ * Generate video
8898
+ *
8899
+ * Generate one or more videos from a text prompt and store them straight into the library. Use library_id from creation or listing; the path segment {library_id} also accepts the literal default, which resolves to the organization’s default library before the credential check, so an agent that has never listed a library can still generate. mode says what the video is anchored to: text needs only a prompt, image animates the existing image named by first_frame, and first_last interpolates between first_frame and last_frame. The frames must be image or sticker assets of the same library; Router is sent a fetchable URL for each, recorded in the produced asset’s provenance. mode reference and output gif are refused with OPERATION_NOT_SUPPORTED in this release, and negative_prompt, references and an unknown mode are refused before anything is charged. Every output lands in the library as a video asset as soon as it is ready — there is no candidate state and nothing expires, so outputs.save is not part of this lane. Generation is charged per second through Router and the job records the charge in usage; a refused request costs nothing. The response is 202 with a queued Job whose type is video and whose operation is generate; poll GET /media/v1/libraries/{library_id}/jobs/{job_id} until its status is completed or failed, then read the produced assets from the library. Send Idempotency-Key, or idempotency_key in the body, to retry without generating and charging twice. Example: POST /media/v1/libraries/default/videos/generations with {"prompt":"A red kite above a calm sea at sunrise","mode":"text","n":1}.
8900
+ */
8901
+ export const mediaGenerateVideo = (options) => (options.client ?? client).post({
8902
+ security: [{
8903
+ key: 'media-BearerAuth',
8904
+ scheme: 'bearer',
8905
+ type: 'http'
8906
+ }],
8907
+ url: '/media/v1/libraries/{library_id}/videos/generations',
8908
+ ...options,
8909
+ headers: {
8910
+ 'Content-Type': 'application/json',
8911
+ ...options.headers
8912
+ }
8913
+ });
8914
+ /**
8915
+ * Edit asset
8916
+ *
8917
+ * Edit an existing asset and store the result as a new asset. Use library_id from creation or listing and asset_id from asset creation or listing; library_id also accepts the literal default, which resolves to the organization’s default library before the credential check. The source asset is never overwritten: the new asset hangs under it in the edit chain, records it in derived_from, and reads back with assets.lineage, so earlier steps stay reachable. The body is operation plus the optional model, asset_folder, understanding and idempotency_key; operation.type selects the edit and carries that operation’s own fields. This release performs variations, inpaint, erase, replace_object, recolor, remove_background and replace_background on images; every other type in the operation vocabulary — the video and audio edits — is refused with OPERATION_NOT_SUPPORTED. inpaint takes mask, a PNG File identifier beginning with file- whose transparent area marks the region to replace, plus the prompt describing what belongs there. Aspects beyond the source asset’s material type return REFERENCE_TYPE_MISMATCH. Editing is charged through Router and the job records the charge in usage. The response is 202 with a queued Job whose type is image, whose operation is the edit applied, and whose source_asset_id is the asset edited; poll GET /media/v1/libraries/{library_id}/jobs/{job_id} until it is completed or failed, then read the produced asset. Example: POST /media/v1/libraries/lib_example/assets/9dfa312ef9bc4b00816339b598b1152c/edits with {"operation":{"type":"variations","strength":"subtle"}}.
8918
+ */
8919
+ export const mediaEditAsset = (options) => (options.client ?? client).post({
8920
+ security: [{
8921
+ key: 'media-BearerAuth',
8922
+ scheme: 'bearer',
8923
+ type: 'http'
8924
+ }],
8925
+ url: '/media/v1/libraries/{library_id}/assets/{asset_id}/edits',
8926
+ ...options,
8927
+ headers: {
8928
+ 'Content-Type': 'application/json',
8929
+ ...options.headers
8930
+ }
8931
+ });
8932
+ /**
8933
+ * Create speech
8934
+ *
8935
+ * Synthesise speech from text and store the recording straight into the library. Use library_id from creation or listing; the path segment {library_id} also accepts the literal default, which resolves to the organization’s default library before the credential check, so an agent that has never listed a library can still synthesise. input is the text to speak and voice is required; speed is passed to the provider unchanged, and instructions and language are refused with OPERATION_NOT_SUPPORTED in this release. A voice that names a voice material of this library is refused the same way — voice cloning opens with voices.create. The provider caps one request at a short stretch of text, so a long input is cut into segments at paragraph and sentence boundaries and synthesised in order, then joined into the single recording the library receives: nothing is spoken twice and nothing is dropped. Because the segments are joined byte for byte, a multi-segment input accepts only response_format mp3 (the default) or pcm; opus is available for a single-segment input. A speech job has one result however many segments it took. Synthesis is charged through Router and the job records the charge in usage; a request refused before it starts costs nothing. The response is 202 with a queued Job whose type is speech and whose operation is generate; poll GET /media/v1/libraries/{library_id}/jobs/{job_id} until its status is completed or failed, then read the produced asset from the library — the recording carries material_type audio, audio_role voice, ai_generated true, and provenance naming this job, the text spoken and the model. Send Idempotency-Key, or idempotency_key in the body, to retry without synthesising and charging twice. Example: POST /media/v1/libraries/default/audio/speech with {"input":"A red kite above a calm sea at sunrise.","voice":"alloy"}.
8936
+ */
8937
+ export const mediaCreateSpeech = (options) => (options.client ?? client).post({
8938
+ security: [{
8939
+ key: 'media-BearerAuth',
8940
+ scheme: 'bearer',
8941
+ type: 'http'
8942
+ }],
8943
+ url: '/media/v1/libraries/{library_id}/audio/speech',
8944
+ ...options,
8945
+ headers: {
8946
+ 'Content-Type': 'application/json',
8947
+ ...options.headers
8948
+ }
8949
+ });
8950
+ /**
8951
+ * Summarize understanding failures
8952
+ *
8953
+ * Inspect current understanding failures before retrying. Use library_id from library creation or listing. Groups include code, output kind, actual producer model, retryability and up to five sample asset IDs. At most 1024 detailed groups plus two overflow groups are returned; overflow groups separate retryable and unrecoverable entries and mark overflow=true. Unknown failure codes remain retryable. Historical counts are provisional while counts_complete is false. Example: GET /media/v1/libraries/lib_example/understandings/failure_summary.
8954
+ */
8955
+ export const mediaUnderstandingFailureSummary = (options) => (options.client ?? client).get({
8956
+ security: [{
8957
+ key: 'media-BearerAuth',
8958
+ scheme: 'bearer',
8959
+ type: 'http'
8960
+ }],
8961
+ url: '/media/v1/libraries/{library_id}/understandings/failure_summary',
8962
+ ...options
8963
+ });
8964
+ /**
8965
+ * List understanding results across a library
8966
+ *
8967
+ * Read current understanding entries across one library without fetching every asset separately. Use library_id from creation or listing. folder includes descendants; kinds is a comma-separated list of output kinds. Entries are ordered by asset_id and then understanding id. Continue with next_cursor and the same folder and kinds; limit defaults to 100 and cannot exceed 100. Superseded, deleted and old-version entries are excluded. During historical backfill, this method returns 503 CAPACITY rather than incomplete pages; poll failureSummary until counts_complete is true, then start pagination. Example: GET /media/v1/libraries/lib_example/understandings?folder=travel&kinds=caption,transcript&limit=100.
8968
+ */
8969
+ export const mediaListUnderstandingsByLibrary = (options) => (options.client ?? client).get({
8970
+ security: [{
8971
+ key: 'media-BearerAuth',
8972
+ scheme: 'bearer',
8973
+ type: 'http'
8974
+ }],
8975
+ url: '/media/v1/libraries/{library_id}/understandings',
8976
+ ...options
8977
+ });
8978
+ /**
8979
+ * List jobs
8980
+ *
8981
+ * List batch and generation jobs in a library. Filter by status and continue with next_cursor. Poll a generation Job until terminal; every produced output is already a library asset.
8982
+ */
8983
+ export const mediaListJobs = (options) => (options.client ?? client).get({
8984
+ security: [{
8985
+ key: 'media-BearerAuth',
8986
+ scheme: 'bearer',
8987
+ type: 'http'
8988
+ }],
8989
+ url: '/media/v1/libraries/{library_id}/jobs',
8990
+ ...options
8991
+ });
8992
+ /**
8993
+ * Cancel job
8994
+ *
8995
+ * Cancel a queued or running generation job. Outputs already produced remain in the library; poll or read the returned Job to confirm its status.
8996
+ */
8997
+ export const mediaCancelJob = (options) => (options.client ?? client).post({
8998
+ security: [{
8999
+ key: 'media-BearerAuth',
9000
+ scheme: 'bearer',
9001
+ type: 'http'
9002
+ }],
9003
+ url: '/media/v1/libraries/{library_id}/jobs/{job_id}/cancel',
9004
+ ...options
9005
+ });
9006
+ /**
9007
+ * Get generation capabilities
9008
+ *
9009
+ * Read what Praxis offers for each kind of generation — image, video and speech — before asking for one. Every type answers the models available for it, the model it uses when a request names none, and what each model costs per unit; the video fields beside them keep their original meaning (intents, default model, duration and aspect-ratio limits, per-library concurrency). The models come from the platform model catalogue, and an id listed here is accepted verbatim as the model field of that type’s generation request. price.amount is a decimal string with its currency; video models that charge by resolution also carry price.by_resolution, whose amount is then the cheapest tier. A model the catalogue cannot route right now is still listed, with available false, so a caller can show it as temporarily unavailable instead of hiding it. When the catalogue cannot be read the endpoint still answers: every type comes back with an empty models list and its real default_model. Generation is charged per unit and every output is stored in the library.
9010
+ */
9011
+ export const mediaGetGenerationCapabilities = (options) => (options?.client ?? client).get({
9012
+ security: [{
9013
+ key: 'media-BearerAuth',
9014
+ scheme: 'bearer',
9015
+ type: 'http'
9016
+ }],
9017
+ url: '/media/v1/generation/capabilities',
9018
+ ...options
9019
+ });
9020
+ /**
9021
+ * List types
9022
+ *
9023
+ * Read the node and relation types registered for this organization before writing, so a create names a type the graph accepts. Each entry is one registrant's registration with its owner, version and definitions. Types cannot be created at runtime; they are registered by the owning service at deploy time, so a type missing here is not available to write.
9024
+ */
9025
+ export const ontologyListTypes = (options) => (options?.client ?? client).get({
9026
+ security: [{
9027
+ key: 'ontology-bearerAuth',
9028
+ scheme: 'bearer',
9029
+ type: 'http'
9030
+ }],
9031
+ url: '/ontology/v1/types',
9032
+ ...options
9033
+ });
9034
+ /**
9035
+ * Register type
9036
+ *
9037
+ * Register a node or relation type for this organization. Not open yet — this call currently answers 501 NOT_IMPLEMENTED and writes nothing, because a registration is checked and stored by the deploy gate that ships the registering service, not by a runtime call. Until it opens, read the types already in force with praxis.ontology.types.list and create records only of those types.
9038
+ */
9039
+ export const ontologyRegisterType = (options) => (options.client ?? client).post({
9040
+ security: [{
9041
+ key: 'ontology-bearerAuth',
9042
+ scheme: 'bearer',
9043
+ type: 'http'
9044
+ }],
9045
+ url: '/ontology/v1/types',
9046
+ ...options,
9047
+ headers: {
9048
+ 'Content-Type': 'application/json',
9049
+ ...options.headers
9050
+ }
9051
+ });
9052
+ /**
9053
+ * Retrieve type
9054
+ *
9055
+ * Read one registered type's definition before writing a record of it, to learn whether it is a node or an edge, which endpoints an edge type admits, and which origins it accepts. The name comes from types.list; a name that is not registered answers ONTOLOGY_TYPE_UNKNOWN, and writes of that type are refused.
9056
+ */
9057
+ export const ontologyRetrieveType = (options) => (options.client ?? client).get({
9058
+ security: [{
9059
+ key: 'ontology-bearerAuth',
9060
+ scheme: 'bearer',
9061
+ type: 'http'
9062
+ }],
9063
+ url: '/ontology/v1/types/{name}',
9064
+ ...options
9065
+ });
9066
+ /**
9067
+ * List nodes
9068
+ *
9069
+ * Discover the entities in this organization's graph and obtain node ids for retrieval, updates and relations. Filter by type, by free text over names, aliases, descriptions and facts, or by owner; limit is 1–100 and defaults to 50. Omit cursor for the first page, then copy next_cursor into the next request until it is null. A node whose content belongs to somebody else comes back as a restricted entry carrying only its id, type and name.
9070
+ */
9071
+ export const ontologyListNodes = (options) => (options?.client ?? client).get({
9072
+ security: [{
9073
+ key: 'ontology-bearerAuth',
9074
+ scheme: 'bearer',
9075
+ type: 'http'
9076
+ }],
9077
+ url: '/ontology/v1/nodes',
9078
+ ...options
9079
+ });
9080
+ /**
9081
+ * Create node
9082
+ *
9083
+ * Record one entity in the graph, for a system mirroring a record it owns. type must already be registered and ref, when given, must match that type's ref_prefix. Send an Idempotency-Key header; repeating the same key with the same content returns the first result instead of creating a second node. This writes structure only; it does not give any agent a memory.
9084
+ */
9085
+ export const ontologyCreateNode = (options) => (options.client ?? client).post({
9086
+ security: [{
9087
+ key: 'ontology-bearerAuth',
9088
+ scheme: 'bearer',
9089
+ type: 'http'
9090
+ }],
9091
+ url: '/ontology/v1/nodes',
9092
+ ...options,
9093
+ headers: {
9094
+ 'Content-Type': 'application/json',
9095
+ ...options.headers
9096
+ }
9097
+ });
9098
+ /**
9099
+ * Retrieve node
9100
+ *
9101
+ * Read one node's content and, with expand=relations, every relation on and around it. as_of reads the node as it was at that time. A node id from another organization, or one that never existed, answers ONTOLOGY_NODE_NOT_FOUND; a node you may reach but not read returns restricted true with its name only.
9102
+ */
9103
+ export const ontologyRetrieveNode = (options) => (options.client ?? client).get({
9104
+ security: [{
9105
+ key: 'ontology-bearerAuth',
9106
+ scheme: 'bearer',
9107
+ type: 'http'
9108
+ }],
9109
+ url: '/ontology/v1/nodes/{node_id}',
9110
+ ...options
9111
+ });
9112
+ /**
9113
+ * Update node
9114
+ *
9115
+ * Change a node's name, aliases or description when the mirrored record was renamed, without touching its type or identity. Send only the fields to change; omitted fields keep their current values and an explicitly null description clears it. Repeating the same edit converges on the same node, so this needs no Idempotency-Key.
9116
+ */
9117
+ export const ontologyUpdateNode = (options) => (options.client ?? client).patch({
9118
+ security: [{
9119
+ key: 'ontology-bearerAuth',
9120
+ scheme: 'bearer',
9121
+ type: 'http'
9122
+ }],
9123
+ url: '/ontology/v1/nodes/{node_id}',
9124
+ ...options,
9125
+ headers: {
9126
+ 'Content-Type': 'application/json',
9127
+ ...options.headers
9128
+ }
9129
+ });
9130
+ /**
9131
+ * Retrieve neighborhood
9132
+ *
9133
+ * Load the subgraph around one node instead of the whole graph — the read to use when a screen or an agent needs the context of one entity. Returns the start node, every node within depth hops of it, the relations whose both ends are in that set, and truncated true when the node limit cut the walk short. direction chooses which way relations are followed; as_of and include_invalid read the graph as those parameters do elsewhere. Visibility is exactly nodes.retrieve's — a node you may reach but not read comes back restricted with its name only, and relations touching it are withheld, so this read never reaches further than a node read does. The node id comes from nodes.list, nodes.create or a changeset; an unknown one answers ONTOLOGY_NODE_NOT_FOUND, the same answer nodes.retrieve gives.
9134
+ */
9135
+ export const ontologyNeighborhood = (options) => (options.client ?? client).get({
9136
+ security: [{
9137
+ key: 'ontology-bearerAuth',
9138
+ scheme: 'bearer',
9139
+ type: 'http'
9140
+ }],
9141
+ url: '/ontology/v1/nodes/{node_id}/neighborhood',
9142
+ ...options
9143
+ });
9144
+ /**
9145
+ * Merge node
9146
+ *
9147
+ * Fold a duplicate node into the node that should survive, when two records are discovered to be the same entity. The merged node's relations and aliases move to the survivor and later reads of the duplicate resolve to it. Send an Idempotency-Key header; repeating the same key replays the first result. Reversal is a staff operation, not available here.
9148
+ */
9149
+ export const ontologyMergeNode = (options) => (options.client ?? client).post({
9150
+ security: [{
9151
+ key: 'ontology-bearerAuth',
9152
+ scheme: 'bearer',
9153
+ type: 'http'
9154
+ }],
9155
+ url: '/ontology/v1/nodes/{node_id}/merge',
9156
+ ...options,
9157
+ headers: {
9158
+ 'Content-Type': 'application/json',
9159
+ ...options.headers
9160
+ }
9161
+ });
9162
+ /**
9163
+ * List relations
9164
+ *
9165
+ * Read the facts in the graph and obtain relation ids for retrieval, invalidation or spreading. Filter by endpoint node, by type and by direction; as_of reads the relations as they were then. Invalidated relations are omitted unless include_invalid is true. limit is 1–100 and defaults to 50; follow next_cursor until it is null.
9166
+ */
9167
+ export const ontologyListRelations = (options) => (options?.client ?? client).get({
9168
+ security: [{
9169
+ key: 'ontology-bearerAuth',
9170
+ scheme: 'bearer',
9171
+ type: 'http'
9172
+ }],
9173
+ url: '/ontology/v1/relations',
9174
+ ...options
9175
+ });
9176
+ /**
9177
+ * Create relation
9178
+ *
9179
+ * Record one fact between two existing nodes, for a system mirroring a relationship it owns. type must be registered and must admit these endpoints; fact states the relationship in one sentence. Send an Idempotency-Key header; repeating the same key returns the first result instead of writing a second relation. This writes structure only; it does not give any agent a memory.
9180
+ */
9181
+ export const ontologyCreateRelation = (options) => (options.client ?? client).post({
9182
+ security: [{
9183
+ key: 'ontology-bearerAuth',
9184
+ scheme: 'bearer',
9185
+ type: 'http'
9186
+ }],
9187
+ url: '/ontology/v1/relations',
9188
+ ...options,
9189
+ headers: {
9190
+ 'Content-Type': 'application/json',
9191
+ ...options.headers
9192
+ }
9193
+ });
9194
+ /**
9195
+ * Retrieve relation
9196
+ *
9197
+ * Read one relation's fact and both of its clocks — valid_at and invalid_at for when it was true in the world, created_at and expired_at for when it was recorded and retired. An id from another organization, or one that never existed, answers ONTOLOGY_EDGE_NOT_FOUND.
9198
+ */
9199
+ export const ontologyRetrieveRelation = (options) => (options.client ?? client).get({
9200
+ security: [{
9201
+ key: 'ontology-bearerAuth',
9202
+ scheme: 'bearer',
9203
+ type: 'http'
9204
+ }],
9205
+ url: '/ontology/v1/relations/{relation_id}',
9206
+ ...options
9207
+ });
9208
+ /**
9209
+ * Invalidate relation
9210
+ *
9211
+ * Mark a relation as no longer true from a world time, when the mirrored record changed. The relation is kept — invalid_at moves and the relation still reads at an earlier as_of, so history stays answerable. Send an Idempotency-Key header; repeating the same key replays the first result. There is no delete.
9212
+ */
9213
+ export const ontologyInvalidateRelation = (options) => (options.client ?? client).post({
9214
+ security: [{
9215
+ key: 'ontology-bearerAuth',
9216
+ scheme: 'bearer',
9217
+ type: 'http'
9218
+ }],
9219
+ url: '/ontology/v1/relations/{relation_id}/invalidate',
9220
+ ...options,
9221
+ headers: {
9222
+ 'Content-Type': 'application/json',
9223
+ ...options.headers
9224
+ }
9225
+ });
9226
+ /**
9227
+ * Apply changeset
9228
+ *
9229
+ * Apply a batch of node, relation and invalidation operations as one transaction, when a mirror has several records to write together and a partial write would leave the graph inconsistent. Every operation succeeds or none is applied. Send an Idempotency-Key header; the same key with the same content replays the first result, and the same key with different content is ONTOLOGY_CONFLICT.
9230
+ */
9231
+ export const ontologyApplyChangeset = (options) => (options.client ?? client).post({
9232
+ security: [{
9233
+ key: 'ontology-bearerAuth',
9234
+ scheme: 'bearer',
9235
+ type: 'http'
9236
+ }],
9237
+ url: '/ontology/v1/changesets',
9238
+ ...options,
9239
+ headers: {
9240
+ 'Content-Type': 'application/json',
9241
+ ...options.headers
9242
+ }
9243
+ });
9244
+ /**
9245
+ * Search nodes
9246
+ *
9247
+ * Resolve text to the nodes it most likely names, when a mirror holds a name and needs the node id it corresponds to. Results are ranked candidates, not an answer, each reporting whether the match came from the node's name, an alias, its description or a relation's fact. Narrow with types, and cap the result count with limit (1–50, default 20). This reads structure; it is not an agent's recall, which reads the graph from that agent's own viewpoint inside its sessions.
9248
+ */
9249
+ export const ontologySearch = (options) => (options.client ?? client).post({
9250
+ security: [{
9251
+ key: 'ontology-bearerAuth',
9252
+ scheme: 'bearer',
9253
+ type: 'http'
9254
+ }],
9255
+ url: '/ontology/v1/search',
9256
+ ...options,
9257
+ headers: {
9258
+ 'Content-Type': 'application/json',
9259
+ ...options.headers
9260
+ }
9261
+ });
9262
+ /**
9263
+ * List sandboxes (v2)
9264
+ *
9265
+ * 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.
9266
+ */
9267
+ export const getSandboxV1Sandboxes = (options) => (options?.client ?? client).get({
9268
+ querySerializer: { parameters: { state: { array: { explode: false } } } },
9269
+ security: [
9270
+ {
9271
+ key: 'sandbox-ApiKeyAuth',
9272
+ name: 'X-API-Key',
9273
+ type: 'apiKey'
9274
+ },
9275
+ {
9276
+ key: 'sandbox-AuthProviderBearerAuth',
9277
+ scheme: 'bearer',
9278
+ type: 'http'
9279
+ },
9280
+ {
9281
+ key: 'sandbox-AuthProviderTeamAuth',
9282
+ name: 'X-Team-ID',
9283
+ type: 'apiKey'
9284
+ },
9285
+ { name: 'X-Admin-Token', type: 'apiKey' },
9286
+ {
9287
+ key: 'sandbox-AdminTeamAuth',
9288
+ name: 'X-Team-ID',
9289
+ type: 'apiKey'
9290
+ },
9291
+ {
9292
+ key: 'sandbox-AdminJWTAuth',
9293
+ scheme: 'bearer',
9294
+ type: 'http'
9295
+ }
9296
+ ],
8697
9297
  url: '/sandbox/v1/sandboxes',
8698
9298
  ...options
8699
9299
  });
8700
9300
  /**
8701
9301
  * Create sandbox (v2)
8702
9302
  *
8703
- * Create a sandbox from the template. All system communication with the sandbox is secured.
9303
+ * Create a sandbox from a template. Every sandbox declares its lifecycle at creation. On the own face (X-Praxis-Face: own-v1) send ephemeral: true for an ephemeral sandbox (never pauses, cannot be snapshotted, deleted when it ends; for jobs such as transcodes, scripts and builds) or ephemeral: false for a persistent one (pauses and resumes, snapshots, mounts volumes, kept after it stops; for long-lived computers). Leaving ephemeral out returns INVALID_PARAMS. autoPause: true, onExpire: pause, autoPauseMemory, autoResume, idleTimeout, retention and volumes belong to persistent sandboxes and need ephemeral: false. Choose persistent only for long-lived computers. On the E2B-compatible face autoPause is the declaration: true is persistent, false or absent is ephemeral and ends at its timeout. Responses carry ephemeral. When a sandbox's machine has ended (timeout, kill, retention, provider loss), reaching it returns SANDBOX_EXPIRED (410) with terminationReason in the message: its files are gone, create a new sandbox.
8704
9304
  */
8705
9305
  export const postSandboxV1Sandboxes = (options) => (options.client ?? client).post({
8706
9306
  security: [
@@ -9162,19 +9762,212 @@ export const postSandboxV1SandboxesBySandboxIdFork = (options) => (options.clien
9162
9762
  type: 'http'
9163
9763
  }
9164
9764
  ],
9165
- url: '/sandbox/v1/sandboxes/{sandboxID}/fork',
9166
- ...options,
9167
- headers: {
9168
- 'Content-Type': 'application/json',
9169
- ...options.headers
9170
- }
9765
+ url: '/sandbox/v1/sandboxes/{sandboxID}/fork',
9766
+ ...options,
9767
+ headers: {
9768
+ 'Content-Type': 'application/json',
9769
+ ...options.headers
9770
+ }
9771
+ });
9772
+ /**
9773
+ * Create snapshot
9774
+ *
9775
+ * 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.
9776
+ */
9777
+ export const postSandboxV1SandboxesBySandboxIdSnapshots = (options) => (options.client ?? client).post({
9778
+ security: [
9779
+ {
9780
+ key: 'sandbox-ApiKeyAuth',
9781
+ name: 'X-API-Key',
9782
+ type: 'apiKey'
9783
+ },
9784
+ {
9785
+ key: 'sandbox-AuthProviderBearerAuth',
9786
+ scheme: 'bearer',
9787
+ type: 'http'
9788
+ },
9789
+ {
9790
+ key: 'sandbox-AuthProviderTeamAuth',
9791
+ name: 'X-Team-ID',
9792
+ type: 'apiKey'
9793
+ },
9794
+ { name: 'X-Admin-Token', type: 'apiKey' },
9795
+ {
9796
+ key: 'sandbox-AdminTeamAuth',
9797
+ name: 'X-Team-ID',
9798
+ type: 'apiKey'
9799
+ },
9800
+ {
9801
+ key: 'sandbox-AdminJWTAuth',
9802
+ scheme: 'bearer',
9803
+ type: 'http'
9804
+ }
9805
+ ],
9806
+ url: '/sandbox/v1/sandboxes/{sandboxID}/snapshots',
9807
+ ...options,
9808
+ headers: {
9809
+ 'Content-Type': 'application/json',
9810
+ ...options.headers
9811
+ }
9812
+ });
9813
+ /**
9814
+ * List snapshots
9815
+ *
9816
+ * 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.
9817
+ */
9818
+ export const getSandboxV1Snapshots = (options) => (options?.client ?? client).get({
9819
+ security: [
9820
+ {
9821
+ key: 'sandbox-ApiKeyAuth',
9822
+ name: 'X-API-Key',
9823
+ type: 'apiKey'
9824
+ },
9825
+ {
9826
+ key: 'sandbox-AuthProviderBearerAuth',
9827
+ scheme: 'bearer',
9828
+ type: 'http'
9829
+ },
9830
+ {
9831
+ key: 'sandbox-AuthProviderTeamAuth',
9832
+ name: 'X-Team-ID',
9833
+ type: 'apiKey'
9834
+ },
9835
+ { name: 'X-Admin-Token', type: 'apiKey' },
9836
+ {
9837
+ key: 'sandbox-AdminTeamAuth',
9838
+ name: 'X-Team-ID',
9839
+ type: 'apiKey'
9840
+ },
9841
+ {
9842
+ key: 'sandbox-AdminJWTAuth',
9843
+ scheme: 'bearer',
9844
+ type: 'http'
9845
+ }
9846
+ ],
9847
+ url: '/sandbox/v1/snapshots',
9848
+ ...options
9849
+ });
9850
+ /**
9851
+ * Delete template
9852
+ *
9853
+ * 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.
9854
+ */
9855
+ export const deleteSandboxV1SnapshotsBySnapshotId = (options) => (options.client ?? client).delete({
9856
+ security: [
9857
+ {
9858
+ key: 'sandbox-ApiKeyAuth',
9859
+ name: 'X-API-Key',
9860
+ type: 'apiKey'
9861
+ },
9862
+ {
9863
+ key: 'sandbox-AuthProviderBearerAuth',
9864
+ scheme: 'bearer',
9865
+ type: 'http'
9866
+ },
9867
+ {
9868
+ key: 'sandbox-AuthProviderTeamAuth',
9869
+ name: 'X-Team-ID',
9870
+ type: 'apiKey'
9871
+ },
9872
+ { name: 'X-Admin-Token', type: 'apiKey' },
9873
+ {
9874
+ key: 'sandbox-AdminTeamAuth',
9875
+ name: 'X-Team-ID',
9876
+ type: 'apiKey'
9877
+ },
9878
+ {
9879
+ key: 'sandbox-AdminJWTAuth',
9880
+ scheme: 'bearer',
9881
+ type: 'http'
9882
+ }
9883
+ ],
9884
+ url: '/sandbox/v1/snapshots/{snapshotID}',
9885
+ ...options
9886
+ });
9887
+ /**
9888
+ * Update sandbox network
9889
+ *
9890
+ * Update the network configuration for a running sandbox. Replaces the current egress rules with the provided configuration. Omitting field clears it.
9891
+ */
9892
+ export const putSandboxV1SandboxesBySandboxIdNetwork = (options) => (options.client ?? client).put({
9893
+ security: [
9894
+ {
9895
+ key: 'sandbox-ApiKeyAuth',
9896
+ name: 'X-API-Key',
9897
+ type: 'apiKey'
9898
+ },
9899
+ {
9900
+ key: 'sandbox-AuthProviderBearerAuth',
9901
+ scheme: 'bearer',
9902
+ type: 'http'
9903
+ },
9904
+ {
9905
+ key: 'sandbox-AuthProviderTeamAuth',
9906
+ name: 'X-Team-ID',
9907
+ type: 'apiKey'
9908
+ },
9909
+ { name: 'X-Admin-Token', type: 'apiKey' },
9910
+ {
9911
+ key: 'sandbox-AdminTeamAuth',
9912
+ name: 'X-Team-ID',
9913
+ type: 'apiKey'
9914
+ },
9915
+ {
9916
+ key: 'sandbox-AdminJWTAuth',
9917
+ scheme: 'bearer',
9918
+ type: 'http'
9919
+ }
9920
+ ],
9921
+ url: '/sandbox/v1/sandboxes/{sandboxID}/network',
9922
+ ...options,
9923
+ headers: {
9924
+ 'Content-Type': 'application/json',
9925
+ ...options.headers
9926
+ }
9927
+ });
9928
+ /**
9929
+ * Sandbox logs (v2)
9930
+ *
9931
+ * 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.
9932
+ */
9933
+ export const getSandboxV1SandboxesBySandboxIdLogs = (options) => (options.client ?? client).get({
9934
+ security: [
9935
+ {
9936
+ key: 'sandbox-ApiKeyAuth',
9937
+ name: 'X-API-Key',
9938
+ type: 'apiKey'
9939
+ },
9940
+ {
9941
+ key: 'sandbox-AuthProviderBearerAuth',
9942
+ scheme: 'bearer',
9943
+ type: 'http'
9944
+ },
9945
+ {
9946
+ key: 'sandbox-AuthProviderTeamAuth',
9947
+ name: 'X-Team-ID',
9948
+ type: 'apiKey'
9949
+ },
9950
+ { name: 'X-Admin-Token', type: 'apiKey' },
9951
+ {
9952
+ key: 'sandbox-AdminTeamAuth',
9953
+ name: 'X-Team-ID',
9954
+ type: 'apiKey'
9955
+ },
9956
+ {
9957
+ key: 'sandbox-AdminJWTAuth',
9958
+ scheme: 'bearer',
9959
+ type: 'http'
9960
+ }
9961
+ ],
9962
+ url: '/sandbox/v1/sandboxes/{sandboxID}/logs',
9963
+ ...options
9171
9964
  });
9172
9965
  /**
9173
- * Create snapshot
9966
+ * Start template build (v2)
9174
9967
  *
9175
- * 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.
9968
+ * 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"]}]}.
9176
9969
  */
9177
- export const postSandboxV1SandboxesBySandboxIdSnapshots = (options) => (options.client ?? client).post({
9970
+ export const startTemplateBuild = (options) => (options.client ?? client).post({
9178
9971
  security: [
9179
9972
  {
9180
9973
  key: 'sandbox-ApiKeyAuth',
@@ -9203,7 +9996,7 @@ export const postSandboxV1SandboxesBySandboxIdSnapshots = (options) => (options.
9203
9996
  type: 'http'
9204
9997
  }
9205
9998
  ],
9206
- url: '/sandbox/v1/sandboxes/{sandboxID}/snapshots',
9999
+ url: '/sandbox/v1/templates/{templateID}/builds/{buildID}',
9207
10000
  ...options,
9208
10001
  headers: {
9209
10002
  'Content-Type': 'application/json',
@@ -9211,11 +10004,11 @@ export const postSandboxV1SandboxesBySandboxIdSnapshots = (options) => (options.
9211
10004
  }
9212
10005
  });
9213
10006
  /**
9214
- * List snapshots
10007
+ * Template build status
9215
10008
  *
9216
- * 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.
10009
+ * 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.
9217
10010
  */
9218
- export const getSandboxV1Snapshots = (options) => (options?.client ?? client).get({
10011
+ export const getTemplateBuildStatus = (options) => (options.client ?? client).get({
9219
10012
  security: [
9220
10013
  {
9221
10014
  key: 'sandbox-ApiKeyAuth',
@@ -9244,15 +10037,15 @@ export const getSandboxV1Snapshots = (options) => (options?.client ?? client).ge
9244
10037
  type: 'http'
9245
10038
  }
9246
10039
  ],
9247
- url: '/sandbox/v1/snapshots',
10040
+ url: '/sandbox/v1/templates/{templateID}/builds/{buildID}/status',
9248
10041
  ...options
9249
10042
  });
9250
10043
  /**
9251
10044
  * Delete template
9252
10045
  *
9253
- * 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.
10046
+ * 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.
9254
10047
  */
9255
- export const deleteSandboxV1SnapshotsBySnapshotId = (options) => (options.client ?? client).delete({
10048
+ export const deleteUserTemplate = (options) => (options.client ?? client).delete({
9256
10049
  security: [
9257
10050
  {
9258
10051
  key: 'sandbox-ApiKeyAuth',
@@ -9281,15 +10074,15 @@ export const deleteSandboxV1SnapshotsBySnapshotId = (options) => (options.client
9281
10074
  type: 'http'
9282
10075
  }
9283
10076
  ],
9284
- url: '/sandbox/v1/snapshots/{snapshotID}',
10077
+ url: '/sandbox/v1/templates/{templateID}',
9285
10078
  ...options
9286
10079
  });
9287
10080
  /**
9288
- * Update sandbox network
10081
+ * List template builds
9289
10082
  *
9290
- * Update the network configuration for a running sandbox. Replaces the current egress rules with the provided configuration. Omitting field clears it.
10083
+ * 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.
9291
10084
  */
9292
- export const putSandboxV1SandboxesBySandboxIdNetwork = (options) => (options.client ?? client).put({
10085
+ export const getTemplateWithBuilds = (options) => (options.client ?? client).get({
9293
10086
  security: [
9294
10087
  {
9295
10088
  key: 'sandbox-ApiKeyAuth',
@@ -9318,19 +10111,15 @@ export const putSandboxV1SandboxesBySandboxIdNetwork = (options) => (options.cli
9318
10111
  type: 'http'
9319
10112
  }
9320
10113
  ],
9321
- url: '/sandbox/v1/sandboxes/{sandboxID}/network',
9322
- ...options,
9323
- headers: {
9324
- 'Content-Type': 'application/json',
9325
- ...options.headers
9326
- }
10114
+ url: '/sandbox/v1/templates/{templateID}',
10115
+ ...options
9327
10116
  });
9328
10117
  /**
9329
- * Sandbox logs (v2)
10118
+ * Delete template tags
9330
10119
  *
9331
- * 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.
10120
+ * 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.
9332
10121
  */
9333
- export const getSandboxV1SandboxesBySandboxIdLogs = (options) => (options.client ?? client).get({
10122
+ export const deleteTemplateTags = (options) => (options.client ?? client).delete({
9334
10123
  security: [
9335
10124
  {
9336
10125
  key: 'sandbox-ApiKeyAuth',
@@ -9359,15 +10148,19 @@ export const getSandboxV1SandboxesBySandboxIdLogs = (options) => (options.client
9359
10148
  type: 'http'
9360
10149
  }
9361
10150
  ],
9362
- url: '/sandbox/v1/sandboxes/{sandboxID}/logs',
9363
- ...options
10151
+ url: '/sandbox/v1/templates/tags',
10152
+ ...options,
10153
+ headers: {
10154
+ 'Content-Type': 'application/json',
10155
+ ...options.headers
10156
+ }
9364
10157
  });
9365
10158
  /**
9366
- * Start template build (v2)
10159
+ * Assign template tags
9367
10160
  *
9368
- * 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"]}]}.
10161
+ * 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.
9369
10162
  */
9370
- export const startTemplateBuild = (options) => (options.client ?? client).post({
10163
+ export const assignTemplateTags = (options) => (options.client ?? client).post({
9371
10164
  security: [
9372
10165
  {
9373
10166
  key: 'sandbox-ApiKeyAuth',
@@ -9396,7 +10189,7 @@ export const startTemplateBuild = (options) => (options.client ?? client).post({
9396
10189
  type: 'http'
9397
10190
  }
9398
10191
  ],
9399
- url: '/sandbox/v1/templates/{templateID}/builds/{buildID}',
10192
+ url: '/sandbox/v1/templates/tags',
9400
10193
  ...options,
9401
10194
  headers: {
9402
10195
  'Content-Type': 'application/json',
@@ -9404,11 +10197,11 @@ export const startTemplateBuild = (options) => (options.client ?? client).post({
9404
10197
  }
9405
10198
  });
9406
10199
  /**
9407
- * Template build status
10200
+ * List template tags
9408
10201
  *
9409
- * 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.
10202
+ * 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.
9410
10203
  */
9411
- export const getTemplateBuildStatus = (options) => (options.client ?? client).get({
10204
+ export const listTemplateTags = (options) => (options.client ?? client).get({
9412
10205
  security: [
9413
10206
  {
9414
10207
  key: 'sandbox-ApiKeyAuth',
@@ -9437,15 +10230,15 @@ export const getTemplateBuildStatus = (options) => (options.client ?? client).ge
9437
10230
  type: 'http'
9438
10231
  }
9439
10232
  ],
9440
- url: '/sandbox/v1/templates/{templateID}/builds/{buildID}/status',
10233
+ url: '/sandbox/v1/templates/{templateID}/tags',
9441
10234
  ...options
9442
10235
  });
9443
10236
  /**
9444
- * Delete template
10237
+ * Check template alias
9445
10238
  *
9446
- * 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.
10239
+ * 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.
9447
10240
  */
9448
- export const deleteUserTemplate = (options) => (options.client ?? client).delete({
10241
+ export const resolveTemplateAlias = (options) => (options.client ?? client).get({
9449
10242
  security: [
9450
10243
  {
9451
10244
  key: 'sandbox-ApiKeyAuth',
@@ -9474,81 +10267,187 @@ export const deleteUserTemplate = (options) => (options.client ?? client).delete
9474
10267
  type: 'http'
9475
10268
  }
9476
10269
  ],
9477
- url: '/sandbox/v1/templates/{templateID}',
10270
+ url: '/sandbox/v1/templates/aliases/{alias}',
9478
10271
  ...options
9479
10272
  });
9480
10273
  /**
9481
- * List template builds
10274
+ * Search for data based on a query
9482
10275
  *
9483
- * 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.
10276
+ * Search the web and return ranked results with extracted content. Use it to answer questions with current information; to read the full text of known URLs use searchExtract, to walk a site use searchCrawl and to list a site's URLs use searchMap. query is required. topic chooses general, news or finance; time_range limits results to the last day, week, month or year; country boosts results from one country (topic general only). Each result carries title, url, content and a relevance score, and the response can include a generated answer, images and follow-up questions when requested.
9484
10277
  */
9485
- export const getTemplateWithBuilds = (options) => (options.client ?? client).get({
9486
- security: [
9487
- {
9488
- key: 'sandbox-ApiKeyAuth',
10278
+ export const searchSearch = (options) => (options.client ?? client).post({
10279
+ security: [{
10280
+ key: 'search-bearerAuth',
10281
+ scheme: 'bearer',
10282
+ type: 'http'
10283
+ }],
10284
+ url: '/search/v1/search',
10285
+ ...options,
10286
+ headers: {
10287
+ 'Content-Type': 'application/json',
10288
+ ...options.headers
10289
+ }
10290
+ });
10291
+ /**
10292
+ * Retrieve raw web content from specified URLs
10293
+ *
10294
+ * Extract content from one URL or batch up to 20 URLs in one request. Successful URLs appear in results; per-URL failures appear in failed_results. Check both arrays even when the response is HTTP 200. Request options apply to every URL in the batch.
10295
+ */
10296
+ export const searchExtract = (options) => (options.client ?? client).post({
10297
+ security: [{
10298
+ key: 'search-bearerAuth',
10299
+ scheme: 'bearer',
10300
+ type: 'http'
10301
+ }],
10302
+ url: '/search/v1/extract',
10303
+ ...options,
10304
+ headers: {
10305
+ 'Content-Type': 'application/json',
10306
+ ...options.headers
10307
+ }
10308
+ });
10309
+ /**
10310
+ * Initiate a web crawl from a base URL
10311
+ *
10312
+ * Tavily Crawl is a graph-based website traversal tool that can explore hundreds of paths in parallel with built-in extraction and intelligent discovery.
10313
+ */
10314
+ export const searchCrawl = (options) => (options.client ?? client).post({
10315
+ security: [{
10316
+ key: 'search-bearerAuth',
10317
+ scheme: 'bearer',
10318
+ type: 'http'
10319
+ }],
10320
+ url: '/search/v1/crawl',
10321
+ ...options,
10322
+ headers: {
10323
+ 'Content-Type': 'application/json',
10324
+ ...options.headers
10325
+ }
10326
+ });
10327
+ /**
10328
+ * Initiate a web mapping from a base URL
10329
+ *
10330
+ * Tavily Map traverses websites like a graph and can explore hundreds of paths in parallel with intelligent discovery to generate comprehensive site maps.
10331
+ */
10332
+ export const searchMap = (options) => (options.client ?? client).post({
10333
+ security: [{
10334
+ key: 'search-bearerAuth',
10335
+ scheme: 'bearer',
10336
+ type: 'http'
10337
+ }],
10338
+ url: '/search/v1/map',
10339
+ ...options,
10340
+ headers: {
10341
+ 'Content-Type': 'application/json',
10342
+ ...options.headers
10343
+ }
10344
+ });
10345
+ /**
10346
+ * List the genres Studio can write
10347
+ *
10348
+ * List the genre catalog so you can choose how a piece is structured before creating a draft. Each genre names its unit kinds, draft properties, deterministic checks and writing rules, and by default only the genres open today are returned. Read the chosen genre in full with studioGenresGet before the first write, because its kinds and limits decide what that draft accepts.
10349
+ */
10350
+ export const studioGenresList = (options) => (options?.client ?? client).get({
10351
+ security: [{
10352
+ key: 'BearerAuth',
10353
+ scheme: 'bearer',
10354
+ type: 'http'
10355
+ }, {
10356
+ key: 'ApiKeyAuth',
9489
10357
  name: 'X-API-Key',
9490
10358
  type: 'apiKey'
9491
- },
9492
- {
9493
- key: 'sandbox-AuthProviderBearerAuth',
10359
+ }],
10360
+ url: '/studio/v1/genres',
10361
+ ...options
10362
+ });
10363
+ /**
10364
+ * Read one genre with its built-in templates
10365
+ *
10366
+ * Read the full rules of one genre: its unit kinds and what each may contain, the draft properties with their limits, the deterministic checks the software runs, the semantic review list, and the built-in templates that can seed a draft. Ask for this before creating a draft of that genre, and again when a write is refused for an unknown kind, a property limit or a block type the genre does not allow.
10367
+ */
10368
+ export const studioGenresGet = (options) => (options.client ?? client).get({
10369
+ security: [{
10370
+ key: 'BearerAuth',
9494
10371
  scheme: 'bearer',
9495
10372
  type: 'http'
9496
- },
9497
- {
9498
- key: 'sandbox-AuthProviderTeamAuth',
9499
- name: 'X-Team-ID',
10373
+ }, {
10374
+ key: 'ApiKeyAuth',
10375
+ name: 'X-API-Key',
9500
10376
  type: 'apiKey'
9501
- },
9502
- { name: 'X-Admin-Token', type: 'apiKey' },
9503
- {
9504
- key: 'sandbox-AdminTeamAuth',
9505
- name: 'X-Team-ID',
10377
+ }],
10378
+ url: '/studio/v1/genres/{genre}',
10379
+ ...options
10380
+ });
10381
+ /**
10382
+ * List the platforms a work can be produced for
10383
+ *
10384
+ * List rendition targets with the format each needs, whether it receives a finished piece through an API, a draft box or an export, and the hard limits a piece must respect. Pass a genre to see only the platforms that genre produces by default. Read one platform in full before rendering, because its limits decide whether the rendition validates.
10385
+ */
10386
+ export const studioPlatformsList = (options) => (options?.client ?? client).get({
10387
+ security: [{
10388
+ key: 'BearerAuth',
10389
+ scheme: 'bearer',
10390
+ type: 'http'
10391
+ }, {
10392
+ key: 'ApiKeyAuth',
10393
+ name: 'X-API-Key',
9506
10394
  type: 'apiKey'
9507
- },
9508
- {
9509
- key: 'sandbox-AdminJWTAuth',
10395
+ }],
10396
+ url: '/studio/v1/platforms',
10397
+ ...options
10398
+ });
10399
+ /**
10400
+ * Read the rules of one platform
10401
+ *
10402
+ * Read one platform in full: the format it consumes, how it receives a finished piece, the preview fidelity the Console can offer, the limits on title, body, image count and aspect, and whether a connected channel is required. Read this before creating a rendition, and again when validation reports that the piece breaks a platform limit.
10403
+ */
10404
+ export const studioPlatformsGet = (options) => (options.client ?? client).get({
10405
+ security: [{
10406
+ key: 'BearerAuth',
9510
10407
  scheme: 'bearer',
9511
10408
  type: 'http'
9512
- }
9513
- ],
9514
- url: '/sandbox/v1/templates/{templateID}',
10409
+ }, {
10410
+ key: 'ApiKeyAuth',
10411
+ name: 'X-API-Key',
10412
+ type: 'apiKey'
10413
+ }],
10414
+ url: '/studio/v1/platforms/{platform}',
10415
+ ...options
10416
+ });
10417
+ /**
10418
+ * List the works of this organization
10419
+ *
10420
+ * List works owned by the API key organization so you can find the one being discussed, with its drafts and how long ago each moved. Archived works are left out unless you ask for them. Continue with next_page_token until the answer stops carrying one; the summaries carry no unit bodies, so read a work before writing in it.
10421
+ */
10422
+ export const studioWorksList = (options) => (options?.client ?? client).get({
10423
+ security: [{
10424
+ key: 'BearerAuth',
10425
+ scheme: 'bearer',
10426
+ type: 'http'
10427
+ }, {
10428
+ key: 'ApiKeyAuth',
10429
+ name: 'X-API-Key',
10430
+ type: 'apiKey'
10431
+ }],
10432
+ url: '/studio/v1/works',
9515
10433
  ...options
9516
10434
  });
9517
10435
  /**
9518
- * Delete template tags
10436
+ * Create a work with its goal
9519
10437
  *
9520
- * 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.
10438
+ * Create a work: one deliverable piece plus everything around it. Pass the goal the writing serves — the reader, what that reader should get or do, the one-sentence message and the constraints — and the original brief the person gave in their own words. A slug is derived from the title unless you pass one. The work starts with no drafts; create the first one with the drafts create call, because the genre decides the structure.
9521
10439
  */
9522
- export const deleteTemplateTags = (options) => (options.client ?? client).delete({
9523
- security: [
9524
- {
9525
- key: 'sandbox-ApiKeyAuth',
9526
- name: 'X-API-Key',
9527
- type: 'apiKey'
9528
- },
9529
- {
9530
- key: 'sandbox-AuthProviderBearerAuth',
10440
+ export const studioWorksCreate = (options) => (options.client ?? client).post({
10441
+ security: [{
10442
+ key: 'BearerAuth',
9531
10443
  scheme: 'bearer',
9532
10444
  type: 'http'
9533
- },
9534
- {
9535
- key: 'sandbox-AuthProviderTeamAuth',
9536
- name: 'X-Team-ID',
9537
- type: 'apiKey'
9538
- },
9539
- { name: 'X-Admin-Token', type: 'apiKey' },
9540
- {
9541
- key: 'sandbox-AdminTeamAuth',
9542
- name: 'X-Team-ID',
10445
+ }, {
10446
+ key: 'ApiKeyAuth',
10447
+ name: 'X-API-Key',
9543
10448
  type: 'apiKey'
9544
- },
9545
- {
9546
- key: 'sandbox-AdminJWTAuth',
9547
- scheme: 'bearer',
9548
- type: 'http'
9549
- }
9550
- ],
9551
- url: '/sandbox/v1/templates/tags',
10449
+ }],
10450
+ url: '/studio/v1/works',
9552
10451
  ...options,
9553
10452
  headers: {
9554
10453
  'Content-Type': 'application/json',
@@ -9556,40 +10455,57 @@ export const deleteTemplateTags = (options) => (options.client ?? client).delete
9556
10455
  }
9557
10456
  });
9558
10457
  /**
9559
- * Assign template tags
10458
+ * Resolve a loose reference to a work, draft or unit
9560
10459
  *
9561
- * 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.
10460
+ * Turn a loose reference into the address the other calls take: a slug, a work title, a draft key or a unit number, as a person or another tool would say it. A hit answers the work slug and, when the reference pointed deeper, the draft key and unit number; a miss answers an empty resolved value with up to three near matches instead of failing. Use it when a person names something instead of an id.
9562
10461
  */
9563
- export const assignTemplateTags = (options) => (options.client ?? client).post({
9564
- security: [
9565
- {
9566
- key: 'sandbox-ApiKeyAuth',
10462
+ export const studioWorksResolve = (options) => (options.client ?? client).get({
10463
+ security: [{
10464
+ key: 'BearerAuth',
10465
+ scheme: 'bearer',
10466
+ type: 'http'
10467
+ }, {
10468
+ key: 'ApiKeyAuth',
9567
10469
  name: 'X-API-Key',
9568
10470
  type: 'apiKey'
9569
- },
9570
- {
9571
- key: 'sandbox-AuthProviderBearerAuth',
10471
+ }],
10472
+ url: '/studio/v1/works:resolve',
10473
+ ...options
10474
+ });
10475
+ /**
10476
+ * Read a work, optionally with one draft and unit
10477
+ *
10478
+ * Read a work and, in the same answer, whatever part of it the page needs: pass draft to get that draft with its todos, its unit outline and its properties, and unit to get one unit with its blocks and Markdown body. This is the call that opens an editing session, because it answers the goal, the brief, the current revisions and the unit to write in one round trip.
10479
+ */
10480
+ export const studioWorksGet = (options) => (options.client ?? client).get({
10481
+ security: [{
10482
+ key: 'BearerAuth',
9572
10483
  scheme: 'bearer',
9573
10484
  type: 'http'
9574
- },
9575
- {
9576
- key: 'sandbox-AuthProviderTeamAuth',
9577
- name: 'X-Team-ID',
9578
- type: 'apiKey'
9579
- },
9580
- { name: 'X-Admin-Token', type: 'apiKey' },
9581
- {
9582
- key: 'sandbox-AdminTeamAuth',
9583
- name: 'X-Team-ID',
10485
+ }, {
10486
+ key: 'ApiKeyAuth',
10487
+ name: 'X-API-Key',
9584
10488
  type: 'apiKey'
9585
- },
9586
- {
9587
- key: 'sandbox-AdminJWTAuth',
10489
+ }],
10490
+ url: '/studio/v1/works/{work}',
10491
+ ...options
10492
+ });
10493
+ /**
10494
+ * Change the title, goal or attached libraries
10495
+ *
10496
+ * Change work-level settings: the title, the slug, the goal, the attached reference libraries, the style or the archived flag. Send update_mask naming exactly the fields you change; a field left out keeps its value. Pass expected_revision to have the write refused when someone else changed the work first, and note that changing the message makes every draft derived from it stale.
10497
+ */
10498
+ export const studioWorksUpdate = (options) => (options.client ?? client).patch({
10499
+ security: [{
10500
+ key: 'BearerAuth',
9588
10501
  scheme: 'bearer',
9589
10502
  type: 'http'
9590
- }
9591
- ],
9592
- url: '/sandbox/v1/templates/tags',
10503
+ }, {
10504
+ key: 'ApiKeyAuth',
10505
+ name: 'X-API-Key',
10506
+ type: 'apiKey'
10507
+ }],
10508
+ url: '/studio/v1/works/{work}',
9593
10509
  ...options,
9594
10510
  headers: {
9595
10511
  'Content-Type': 'application/json',
@@ -9597,91 +10513,61 @@ export const assignTemplateTags = (options) => (options.client ?? client).post({
9597
10513
  }
9598
10514
  });
9599
10515
  /**
9600
- * List template tags
10516
+ * Add to or correct the original brief
9601
10517
  *
9602
- * 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.
10518
+ * Extend the original brief: append text, attach files, add points taken from an outline, edit one point, or drop a point. Points are how the software checks that every requirement landed in a written unit, so split the person's outline into points here rather than burying them in prose. The brief carries its own revision, separate from the work and from each draft.
9603
10519
  */
9604
- export const listTemplateTags = (options) => (options.client ?? client).get({
9605
- security: [
9606
- {
9607
- key: 'sandbox-ApiKeyAuth',
9608
- name: 'X-API-Key',
9609
- type: 'apiKey'
9610
- },
9611
- {
9612
- key: 'sandbox-AuthProviderBearerAuth',
10520
+ export const studioWorksUpdateBrief = (options) => (options.client ?? client).patch({
10521
+ security: [{
10522
+ key: 'BearerAuth',
9613
10523
  scheme: 'bearer',
9614
10524
  type: 'http'
9615
- },
9616
- {
9617
- key: 'sandbox-AuthProviderTeamAuth',
9618
- name: 'X-Team-ID',
9619
- type: 'apiKey'
9620
- },
9621
- { name: 'X-Admin-Token', type: 'apiKey' },
9622
- {
9623
- key: 'sandbox-AdminTeamAuth',
9624
- name: 'X-Team-ID',
10525
+ }, {
10526
+ key: 'ApiKeyAuth',
10527
+ name: 'X-API-Key',
9625
10528
  type: 'apiKey'
9626
- },
9627
- {
9628
- key: 'sandbox-AdminJWTAuth',
9629
- scheme: 'bearer',
9630
- type: 'http'
9631
- }
9632
- ],
9633
- url: '/sandbox/v1/templates/{templateID}/tags',
9634
- ...options
10529
+ }],
10530
+ url: '/studio/v1/works/{work}/brief',
10531
+ ...options,
10532
+ headers: {
10533
+ 'Content-Type': 'application/json',
10534
+ ...options.headers
10535
+ }
9635
10536
  });
9636
10537
  /**
9637
- * Check template alias
10538
+ * List the drafts a work carries
9638
10539
  *
9639
- * 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.
10540
+ * List every draft of one work, each with its genre, its size and whether it is out of date against what it was derived from. Use it to choose the draft a later call works in: the key beside each draft is what the draft path segment takes. This list is not paged, because a work carries a handful of drafts rather than thousands.
9640
10541
  */
9641
- export const resolveTemplateAlias = (options) => (options.client ?? client).get({
9642
- security: [
9643
- {
9644
- key: 'sandbox-ApiKeyAuth',
9645
- name: 'X-API-Key',
9646
- type: 'apiKey'
9647
- },
9648
- {
9649
- key: 'sandbox-AuthProviderBearerAuth',
10542
+ export const studioDraftsList = (options) => (options.client ?? client).get({
10543
+ security: [{
10544
+ key: 'BearerAuth',
9650
10545
  scheme: 'bearer',
9651
10546
  type: 'http'
9652
- },
9653
- {
9654
- key: 'sandbox-AuthProviderTeamAuth',
9655
- name: 'X-Team-ID',
9656
- type: 'apiKey'
9657
- },
9658
- { name: 'X-Admin-Token', type: 'apiKey' },
9659
- {
9660
- key: 'sandbox-AdminTeamAuth',
9661
- name: 'X-Team-ID',
10547
+ }, {
10548
+ key: 'ApiKeyAuth',
10549
+ name: 'X-API-Key',
9662
10550
  type: 'apiKey'
9663
- },
9664
- {
9665
- key: 'sandbox-AdminJWTAuth',
9666
- scheme: 'bearer',
9667
- type: 'http'
9668
- }
9669
- ],
9670
- url: '/sandbox/v1/templates/aliases/{alias}',
10551
+ }],
10552
+ url: '/studio/v1/works/{work}/drafts',
9671
10553
  ...options
9672
10554
  });
9673
10555
  /**
9674
- * Search for data based on a query
10556
+ * Create a draft of a genre inside a work
9675
10557
  *
9676
- * Search the web and return ranked results with extracted content. Use it to answer questions with current information; to read the full text of known URLs use searchExtract, to walk a site use searchCrawl and to list a site's URLs use searchMap. query is required. topic chooses general, news or finance; time_range limits results to the last day, week, month or year; country boosts results from one country (topic general only). Each result carries title, url, content and a relevance score, and the response can include a generated answer, images and follow-up questions when requested.
10558
+ * Create a draft: one way of delivering the work, written in one genre. The genre decides the unit kinds, the properties and the checks, so read it first with the genre call and pass its key. A template may seed the unit tree, an outline may be given instead, and derived_from records that this draft is built from the goal message or from another draft of the work. The work may hold several drafts, one per platform or per length.
9677
10559
  */
9678
- export const searchSearch = (options) => (options.client ?? client).post({
10560
+ export const studioDraftsCreate = (options) => (options.client ?? client).post({
9679
10561
  security: [{
9680
- key: 'search-bearerAuth',
10562
+ key: 'BearerAuth',
9681
10563
  scheme: 'bearer',
9682
10564
  type: 'http'
10565
+ }, {
10566
+ key: 'ApiKeyAuth',
10567
+ name: 'X-API-Key',
10568
+ type: 'apiKey'
9683
10569
  }],
9684
- url: '/search/v1/search',
10570
+ url: '/studio/v1/works/{work}/drafts',
9685
10571
  ...options,
9686
10572
  headers: {
9687
10573
  'Content-Type': 'application/json',
@@ -9689,35 +10575,39 @@ export const searchSearch = (options) => (options.client ?? client).post({
9689
10575
  }
9690
10576
  });
9691
10577
  /**
9692
- * Retrieve raw web content from specified URLs
10578
+ * Read one draft with optional units and todos
9693
10579
  *
9694
- * Extract content from one URL or batch up to 20 URLs in one request. Successful URLs appear in results; per-URL failures appear in failed_results. Check both arrays even when the response is HTTP 200. Request options apply to every URL in the batch.
10580
+ * Read one draft: its genre, its properties, its revisions, whether it is stale, and optionally its unit tree and its todo list. Pass expand to add the parts you need in this one call instead of reading them separately. Read this before writing to the draft, because the revision it returns is the precondition the next write has to carry.
9695
10581
  */
9696
- export const searchExtract = (options) => (options.client ?? client).post({
10582
+ export const studioDraftsGet = (options) => (options.client ?? client).get({
9697
10583
  security: [{
9698
- key: 'search-bearerAuth',
10584
+ key: 'BearerAuth',
9699
10585
  scheme: 'bearer',
9700
10586
  type: 'http'
10587
+ }, {
10588
+ key: 'ApiKeyAuth',
10589
+ name: 'X-API-Key',
10590
+ type: 'apiKey'
9701
10591
  }],
9702
- url: '/search/v1/extract',
9703
- ...options,
9704
- headers: {
9705
- 'Content-Type': 'application/json',
9706
- ...options.headers
9707
- }
10592
+ url: '/studio/v1/works/{work}/drafts/{draft}',
10593
+ ...options
9708
10594
  });
9709
10595
  /**
9710
- * Initiate a web crawl from a base URL
10596
+ * Change a draft title, key, properties or style
9711
10597
  *
9712
- * Tavily Crawl is a graph-based website traversal tool that can explore hundreds of paths in parallel with built-in extraction and intelligent discovery.
10598
+ * Change the draft itself rather than its units: its page title, its in-work key, its generic properties, the style that overrides the work style, or its mode. Send update_mask naming exactly the fields you change. Changing the key keeps the previous one resolving, so old links and old references still work; a key another draft of the work already uses answers DRAFT_KEY_TAKEN.
9713
10599
  */
9714
- export const searchCrawl = (options) => (options.client ?? client).post({
10600
+ export const studioDraftsUpdate = (options) => (options.client ?? client).patch({
9715
10601
  security: [{
9716
- key: 'search-bearerAuth',
10602
+ key: 'BearerAuth',
9717
10603
  scheme: 'bearer',
9718
10604
  type: 'http'
10605
+ }, {
10606
+ key: 'ApiKeyAuth',
10607
+ name: 'X-API-Key',
10608
+ type: 'apiKey'
9719
10609
  }],
9720
- url: '/search/v1/crawl',
10610
+ url: '/studio/v1/works/{work}/drafts/{draft}',
9721
10611
  ...options,
9722
10612
  headers: {
9723
10613
  'Content-Type': 'application/json',
@@ -9725,29 +10615,29 @@ export const searchCrawl = (options) => (options.client ?? client).post({
9725
10615
  }
9726
10616
  });
9727
10617
  /**
9728
- * Initiate a web mapping from a base URL
10618
+ * Read the whole unit outline as Markdown
9729
10619
  *
9730
- * Tavily Map traverses websites like a graph and can explore hundreds of paths in parallel with intelligent discovery to generate comprehensive site maps.
10620
+ * Read the draft structure as one Markdown page: one line per unit carrying its number, structure name, intent, status, length and revision, followed by the unit list itself. Use it to plan a sequence of writes without reading every unit, since it carries no body text. Read one unit in full with the unit call once you know which one to write.
9731
10621
  */
9732
- export const searchMap = (options) => (options.client ?? client).post({
10622
+ export const studioDraftsOutline = (options) => (options.client ?? client).get({
9733
10623
  security: [{
9734
- key: 'search-bearerAuth',
10624
+ key: 'BearerAuth',
9735
10625
  scheme: 'bearer',
9736
10626
  type: 'http'
9737
- }],
9738
- url: '/search/v1/map',
9739
- ...options,
9740
- headers: {
9741
- 'Content-Type': 'application/json',
9742
- ...options.headers
9743
- }
10627
+ }, {
10628
+ key: 'ApiKeyAuth',
10629
+ name: 'X-API-Key',
10630
+ type: 'apiKey'
10631
+ }],
10632
+ url: '/studio/v1/works/{work}/drafts/{draft}/outline',
10633
+ ...options
9744
10634
  });
9745
10635
  /**
9746
- * List the genres Studio can write
10636
+ * Read the computed todo list of a draft
9747
10637
  *
9748
- * List the genre catalog so you can choose how a piece is structured before creating a draft. Each genre names its unit kinds, draft properties, deterministic checks and writing rules, and by default only the genres open today are returned. Read the chosen genre in full with studioGenresGet before the first write, because its kinds and limits decide what that draft accepts.
10638
+ * Read what is outstanding in one draft, computed from the data rather than from a plan: a unit without an intent, a body behind its intent, an unclaimed brief point, a failed check, a stale rendition. Each item names the layer it belongs to and suggests the call that resolves it. Follow the list instead of inventing an order, and re-read it after a batch of writes.
9749
10639
  */
9750
- export const studioGenresList = (options) => (options?.client ?? client).get({
10640
+ export const studioDraftsStatus = (options) => (options.client ?? client).get({
9751
10641
  security: [{
9752
10642
  key: 'BearerAuth',
9753
10643
  scheme: 'bearer',
@@ -9757,15 +10647,15 @@ export const studioGenresList = (options) => (options?.client ?? client).get({
9757
10647
  name: 'X-API-Key',
9758
10648
  type: 'apiKey'
9759
10649
  }],
9760
- url: '/studio/v1/genres',
10650
+ url: '/studio/v1/works/{work}/drafts/{draft}/status',
9761
10651
  ...options
9762
10652
  });
9763
10653
  /**
9764
- * Read one genre with its built-in templates
10654
+ * Read a review pass over the whole draft
9765
10655
  *
9766
- * Read the full rules of one genre: its unit kinds and what each may contain, the draft properties with their limits, the deterministic checks the software runs, the semantic review list, and the built-in templates that can seed a draft. Ask for this before creating a draft of that genre, and again when a write is refused for an unknown kind, a property limit or a block type the genre does not allow.
10656
+ * Read everything a reviewer needs in one answer: the deterministic check results, the semantic review list the genre asks a reader to judge, the brief coverage showing which unit claims each requirement point, and the body text. When the draft is long the body is a synopsis with an excerpt around each unit and next_page_token carries the full text. This is the call an agent makes before writing review comments.
9767
10657
  */
9768
- export const studioGenresGet = (options) => (options.client ?? client).get({
10658
+ export const studioDraftsReview = (options) => (options.client ?? client).get({
9769
10659
  security: [{
9770
10660
  key: 'BearerAuth',
9771
10661
  scheme: 'bearer',
@@ -9775,15 +10665,15 @@ export const studioGenresGet = (options) => (options.client ?? client).get({
9775
10665
  name: 'X-API-Key',
9776
10666
  type: 'apiKey'
9777
10667
  }],
9778
- url: '/studio/v1/genres/{genre}',
10668
+ url: '/studio/v1/works/{work}/drafts/{draft}/review',
9779
10669
  ...options
9780
10670
  });
9781
10671
  /**
9782
- * List the platforms a work can be produced for
10672
+ * Confirm a draft already follows its source
9783
10673
  *
9784
- * List rendition targets with the format each needs, whether it receives a finished piece through an API, a draft box or an export, and the hard limits a piece must respect. Pass a genre to see only the platforms that genre produces by default. Read one platform in full before rendering, because its limits decide whether the rendition validates.
10674
+ * Clear the stale flag after checking that the draft still matches what it was derived from: the recorded source revision moves to the source current revision without touching any unit. Call it after the source moved and you have brought this draft up to date, not to make the flag disappear while the text is still behind. It answers the same shape as a draft write, and the draft revision does not move.
9785
10675
  */
9786
- export const studioPlatformsList = (options) => (options?.client ?? client).get({
10676
+ export const studioDraftsRebase = (options) => (options.client ?? client).post({
9787
10677
  security: [{
9788
10678
  key: 'BearerAuth',
9789
10679
  scheme: 'bearer',
@@ -9793,15 +10683,19 @@ export const studioPlatformsList = (options) => (options?.client ?? client).get(
9793
10683
  name: 'X-API-Key',
9794
10684
  type: 'apiKey'
9795
10685
  }],
9796
- url: '/studio/v1/platforms',
9797
- ...options
10686
+ url: '/studio/v1/works/{work}/drafts/{draft}:rebase',
10687
+ ...options,
10688
+ headers: {
10689
+ 'Content-Type': 'application/json',
10690
+ ...options.headers
10691
+ }
9798
10692
  });
9799
10693
  /**
9800
- * Read the rules of one platform
10694
+ * Export the draft as Markdown or plain text
9801
10695
  *
9802
- * Read one platform in full: the format it consumes, how it receives a finished piece, the preview fidelity the Console can offer, the limits on title, body, image count and aspect, and whether a connected channel is required. Read this before creating a rendition, and again when validation reports that the piece breaks a platform limit.
10696
+ * Read the whole draft as one document in Markdown or plain text, returned synchronously in the answer. This is the quick path for a person who wants the text now; a file in a platform format, a card image or a docx comes from creating a rendition instead. Ask for text rather than markdown when the reader should not see block anchors or heading syntax.
9803
10697
  */
9804
- export const studioPlatformsGet = (options) => (options.client ?? client).get({
10698
+ export const studioDraftsExport = (options) => (options.client ?? client).get({
9805
10699
  security: [{
9806
10700
  key: 'BearerAuth',
9807
10701
  scheme: 'bearer',
@@ -9811,15 +10705,15 @@ export const studioPlatformsGet = (options) => (options.client ?? client).get({
9811
10705
  name: 'X-API-Key',
9812
10706
  type: 'apiKey'
9813
10707
  }],
9814
- url: '/studio/v1/platforms/{platform}',
10708
+ url: '/studio/v1/works/{work}/drafts/{draft}/export',
9815
10709
  ...options
9816
10710
  });
9817
10711
  /**
9818
- * List the works of this organization
10712
+ * Add one unit to the draft tree
9819
10713
  *
9820
- * List works owned by the API key organization so you can find the one being discussed, with its drafts and how long ago each moved. Archived works are left out unless you ask for them. Continue with next_page_token until the answer stops carrying one; the summaries carry no unit bodies, so read a work before writing in it.
10714
+ * Add a unit to the structure: a chapter, a scene, a section, an argument or a product depending on the genre. Say where it goes with parent and after, give it the structure name people will use to manage it, and write the intent that says what it has to accomplish. Adding a unit changes the draft revision, so pass expected_revision, and the new unit itself starts with no body.
9821
10715
  */
9822
- export const studioWorksList = (options) => (options?.client ?? client).get({
10716
+ export const studioUnitsCreate = (options) => (options.client ?? client).post({
9823
10717
  security: [{
9824
10718
  key: 'BearerAuth',
9825
10719
  scheme: 'bearer',
@@ -9829,15 +10723,19 @@ export const studioWorksList = (options) => (options?.client ?? client).get({
9829
10723
  name: 'X-API-Key',
9830
10724
  type: 'apiKey'
9831
10725
  }],
9832
- url: '/studio/v1/works',
9833
- ...options
10726
+ url: '/studio/v1/works/{work}/drafts/{draft}/units',
10727
+ ...options,
10728
+ headers: {
10729
+ 'Content-Type': 'application/json',
10730
+ ...options.headers
10731
+ }
9834
10732
  });
9835
10733
  /**
9836
- * Create a work with its goal
10734
+ * Add a whole outline of units at once
9837
10735
  *
9838
- * Create a work: one deliverable piece plus everything around it. Pass the goal the writing serves — the reader, what that reader should get or do, the one-sentence message and the constraints — and the original brief the person gave in their own words. A slug is derived from the title unless you pass one. The work starts with no drafts; create the first one with the drafts create call, because the genre decides the structure.
10736
+ * Create many units in one write from a nested outline, which is how a structure is built after the person approved a plan. Nesting in the outline becomes the parent chain, numbers are assigned in order, and the draft gets one revision for the whole batch rather than one per unit. Sending the same outline twice would duplicate it, so pass the draft revision you read and repeat the call only after a refusal.
9839
10737
  */
9840
- export const studioWorksCreate = (options) => (options.client ?? client).post({
10738
+ export const studioUnitsBatchCreate = (options) => (options.client ?? client).post({
9841
10739
  security: [{
9842
10740
  key: 'BearerAuth',
9843
10741
  scheme: 'bearer',
@@ -9847,7 +10745,7 @@ export const studioWorksCreate = (options) => (options.client ?? client).post({
9847
10745
  name: 'X-API-Key',
9848
10746
  type: 'apiKey'
9849
10747
  }],
9850
- url: '/studio/v1/works',
10748
+ url: '/studio/v1/works/{work}/drafts/{draft}/units:batchCreate',
9851
10749
  ...options,
9852
10750
  headers: {
9853
10751
  'Content-Type': 'application/json',
@@ -9855,11 +10753,11 @@ export const studioWorksCreate = (options) => (options.client ?? client).post({
9855
10753
  }
9856
10754
  });
9857
10755
  /**
9858
- * Resolve a loose reference to a work, draft or unit
10756
+ * Write intents for many units in one call
9859
10757
  *
9860
- * Turn a loose reference into the address the other calls take: a slug, a work title, a draft key or a unit number, as a person or another tool would say it. A hit answers the work slug and, when the reference pointed deeper, the draft key and unit number; a miss answers an empty resolved value with up to three near matches instead of failing. Use it when a person names something instead of an id.
10758
+ * Change the intent of several units in one write: the synopsis, the points and the brief points each of them claims. Bodies are not part of this call, because a body is written one unit at a time with its own revision; here the whole batch shares the draft revision you read. Use it to lay out a plan across the tree, then write bodies one by one.
9861
10759
  */
9862
- export const studioWorksResolve = (options) => (options.client ?? client).get({
10760
+ export const studioUnitsBatchUpdate = (options) => (options.client ?? client).post({
9863
10761
  security: [{
9864
10762
  key: 'BearerAuth',
9865
10763
  scheme: 'bearer',
@@ -9869,15 +10767,19 @@ export const studioWorksResolve = (options) => (options.client ?? client).get({
9869
10767
  name: 'X-API-Key',
9870
10768
  type: 'apiKey'
9871
10769
  }],
9872
- url: '/studio/v1/works:resolve',
9873
- ...options
10770
+ url: '/studio/v1/works/{work}/drafts/{draft}/units:batchUpdate',
10771
+ ...options,
10772
+ headers: {
10773
+ 'Content-Type': 'application/json',
10774
+ ...options.headers
10775
+ }
9874
10776
  });
9875
10777
  /**
9876
- * Read a work, optionally with one draft and unit
10778
+ * Read one unit with its blocks and Markdown
9877
10779
  *
9878
- * Read a work and, in the same answer, whatever part of it the page needs: pass draft to get that draft with its todos, its unit outline and its properties, and unit to get one unit with its blocks and Markdown body. This is the call that opens an editing session, because it answers the goal, the brief, the current revisions and the unit to write in one round trip.
10780
+ * Read one unit: its intent, its status, its revision, its links to reference entries, and its body as both blocks and Markdown. The Markdown carries each block identifier inline as an anchor comment, so a rewrite can keep the identifiers of the blocks it keeps. Read this before writing the body, because the revision it returns is the precondition that write has to carry.
9879
10781
  */
9880
- export const studioWorksGet = (options) => (options.client ?? client).get({
10782
+ export const studioUnitsGet = (options) => (options.client ?? client).get({
9881
10783
  security: [{
9882
10784
  key: 'BearerAuth',
9883
10785
  scheme: 'bearer',
@@ -9887,15 +10789,15 @@ export const studioWorksGet = (options) => (options.client ?? client).get({
9887
10789
  name: 'X-API-Key',
9888
10790
  type: 'apiKey'
9889
10791
  }],
9890
- url: '/studio/v1/works/{work}',
10792
+ url: '/studio/v1/works/{work}/units/{unit}',
9891
10793
  ...options
9892
10794
  });
9893
10795
  /**
9894
- * Change the title, goal or attached libraries
10796
+ * Change a unit intent, body or status
9895
10797
  *
9896
- * Change work-level settings: the title, the slug, the goal, the attached reference libraries, the style or the archived flag. Send update_mask naming exactly the fields you change; a field left out keeps its value. Pass expected_revision to have the write refused when someone else changed the work first, and note that changing the message makes every draft derived from it stale.
10798
+ * Change one unit: its name, its heading, its synopsis and points, the brief points it claims, its status, its links to reference entries, or its body as a whole Markdown text. A body write requires expected_revision, because replacing the whole text would drop blocks someone else inserted. The answer carries the unit as it now stands, so read the next field of the answer instead of re-reading the unit.
9897
10799
  */
9898
- export const studioWorksUpdate = (options) => (options.client ?? client).patch({
10800
+ export const studioUnitsUpdate = (options) => (options.client ?? client).patch({
9899
10801
  security: [{
9900
10802
  key: 'BearerAuth',
9901
10803
  scheme: 'bearer',
@@ -9905,7 +10807,7 @@ export const studioWorksUpdate = (options) => (options.client ?? client).patch({
9905
10807
  name: 'X-API-Key',
9906
10808
  type: 'apiKey'
9907
10809
  }],
9908
- url: '/studio/v1/works/{work}',
10810
+ url: '/studio/v1/works/{work}/units/{unit}',
9909
10811
  ...options,
9910
10812
  headers: {
9911
10813
  'Content-Type': 'application/json',
@@ -9913,11 +10815,11 @@ export const studioWorksUpdate = (options) => (options.client ?? client).patch({
9913
10815
  }
9914
10816
  });
9915
10817
  /**
9916
- * Add to or correct the original brief
10818
+ * Move a unit to another place in the tree
9917
10819
  *
9918
- * Extend the original brief: append text, attach files, add points taken from an outline, edit one point, or drop a point. Points are how the software checks that every requirement landed in a written unit, so split the person's outline into points here rather than burying them in prose. The brief carries its own revision, separate from the work and from each draft.
10820
+ * Move a unit under another parent or after another sibling, without changing its number, its identifier, its intent or its body. A move that would put a unit inside its own descendant, or that would cross into another draft, is refused. Only the moved unit changes, so the revision to pass is its own.
9919
10821
  */
9920
- export const studioWorksUpdateBrief = (options) => (options.client ?? client).patch({
10822
+ export const studioUnitsMove = (options) => (options.client ?? client).post({
9921
10823
  security: [{
9922
10824
  key: 'BearerAuth',
9923
10825
  scheme: 'bearer',
@@ -9927,7 +10829,7 @@ export const studioWorksUpdateBrief = (options) => (options.client ?? client).pa
9927
10829
  name: 'X-API-Key',
9928
10830
  type: 'apiKey'
9929
10831
  }],
9930
- url: '/studio/v1/works/{work}/brief',
10832
+ url: '/studio/v1/works/{work}/units/{unit}:move',
9931
10833
  ...options,
9932
10834
  headers: {
9933
10835
  'Content-Type': 'application/json',
@@ -9935,11 +10837,11 @@ export const studioWorksUpdateBrief = (options) => (options.client ?? client).pa
9935
10837
  }
9936
10838
  });
9937
10839
  /**
9938
- * List the drafts a work carries
10840
+ * Edit a unit body block by block
9939
10841
  *
9940
- * List every draft of one work, each with its genre, its size and whether it is out of date against what it was derived from. Use it to choose the draft a later call works in: the key beside each draft is what the draft path segment takes. This list is not paged, because a work carries a handful of drafts rather than thousands.
10842
+ * Change a body by naming the blocks to insert, replace or delete instead of resending the whole text. This is the safe way for a writer that only touches part of a unit, because a block another writer changed after your revision is refused rather than overwritten. The revision is required, and the answer carries the unit with its blocks so the next edit can address them.
9941
10843
  */
9942
- export const studioDraftsList = (options) => (options.client ?? client).get({
10844
+ export const studioUnitsPatchBlocks = (options) => (options.client ?? client).post({
9943
10845
  security: [{
9944
10846
  key: 'BearerAuth',
9945
10847
  scheme: 'bearer',
@@ -9949,15 +10851,19 @@ export const studioDraftsList = (options) => (options.client ?? client).get({
9949
10851
  name: 'X-API-Key',
9950
10852
  type: 'apiKey'
9951
10853
  }],
9952
- url: '/studio/v1/works/{work}/drafts',
9953
- ...options
10854
+ url: '/studio/v1/works/{work}/units/{unit}/blocks:patch',
10855
+ ...options,
10856
+ headers: {
10857
+ 'Content-Type': 'application/json',
10858
+ ...options.headers
10859
+ }
9954
10860
  });
9955
10861
  /**
9956
- * Create a draft of a genre inside a work
10862
+ * Read the context pack for writing one unit
9957
10863
  *
9958
- * Create a draft: one way of delivering the work, written in one genre. The genre decides the unit kinds, the properties and the checks, so read it first with the genre call and pass its key. A template may seed the unit tree, an outline may be given instead, and derived_from records that this draft is built from the goal message or from another draft of the work. The work may hold several drafts, one per platform or per length.
10864
+ * Read everything a writer needs before touching one unit: the genre rules, the goal, the brief, the style, the upstream source, the reference entries this unit draws on, the synopses of the units before it, and the intent of this unit, assembled in a fixed order and measured against a token budget. Entries left out say why, so a missing detail is visible rather than silent. Same input gives the same pack, which is what makes a written result reproducible.
9959
10865
  */
9960
- export const studioDraftsCreate = (options) => (options.client ?? client).post({
10866
+ export const studioUnitsContext = (options) => (options.client ?? client).get({
9961
10867
  security: [{
9962
10868
  key: 'BearerAuth',
9963
10869
  scheme: 'bearer',
@@ -9967,19 +10873,15 @@ export const studioDraftsCreate = (options) => (options.client ?? client).post({
9967
10873
  name: 'X-API-Key',
9968
10874
  type: 'apiKey'
9969
10875
  }],
9970
- url: '/studio/v1/works/{work}/drafts',
9971
- ...options,
9972
- headers: {
9973
- 'Content-Type': 'application/json',
9974
- ...options.headers
9975
- }
10876
+ url: '/studio/v1/works/{work}/units/{unit}/context',
10877
+ ...options
9976
10878
  });
9977
10879
  /**
9978
- * Read one draft with optional units and todos
10880
+ * List the reference libraries of this organization
9979
10881
  *
9980
- * Read one draft: its genre, its properties, its revisions, whether it is stale, and optionally its unit tree and its todo list. Pass expand to add the parts you need in this one call instead of reading them separately. Read this before writing to the draft, because the revision it returns is the precondition the next write has to carry.
10882
+ * List the reference libraries this API key organization owns, each with how many entries it holds, so you can choose the one a work draws on. Continue with next_page_token until the answer stops carrying one. A library is shared across works, so the list is the whole organization's rather than one work's.
9981
10883
  */
9982
- export const studioDraftsGet = (options) => (options.client ?? client).get({
10884
+ export const studioCodexesList = (options) => (options?.client ?? client).get({
9983
10885
  security: [{
9984
10886
  key: 'BearerAuth',
9985
10887
  scheme: 'bearer',
@@ -9989,15 +10891,15 @@ export const studioDraftsGet = (options) => (options.client ?? client).get({
9989
10891
  name: 'X-API-Key',
9990
10892
  type: 'apiKey'
9991
10893
  }],
9992
- url: '/studio/v1/works/{work}/drafts/{draft}',
10894
+ url: '/studio/v1/codexes',
9993
10895
  ...options
9994
10896
  });
9995
10897
  /**
9996
- * Change a draft title, key, properties or style
10898
+ * Create a reference library
9997
10899
  *
9998
- * Change the draft itself rather than its units: its page title, its in-work key, its generic properties, the style that overrides the work style, or its mode. Send update_mask naming exactly the fields you change. Changing the key keeps the previous one resolving, so old links and old references still work; a key another draft of the work already uses answers DRAFT_KEY_TAKEN.
10900
+ * Create a reference library: a shared store of the people, places, products and facts a piece draws on, reusable across works. Attach it to a work with the work update call, and the entries it holds then reach the context packs of that work's units. A library is not private to one work, so the same brand facts can serve every piece that mentions them.
9999
10901
  */
10000
- export const studioDraftsUpdate = (options) => (options.client ?? client).patch({
10902
+ export const studioCodexesCreate = (options) => (options.client ?? client).post({
10001
10903
  security: [{
10002
10904
  key: 'BearerAuth',
10003
10905
  scheme: 'bearer',
@@ -10007,7 +10909,7 @@ export const studioDraftsUpdate = (options) => (options.client ?? client).patch(
10007
10909
  name: 'X-API-Key',
10008
10910
  type: 'apiKey'
10009
10911
  }],
10010
- url: '/studio/v1/works/{work}/drafts/{draft}',
10912
+ url: '/studio/v1/codexes',
10011
10913
  ...options,
10012
10914
  headers: {
10013
10915
  'Content-Type': 'application/json',
@@ -10015,11 +10917,11 @@ export const studioDraftsUpdate = (options) => (options.client ?? client).patch(
10015
10917
  }
10016
10918
  });
10017
10919
  /**
10018
- * Read the whole unit outline as Markdown
10920
+ * Delete a reference library
10019
10921
  *
10020
- * Read the draft structure as one Markdown page: one line per unit carrying its number, structure name, intent, status, length and revision, followed by the unit list itself. Use it to plan a sequence of writes without reading every unit, since it carries no body text. Read one unit in full with the unit call once you know which one to write.
10922
+ * Delete a library and every entry inside it. A library attached to any work is refused with CODEX_IN_USE, because deleting it would silently strip the reference material those units draw on; detach it from the work first. This cannot be undone, so confirm which library the identifier names.
10021
10923
  */
10022
- export const studioDraftsOutline = (options) => (options.client ?? client).get({
10924
+ export const studioCodexesDelete = (options) => (options.client ?? client).delete({
10023
10925
  security: [{
10024
10926
  key: 'BearerAuth',
10025
10927
  scheme: 'bearer',
@@ -10029,15 +10931,15 @@ export const studioDraftsOutline = (options) => (options.client ?? client).get({
10029
10931
  name: 'X-API-Key',
10030
10932
  type: 'apiKey'
10031
10933
  }],
10032
- url: '/studio/v1/works/{work}/drafts/{draft}/outline',
10934
+ url: '/studio/v1/codexes/{codex}',
10033
10935
  ...options
10034
10936
  });
10035
10937
  /**
10036
- * Read the computed todo list of a draft
10938
+ * Read one reference library
10037
10939
  *
10038
- * Read what is outstanding in one draft, computed from the data rather than from a plan: a unit without an intent, a body behind its intent, an unclaimed brief point, a failed check, a stale rendition. Each item names the layer it belongs to and suggests the call that resolves it. Follow the list instead of inventing an order, and re-read it after a batch of writes.
10940
+ * Read one reference library: its name, its description, its labels and how many entries it holds. Read this to confirm a library exists before attaching it to a work; the entries themselves are listed with the entry list call, because a library may hold more of them than fit in one answer.
10039
10941
  */
10040
- export const studioDraftsStatus = (options) => (options.client ?? client).get({
10942
+ export const studioCodexesGet = (options) => (options.client ?? client).get({
10041
10943
  security: [{
10042
10944
  key: 'BearerAuth',
10043
10945
  scheme: 'bearer',
@@ -10047,15 +10949,15 @@ export const studioDraftsStatus = (options) => (options.client ?? client).get({
10047
10949
  name: 'X-API-Key',
10048
10950
  type: 'apiKey'
10049
10951
  }],
10050
- url: '/studio/v1/works/{work}/drafts/{draft}/status',
10952
+ url: '/studio/v1/codexes/{codex}',
10051
10953
  ...options
10052
10954
  });
10053
10955
  /**
10054
- * Read a review pass over the whole draft
10956
+ * Rename a reference library or change its description
10055
10957
  *
10056
- * Read everything a reviewer needs in one answer: the deterministic check results, the semantic review list the genre asks a reader to judge, the brief coverage showing which unit claims each requirement point, and the body text. When the draft is long the body is a synopsis with an excerpt around each unit and next_page_token carries the full text. This is the call an agent makes before writing review comments.
10958
+ * Change the library itself: its name, its description or its labels. Send update_mask naming exactly the fields you change; a field left out keeps its value. The entries inside are untouched, and a work that has the library attached keeps it attached under the new name.
10057
10959
  */
10058
- export const studioDraftsReview = (options) => (options.client ?? client).get({
10960
+ export const studioCodexesUpdate = (options) => (options.client ?? client).patch({
10059
10961
  security: [{
10060
10962
  key: 'BearerAuth',
10061
10963
  scheme: 'bearer',
@@ -10065,15 +10967,37 @@ export const studioDraftsReview = (options) => (options.client ?? client).get({
10065
10967
  name: 'X-API-Key',
10066
10968
  type: 'apiKey'
10067
10969
  }],
10068
- url: '/studio/v1/works/{work}/drafts/{draft}/review',
10970
+ url: '/studio/v1/codexes/{codex}',
10971
+ ...options,
10972
+ headers: {
10973
+ 'Content-Type': 'application/json',
10974
+ ...options.headers
10975
+ }
10976
+ });
10977
+ /**
10978
+ * List the entries of a reference library
10979
+ *
10980
+ * List the entries of one library in pages, each with its type, its name, its aliases and whether it is always present in context. Use it to see what a work already knows before adding an entry, since a duplicate name is refused rather than merged. Continue with next_page_token until the answer stops carrying one.
10981
+ */
10982
+ export const studioEntriesList = (options) => (options.client ?? client).get({
10983
+ security: [{
10984
+ key: 'BearerAuth',
10985
+ scheme: 'bearer',
10986
+ type: 'http'
10987
+ }, {
10988
+ key: 'ApiKeyAuth',
10989
+ name: 'X-API-Key',
10990
+ type: 'apiKey'
10991
+ }],
10992
+ url: '/studio/v1/codexes/{codex}/entries',
10069
10993
  ...options
10070
10994
  });
10071
10995
  /**
10072
- * Confirm a draft already follows its source
10996
+ * Add an entry to a reference library
10073
10997
  *
10074
- * Clear the stale flag after checking that the draft still matches what it was derived from: the recorded source revision moves to the source current revision without touching any unit. Call it after the source moved and you have brought this draft up to date, not to make the flag disappear while the text is still behind. It answers the same shape as a draft write, and the draft revision does not move.
10998
+ * Add one entry: a character, a place, a product, a source of facts. Give it the type the genre uses, the name the text will mention, and the description and facts that should reach a writer when it is mentioned. Aliases and excluded phrases keep detection honest, so a common word inside an idiom is not mistaken for the entry. A name already used in the library is refused.
10075
10999
  */
10076
- export const studioDraftsRebase = (options) => (options.client ?? client).post({
11000
+ export const studioEntriesCreate = (options) => (options.client ?? client).post({
10077
11001
  security: [{
10078
11002
  key: 'BearerAuth',
10079
11003
  scheme: 'bearer',
@@ -10083,7 +11007,7 @@ export const studioDraftsRebase = (options) => (options.client ?? client).post({
10083
11007
  name: 'X-API-Key',
10084
11008
  type: 'apiKey'
10085
11009
  }],
10086
- url: '/studio/v1/works/{work}/drafts/{draft}:rebase',
11010
+ url: '/studio/v1/codexes/{codex}/entries',
10087
11011
  ...options,
10088
11012
  headers: {
10089
11013
  'Content-Type': 'application/json',
@@ -10091,11 +11015,11 @@ export const studioDraftsRebase = (options) => (options.client ?? client).post({
10091
11015
  }
10092
11016
  });
10093
11017
  /**
10094
- * Export the draft as Markdown or plain text
11018
+ * Delete a reference entry
10095
11019
  *
10096
- * Read the whole draft as one document in Markdown or plain text, returned synchronously in the answer. This is the quick path for a person who wants the text now; a file in a platform format, a card image or a docx comes from creating a rendition instead. Ask for text rather than markdown when the reader should not see block anchors or heading syntax.
11020
+ * Delete one entry from a library, which also removes the mentions and the links that pointed at it. Units that claimed it keep their text; only the reference goes away. This cannot be undone, so confirm the name of the entry before deleting it, and prefer changing its tracking setting to never when it should stop reaching writers but stay recorded.
10097
11021
  */
10098
- export const studioDraftsExport = (options) => (options.client ?? client).get({
11022
+ export const studioEntriesDelete = (options) => (options.client ?? client).delete({
10099
11023
  security: [{
10100
11024
  key: 'BearerAuth',
10101
11025
  scheme: 'bearer',
@@ -10105,15 +11029,15 @@ export const studioDraftsExport = (options) => (options.client ?? client).get({
10105
11029
  name: 'X-API-Key',
10106
11030
  type: 'apiKey'
10107
11031
  }],
10108
- url: '/studio/v1/works/{work}/drafts/{draft}/export',
11032
+ url: '/studio/v1/codexes/{codex}/entries/{entry}',
10109
11033
  ...options
10110
11034
  });
10111
11035
  /**
10112
- * Add one unit to the draft tree
11036
+ * Read one reference entry
10113
11037
  *
10114
- * Add a unit to the structure: a chapter, a scene, a section, an argument or a product depending on the genre. Say where it goes with parent and after, give it the structure name people will use to manage it, and write the intent that says what it has to accomplish. Adding a unit changes the draft revision, so pass expected_revision, and the new unit itself starts with no body.
11038
+ * Read one entry in full: its description, its fact ledger, its relations to other entries, its detection settings and its images. Read it before changing it, because an update replaces the fields it names rather than merging them. The entry is addressed by its name in this library, or by its ent_ identifier.
10115
11039
  */
10116
- export const studioUnitsCreate = (options) => (options.client ?? client).post({
11040
+ export const studioEntriesGet = (options) => (options.client ?? client).get({
10117
11041
  security: [{
10118
11042
  key: 'BearerAuth',
10119
11043
  scheme: 'bearer',
@@ -10123,7 +11047,25 @@ export const studioUnitsCreate = (options) => (options.client ?? client).post({
10123
11047
  name: 'X-API-Key',
10124
11048
  type: 'apiKey'
10125
11049
  }],
10126
- url: '/studio/v1/works/{work}/drafts/{draft}/units',
11050
+ url: '/studio/v1/codexes/{codex}/entries/{entry}',
11051
+ ...options
11052
+ });
11053
+ /**
11054
+ * Change what a reference entry says
11055
+ *
11056
+ * Change one entry: its type, its name, its aliases, its description, its facts, its notes, its tracking setting, its images or its relations. Send update_mask naming exactly the fields you change, because a field the mask leaves out keeps its value while a list field the mask names is replaced whole. Renaming an entry changes what the text has to mention for detection to find it.
11057
+ */
11058
+ export const studioEntriesUpdate = (options) => (options.client ?? client).patch({
11059
+ security: [{
11060
+ key: 'BearerAuth',
11061
+ scheme: 'bearer',
11062
+ type: 'http'
11063
+ }, {
11064
+ key: 'ApiKeyAuth',
11065
+ name: 'X-API-Key',
11066
+ type: 'apiKey'
11067
+ }],
11068
+ url: '/studio/v1/codexes/{codex}/entries/{entry}',
10127
11069
  ...options,
10128
11070
  headers: {
10129
11071
  'Content-Type': 'application/json',
@@ -10131,11 +11073,29 @@ export const studioUnitsCreate = (options) => (options.client ?? client).post({
10131
11073
  }
10132
11074
  });
10133
11075
  /**
10134
- * Add a whole outline of units at once
11076
+ * List the writing styles of this organization
10135
11077
  *
10136
- * Create many units in one write from a nested outline, which is how a structure is built after the person approved a plan. Nesting in the outline becomes the parent chain, numbers are assigned in order, and the draft gets one revision for the whole batch rather than one per unit. Sending the same outline twice would duplicate it, so pass the draft revision you read and repeat the call only after a refusal.
11078
+ * List the styles this API key organization owns, each with its name and description, so you can choose the voice a work should be written in. Continue with next_page_token until the answer stops carrying one. Read one style in full before attaching it, because its samples are what actually shape the writing.
11079
+ */
11080
+ export const studioStylesList = (options) => (options?.client ?? client).get({
11081
+ security: [{
11082
+ key: 'BearerAuth',
11083
+ scheme: 'bearer',
11084
+ type: 'http'
11085
+ }, {
11086
+ key: 'ApiKeyAuth',
11087
+ name: 'X-API-Key',
11088
+ type: 'apiKey'
11089
+ }],
11090
+ url: '/studio/v1/styles',
11091
+ ...options
11092
+ });
11093
+ /**
11094
+ * Create a writing style
11095
+ *
11096
+ * Create a style: the voice a piece is written in, held as samples rather than as adjectives. Samples matter more than a description, so paste one to five paragraphs of writing the piece should sound like, and put the words to avoid into avoid so the banned-word check uses them. Attach a style to a work, or to one draft of it, and its samples then reach every context pack.
10137
11097
  */
10138
- export const studioUnitsBatchCreate = (options) => (options.client ?? client).post({
11098
+ export const studioStylesCreate = (options) => (options.client ?? client).post({
10139
11099
  security: [{
10140
11100
  key: 'BearerAuth',
10141
11101
  scheme: 'bearer',
@@ -10145,7 +11105,7 @@ export const studioUnitsBatchCreate = (options) => (options.client ?? client).po
10145
11105
  name: 'X-API-Key',
10146
11106
  type: 'apiKey'
10147
11107
  }],
10148
- url: '/studio/v1/works/{work}/drafts/{draft}/units:batchCreate',
11108
+ url: '/studio/v1/styles',
10149
11109
  ...options,
10150
11110
  headers: {
10151
11111
  'Content-Type': 'application/json',
@@ -10153,11 +11113,11 @@ export const studioUnitsBatchCreate = (options) => (options.client ?? client).po
10153
11113
  }
10154
11114
  });
10155
11115
  /**
10156
- * Write intents for many units in one call
11116
+ * Delete a writing style
10157
11117
  *
10158
- * Change the intent of several units in one write: the synopsis, the points and the brief points each of them claims. Bodies are not part of this call, because a body is written one unit at a time with its own revision; here the whole batch shares the draft revision you read. Use it to lay out a plan across the tree, then write bodies one by one.
11118
+ * Delete a style, which detaches it from every work and draft that used it; those units then stop receiving its samples and glossary in their context packs. This cannot be undone, so confirm the style identifier before deleting it, and read the work first when it is not certain which style it uses.
10159
11119
  */
10160
- export const studioUnitsBatchUpdate = (options) => (options.client ?? client).post({
11120
+ export const studioStylesDelete = (options) => (options.client ?? client).delete({
10161
11121
  security: [{
10162
11122
  key: 'BearerAuth',
10163
11123
  scheme: 'bearer',
@@ -10167,19 +11127,15 @@ export const studioUnitsBatchUpdate = (options) => (options.client ?? client).po
10167
11127
  name: 'X-API-Key',
10168
11128
  type: 'apiKey'
10169
11129
  }],
10170
- url: '/studio/v1/works/{work}/drafts/{draft}/units:batchUpdate',
10171
- ...options,
10172
- headers: {
10173
- 'Content-Type': 'application/json',
10174
- ...options.headers
10175
- }
11130
+ url: '/studio/v1/styles/{style}',
11131
+ ...options
10176
11132
  });
10177
11133
  /**
10178
- * Read one unit with its blocks and Markdown
11134
+ * Read one writing style
10179
11135
  *
10180
- * Read one unit: its intent, its status, its revision, its links to reference entries, and its body as both blocks and Markdown. The Markdown carries each block identifier inline as an anchor comment, so a rewrite can keep the identifiers of the blocks it keeps. Read this before writing the body, because the revision it returns is the precondition that write has to carry.
11136
+ * Read one style in full: its samples, the wording to use and to avoid, and its glossary of wrong-to-right terms. Read it before attaching it to a work, since samples decide the sound of the writing far more than the description does, and a glossary term also becomes a deterministic check against the text.
10181
11137
  */
10182
- export const studioUnitsGet = (options) => (options.client ?? client).get({
11138
+ export const studioStylesGet = (options) => (options.client ?? client).get({
10183
11139
  security: [{
10184
11140
  key: 'BearerAuth',
10185
11141
  scheme: 'bearer',
@@ -10189,15 +11145,15 @@ export const studioUnitsGet = (options) => (options.client ?? client).get({
10189
11145
  name: 'X-API-Key',
10190
11146
  type: 'apiKey'
10191
11147
  }],
10192
- url: '/studio/v1/works/{work}/units/{unit}',
11148
+ url: '/studio/v1/styles/{style}',
10193
11149
  ...options
10194
11150
  });
10195
11151
  /**
10196
- * Change a unit intent, body or status
11152
+ * Change a writing style
10197
11153
  *
10198
- * Change one unit: its name, its heading, its synopsis and points, the brief points it claims, its status, its links to reference entries, or its body as a whole Markdown text. A body write requires expected_revision, because replacing the whole text would drop blocks someone else inserted. The answer carries the unit as it now stands, so read the next field of the answer instead of re-reading the unit.
11154
+ * Change a style: its name, its description, its samples, its use and avoid lists, or its glossary. Send update_mask naming exactly the fields you change; a list the mask names is replaced whole. Adding a term to the glossary or to avoid also changes what the deterministic checks flag, so a work that uses this style sees new findings on its next check.
10199
11155
  */
10200
- export const studioUnitsUpdate = (options) => (options.client ?? client).patch({
11156
+ export const studioStylesUpdate = (options) => (options.client ?? client).patch({
10201
11157
  security: [{
10202
11158
  key: 'BearerAuth',
10203
11159
  scheme: 'bearer',
@@ -10207,7 +11163,7 @@ export const studioUnitsUpdate = (options) => (options.client ?? client).patch({
10207
11163
  name: 'X-API-Key',
10208
11164
  type: 'apiKey'
10209
11165
  }],
10210
- url: '/studio/v1/works/{work}/units/{unit}',
11166
+ url: '/studio/v1/styles/{style}',
10211
11167
  ...options,
10212
11168
  headers: {
10213
11169
  'Content-Type': 'application/json',
@@ -10215,11 +11171,11 @@ export const studioUnitsUpdate = (options) => (options.client ?? client).patch({
10215
11171
  }
10216
11172
  });
10217
11173
  /**
10218
- * Move a unit to another place in the tree
11174
+ * List the templates a genre can start from
10219
11175
  *
10220
- * Move a unit under another parent or after another sibling, without changing its number, its identifier, its intent or its body. A move that would put a unit inside its own descendant, or that would cross into another draft, is refused. Only the moved unit changes, so the revision to pass is its own.
11176
+ * List templates: the built-in starting structures of each genre, followed by the ones this organization saved. Pass a genre to see only the templates that genre can use. A template is used once when a draft is created and is then detached, so changing a template never rewrites a draft that already started from it.
10221
11177
  */
10222
- export const studioUnitsMove = (options) => (options.client ?? client).post({
11178
+ export const studioTemplatesList = (options) => (options?.client ?? client).get({
10223
11179
  security: [{
10224
11180
  key: 'BearerAuth',
10225
11181
  scheme: 'bearer',
@@ -10229,19 +11185,15 @@ export const studioUnitsMove = (options) => (options.client ?? client).post({
10229
11185
  name: 'X-API-Key',
10230
11186
  type: 'apiKey'
10231
11187
  }],
10232
- url: '/studio/v1/works/{work}/units/{unit}:move',
10233
- ...options,
10234
- headers: {
10235
- 'Content-Type': 'application/json',
10236
- ...options.headers
10237
- }
11188
+ url: '/studio/v1/templates',
11189
+ ...options
10238
11190
  });
10239
11191
  /**
10240
- * Edit a unit body block by block
11192
+ * Save a starting structure as a template
10241
11193
  *
10242
- * Change a body by naming the blocks to insert, replace or delete instead of resending the whole text. This is the safe way for a writer that only touches part of a unit, because a block another writer changed after your revision is refused rather than overwritten. The revision is required, and the answer carries the unit with its blocks so the next edit can address them.
11194
+ * Save a unit tree as a reusable template for one genre, so the same structure can seed later drafts. Give the genre, a name, the outline of units with their intents, and optionally the writing guidance a writer should follow. Creating a template from an existing draft is a separate milestone and answers NOT_IMPLEMENTED, so build the outline here instead.
10243
11195
  */
10244
- export const studioUnitsPatchBlocks = (options) => (options.client ?? client).post({
11196
+ export const studioTemplatesCreate = (options) => (options.client ?? client).post({
10245
11197
  security: [{
10246
11198
  key: 'BearerAuth',
10247
11199
  scheme: 'bearer',
@@ -10251,7 +11203,7 @@ export const studioUnitsPatchBlocks = (options) => (options.client ?? client).po
10251
11203
  name: 'X-API-Key',
10252
11204
  type: 'apiKey'
10253
11205
  }],
10254
- url: '/studio/v1/works/{work}/units/{unit}/blocks:patch',
11206
+ url: '/studio/v1/templates',
10255
11207
  ...options,
10256
11208
  headers: {
10257
11209
  'Content-Type': 'application/json',
@@ -10259,11 +11211,11 @@ export const studioUnitsPatchBlocks = (options) => (options.client ?? client).po
10259
11211
  }
10260
11212
  });
10261
11213
  /**
10262
- * Read the context pack for writing one unit
11214
+ * Delete a saved template
10263
11215
  *
10264
- * Read everything a writer needs before touching one unit: the genre rules, the goal, the brief, the style, the upstream source, the reference entries this unit draws on, the synopses of the units before it, and the intent of this unit, assembled in a fixed order and measured against a token budget. Entries left out say why, so a missing detail is visible rather than silent. Same input gives the same pack, which is what makes a written result reproducible.
11216
+ * Delete a template this organization saved. A built-in template belongs to the catalog and cannot be deleted, so this answers TEMPLATE_NOT_FOUND for one. Drafts that already started from the template are unaffected, because the template was detached when they were created. This cannot be undone.
10265
11217
  */
10266
- export const studioUnitsContext = (options) => (options.client ?? client).get({
11218
+ export const studioTemplatesDelete = (options) => (options.client ?? client).delete({
10267
11219
  security: [{
10268
11220
  key: 'BearerAuth',
10269
11221
  scheme: 'bearer',
@@ -10273,15 +11225,15 @@ export const studioUnitsContext = (options) => (options.client ?? client).get({
10273
11225
  name: 'X-API-Key',
10274
11226
  type: 'apiKey'
10275
11227
  }],
10276
- url: '/studio/v1/works/{work}/units/{unit}/context',
11228
+ url: '/studio/v1/templates/{template}',
10277
11229
  ...options
10278
11230
  });
10279
11231
  /**
10280
- * List the reference libraries of this organization
11232
+ * Read one template
10281
11233
  *
10282
- * List the reference libraries this API key organization owns, each with how many entries it holds, so you can choose the one a work draws on. Continue with next_page_token until the answer stops carrying one. A library is shared across works, so the list is the whole organization's rather than one work's.
11234
+ * Read one template: its genre, the writing guidance it carries and the unit outline it seeds, with each unit's intent. Address a saved template by its identifier and a built-in one by its key, alone or with its genre prefix such as novel_long:three_act when two genres share a key. Read it before creating a draft from it, because the template decides the structure the draft starts with.
10283
11235
  */
10284
- export const studioCodexesList = (options) => (options?.client ?? client).get({
11236
+ export const studioTemplatesGet = (options) => (options.client ?? client).get({
10285
11237
  security: [{
10286
11238
  key: 'BearerAuth',
10287
11239
  scheme: 'bearer',
@@ -10291,15 +11243,15 @@ export const studioCodexesList = (options) => (options?.client ?? client).get({
10291
11243
  name: 'X-API-Key',
10292
11244
  type: 'apiKey'
10293
11245
  }],
10294
- url: '/studio/v1/codexes',
11246
+ url: '/studio/v1/templates/{template}',
10295
11247
  ...options
10296
11248
  });
10297
11249
  /**
10298
- * Create a reference library
11250
+ * List the rendition themes of a platform
10299
11251
  *
10300
- * Create a reference library: a shared store of the people, places, products and facts a piece draws on, reusable across works. Attach it to a work with the work update call, and the entries it holds then reach the context packs of that work's units. A library is not private to one work, so the same brand facts can serve every piece that mentions them.
11252
+ * List themes: the layouts a rendition is produced with, for one platform or for all of them. Pass a platform to see only the themes that platform can use. The first page starts with the built-in themes (builtin true, such as warm-card@1 for Xiaohongshu cards and plain-mono@1 for WeChat articles), which every organization can use and nobody can change or delete; your organization's own themes follow. A theme decides the page or card a rendition is built into, so read the chosen theme before creating a rendition rather than after the output looks wrong.
10301
11253
  */
10302
- export const studioCodexesCreate = (options) => (options.client ?? client).post({
11254
+ export const studioThemesList = (options) => (options?.client ?? client).get({
10303
11255
  security: [{
10304
11256
  key: 'BearerAuth',
10305
11257
  scheme: 'bearer',
@@ -10309,7 +11261,25 @@ export const studioCodexesCreate = (options) => (options.client ?? client).post(
10309
11261
  name: 'X-API-Key',
10310
11262
  type: 'apiKey'
10311
11263
  }],
10312
- url: '/studio/v1/codexes',
11264
+ url: '/studio/v1/themes',
11265
+ ...options
11266
+ });
11267
+ /**
11268
+ * Create a rendition theme
11269
+ *
11270
+ * Create a theme for one platform: the HTML and CSS a written piece is rendered into, plus the fixed header and footer every rendition carries. A DOCX platform takes a reference document instead of markup, and a card theme takes its aspect, width and fonts. An agent may write a theme here, which is how a new layout appears without a release.
11271
+ */
11272
+ export const studioThemesCreate = (options) => (options.client ?? client).post({
11273
+ security: [{
11274
+ key: 'BearerAuth',
11275
+ scheme: 'bearer',
11276
+ type: 'http'
11277
+ }, {
11278
+ key: 'ApiKeyAuth',
11279
+ name: 'X-API-Key',
11280
+ type: 'apiKey'
11281
+ }],
11282
+ url: '/studio/v1/themes',
10313
11283
  ...options,
10314
11284
  headers: {
10315
11285
  'Content-Type': 'application/json',
@@ -10317,11 +11287,11 @@ export const studioCodexesCreate = (options) => (options.client ?? client).post(
10317
11287
  }
10318
11288
  });
10319
11289
  /**
10320
- * Delete a reference library
11290
+ * Delete a rendition theme
10321
11291
  *
10322
- * Delete a library and every entry inside it. A library attached to any work is refused with CODEX_IN_USE, because deleting it would silently strip the reference material those units draw on; detach it from the work first. This cannot be undone, so confirm which library the identifier names.
11292
+ * Delete a theme this organization created. A built-in theme belongs to the platform and cannot be deleted, so this answers THEME_NOT_FOUND for one. Renditions already produced with the theme keep their output, because the produced file no longer depends on the theme. This cannot be undone.
10323
11293
  */
10324
- export const studioCodexesDelete = (options) => (options.client ?? client).delete({
11294
+ export const studioThemesDelete = (options) => (options.client ?? client).delete({
10325
11295
  security: [{
10326
11296
  key: 'BearerAuth',
10327
11297
  scheme: 'bearer',
@@ -10331,15 +11301,15 @@ export const studioCodexesDelete = (options) => (options.client ?? client).delet
10331
11301
  name: 'X-API-Key',
10332
11302
  type: 'apiKey'
10333
11303
  }],
10334
- url: '/studio/v1/codexes/{codex}',
11304
+ url: '/studio/v1/themes/{theme}',
10335
11305
  ...options
10336
11306
  });
10337
11307
  /**
10338
- * Read one reference library
11308
+ * Read one rendition theme
10339
11309
  *
10340
- * Read one reference library: its name, its description, its labels and how many entries it holds. Read this to confirm a library exists before attaching it to a work; the entries themselves are listed with the entry list call, because a library may hold more of them than fit in one answer.
11310
+ * Read one theme in full: the HTML template and stylesheet it renders with, the header and footer it always carries, the reference document a DOCX rendition uses, or the card proportions a card rendition uses. Read it before creating a rendition with it, because a theme decides what the output looks like and a DOCX theme is a file rather than markup.
10341
11311
  */
10342
- export const studioCodexesGet = (options) => (options.client ?? client).get({
11312
+ export const studioThemesGet = (options) => (options.client ?? client).get({
10343
11313
  security: [{
10344
11314
  key: 'BearerAuth',
10345
11315
  scheme: 'bearer',
@@ -10349,15 +11319,15 @@ export const studioCodexesGet = (options) => (options.client ?? client).get({
10349
11319
  name: 'X-API-Key',
10350
11320
  type: 'apiKey'
10351
11321
  }],
10352
- url: '/studio/v1/codexes/{codex}',
11322
+ url: '/studio/v1/themes/{theme}',
10353
11323
  ...options
10354
11324
  });
10355
11325
  /**
10356
- * Rename a reference library or change its description
11326
+ * Change a rendition theme
10357
11327
  *
10358
- * Change the library itself: its name, its description or its labels. Send update_mask naming exactly the fields you change; a field left out keeps its value. The entries inside are untouched, and a work that has the library attached keeps it attached under the new name.
11328
+ * Change a theme: its name, its markup, its stylesheet, or the fixed fragments around every rendition. Send update_mask naming exactly the fields you change. Changing a theme does not rewrite renditions already produced with an earlier version, because each rendition records the theme version it was built from.
10359
11329
  */
10360
- export const studioCodexesUpdate = (options) => (options.client ?? client).patch({
11330
+ export const studioThemesUpdate = (options) => (options.client ?? client).patch({
10361
11331
  security: [{
10362
11332
  key: 'BearerAuth',
10363
11333
  scheme: 'bearer',
@@ -10367,7 +11337,7 @@ export const studioCodexesUpdate = (options) => (options.client ?? client).patch
10367
11337
  name: 'X-API-Key',
10368
11338
  type: 'apiKey'
10369
11339
  }],
10370
- url: '/studio/v1/codexes/{codex}',
11340
+ url: '/studio/v1/themes/{theme}',
10371
11341
  ...options,
10372
11342
  headers: {
10373
11343
  'Content-Type': 'application/json',
@@ -10375,11 +11345,11 @@ export const studioCodexesUpdate = (options) => (options.client ?? client).patch
10375
11345
  }
10376
11346
  });
10377
11347
  /**
10378
- * List the entries of a reference library
11348
+ * Create a rendition of a draft for a platform
10379
11349
  *
10380
- * List the entries of one library in pages, each with its type, its name, its aliases and whether it is always present in context. Use it to see what a work already knows before adding an entry, since a duplicate name is refused rather than merged. Continue with next_page_token until the answer stops carrying one.
11350
+ * Create a rendition: the form of one draft that a platform receives, such as a Xiaohongshu card set, a DOCX file or a Markdown file. Read the platform first with the platform call and pass its versioned key; pass a theme only to override the platform's default layout. Pass render true to render in the same call and read render_state and issues in the answer; without it the rendition starts as pending and the render call produces it. Rendering a Xiaohongshu card set is billed by Browser Rendering time (meter browser_ms, product studio-render); DOCX and Markdown renditions are not billed. A draft with no body renders as invalid with a draft_empty issue, and an unavailable render service leaves render_state failed with a render_unavailable issue, so repeat the render call later. Send a request_id to make a repeated call return the first rendition instead of creating another. Next, publish the rendition to export it.
10381
11351
  */
10382
- export const studioEntriesList = (options) => (options.client ?? client).get({
11352
+ export const studioRenditionsCreate = (options) => (options.client ?? client).post({
10383
11353
  security: [{
10384
11354
  key: 'BearerAuth',
10385
11355
  scheme: 'bearer',
@@ -10389,15 +11359,19 @@ export const studioEntriesList = (options) => (options.client ?? client).get({
10389
11359
  name: 'X-API-Key',
10390
11360
  type: 'apiKey'
10391
11361
  }],
10392
- url: '/studio/v1/codexes/{codex}/entries',
10393
- ...options
11362
+ url: '/studio/v1/works/{work}/drafts/{draft}/renditions',
11363
+ ...options,
11364
+ headers: {
11365
+ 'Content-Type': 'application/json',
11366
+ ...options.headers
11367
+ }
10394
11368
  });
10395
11369
  /**
10396
- * Add an entry to a reference library
11370
+ * List the renditions of a work
10397
11371
  *
10398
- * Add one entry: a character, a place, a product, a source of facts. Give it the type the genre uses, the name the text will mention, and the description and facts that should reach a writer when it is mentioned. Aliases and excluded phrases keep detection honest, so a common word inside an idiom is not mistaken for the entry. A name already used in the library is refused.
11372
+ * List the renditions of one work, each with its platform, render state, stale flag and publish state. Pass draft to see only the renditions of one draft. Use it to find the rendition to publish or to render again, and read stale before exporting: a stale rendition was built from an older draft and cannot be exported until the render call has rebuilt it. The answer is one page; keep following next_page_token while it is present.
10399
11373
  */
10400
- export const studioEntriesCreate = (options) => (options.client ?? client).post({
11374
+ export const studioRenditionsList = (options) => (options.client ?? client).get({
10401
11375
  security: [{
10402
11376
  key: 'BearerAuth',
10403
11377
  scheme: 'bearer',
@@ -10407,19 +11381,15 @@ export const studioEntriesCreate = (options) => (options.client ?? client).post(
10407
11381
  name: 'X-API-Key',
10408
11382
  type: 'apiKey'
10409
11383
  }],
10410
- url: '/studio/v1/codexes/{codex}/entries',
10411
- ...options,
10412
- headers: {
10413
- 'Content-Type': 'application/json',
10414
- ...options.headers
10415
- }
11384
+ url: '/studio/v1/works/{work}/renditions',
11385
+ ...options
10416
11386
  });
10417
11387
  /**
10418
- * Delete a reference entry
11388
+ * Delete a rendition
10419
11389
  *
10420
- * Delete one entry from a library, which also removes the mentions and the links that pointed at it. Units that claimed it keep their text; only the reference goes away. This cannot be undone, so confirm the name of the entry before deleting it, and prefer changing its tracking setting to never when it should stop reaching writers but stay recorded.
11390
+ * Delete a rendition and stop listing it. The draft it was built from is untouched, and a new rendition can be created from it at any time. Files already downloaded from an earlier export are not affected. Use it to clear a failed or abandoned rendition; to refresh one, call the render operation instead.
10421
11391
  */
10422
- export const studioEntriesDelete = (options) => (options.client ?? client).delete({
11392
+ export const studioRenditionsDelete = (options) => (options.client ?? client).delete({
10423
11393
  security: [{
10424
11394
  key: 'BearerAuth',
10425
11395
  scheme: 'bearer',
@@ -10429,15 +11399,15 @@ export const studioEntriesDelete = (options) => (options.client ?? client).delet
10429
11399
  name: 'X-API-Key',
10430
11400
  type: 'apiKey'
10431
11401
  }],
10432
- url: '/studio/v1/codexes/{codex}/entries/{entry}',
11402
+ url: '/studio/v1/works/{work}/renditions/{rendition}',
10433
11403
  ...options
10434
11404
  });
10435
11405
  /**
10436
- * Read one reference entry
11406
+ * Read one rendition
10437
11407
  *
10438
- * Read one entry in full: its description, its fact ledger, its relations to other entries, its detection settings and its images. Read it before changing it, because an update replaces the fields it names rather than merging them. The entry is addressed by its name in this library, or by its ent_ identifier.
11408
+ * Read one rendition in full: its render state, the validation issues the render found, the parts (one per card page or thread post), the files it produced and its publish state. Call it after create, render or publish to see the outcome, because a render that finished invalid or failed is reported here and not as an HTTP error. stale is true when the draft has changed since source_revision; call the render operation before exporting a stale rendition.
10439
11409
  */
10440
- export const studioEntriesGet = (options) => (options.client ?? client).get({
11410
+ export const studioRenditionsGet = (options) => (options.client ?? client).get({
10441
11411
  security: [{
10442
11412
  key: 'BearerAuth',
10443
11413
  scheme: 'bearer',
@@ -10447,15 +11417,15 @@ export const studioEntriesGet = (options) => (options.client ?? client).get({
10447
11417
  name: 'X-API-Key',
10448
11418
  type: 'apiKey'
10449
11419
  }],
10450
- url: '/studio/v1/codexes/{codex}/entries/{entry}',
11420
+ url: '/studio/v1/works/{work}/renditions/{rendition}',
10451
11421
  ...options
10452
11422
  });
10453
11423
  /**
10454
- * Change what a reference entry says
11424
+ * Change the theme or settings of a rendition
10455
11425
  *
10456
- * Change one entry: its type, its name, its aliases, its description, its facts, its notes, its tracking setting, its images or its relations. Send update_mask naming exactly the fields you change, because a field the mask leaves out keeps its value while a list field the mask names is replaced whole. Renaming an entry changes what the text has to mention for detection to find it.
11426
+ * Change a rendition's theme or settings. Send update_mask naming exactly the fields you change, such as theme or settings; a field left out keeps its value. The produced files are not rebuilt by this call, so call the render operation afterwards to apply the change. A rendition whose export or publish has started is locked and answers RENDITION_PUBLISH_LOCKED; create a new rendition for new content.
10457
11427
  */
10458
- export const studioEntriesUpdate = (options) => (options.client ?? client).patch({
11428
+ export const studioRenditionsUpdate = (options) => (options.client ?? client).patch({
10459
11429
  security: [{
10460
11430
  key: 'BearerAuth',
10461
11431
  scheme: 'bearer',
@@ -10465,7 +11435,7 @@ export const studioEntriesUpdate = (options) => (options.client ?? client).patch
10465
11435
  name: 'X-API-Key',
10466
11436
  type: 'apiKey'
10467
11437
  }],
10468
- url: '/studio/v1/codexes/{codex}/entries/{entry}',
11438
+ url: '/studio/v1/works/{work}/renditions/{rendition}',
10469
11439
  ...options,
10470
11440
  headers: {
10471
11441
  'Content-Type': 'application/json',
@@ -10473,11 +11443,11 @@ export const studioEntriesUpdate = (options) => (options.client ?? client).patch
10473
11443
  }
10474
11444
  });
10475
11445
  /**
10476
- * List the writing styles of this organization
11446
+ * Render a rendition again from the current draft
10477
11447
  *
10478
- * List the styles this API key organization owns, each with its name and description, so you can choose the voice a work should be written in. Continue with next_page_token until the answer stops carrying one. Read one style in full before attaching it, because its samples are what actually shape the writing.
11448
+ * Render the rendition from the draft as it is now, replacing its parts and files and clearing stale. Call it after the draft changed, after a theme or settings change, or after a failed render. The answer carries render_state: rendered, invalid when the draft has an error-level issue (for example draft_empty on a draft with no body), or failed when the render service was unavailable (issue render_unavailable; repeat later). A render does not fail the HTTP call for those outcomes, so read render_state and issues. Rendering a Xiaohongshu card set is billed by Browser Rendering time (meter browser_ms, product studio-render); DOCX and Markdown are not billed. Rendering the same rendition twice at once answers REVISION_CONFLICT; retry shortly. Next, publish the rendition to export it.
10479
11449
  */
10480
- export const studioStylesList = (options) => (options?.client ?? client).get({
11450
+ export const studioRenditionsRender = (options) => (options.client ?? client).post({
10481
11451
  security: [{
10482
11452
  key: 'BearerAuth',
10483
11453
  scheme: 'bearer',
@@ -10487,15 +11457,15 @@ export const studioStylesList = (options) => (options?.client ?? client).get({
10487
11457
  name: 'X-API-Key',
10488
11458
  type: 'apiKey'
10489
11459
  }],
10490
- url: '/studio/v1/styles',
11460
+ url: '/studio/v1/works/{work}/renditions/{rendition}:render',
10491
11461
  ...options
10492
11462
  });
10493
11463
  /**
10494
- * Create a writing style
11464
+ * Export a rendition
10495
11465
  *
10496
- * Create a style: the voice a piece is written in, held as samples rather than as adjectives. Samples matter more than a description, so paste one to five paragraphs of writing the piece should sound like, and put the words to avoid into avoid so the banned-word check uses them. Attach a style to a work, or to one draft of it, and its samples then reach every context pack.
11466
+ * Export a rendition for the platforms that deliver a file: markdown@1, docx@1 and xiaohongshu@1 end with publish.state exported, and a card rendition gains one ZIP of its pages in files. Publishing to a platform account such as X or WeChat is not available yet and answers PLATFORM_NOT_AVAILABLE; export instead. The rendition must be rendered, not stale and without error-level issues: RENDITION_NOT_RENDERED means call the render operation first, RENDITION_STALE means the draft changed so render again, RENDITION_INVALID means fix the draft problems listed in issues and render again. Exporting the same rendition twice at once answers REVISION_CONFLICT; retry shortly. Next, call the content operation to download the file.
10497
11467
  */
10498
- export const studioStylesCreate = (options) => (options.client ?? client).post({
11468
+ export const studioRenditionsPublish = (options) => (options.client ?? client).post({
10499
11469
  security: [{
10500
11470
  key: 'BearerAuth',
10501
11471
  scheme: 'bearer',
@@ -10505,19 +11475,15 @@ export const studioStylesCreate = (options) => (options.client ?? client).post({
10505
11475
  name: 'X-API-Key',
10506
11476
  type: 'apiKey'
10507
11477
  }],
10508
- url: '/studio/v1/styles',
10509
- ...options,
10510
- headers: {
10511
- 'Content-Type': 'application/json',
10512
- ...options.headers
10513
- }
11478
+ url: '/studio/v1/works/{work}/renditions/{rendition}:publish',
11479
+ ...options
10514
11480
  });
10515
11481
  /**
10516
- * Delete a writing style
11482
+ * Get a download URL for a rendition file
10517
11483
  *
10518
- * Delete a style, which detaches it from every work and draft that used it; those units then stop receiving its samples and glossary in their context packs. This cannot be undone, so confirm the style identifier before deleting it, and read the work first when it is not certain which style it uses.
11484
+ * Get a signed, short-lived URL to download what a rendition produced. Without part it points to the rendition's own first file: the ZIP of pages for a card rendition, the DOCX for docx@1. With part it points to that part's first file, such as one card PNG; a part that has no file, or a rendition not rendered yet, answers RENDITION_NOT_RENDERED, and an index no part has answers INVALID_PARAMS. Call it after a successful render or export, download the url before expire_time, and call again for a fresh one when it has expired. The URL is a credential: do not store or share it.
10519
11485
  */
10520
- export const studioStylesDelete = (options) => (options.client ?? client).delete({
11486
+ export const studioRenditionsContentUrl = (options) => (options.client ?? client).get({
10521
11487
  security: [{
10522
11488
  key: 'BearerAuth',
10523
11489
  scheme: 'bearer',
@@ -10527,15 +11493,15 @@ export const studioStylesDelete = (options) => (options.client ?? client).delete
10527
11493
  name: 'X-API-Key',
10528
11494
  type: 'apiKey'
10529
11495
  }],
10530
- url: '/studio/v1/styles/{style}',
11496
+ url: '/studio/v1/works/{work}/renditions/{rendition}/content',
10531
11497
  ...options
10532
11498
  });
10533
11499
  /**
10534
- * Read one writing style
11500
+ * List the blind review rounds of a work
10535
11501
  *
10536
- * Read one style in full: its samples, the wording to use and to avoid, and its glossary of wrong-to-right terms. Read it before attaching it to a work, since samples decide the sound of the writing far more than the description does, and a glossary term also becomes a deterministic check against the text.
11502
+ * List the review rounds of one work, newest round first, each with its draft, round number, status, decision and whether it was appealed. Pass draft to see the rounds of one draft only. Use it to find the round to read, to answer or to cancel, and to see whether the draft already has a round running before sending another: a running round answers REVIEW_IN_PROGRESS. The answer is one page; keep following next_page_token while it is present. Rounds of other organizations are not listed and a work of another organization answers WORK_NOT_FOUND.
10537
11503
  */
10538
- export const studioStylesGet = (options) => (options.client ?? client).get({
11504
+ export const studioWorksReviewsList = (options) => (options.client ?? client).get({
10539
11505
  security: [{
10540
11506
  key: 'BearerAuth',
10541
11507
  scheme: 'bearer',
@@ -10545,15 +11511,15 @@ export const studioStylesGet = (options) => (options.client ?? client).get({
10545
11511
  name: 'X-API-Key',
10546
11512
  type: 'apiKey'
10547
11513
  }],
10548
- url: '/studio/v1/styles/{style}',
11514
+ url: '/studio/v1/works/{work}/reviews',
10549
11515
  ...options
10550
11516
  });
10551
11517
  /**
10552
- * Change a writing style
11518
+ * Send a draft to blind review
10553
11519
  *
10554
- * Change a style: its name, its description, its samples, its use and avoid lists, or its glossary. Send update_mask naming exactly the fields you change; a list the mask names is replaced whole. Adding a term to the glossary or to avoid also changes what the deterministic checks flag, so a work that uses this style sees new findings on its next check.
11520
+ * Send one draft of this work to the blind review centre, which freezes the draft's content revision as it is now, draws reviewers for the work's review settings and asks them in. Use it once the draft is written; the centre chooses who reviews, and the sender only ever reads labels A, B, C, never the reviewer identities. Pass mode to narrow this round to expert reviewers, to audience reviewers or to both, which the settings do not decide. From the second round pass revision_of with the previous round's rv_ id and note with the change note that answers that round point by point. The answer is the new round in status reviewing; read it again with the review read until status becomes decided and then read decision, expert_reports and screening. Billing follows the reviewers' sessions, not the frame of this call. DRAFT_NOT_READY means the draft still has units without a body or fails a hard check, so finish it first; REVIEW_IN_PROGRESS means this draft already has a round running, so wait for it to decide or cancel it; REVIEW_ROUND_LIMIT means the work reached max_rounds and a person has to raise it in the review settings; REVIEWER_POOL_EMPTY means the reviewer library cannot fill the seats under these conditions, so a person registers or re-activates reviewers.
10555
11521
  */
10556
- export const studioStylesUpdate = (options) => (options.client ?? client).patch({
11522
+ export const studioWorksReviewsCreate = (options) => (options.client ?? client).post({
10557
11523
  security: [{
10558
11524
  key: 'BearerAuth',
10559
11525
  scheme: 'bearer',
@@ -10563,7 +11529,7 @@ export const studioStylesUpdate = (options) => (options.client ?? client).patch(
10563
11529
  name: 'X-API-Key',
10564
11530
  type: 'apiKey'
10565
11531
  }],
10566
- url: '/studio/v1/styles/{style}',
11532
+ url: '/studio/v1/works/{work}/reviews',
10567
11533
  ...options,
10568
11534
  headers: {
10569
11535
  'Content-Type': 'application/json',
@@ -10571,11 +11537,11 @@ export const studioStylesUpdate = (options) => (options.client ?? client).patch(
10571
11537
  }
10572
11538
  });
10573
11539
  /**
10574
- * List the templates a genre can start from
11540
+ * Read one blind review round
10575
11541
  *
10576
- * List templates: the built-in starting structures of each genre, followed by the ones this organization saved. Pass a genre to see only the templates that genre can use. A template is used once when a draft is created and is then detached, so changing a template never rewrites a draft that already started from it.
11542
+ * Read one round in the sender's view: its status, the seats as labels A, B, C with the state of each, the expert reports that have come back, the screening cards, the round decision and the audience tally. Reviewers appear only as labels; who they are is never part of this answer. Call it after sending a round and repeat while status is reviewing, because reviewers answer asynchronously and a round that is not decided yet carries fewer reports. status decided gives decision and screening; cancelled means a person stopped the round; failed means it could not be completed, for example when every reviewer timed out and no replacement could be drawn. Pass view=audit to also get the assignment record, the confidential editor notes and the reviewer sessions; that block is filled only for an organization administrator, and anyone else reads the same round without it.
10577
11543
  */
10578
- export const studioTemplatesList = (options) => (options?.client ?? client).get({
11544
+ export const studioWorksReviewsRetrieve = (options) => (options.client ?? client).get({
10579
11545
  security: [{
10580
11546
  key: 'BearerAuth',
10581
11547
  scheme: 'bearer',
@@ -10585,15 +11551,15 @@ export const studioTemplatesList = (options) => (options?.client ?? client).get(
10585
11551
  name: 'X-API-Key',
10586
11552
  type: 'apiKey'
10587
11553
  }],
10588
- url: '/studio/v1/templates',
11554
+ url: '/studio/v1/works/{work}/reviews/{review}',
10589
11555
  ...options
10590
11556
  });
10591
11557
  /**
10592
- * Save a starting structure as a template
11558
+ * Appeal a decided review round
10593
11559
  *
10594
- * Save a unit tree as a reusable template for one genre, so the same structure can seed later drafts. Give the genre, a name, the outline of units with their intents, and optionally the writing guidance a writer should follow. Creating a template from an existing draft is a separate milestone and answers NOT_IMPLEMENTED, so build the outline here instead.
11560
+ * Appeal the outcome of a round: the centre draws one more reviewer of the same kind and puts that reviewer's answer beside the existing ones, without telling them the earlier outcome. Use it once, when the sender disagrees with the decision; the reason is recorded for the review centre, and the sender cannot choose the new reviewer. The round goes back to status reviewing and its id stays the same, so read it again afterwards. Each round can be appealed once: a second call for the same round answers REVIEW_ALREADY_APPEALED. Only a decided round can be appealed, so a round that is still reviewing or was cancelled answers REVIEW_IN_PROGRESS or stays cancelled. The extra reviewer's session is billed like any other reviewer session.
10595
11561
  */
10596
- export const studioTemplatesCreate = (options) => (options.client ?? client).post({
11562
+ export const studioWorksReviewsAppeal = (options) => (options.client ?? client).post({
10597
11563
  security: [{
10598
11564
  key: 'BearerAuth',
10599
11565
  scheme: 'bearer',
@@ -10603,7 +11569,7 @@ export const studioTemplatesCreate = (options) => (options.client ?? client).pos
10603
11569
  name: 'X-API-Key',
10604
11570
  type: 'apiKey'
10605
11571
  }],
10606
- url: '/studio/v1/templates',
11572
+ url: '/studio/v1/works/{work}/reviews/{review}:appeal',
10607
11573
  ...options,
10608
11574
  headers: {
10609
11575
  'Content-Type': 'application/json',
@@ -10611,29 +11577,11 @@ export const studioTemplatesCreate = (options) => (options.client ?? client).pos
10611
11577
  }
10612
11578
  });
10613
11579
  /**
10614
- * Delete a saved template
10615
- *
10616
- * Delete a template this organization saved. A built-in template belongs to the catalog and cannot be deleted, so this answers TEMPLATE_NOT_FOUND for one. Drafts that already started from the template are unaffected, because the template was detached when they were created. This cannot be undone.
10617
- */
10618
- export const studioTemplatesDelete = (options) => (options.client ?? client).delete({
10619
- security: [{
10620
- key: 'BearerAuth',
10621
- scheme: 'bearer',
10622
- type: 'http'
10623
- }, {
10624
- key: 'ApiKeyAuth',
10625
- name: 'X-API-Key',
10626
- type: 'apiKey'
10627
- }],
10628
- url: '/studio/v1/templates/{template}',
10629
- ...options
10630
- });
10631
- /**
10632
- * Read one template
11580
+ * Cancel a running review round
10633
11581
  *
10634
- * Read one template: its genre, the writing guidance it carries and the unit outline it seeds, with each unit's intent. Address a saved template by its identifier and a built-in one by its key, alone or with its genre prefix such as novel_long:three_act when two genres share a key. Read it before creating a draft from it, because the template decides the structure the draft starts with.
11582
+ * Cancel a round that is still reviewing, so its reviewers are no longer waited for and the draft can be sent again. Nothing that came back is deleted: the round stays readable with status cancelled and the reports it had. Use it when the draft changed so much that the running round is no longer about the current text, or when the round was sent by mistake; a person makes this call, and an agent calling it is refused with PERMISSION_DENIED. A round that already reached a decision answers REVIEW_IN_PROGRESS, because a decided round is answered by sending the next round with revision_of rather than by cancelling it. Reviewer sessions already started keep being billed.
10635
11583
  */
10636
- export const studioTemplatesGet = (options) => (options.client ?? client).get({
11584
+ export const studioWorksReviewsCancel = (options) => (options.client ?? client).post({
10637
11585
  security: [{
10638
11586
  key: 'BearerAuth',
10639
11587
  scheme: 'bearer',
@@ -10643,15 +11591,15 @@ export const studioTemplatesGet = (options) => (options.client ?? client).get({
10643
11591
  name: 'X-API-Key',
10644
11592
  type: 'apiKey'
10645
11593
  }],
10646
- url: '/studio/v1/templates/{template}',
11594
+ url: '/studio/v1/works/{work}/reviews/{review}:cancel',
10647
11595
  ...options
10648
11596
  });
10649
11597
  /**
10650
- * List the rendition themes of a platform
11598
+ * Read the review settings of a work
10651
11599
  *
10652
- * List themes: the layouts a rendition is produced with, for one platform or for all of them. Pass a platform to see only the themes that platform can use. A theme decides the page or card a rendition is built into, so read the chosen theme before creating a rendition rather than after the output looks wrong.
11600
+ * Read how this work is reviewed: the seats that make up its review panel, each naming a reviewer kind, a tag and how many reviewers are drawn for it, the maximum number of rounds, and the revision the settings are at. Read it before sending a round, because a draft whose conditions the reviewer library cannot fill answers REVIEWER_POOL_EMPTY, and read it before changing it, because the update carries the revision it returns as its precondition. Settings are not part of the work body: they are read and written here.
10653
11601
  */
10654
- export const studioThemesList = (options) => (options?.client ?? client).get({
11602
+ export const studioWorksReviewSettingsRetrieve = (options) => (options.client ?? client).get({
10655
11603
  security: [{
10656
11604
  key: 'BearerAuth',
10657
11605
  scheme: 'bearer',
@@ -10661,15 +11609,15 @@ export const studioThemesList = (options) => (options?.client ?? client).get({
10661
11609
  name: 'X-API-Key',
10662
11610
  type: 'apiKey'
10663
11611
  }],
10664
- url: '/studio/v1/themes',
11612
+ url: '/studio/v1/works/{work}/review-settings',
10665
11613
  ...options
10666
11614
  });
10667
11615
  /**
10668
- * Create a rendition theme
11616
+ * Change the review settings of a work
10669
11617
  *
10670
- * Create a theme for one platform: the HTML and CSS a written piece is rendered into, plus the fixed header and footer every rendition carries. A DOCX platform takes a reference document instead of markup, and a card theme takes its aspect, width and fonts. An agent may write a theme here, which is how a new layout appears without a release.
11618
+ * Change the review panel of a work: the seats, the maximum number of rounds, or both. Send expected_revision with the revision this settings read returned, so two writers cannot overwrite each other silently; a mismatch answers REVISION_CONFLICT and the settings are unchanged. A person makes this change, because widening who may judge a work is the owner's decision: an agent calling it is refused with PERMISSION_DENIED, which is this operation's answer for a caller without the organization's management identity. The settings are locked while a round of this work is reviewing, which answers REVIEW_IN_PROGRESS; change them after the round decides or is cancelled. Raising max_rounds is how a draft whose rounds are used up is sent again. The changed settings apply to rounds sent from now on and never rewrite a round already sent.
10671
11619
  */
10672
- export const studioThemesCreate = (options) => (options.client ?? client).post({
11620
+ export const studioWorksReviewSettingsUpdate = (options) => (options.client ?? client).patch({
10673
11621
  security: [{
10674
11622
  key: 'BearerAuth',
10675
11623
  scheme: 'bearer',
@@ -10679,7 +11627,7 @@ export const studioThemesCreate = (options) => (options.client ?? client).post({
10679
11627
  name: 'X-API-Key',
10680
11628
  type: 'apiKey'
10681
11629
  }],
10682
- url: '/studio/v1/themes',
11630
+ url: '/studio/v1/works/{work}/review-settings',
10683
11631
  ...options,
10684
11632
  headers: {
10685
11633
  'Content-Type': 'application/json',
@@ -10687,29 +11635,11 @@ export const studioThemesCreate = (options) => (options.client ?? client).post({
10687
11635
  }
10688
11636
  });
10689
11637
  /**
10690
- * Delete a rendition theme
10691
- *
10692
- * Delete a theme this organization created. A built-in theme belongs to the platform and cannot be deleted, so this answers THEME_NOT_FOUND for one. Renditions already produced with the theme keep their output, because the produced file no longer depends on the theme. This cannot be undone.
10693
- */
10694
- export const studioThemesDelete = (options) => (options.client ?? client).delete({
10695
- security: [{
10696
- key: 'BearerAuth',
10697
- scheme: 'bearer',
10698
- type: 'http'
10699
- }, {
10700
- key: 'ApiKeyAuth',
10701
- name: 'X-API-Key',
10702
- type: 'apiKey'
10703
- }],
10704
- url: '/studio/v1/themes/{theme}',
10705
- ...options
10706
- });
10707
- /**
10708
- * Read one rendition theme
11638
+ * List the reviewers of the organization
10709
11639
  *
10710
- * Read one theme in full: the HTML template and stylesheet it renders with, the header and footer it always carries, the reference document a DOCX rendition uses, or the card proportions a card rendition uses. Read it before creating a rendition with it, because a theme decides what the output looks like and a DOCX theme is a file rather than markup.
11640
+ * List the reviewers this organization can draw on: one entry per reviewer agent, with its kind, its display name, the tags it matches seats on, the model family it runs and whether it is active. Pass kind to see only expert or only audience reviewers. Read it before setting a work's seats, so the seat conditions match reviewers that exist, and after REVIEWER_POOL_EMPTY to see which reviewers are missing or inactive. Entries are the organization's own reviewer agents; a reviewer of another organization is never listed. The answer is one page; keep following next_page_token while it is present.
10711
11641
  */
10712
- export const studioThemesGet = (options) => (options.client ?? client).get({
11642
+ export const studioReviewersList = (options) => (options?.client ?? client).get({
10713
11643
  security: [{
10714
11644
  key: 'BearerAuth',
10715
11645
  scheme: 'bearer',
@@ -10719,15 +11649,15 @@ export const studioThemesGet = (options) => (options.client ?? client).get({
10719
11649
  name: 'X-API-Key',
10720
11650
  type: 'apiKey'
10721
11651
  }],
10722
- url: '/studio/v1/themes/{theme}',
11652
+ url: '/studio/v1/reviewers',
10723
11653
  ...options
10724
11654
  });
10725
11655
  /**
10726
- * Change a rendition theme
11656
+ * Activate or retire a reviewer
10727
11657
  *
10728
- * Change a theme: its name, its markup, its stylesheet, or the fixed fragments around every rendition. Send update_mask naming exactly the fields you change. Changing a theme does not rewrite renditions already produced with an earlier version, because each rendition records the theme version it was built from.
11658
+ * Take one reviewer in or out of the draw: active false keeps it in the library but stops it being drawn for future seats, and active true puts it back. Use it when a reviewer should stop judging, for example when its answers are consistently unusable, and set it back once that is dealt with. A round already sent is not affected, because its assignments were made when it was sent. A person makes this change, and an agent calling it is refused with PERMISSION_DENIED. The reviewer is addressed by the agent value the reviewer list returns; an unknown one answers REVIEWER_NOT_FOUND, which is also the answer for a reviewer of another organization.
10729
11659
  */
10730
- export const studioThemesUpdate = (options) => (options.client ?? client).patch({
11660
+ export const studioReviewersUpdate = (options) => (options.client ?? client).patch({
10731
11661
  security: [{
10732
11662
  key: 'BearerAuth',
10733
11663
  scheme: 'bearer',
@@ -10737,7 +11667,7 @@ export const studioThemesUpdate = (options) => (options.client ?? client).patch(
10737
11667
  name: 'X-API-Key',
10738
11668
  type: 'apiKey'
10739
11669
  }],
10740
- url: '/studio/v1/themes/{theme}',
11670
+ url: '/studio/v1/reviewers/{agent}',
10741
11671
  ...options,
10742
11672
  headers: {
10743
11673
  'Content-Type': 'application/json',
@@ -11894,3 +12824,21 @@ export const ticketGetRepositories = (options) => (options?.client ?? client).ge
11894
12824
  url: '/ticket/v1/repositories',
11895
12825
  ...options
11896
12826
  });
12827
+ /**
12828
+ * Update repositories
12829
+ *
12830
+ * Update repositories 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.
12831
+ */
12832
+ export const ticketPatchRepositoriesId = (options) => (options.client ?? client).patch({
12833
+ security: [{
12834
+ key: 'BearerAuth',
12835
+ scheme: 'bearer',
12836
+ type: 'http'
12837
+ }, {
12838
+ key: 'ApiKeyAuth',
12839
+ name: 'X-API-Key',
12840
+ type: 'apiKey'
12841
+ }],
12842
+ url: '/ticket/v1/repositories/{id}',
12843
+ ...options
12844
+ });