@deepraxis/sdk 0.1.1-dev.d73d5e4 → 0.1.1-dev.d8d3f52

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.
@@ -8018,7 +8018,7 @@ export declare const operations: readonly [{
8018
8018
  readonly name: "to";
8019
8019
  readonly type: "number";
8020
8020
  readonly required: false;
8021
- readonly description: "Range end for kind mix, in seconds on the project clock, exclusive. A range longer than 120 seconds is refused; request several ranges instead.";
8021
+ readonly description: "Range end for kind mix, in seconds on the project clock, exclusive. An end up to 0.05 s past the timeline's end (a rounded duration) is read as the end; further past is refused. A range longer than 120 seconds is refused; request several ranges instead.";
8022
8022
  }, {
8023
8023
  readonly name: "revision";
8024
8024
  readonly type: "integer";
@@ -8145,7 +8145,7 @@ export declare const operations: readonly [{
8145
8145
  readonly name: "folder";
8146
8146
  readonly type: "string";
8147
8147
  readonly required: false;
8148
- readonly description: "Optional destination path within the bound media library; omitted uses its default folder.";
8148
+ readonly description: "Optional destination path within the bound media library; omitted uses its default folder. Naming a binding or a folder also imports the finished video into that media library as an asset. Omit both and the export is a file only: read file.url to download it.";
8149
8149
  }, {
8150
8150
  readonly name: "name";
8151
8151
  readonly type: "string";
@@ -8160,7 +8160,7 @@ export declare const operations: readonly [{
8160
8160
  readonly name: "binding";
8161
8161
  readonly type: "string";
8162
8162
  readonly required: false;
8163
- readonly description: "Writable binding name used as the export destination; omission uses default_upload.";
8163
+ readonly description: "Writable binding name used as the export destination; omission uses default_upload. Naming a binding or a folder also imports the finished video into that media library as an asset. Omit both and the export is a file only; read file.url to download it.";
8164
8164
  }, {
8165
8165
  readonly name: "revision";
8166
8166
  readonly type: "integer";
@@ -8246,7 +8246,7 @@ export declare const operations: readonly [{
8246
8246
  readonly resource: "cut.projects.renders";
8247
8247
  readonly method: "create";
8248
8248
  readonly summary: "Create draft range render";
8249
- readonly description: "Render one interval of the timeline so you can hear or look at how that passage comes out, without publishing anything to a media library. Choose kind audio for the mixed soundtrack as an .m4a file, or kind video for a draft-quality .mp4 with picture and sound. from and to are seconds on the project clock and must satisfy 0 <= from < to, to <= the timeline duration, and to - from <= 120; a longer passage is requested in several 分段请求 ranges and joined by the caller. The result is a temporary file (purpose user_data) that expires 24 hours after it is stored and is never imported into a library, so it is not a deliverable and carries no cut-export tag. HTTP 202 only accepts the job; poll praxis.cut.renders.retrieve using the returned id until status is done or failed, then read url while it lasts. A draft also bills like a draft export, by rendered seconds. Each project runs at most 2 draft renders at a time, a budget separate from its exports; a third answers HTTP 429 CUT_BUSY and the same call succeeds once one finishes.";
8249
+ readonly description: "Render one interval of the timeline so you can hear or look at how that passage comes out, without publishing anything to a media library. Choose kind audio for the mixed soundtrack as an .m4a file, or kind video for a draft-quality .mp4 with picture and sound. from and to are seconds on the project clock and must satisfy 0 <= from < to, to <= the timeline duration (an end up to 0.05 s past it, a rounded duration, is read as the end), and to - from <= 120; a longer passage is requested in several 分段请求 ranges and joined by the caller. The result is a temporary file (purpose user_data) that expires 24 hours after it is stored and is never imported into a library, so it is not a deliverable and carries no cut-export tag. HTTP 202 only accepts the job; poll praxis.cut.renders.retrieve using the returned id until status is done or failed, then read url while it lasts. A draft also bills like a draft export, by rendered seconds. Each project runs at most 2 draft renders at a time, a budget separate from its exports; a third answers HTTP 429 CUT_BUSY and the same call succeeds once one finishes.";
8250
8250
  readonly http: "POST";
8251
8251
  readonly path: "/cut/v1/projects/{project_id}/renders";
8252
8252
  readonly streaming: "no";
@@ -10861,6 +10861,37 @@ export declare const operations: readonly [{
10861
10861
  readonly description: "Understanding tasks enabled for new assets; omitted settings default to true.";
10862
10862
  }];
10863
10863
  };
10864
+ }, {
10865
+ readonly resource: "media.libraries";
10866
+ readonly method: "retrieveDefault";
10867
+ readonly summary: "Get default library";
10868
+ readonly description: "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.";
10869
+ readonly http: "GET";
10870
+ readonly path: "/media/v1/libraries/default";
10871
+ readonly streaming: "no";
10872
+ readonly pagination: false;
10873
+ readonly pathParams: readonly [];
10874
+ readonly query: readonly [];
10875
+ }, {
10876
+ readonly resource: "media.libraries";
10877
+ readonly method: "setDefault";
10878
+ readonly summary: "Set default library";
10879
+ readonly description: "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.";
10880
+ readonly http: "PUT";
10881
+ readonly path: "/media/v1/libraries/default";
10882
+ readonly streaming: "no";
10883
+ readonly pagination: false;
10884
+ readonly pathParams: readonly [];
10885
+ readonly query: readonly [];
10886
+ readonly body: {
10887
+ readonly required: true;
10888
+ readonly fields: readonly [{
10889
+ readonly name: "library_id";
10890
+ readonly type: "string";
10891
+ readonly required: true;
10892
+ readonly description: "Identifier of a library belonging to the caller.";
10893
+ }];
10894
+ };
10864
10895
  }, {
10865
10896
  readonly resource: "media.libraries";
10866
10897
  readonly method: "delete";
@@ -10961,6 +10992,12 @@ export declare const operations: readonly [{
10961
10992
  readonly enum: readonly ["image", "video", "raw"];
10962
10993
  readonly required: false;
10963
10994
  readonly description: "image, video (including audio), raw; auto is accepted by Upload actions only, and listing with auto returns 400.";
10995
+ }, {
10996
+ readonly name: "material_type";
10997
+ readonly type: "string";
10998
+ readonly enum: readonly ["image", "video", "audio", "voice", "sticker", "font", "text_style", "text_template", "animation_preset", "lut", "transition_map"];
10999
+ readonly required: false;
11000
+ readonly description: "Filter assets to one kind of material, independent of the stored resource_type. Omit to list every material type. Assets stored before this field existed match no material_type filter.";
10964
11001
  }, {
10965
11002
  readonly name: "cursor";
10966
11003
  readonly type: "string";
@@ -11247,6 +11284,55 @@ export declare const operations: readonly [{
11247
11284
  readonly description: "Replacement custom string-metadata map. Nonempty keys are required and serialized JSON must fit within 1024 UTF-8 bytes; an empty object clears the metadata.";
11248
11285
  }];
11249
11286
  };
11287
+ }, {
11288
+ readonly resource: "media.assets";
11289
+ readonly method: "edit";
11290
+ readonly summary: "Edit asset";
11291
+ readonly description: "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\"}}.";
11292
+ readonly http: "POST";
11293
+ readonly path: "/media/v1/libraries/{library_id}/assets/{asset_id}/edits";
11294
+ readonly streaming: "no";
11295
+ readonly pagination: false;
11296
+ readonly pathParams: readonly [{
11297
+ readonly name: "library_id";
11298
+ readonly sdkName: "library_id";
11299
+ readonly description: "Library ID returned by creation.";
11300
+ }, {
11301
+ readonly name: "asset_id";
11302
+ readonly sdkName: "asset_id";
11303
+ readonly description: "32-character asset ID.";
11304
+ }];
11305
+ readonly query: readonly [];
11306
+ readonly body: {
11307
+ readonly required: true;
11308
+ readonly fields: readonly [{
11309
+ readonly name: "operation";
11310
+ readonly type: "object";
11311
+ readonly required: true;
11312
+ readonly description: "One edit to apply to the source asset. type selects the operation and the discriminating branch carries that operation’s fields. This release performs variations, inpaint, erase, replace_object, recolor, remove_background and replace_background on images; every other type here describes the operation vocabulary and is refused with OPERATION_NOT_SUPPORTED.";
11313
+ }, {
11314
+ readonly name: "model";
11315
+ readonly type: "string";
11316
+ readonly required: false;
11317
+ readonly description: "Router model that performs the edit; omit it to use the library default image model.";
11318
+ }, {
11319
+ readonly name: "asset_folder";
11320
+ readonly type: "string";
11321
+ readonly required: false;
11322
+ readonly description: "Folder the produced asset is filed under; defaults to the source asset’s folder. New path segments containing U+FFFD or consisting only of question marks are rejected with INVALID_PARAMS; send UTF-8 names. Existing affected folders remain readable and assets can be moved out.";
11323
+ }, {
11324
+ readonly name: "understanding";
11325
+ readonly type: "string";
11326
+ readonly enum: readonly ["auto", "skip"];
11327
+ readonly required: false;
11328
+ readonly description: "Understanding behavior for the produced asset; defaults to auto.";
11329
+ }, {
11330
+ readonly name: "idempotency_key";
11331
+ readonly type: "string";
11332
+ readonly required: false;
11333
+ readonly description: "Stable key so a retried request reuses the same job instead of editing and charging again; reusing it with different content is rejected.";
11334
+ }];
11335
+ };
11250
11336
  }, {
11251
11337
  readonly resource: "media.libraries.assets.frames";
11252
11338
  readonly method: "create";
@@ -11282,6 +11368,25 @@ export declare const operations: readonly [{
11282
11368
  readonly description: "Maximum JPEG width in pixels: 160 is a small thumbnail, 320 a preview and 640 a larger preview. Defaults to 640; larger widths are unavailable.";
11283
11369
  }];
11284
11370
  };
11371
+ }, {
11372
+ readonly resource: "media.assets";
11373
+ readonly method: "lineage";
11374
+ readonly summary: "Get asset lineage";
11375
+ readonly description: "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.";
11376
+ readonly http: "GET";
11377
+ readonly path: "/media/v1/libraries/{library_id}/assets/{asset_id}/lineage";
11378
+ readonly streaming: "no";
11379
+ readonly pagination: false;
11380
+ readonly pathParams: readonly [{
11381
+ readonly name: "library_id";
11382
+ readonly sdkName: "library_id";
11383
+ readonly description: "Library ID returned by creation.";
11384
+ }, {
11385
+ readonly name: "asset_id";
11386
+ readonly sdkName: "asset_id";
11387
+ readonly description: "32-character asset ID.";
11388
+ }];
11389
+ readonly query: readonly [];
11285
11390
  }, {
11286
11391
  readonly resource: "media.libraries.assets.reprocess";
11287
11392
  readonly method: "create";
@@ -11592,6 +11697,95 @@ export declare const operations: readonly [{
11592
11697
  readonly description: "Not supported in v1; omit this field. Only text-to-video is currently available.";
11593
11698
  }];
11594
11699
  };
11700
+ }, {
11701
+ readonly resource: "media.images";
11702
+ readonly method: "generate";
11703
+ readonly summary: "Generate image";
11704
+ readonly description: "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\"}.";
11705
+ readonly http: "POST";
11706
+ readonly path: "/media/v1/libraries/{library_id}/images/generations";
11707
+ readonly streaming: "no";
11708
+ readonly pagination: false;
11709
+ readonly pathParams: readonly [{
11710
+ readonly name: "library_id";
11711
+ readonly sdkName: "library_id";
11712
+ readonly description: "Library ID returned by creation.";
11713
+ }];
11714
+ readonly query: readonly [];
11715
+ readonly body: {
11716
+ readonly required: true;
11717
+ readonly fields: readonly [{
11718
+ readonly name: "prompt";
11719
+ readonly type: "string";
11720
+ readonly required: true;
11721
+ readonly description: "Text prompt describing the image to generate; Router forwards it to the image model unchanged.";
11722
+ }, {
11723
+ readonly name: "negative_prompt";
11724
+ readonly type: "string";
11725
+ readonly required: false;
11726
+ readonly description: "What the image must not contain. Models without a negative-prompt control ignore it.";
11727
+ }, {
11728
+ readonly name: "n";
11729
+ readonly type: "integer";
11730
+ readonly required: false;
11731
+ readonly description: "Images to generate in one job, from 1 to 10; defaults to 1. Each produced image is charged separately.";
11732
+ }, {
11733
+ readonly name: "size";
11734
+ readonly type: "string";
11735
+ readonly required: false;
11736
+ readonly description: "Requested pixel size written as width x height. Router validates it against the chosen model and rejects an unsupported size with INVALID_PARAMS.";
11737
+ }, {
11738
+ readonly name: "background";
11739
+ readonly type: "string";
11740
+ readonly enum: readonly ["transparent", "opaque", "auto"];
11741
+ readonly required: false;
11742
+ readonly description: "Background handling; defaults to auto. Whether transparency is honoured depends on the model.";
11743
+ }, {
11744
+ readonly name: "output_format";
11745
+ readonly type: "string";
11746
+ readonly enum: readonly ["png", "jpeg", "webp"];
11747
+ readonly required: false;
11748
+ readonly description: "Encoding of the stored image; defaults to png. Transparency requires png or webp.";
11749
+ }, {
11750
+ readonly name: "output";
11751
+ readonly type: "string";
11752
+ readonly enum: readonly ["image", "sticker"];
11753
+ readonly required: false;
11754
+ readonly description: "How the result is stored: image for a normal picture, or sticker for a cut-out committed with material_type sticker; defaults to image.";
11755
+ }, {
11756
+ readonly name: "references";
11757
+ readonly type: "array";
11758
+ readonly itemType: "object";
11759
+ readonly required: false;
11760
+ readonly description: "Existing assets the model may use, each with the role it plays. Router answers REFERENCE_TYPE_MISMATCH when the chosen model cannot honour a role.";
11761
+ }, {
11762
+ readonly name: "seed";
11763
+ readonly type: "integer";
11764
+ readonly required: false;
11765
+ readonly description: "Seed for reproducible sampling; omit it to let the model choose one.";
11766
+ }, {
11767
+ readonly name: "model";
11768
+ readonly type: "string";
11769
+ readonly required: false;
11770
+ readonly description: "Router model with image-generation capability; omit it to use the library default image model.";
11771
+ }, {
11772
+ readonly name: "asset_folder";
11773
+ readonly type: "string";
11774
+ readonly required: false;
11775
+ readonly description: "Folder the produced asset is filed under; defaults to the library root. New path segments containing U+FFFD or consisting only of question marks are rejected with INVALID_PARAMS; send UTF-8 names. Existing affected folders remain readable and assets can be moved out.";
11776
+ }, {
11777
+ readonly name: "understanding";
11778
+ readonly type: "string";
11779
+ readonly enum: readonly ["auto", "skip"];
11780
+ readonly required: false;
11781
+ readonly description: "Understanding behavior for the produced asset; defaults to auto.";
11782
+ }, {
11783
+ readonly name: "idempotency_key";
11784
+ readonly type: "string";
11785
+ readonly required: false;
11786
+ readonly description: "Stable key so a retried request reuses the same job instead of generating and charging again; reusing it with different content is rejected.";
11787
+ }];
11788
+ };
11595
11789
  }, {
11596
11790
  readonly resource: "media.libraries.jobs";
11597
11791
  readonly method: "list";
@@ -11609,7 +11803,7 @@ export declare const operations: readonly [{
11609
11803
  readonly query: readonly [{
11610
11804
  readonly name: "status";
11611
11805
  readonly type: "string";
11612
- readonly enum: readonly ["queued", "running", "completed", "completed_with_errors", "failed", "cancelled"];
11806
+ readonly enum: readonly ["queued", "in_progress", "running", "completed", "completed_with_errors", "failed", "cancelled", "canceled"];
11613
11807
  readonly required: false;
11614
11808
  readonly description: "Filter jobs by their current status.";
11615
11809
  }, {
@@ -11771,13 +11965,19 @@ export declare const operations: readonly [{
11771
11965
  readonly name: "top_k";
11772
11966
  readonly type: "integer";
11773
11967
  readonly required: false;
11774
- readonly description: "Maximum search hits, from 1 to 50; defaults to 20.";
11968
+ readonly description: "Maximum search hits, from 1 to 50; defaults to 20. top_k takes effect and bounds how many distinct hits come back, counting collapsed duplicates as one hit.";
11775
11969
  }, {
11776
11970
  readonly name: "mode";
11777
11971
  readonly type: "string";
11778
11972
  readonly enum: readonly ["hybrid", "semantic"];
11779
11973
  readonly required: false;
11780
11974
  readonly description: "Ranking mode: hybrid combines semantic and keyword matches; semantic uses vector similarity only. Defaults to hybrid.";
11975
+ }, {
11976
+ readonly name: "material_type";
11977
+ readonly type: "string";
11978
+ readonly enum: readonly ["image", "video", "audio", "voice", "sticker", "font", "text_style", "text_template", "animation_preset", "lut", "transition_map"];
11979
+ readonly required: false;
11980
+ readonly description: "What this asset is as a reusable material, as opposed to resource_type (its stored file category). Omitted on assets stored before this field existed and on raw assets that are not materials.";
11781
11981
  }];
11782
11982
  };
11783
11983
  }, {
@@ -11865,13 +12065,19 @@ export declare const operations: readonly [{
11865
12065
  readonly name: "top_k";
11866
12066
  readonly type: "integer";
11867
12067
  readonly required: false;
11868
- readonly description: "Maximum search hits, from 1 to 50; defaults to 20.";
12068
+ readonly description: "Maximum search hits, from 1 to 50; defaults to 20. top_k takes effect and bounds how many distinct hits come back, counting collapsed duplicates as one hit.";
11869
12069
  }, {
11870
12070
  readonly name: "mode";
11871
12071
  readonly type: "string";
11872
12072
  readonly enum: readonly ["hybrid", "semantic"];
11873
12073
  readonly required: false;
11874
12074
  readonly description: "Ranking mode: hybrid combines semantic and keyword matches; semantic uses vector similarity only. Defaults to hybrid.";
12075
+ }, {
12076
+ readonly name: "material_type";
12077
+ readonly type: "string";
12078
+ readonly enum: readonly ["image", "video", "audio", "voice", "sticker", "font", "text_style", "text_template", "animation_preset", "lut", "transition_map"];
12079
+ readonly required: false;
12080
+ readonly description: "What this asset is as a reusable material, as opposed to resource_type (its stored file category). Omitted on assets stored before this field existed and on raw assets that are not materials.";
11875
12081
  }];
11876
12082
  };
11877
12083
  }, {
@@ -13846,7 +14052,7 @@ export declare const operations: readonly [{
13846
14052
  readonly resource: "ontology.nodes";
13847
14053
  readonly method: "create";
13848
14054
  readonly summary: "Create node";
13849
- readonly description: "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.";
14055
+ readonly description: "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.";
13850
14056
  readonly http: "POST";
13851
14057
  readonly path: "/ontology/v1/nodes";
13852
14058
  readonly streaming: "no";
@@ -13973,6 +14179,47 @@ export declare const operations: readonly [{
13973
14179
  readonly description: "Node id that should survive, from nodes.list or search; the merged node's relations and aliases move to it.";
13974
14180
  }];
13975
14181
  };
14182
+ }, {
14183
+ readonly resource: "ontology.nodes";
14184
+ readonly method: "retrieveNeighborhood";
14185
+ readonly summary: "Retrieve neighborhood";
14186
+ readonly description: "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.";
14187
+ readonly http: "GET";
14188
+ readonly path: "/ontology/v1/nodes/{node_id}/neighborhood";
14189
+ readonly streaming: "no";
14190
+ readonly pagination: false;
14191
+ readonly pathParams: readonly [{
14192
+ readonly name: "node_id";
14193
+ readonly sdkName: "node_id";
14194
+ readonly description: "Node id returned by nodes.list, nodes.create or a changeset, in the form ond_ followed by 32 lowercase letters or digits; a name or an external record id is not accepted.";
14195
+ }];
14196
+ readonly query: readonly [{
14197
+ readonly name: "depth";
14198
+ readonly type: "integer";
14199
+ readonly required: false;
14200
+ readonly description: "How many hops from the given node to walk, 1 to 3; defaults to 1. A value outside that range is refused 400 rather than clamped, so the answer is never a smaller graph than the one asked for.";
14201
+ }, {
14202
+ readonly name: "limit";
14203
+ readonly type: "integer";
14204
+ readonly required: false;
14205
+ readonly description: "Maximum nodes to return, 1 to 500; defaults to 200. When the walk reaches this many nodes it stops and reports truncated true, so treat a truncated answer as a sample of the neighborhood rather than all of it. This bound is not the list routes' page size, and there is no cursor to resume from.";
14206
+ }, {
14207
+ readonly name: "direction";
14208
+ readonly type: "string";
14209
+ readonly enum: readonly ["out", "in", "both"];
14210
+ readonly required: false;
14211
+ readonly description: "Which way to follow relations from each node walked; out follows relations the node is the source of, in follows those it is the target of, both follows either. Defaults to both. Relations between two returned nodes are included whichever direction brought the second node in.";
14212
+ }, {
14213
+ readonly name: "as_of";
14214
+ readonly type: "string";
14215
+ readonly required: false;
14216
+ readonly description: "ISO 8601 timestamp; walk the graph as it was then — a node recorded later is absent and a relation invalidated since still counts. Omit to read current state.";
14217
+ }, {
14218
+ readonly name: "include_invalid";
14219
+ readonly type: "boolean";
14220
+ readonly required: false;
14221
+ readonly description: "Set true to walk relations whose invalid_at has passed, which is how a fact that stopped being true stays reachable. Omit or false to walk currently valid relations only.";
14222
+ }];
13976
14223
  }, {
13977
14224
  readonly resource: "ontology.relations";
13978
14225
  readonly method: "list";
@@ -14025,7 +14272,7 @@ export declare const operations: readonly [{
14025
14272
  readonly resource: "ontology.relations";
14026
14273
  readonly method: "create";
14027
14274
  readonly summary: "Create relation";
14028
- readonly description: "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.";
14275
+ readonly description: "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.";
14029
14276
  readonly http: "POST";
14030
14277
  readonly path: "/ontology/v1/relations";
14031
14278
  readonly streaming: "no";
@@ -14119,7 +14366,7 @@ export declare const operations: readonly [{
14119
14366
  readonly resource: "ontology.search";
14120
14367
  readonly method: "create";
14121
14368
  readonly summary: "Search nodes";
14122
- readonly description: "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.";
14369
+ readonly description: "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.";
14123
14370
  readonly http: "POST";
14124
14371
  readonly path: "/ontology/v1/search";
14125
14372
  readonly streaming: "no";
@@ -16146,7 +16393,7 @@ export declare const operations: readonly [{
16146
16393
  readonly body: {
16147
16394
  readonly required: true;
16148
16395
  readonly fields: readonly [{
16149
- readonly name: "updateMask";
16396
+ readonly name: "update_mask";
16150
16397
  readonly type: "array";
16151
16398
  readonly itemType: "string";
16152
16399
  readonly required: true;
@@ -16333,7 +16580,7 @@ export declare const operations: readonly [{
16333
16580
  readonly body: {
16334
16581
  readonly required: true;
16335
16582
  readonly fields: readonly [{
16336
- readonly name: "updateMask";
16583
+ readonly name: "update_mask";
16337
16584
  readonly type: "array";
16338
16585
  readonly itemType: "string";
16339
16586
  readonly required: true;
@@ -16580,7 +16827,7 @@ export declare const operations: readonly [{
16580
16827
  readonly body: {
16581
16828
  readonly required: true;
16582
16829
  readonly fields: readonly [{
16583
- readonly name: "updateMask";
16830
+ readonly name: "update_mask";
16584
16831
  readonly type: "array";
16585
16832
  readonly itemType: "string";
16586
16833
  readonly required: true;
@@ -16716,7 +16963,7 @@ export declare const operations: readonly [{
16716
16963
  readonly resource: "studio.themes";
16717
16964
  readonly method: "list";
16718
16965
  readonly summary: "List the rendition themes of a platform";
16719
- readonly description: "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.";
16966
+ readonly description: "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.";
16720
16967
  readonly http: "GET";
16721
16968
  readonly path: "/studio/v1/themes";
16722
16969
  readonly streaming: "no";
@@ -16841,7 +17088,7 @@ export declare const operations: readonly [{
16841
17088
  readonly body: {
16842
17089
  readonly required: true;
16843
17090
  readonly fields: readonly [{
16844
- readonly name: "updateMask";
17091
+ readonly name: "update_mask";
16845
17092
  readonly type: "array";
16846
17093
  readonly itemType: "string";
16847
17094
  readonly required: true;
@@ -16959,7 +17206,7 @@ export declare const operations: readonly [{
16959
17206
  readonly required: false;
16960
17207
  readonly description: "Caller-chosen key and value pairs kept on a resource; the keys are the caller's own names and no platform meaning is attached to them.";
16961
17208
  }, {
16962
- readonly name: "requestId";
17209
+ readonly name: "request_id";
16963
17210
  readonly type: "string";
16964
17211
  readonly required: false;
16965
17212
  readonly description: "Caller-chosen key that makes this create safe to repeat: the same value answers the first result instead of creating a second work.";
@@ -17015,13 +17262,13 @@ export declare const operations: readonly [{
17015
17262
  readonly body: {
17016
17263
  readonly required: true;
17017
17264
  readonly fields: readonly [{
17018
- readonly name: "updateMask";
17265
+ readonly name: "update_mask";
17019
17266
  readonly type: "array";
17020
17267
  readonly itemType: "string";
17021
17268
  readonly required: true;
17022
17269
  readonly description: "Field paths this call changes, spelled as they appear in the work, such as title or goal.message; a field left out keeps its value.";
17023
17270
  }, {
17024
- readonly name: "expectedRevision";
17271
+ readonly name: "expected_revision";
17025
17272
  readonly type: "integer";
17026
17273
  readonly required: false;
17027
17274
  readonly description: "Work revision the caller read; when the work moved past it the write is refused with REVISION_CONFLICT and nothing changes.";
@@ -17081,7 +17328,7 @@ export declare const operations: readonly [{
17081
17328
  readonly body: {
17082
17329
  readonly required: true;
17083
17330
  readonly fields: readonly [{
17084
- readonly name: "expectedRevision";
17331
+ readonly name: "expected_revision";
17085
17332
  readonly type: "integer";
17086
17333
  readonly required: false;
17087
17334
  readonly description: "Brief revision the caller read; a mismatch is refused with REVISION_CONFLICT rather than merged.";
@@ -17097,19 +17344,19 @@ export declare const operations: readonly [{
17097
17344
  readonly required: false;
17098
17345
  readonly description: "Source files to keep with the brief, added to the ones already attached.";
17099
17346
  }, {
17100
- readonly name: "addPoints";
17347
+ readonly name: "add_points";
17101
17348
  readonly type: "array";
17102
- readonly itemType: "string";
17349
+ readonly itemType: "object";
17103
17350
  readonly required: false;
17104
- readonly description: "New requirement points to split out of the brief; each receives the next free key in order.";
17351
+ readonly description: "New requirement points to split out of the brief; each receives the next free key in order. A plain string is a unit point; pass { text, scope: work } for a constraint on the whole piece (period, voice, point of view, cast, words to avoid).";
17105
17352
  }, {
17106
- readonly name: "editPoints";
17353
+ readonly name: "edit_points";
17107
17354
  readonly type: "array";
17108
17355
  readonly itemType: "object";
17109
17356
  readonly required: false;
17110
17357
  readonly description: "Existing points to reword, each naming the key it keeps and the text that replaces it.";
17111
17358
  }, {
17112
- readonly name: "removePoints";
17359
+ readonly name: "remove_points";
17113
17360
  readonly type: "array";
17114
17361
  readonly itemType: "string";
17115
17362
  readonly required: false;
@@ -17176,7 +17423,7 @@ export declare const operations: readonly [{
17176
17423
  readonly required: false;
17177
17424
  readonly description: "Unit tree to create the draft with, given by the caller instead of a template; children nest, and a unit without a kind takes the genre default for its position.";
17178
17425
  }, {
17179
- readonly name: "derivedFrom";
17426
+ readonly name: "derived_from";
17180
17427
  readonly type: "object";
17181
17428
  readonly required: false;
17182
17429
  readonly description: "What the new draft should be derived from, so the service can record the source revision for later staleness checks.";
@@ -17186,7 +17433,7 @@ export declare const operations: readonly [{
17186
17433
  readonly required: false;
17187
17434
  readonly description: "Initial values for the genre properties, keyed by property key; a value the genre does not define is refused rather than stored.";
17188
17435
  }, {
17189
- readonly name: "requestId";
17436
+ readonly name: "request_id";
17190
17437
  readonly type: "string";
17191
17438
  readonly required: false;
17192
17439
  readonly description: "Caller-chosen key that makes this create safe to repeat: the same value answers the first draft instead of creating a second one.";
@@ -17240,13 +17487,13 @@ export declare const operations: readonly [{
17240
17487
  readonly body: {
17241
17488
  readonly required: true;
17242
17489
  readonly fields: readonly [{
17243
- readonly name: "updateMask";
17490
+ readonly name: "update_mask";
17244
17491
  readonly type: "array";
17245
17492
  readonly itemType: "string";
17246
17493
  readonly required: true;
17247
17494
  readonly description: "Field paths this call changes, such as title, key or props.topics; a field left out keeps its value.";
17248
17495
  }, {
17249
- readonly name: "expectedRevision";
17496
+ readonly name: "expected_revision";
17250
17497
  readonly type: "integer";
17251
17498
  readonly required: false;
17252
17499
  readonly description: "Draft revision the caller read; a mismatch is refused with REVISION_CONFLICT and nothing changes. Omit it only for structure calls that genuinely do not depend on the current state.";
@@ -17322,6 +17569,54 @@ export declare const operations: readonly [{
17322
17569
  readonly description: "Draft being addressed, either its in-work key such as novel or its drf_ identifier; a key renamed earlier still resolves through its previous value.";
17323
17570
  }];
17324
17571
  readonly query: readonly [];
17572
+ }, {
17573
+ readonly resource: "studio.works.drafts.renditions";
17574
+ readonly method: "create";
17575
+ readonly summary: "Create a rendition of a draft for a platform";
17576
+ readonly description: "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.";
17577
+ readonly http: "POST";
17578
+ readonly path: "/studio/v1/works/{work}/drafts/{draft}/renditions";
17579
+ readonly streaming: "no";
17580
+ readonly pagination: false;
17581
+ readonly pathParams: readonly [{
17582
+ readonly name: "work";
17583
+ readonly sdkName: "work";
17584
+ readonly description: "The work being addressed, either its organization-unique slug or its wk_ identifier; a slug case is what a person would say, and a renamed slug still resolves through its old value.";
17585
+ }, {
17586
+ readonly name: "draft";
17587
+ readonly sdkName: "draft";
17588
+ readonly description: "Draft being addressed, either its in-work key such as novel or its drf_ identifier; a key renamed earlier still resolves through its previous value.";
17589
+ }];
17590
+ readonly query: readonly [];
17591
+ readonly body: {
17592
+ readonly required: true;
17593
+ readonly fields: readonly [{
17594
+ readonly name: "platform";
17595
+ readonly type: "string";
17596
+ readonly required: true;
17597
+ readonly description: "Versioned platform key from the platform list. Export platforms today are markdown@1, docx@1 and xiaohongshu@1; a platform that only publishes to an account answers PLATFORM_NOT_AVAILABLE.";
17598
+ }, {
17599
+ readonly name: "theme";
17600
+ readonly type: "string";
17601
+ readonly required: false;
17602
+ readonly description: "Theme to render with, a thm_ identifier or a built-in key from the theme list; omit it to use the platform default.";
17603
+ }, {
17604
+ readonly name: "settings";
17605
+ readonly type: "object";
17606
+ readonly required: false;
17607
+ readonly description: "Per-rendition settings; each platform reads only the settings that apply to it and ignores the rest.";
17608
+ }, {
17609
+ readonly name: "render";
17610
+ readonly type: "boolean";
17611
+ readonly required: false;
17612
+ readonly description: "Whether to render in the same call. True returns a rendition that is already rendered, invalid or failed; false or omitted returns it pending, to be rendered by the render operation.";
17613
+ }, {
17614
+ readonly name: "request_id";
17615
+ readonly type: "string";
17616
+ readonly required: false;
17617
+ readonly description: "Caller-chosen key that makes a repeated create return the first rendition instead of making another; use a new value for each distinct rendition.";
17618
+ }];
17619
+ };
17325
17620
  }, {
17326
17621
  readonly resource: "studio.works.drafts";
17327
17622
  readonly method: "retrieveReview";
@@ -17525,12 +17820,181 @@ export declare const operations: readonly [{
17525
17820
  readonly body: {
17526
17821
  readonly required: false;
17527
17822
  readonly fields: readonly [{
17528
- readonly name: "expectedRevision";
17823
+ readonly name: "expected_revision";
17529
17824
  readonly type: "integer";
17530
17825
  readonly required: false;
17531
17826
  readonly description: "Draft revision the caller read; a mismatch is refused rather than confirming a draft that changed under the caller.";
17532
17827
  }];
17533
17828
  };
17829
+ }, {
17830
+ readonly resource: "studio.works.renditions";
17831
+ readonly method: "list";
17832
+ readonly summary: "List the renditions of a work";
17833
+ readonly description: "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.";
17834
+ readonly http: "GET";
17835
+ readonly path: "/studio/v1/works/{work}/renditions";
17836
+ readonly streaming: "no";
17837
+ readonly pagination: false;
17838
+ readonly pathParams: readonly [{
17839
+ readonly name: "work";
17840
+ readonly sdkName: "work";
17841
+ readonly description: "The work being addressed, either its organization-unique slug or its wk_ identifier; a slug case is what a person would say, and a renamed slug still resolves through its old value.";
17842
+ }];
17843
+ readonly query: readonly [{
17844
+ readonly name: "draft";
17845
+ readonly type: "string";
17846
+ readonly required: false;
17847
+ readonly description: "Draft key such as novel or its drf_ identifier; when given, only the renditions of that draft are returned. Omit it to list the renditions of every draft in the work.";
17848
+ }, {
17849
+ readonly name: "page_size";
17850
+ readonly type: "integer";
17851
+ readonly required: false;
17852
+ readonly description: "How many items this page returns, 1 to 100; omitted uses the service default. Treat the answer as one page, not the whole set, and keep following next_page_token while it is present.";
17853
+ }, {
17854
+ readonly name: "page_token";
17855
+ readonly type: "string";
17856
+ readonly required: false;
17857
+ readonly description: "Cursor from the previous answer's next_page_token; it is opaque, so pass it back unchanged and never build one from an id or an offset.";
17858
+ }];
17859
+ }, {
17860
+ readonly resource: "studio.works.renditions";
17861
+ readonly method: "delete";
17862
+ readonly summary: "Delete a rendition";
17863
+ readonly description: "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.";
17864
+ readonly http: "DELETE";
17865
+ readonly path: "/studio/v1/works/{work}/renditions/{rendition}";
17866
+ readonly streaming: "no";
17867
+ readonly pagination: false;
17868
+ readonly pathParams: readonly [{
17869
+ readonly name: "work";
17870
+ readonly sdkName: "work";
17871
+ readonly description: "The work being addressed, either its organization-unique slug or its wk_ identifier; a slug case is what a person would say, and a renamed slug still resolves through its old value.";
17872
+ }, {
17873
+ readonly name: "rendition";
17874
+ readonly sdkName: "rendition";
17875
+ readonly description: "Rendition being addressed, by its rnd_ identifier from the rendition list or from the create answer.";
17876
+ }];
17877
+ readonly query: readonly [];
17878
+ }, {
17879
+ readonly resource: "studio.works.renditions";
17880
+ readonly method: "retrieve";
17881
+ readonly summary: "Read one rendition";
17882
+ readonly description: "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.";
17883
+ readonly http: "GET";
17884
+ readonly path: "/studio/v1/works/{work}/renditions/{rendition}";
17885
+ readonly streaming: "no";
17886
+ readonly pagination: false;
17887
+ readonly pathParams: readonly [{
17888
+ readonly name: "work";
17889
+ readonly sdkName: "work";
17890
+ readonly description: "The work being addressed, either its organization-unique slug or its wk_ identifier; a slug case is what a person would say, and a renamed slug still resolves through its old value.";
17891
+ }, {
17892
+ readonly name: "rendition";
17893
+ readonly sdkName: "rendition";
17894
+ readonly description: "Rendition being addressed, by its rnd_ identifier from the rendition list or from the create answer.";
17895
+ }];
17896
+ readonly query: readonly [];
17897
+ }, {
17898
+ readonly resource: "studio.works.renditions";
17899
+ readonly method: "update";
17900
+ readonly summary: "Change the theme or settings of a rendition";
17901
+ readonly description: "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.";
17902
+ readonly http: "PATCH";
17903
+ readonly path: "/studio/v1/works/{work}/renditions/{rendition}";
17904
+ readonly streaming: "no";
17905
+ readonly pagination: false;
17906
+ readonly pathParams: readonly [{
17907
+ readonly name: "work";
17908
+ readonly sdkName: "work";
17909
+ readonly description: "The work being addressed, either its organization-unique slug or its wk_ identifier; a slug case is what a person would say, and a renamed slug still resolves through its old value.";
17910
+ }, {
17911
+ readonly name: "rendition";
17912
+ readonly sdkName: "rendition";
17913
+ readonly description: "Rendition being addressed, by its rnd_ identifier from the rendition list or from the create answer.";
17914
+ }];
17915
+ readonly query: readonly [];
17916
+ readonly body: {
17917
+ readonly required: true;
17918
+ readonly fields: readonly [{
17919
+ readonly name: "update_mask";
17920
+ readonly type: "array";
17921
+ readonly itemType: "string";
17922
+ readonly required: true;
17923
+ readonly description: "Field paths this call changes: theme, settings or both; a field left out keeps its value.";
17924
+ }, {
17925
+ readonly name: "theme";
17926
+ readonly type: "string";
17927
+ readonly required: false;
17928
+ readonly description: "New theme, a thm_ identifier or a built-in key, used when theme is named in the update mask; render again to apply it.";
17929
+ }, {
17930
+ readonly name: "settings";
17931
+ readonly type: "object";
17932
+ readonly required: false;
17933
+ readonly description: "Per-rendition settings; each platform reads only the settings that apply to it and ignores the rest.";
17934
+ }];
17935
+ };
17936
+ }, {
17937
+ readonly resource: "studio.works.renditions";
17938
+ readonly method: "retrieveContent";
17939
+ readonly summary: "Get a download URL for a rendition file";
17940
+ readonly description: "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.";
17941
+ readonly http: "GET";
17942
+ readonly path: "/studio/v1/works/{work}/renditions/{rendition}/content";
17943
+ readonly streaming: "no";
17944
+ readonly pagination: false;
17945
+ readonly pathParams: readonly [{
17946
+ readonly name: "work";
17947
+ readonly sdkName: "work";
17948
+ readonly description: "The work being addressed, either its organization-unique slug or its wk_ identifier; a slug case is what a person would say, and a renamed slug still resolves through its old value.";
17949
+ }, {
17950
+ readonly name: "rendition";
17951
+ readonly sdkName: "rendition";
17952
+ readonly description: "Rendition being addressed, by its rnd_ identifier from the rendition list or from the create answer.";
17953
+ }];
17954
+ readonly query: readonly [{
17955
+ readonly name: "part";
17956
+ readonly type: "integer";
17957
+ readonly required: false;
17958
+ readonly description: "Index of the part to download, the index value of an entry in the rendition's parts list; omit it to get the rendition's own first file.";
17959
+ }];
17960
+ }, {
17961
+ readonly resource: "studio.works.renditions";
17962
+ readonly method: "publish";
17963
+ readonly summary: "Export a rendition";
17964
+ readonly description: "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.";
17965
+ readonly http: "POST";
17966
+ readonly path: "/studio/v1/works/{work}/renditions/{rendition}:publish";
17967
+ readonly streaming: "no";
17968
+ readonly pagination: false;
17969
+ readonly pathParams: readonly [{
17970
+ readonly name: "work";
17971
+ readonly sdkName: "work";
17972
+ readonly description: "The work being addressed, either its organization-unique slug or its wk_ identifier; a slug case is what a person would say, and a renamed slug still resolves through its old value.";
17973
+ }, {
17974
+ readonly name: "rendition";
17975
+ readonly sdkName: "rendition";
17976
+ readonly description: "Rendition being addressed, by its rnd_ identifier from the rendition list or from the create answer.";
17977
+ }];
17978
+ readonly query: readonly [];
17979
+ }, {
17980
+ readonly resource: "studio.works.renditions";
17981
+ readonly method: "render";
17982
+ readonly summary: "Render a rendition again from the current draft";
17983
+ readonly description: "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.";
17984
+ readonly http: "POST";
17985
+ readonly path: "/studio/v1/works/{work}/renditions/{rendition}:render";
17986
+ readonly streaming: "no";
17987
+ readonly pagination: false;
17988
+ readonly pathParams: readonly [{
17989
+ readonly name: "work";
17990
+ readonly sdkName: "work";
17991
+ readonly description: "The work being addressed, either its organization-unique slug or its wk_ identifier; a slug case is what a person would say, and a renamed slug still resolves through its old value.";
17992
+ }, {
17993
+ readonly name: "rendition";
17994
+ readonly sdkName: "rendition";
17995
+ readonly description: "Rendition being addressed, by its rnd_ identifier from the rendition list or from the create answer.";
17996
+ }];
17997
+ readonly query: readonly [];
17534
17998
  }, {
17535
17999
  readonly resource: "studio.works.units";
17536
18000
  readonly method: "retrieve";