@deepraxis/sdk 0.1.1-dev.d412c99 → 0.1.1-dev.d73d5e4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/METHODS.md +125 -1
- package/dist/generated/index.d.ts +2 -2
- package/dist/generated/index.js +1 -1
- package/dist/generated/sdk.gen.d.ts +319 -6
- package/dist/generated/sdk.gen.js +1026 -5
- package/dist/generated/types.gen.d.ts +24129 -18995
- package/dist/helpers/browser-actions.d.ts +84 -0
- package/dist/helpers/browser-actions.js +141 -0
- package/dist/helpers/browser-connect.d.ts +26 -2
- package/dist/helpers/browser-connect.js +262 -25
- package/dist/helpers/browser-decisions.d.ts +44 -0
- package/dist/helpers/browser-decisions.js +53 -0
- package/dist/helpers/browser-documentation.d.ts +1 -1
- package/dist/helpers/browser-documentation.js +20 -11
- package/dist/operations.generated.d.ts +1741 -5
- package/dist/operations.generated.js +2148 -4
- package/dist/resources.generated.d.ts +114 -0
- package/dist/resources.generated.js +85 -0
- package/package.json +1 -1
|
@@ -7001,13 +7001,19 @@ export const operations = [
|
|
|
7001
7001
|
"resource": "browser.contexts",
|
|
7002
7002
|
"method": "list",
|
|
7003
7003
|
"summary": "列出浏览器上下文",
|
|
7004
|
-
"description": "分页列出当前账户保存的登录态,按登录态 ID 升序排列。每项返回名称、标签及保存内容的统计信息;将 nextCursor 原样传入读取下一页,直到其为 null
|
|
7004
|
+
"description": "分页列出当前账户保存的登录态,按登录态 ID 升序排列。每项返回名称、标签及保存内容的统计信息;将 nextCursor 原样传入读取下一页,直到其为 null。传 name 时只返回该名称的登录态;名称在当前账户内唯一,所以最多一条。",
|
|
7005
7005
|
"http": "GET",
|
|
7006
7006
|
"path": "/browser/v1/contexts",
|
|
7007
7007
|
"streaming": "no",
|
|
7008
7008
|
"pagination": false,
|
|
7009
7009
|
"pathParams": [],
|
|
7010
7010
|
"query": [
|
|
7011
|
+
{
|
|
7012
|
+
"name": "name",
|
|
7013
|
+
"type": "string",
|
|
7014
|
+
"required": false,
|
|
7015
|
+
"description": "按登录态名称精确匹配;名称在当前账户内唯一,所以最多返回一条。省略时列出全部登录态。"
|
|
7016
|
+
},
|
|
7011
7017
|
{
|
|
7012
7018
|
"name": "cursor",
|
|
7013
7019
|
"type": "string",
|
|
@@ -7360,6 +7366,28 @@ export const operations = [
|
|
|
7360
7366
|
]
|
|
7361
7367
|
}
|
|
7362
7368
|
},
|
|
7369
|
+
{
|
|
7370
|
+
"resource": "browser.sessions.actions",
|
|
7371
|
+
"method": "create",
|
|
7372
|
+
"summary": "执行页面动作",
|
|
7373
|
+
"description": "在会话的浏览器里执行一个页面动作并返回结果,由浏览器服务执行,客户端不需要 Playwright。同一会话的动作按到达顺序串行执行,单个动作 30 秒内完成。先用 snapshot 读取页面:元素带 [ref=eN],click、fill 按 ref 操作;ref 只在最近一次快照里有效,页面跳转后失效(409 ACTION_REF_STALE,重新 snapshot)。省略 tab 时作用于当前标签页。",
|
|
7374
|
+
"http": "POST",
|
|
7375
|
+
"path": "/browser/v1/sessions/{sessionId}/actions",
|
|
7376
|
+
"streaming": "no",
|
|
7377
|
+
"pagination": false,
|
|
7378
|
+
"pathParams": [
|
|
7379
|
+
{
|
|
7380
|
+
"name": "sessionId",
|
|
7381
|
+
"sdkName": "sessionId",
|
|
7382
|
+
"description": "浏览器会话 ID;使用创建或列出会话返回的 id,以 bss_ 开头。"
|
|
7383
|
+
}
|
|
7384
|
+
],
|
|
7385
|
+
"query": [],
|
|
7386
|
+
"body": {
|
|
7387
|
+
"required": true,
|
|
7388
|
+
"fields": []
|
|
7389
|
+
}
|
|
7390
|
+
},
|
|
7363
7391
|
{
|
|
7364
7392
|
"resource": "browser.sessions",
|
|
7365
7393
|
"method": "retrieveDebug",
|
|
@@ -9856,7 +9884,7 @@ export const operations = [
|
|
|
9856
9884
|
"resource": "cut.projects.analysis",
|
|
9857
9885
|
"method": "create",
|
|
9858
9886
|
"summary": "Analyze project media or measure the project mix",
|
|
9859
|
-
"description": "Request silence, filler-word or
|
|
9887
|
+
"description": "Request silence, filler-word, scene or beat analysis for selected bound assets before editing, or measure the mix the timeline itself renders with kind mix. That kind is a render job, not a read: it answers pending with retry_after_sec and an id. Poll by calling this same method again with body { kinds: [\"mix\"], id } (there is no separate retrieve method); that call reads the measurement and renders nothing. The answer only exists once the audio has been rendered and measured. Omit media to select project sources; ranges returned in segments use source seconds. A pending result is not completion: use retry_after_sec before checking again, and inspect failed or unsupported asset results before deciding which edits are possible. Silence measures transcript-based speech pauses, not music or loudness. A completed transcript without words returns ready with empty segments and reason no_speech; no completed transcript returns unsupported with reason no_transcript. A failed transcription remains failed. kind mix is separate: it reports the project mix loudness, the loudness of each role and where music masks speech, so an editor can fix the mix rather than guess at it.",
|
|
9860
9888
|
"http": "POST",
|
|
9861
9889
|
"path": "/cut/v1/projects/{project_id}/analysis",
|
|
9862
9890
|
"streaming": "no",
|
|
@@ -9887,10 +9915,11 @@ export const operations = [
|
|
|
9887
9915
|
"silence",
|
|
9888
9916
|
"filler",
|
|
9889
9917
|
"scenes",
|
|
9918
|
+
"beats",
|
|
9890
9919
|
"mix"
|
|
9891
9920
|
],
|
|
9892
9921
|
"required": true,
|
|
9893
|
-
"description": "Analysis types to request. silence, filler and
|
|
9922
|
+
"description": "Analysis types to request. silence, filler, scenes and beats analyze the selected source assets and are read from the media library; mix measures the project's own rendered mix and is requested on its own."
|
|
9894
9923
|
},
|
|
9895
9924
|
{
|
|
9896
9925
|
"name": "from",
|
|
@@ -10367,7 +10396,7 @@ export const operations = [
|
|
|
10367
10396
|
"resource": "cut.projects",
|
|
10368
10397
|
"method": "execute",
|
|
10369
10398
|
"summary": "Execute editing script",
|
|
10370
|
-
"description": "Edit the current timeline atomically using synchronous JavaScript source. Read state or timeline first, then pass its revision as expected_revision to detect concurrent changes. Unlike Shotstack, execute applies script edits to a persistent project in one transaction. Provide script or a saved edit_id with literal edits, never both; failures roll back writes. A revision conflict while preparing the response may follow a committed edit: retrieve state before retrying. Minimal script after creating a project: `const t = AddTrack(\"video\"); Insert(t, {type: \"color\", color: \"#123456\", start: 0, length: 3}); Print(t);`\n\n<!-- cut-reference:start -->\n### Script function, field and error reference\n\nEvery script function, clip field and error code has its own section, read one at a time:\n\n```\ncodemode.describe(\"praxis.cut.script.<Name>\") // one function: signature, arguments, return, errors, example\ncodemode.describe(\"praxis.cut.fields.<name>\") // one field: type, unit, range, default, where writable\ncodemode.describe(\"praxis.cut.errors.<CODE>\") // one code: meaning, causes, fix\ncodemode.describe(\"praxis.cut.script\") // names, one page at a time\n```\n\nPublished at https://docs.deepraxis.com/docs/developers/cut/script-reference with one anchor per entry. Names below omit the `praxis.cut.<kind>.` prefix.\n\n#### Script functions (script)\n\n- `GetTimeline` — Duration, tracks, joins; clips are under `items`.\n- `GetItem` — One clip's compact view, by id.\n- `FindItems` — Visit every clip with its track; collect results.\n- `GetMedia` — Media metadata; `
|
|
10399
|
+
"description": "Edit the current timeline atomically using synchronous JavaScript source. Read state or timeline first, then pass its revision as expected_revision to detect concurrent changes. Unlike Shotstack, execute applies script edits to a persistent project in one transaction. Provide script or a saved edit_id with literal edits, never both; failures roll back writes. A revision conflict while preparing the response may follow a committed edit: retrieve state before retrying. Minimal script after creating a project: `const t = AddTrack(\"video\"); Insert(t, {type: \"color\", color: \"#123456\", start: 0, length: 3}); Print(t);`\n\n<!-- cut-reference:start -->\n### Script function, field and error reference\n\nEvery script function, clip field and error code has its own section, read one at a time:\n\n```\ncodemode.describe(\"praxis.cut.script.<Name>\") // one function: signature, arguments, return, errors, example\ncodemode.describe(\"praxis.cut.fields.<name>\") // one field: type, unit, range, default, where writable\ncodemode.describe(\"praxis.cut.errors.<CODE>\") // one code: meaning, causes, fix\ncodemode.describe(\"praxis.cut.script\") // names, one page at a time\n```\n\nPublished at https://docs.deepraxis.com/docs/developers/cut/script-reference with one anchor per entry. Names below omit the `praxis.cut.<kind>.` prefix.\n\n#### Script functions (script)\n\n- `GetTimeline` — Duration, tracks, joins; clips are under `items`.\n- `GetItem` — One clip's compact view, by id.\n- `FindItems` — Visit every clip with its track; collect results.\n- `GetMedia` — Media metadata; `duration` is seconds.\n- `GetTranscript` — Transcript words in source microseconds.\n- `GetAnalysis` — Silence, filler, scene or beat segments.\n- `ListTransitions` — Join transition kinds and parameters.\n- `ListEffects` — Visual-effect catalog and parameters.\n- `ListAnimations` — Animation presets by phase and target.\n- `ListFonts` — Font families, weights and scripts.\n- `ListTextStyles` — Text style presets for `style.preset`.\n- `ListTextTemplates` — Multi-layer templates and their slots.\n- `Insert` — Add a clip; a track never overlaps itself.\n- `Append` — Add a clip at the end of a track.\n- `Update` — Change named fields; the rest stay.\n- `SetSpeed` — Change rate, keeping source or duration.\n- `Delete` — Remove a clip. There is no `Remove`.\n- `Join` — Overlap clips; followers shift, track shortens.\n- `UpdateJoin` — Change a join's length or effect.\n- `DeleteJoin` — Remove a join; restore the butt cut.\n- `Split` — Cut a clip in two at a time.\n- `Trim` — Move one clip edge by seconds.\n- `Move` — Set a clip's start or track.\n- `RippleDeleteRange` — Cut a time range and close the gap.\n- `AddTrack` — Add a video, audio or caption track.\n- `UpdateTrack` — Change a track's name, lock, gain or role.\n- `DeleteTrack` — Remove a track and its clips.\n- `SetSettings` — Change canvas, frame rate or background.\n- `AddCaptionsFromTranscript` — Captions from a clip's kept words.\n- `InsertTemplate` — Insert a template and fill its slots.\n- `AlignCaptions` — Rebuild captions from text punctuation.\n- `ImportCaptions` — Import SRT or WebVTT onto captions.\n- `ExportCaptions` — Export captions as SRT or WebVTT.\n- `SetMarker` — Label a timeline position.\n- `Print` — Append values to the result's `prints`.\n- `Preview` — Up to 8 frames as inline PNG data URLs.\n\n#### Fields (fields)\n\n- `type` — Clip kind; decides which fields apply.\n- `start` — Clip start in seconds; snaps to frames.\n- `length` — Duration; video and audio may omit it or write \"auto\".\n- `media` — Source `{ libraryId, assetId }`.\n- `sourceIn` — First source second kept; default 0.\n- `sourceOut` — Exclusive source end; read-only.\n- `text` — Text of a text or caption clip.\n- `color` — Solid colour of a color clip.\n- `shape` — Shape clip kind: `rect` or `ellipse`.\n- `width` — Shape width, a fraction of canvas width.\n- `height` — Shape height, a fraction of canvas height.\n- `radius` — Rect corner rounding, in 1080-height px.\n- `fill` — Shape or text paint: colour or gradient.\n- `stroke` — Shape outline: colour and width.\n- `transform` — Position, scale, rotation, opacity, crop, blur.\n- `fit` — contain, cover, fill or none.\n- `blend` — Layer blend mode; null clears.\n- `style` — Text styling: font, fill, strokes, glow, position.\n- `style.position` — top, middle or bottom; omit it, never null.\n- `playback` — Rate, direction, audio policy, or freeze.\n- `volumeDb` — Audio level in dB; 0 is source level.\n- `gain` — Keyframed audio level in dB.\n- `fadeIn` — Fade-in seconds at the clip's start.\n- `fadeOut` — Fade-out seconds at the clip's end.\n- `duck` — Lower this clip while another track plays.\n- `animate` — Transform keyframes; `at` is clip-relative seconds.\n- `reveal` — Per-character, word or line reveal timing.\n- `animation` — Preset slots `{ in, out, loop }`; null clears.\n- `effects` — Effect stack, at most 8; null clears.\n- `transitionIn` — Entrance effect: kind plus seconds.\n- `transitionOut` — Exit effect: kind plus seconds.\n- `mask` — Shape, path or track matte.\n- `words` — Caption words with clip-local times.\n\n#### Error codes (errors)\n\n- `JOIN_CONFLICT` — A join is invalid or blocks this edit.\n- `INVALID_TRANSITION` — Bad transition kind, parameter or length.\n- `INVALID_STYLE` — A style value is out of range.\n- `INVALID_MASK` — A mask definition is malformed.\n- `MASK_IN_USE` — The edit would break a live mask.\n- `TOO_MANY_MASKS` — At most 16 masks per project.\n- `RATE_OUT_OF_RANGE` — A rate is outside 0.25-4.\n- `UNSUPPORTED_PLAYBACK` — Reverse without an explicit mute.\n- `INVALID_PLAYBACK` — A playback object is partial or malformed.\n- `UNKNOWN_FONT` — The family is not in `ListFonts()`.\n- `UNKNOWN_FIELD` — The field name is not accepted here.\n- `UNKNOWN_TEXT_STYLE` — `style.preset` is not in the catalog.\n- `TEXT_STYLE_TARGET_MISMATCH` — Preset on the wrong clip type.\n- `CAPTION_ALIGN_LOW_CONFIDENCE` — Alignment confidence too low; nothing changed.\n- `OVERLAP` — Two clips on one track would share time.\n- `OUT_OF_SOURCE` — The clip would read past its source.\n- `LOCKED_TRACK` — The edit targets a locked track.\n- `UNBOUND_LIBRARY` — The library is not bound to the project.\n- `TRACK_KIND_MISMATCH` — The clip type does not fit the track.\n- `NOT_FOUND` — The named id is not in this project.\n- `TOO_SHORT` — The result would be under one frame.\n- `INVALID_DUCK` — Bad `duck` level or a missing track.\n- `UNKNOWN_ANIMATION` — The preset is not in `ListAnimations()`.\n- `INVALID_ANIMATION_PARAM` — Bad slot, parameter or keyframe limit.\n- `ANIMATION_TOO_LONG` — In plus out exceed the clip length.\n- `ANIMATION_TARGET_MISMATCH` — The preset does not match the clip type.\n- `ANIMATION_PHASE_MISMATCH` — The preset is in the wrong slot.\n- `UNKNOWN_EFFECT` — The effect is not in `ListEffects()`.\n- `INVALID_EFFECT_PARAM` — Bad effect parameter or keyframe.\n- `TOO_MANY_EFFECTS` — More than 8 effects on one clip.\n- `PROJECT_NOT_FOUND` — No visible project has this id.\n- `EXPORT_NOT_FOUND` — No such export in this project.\n- `DRAFT_RENDER_NOT_FOUND` — No such draft render.\n- `VERSION_NOT_FOUND` — No saved version has this revision.\n- `LIBRARY_NOT_FOUND` — The library is missing or invisible.\n- `BINDING_INVALID` — The binding request is malformed.\n- `BINDING_IN_USE` — Clips still use this library's assets.\n- `NOTHING_TO_UNDO` — No earlier revision to return to.\n- `NOTHING_TO_REDO` — No undone revision is waiting.\n- `UNDO_CONFLICT` — The revision to undo is no longer head.\n- `REVISION_CONFLICT` — The project moved; your revision is stale.\n- `CUT_BUSY` — The project is busy; retry.\n- `INVALID_CAPTION_FILE` — The subtitle file is malformed or too big.\n- `SCRIPT_ERROR` — The script threw or did not parse.\n- `SCRIPT_LIMIT` — An execute budget was exceeded.\n- `OPS_REJECTED` — An op failed; the whole edit rolled back.\n- `EDIT_EXPIRED` — The saved edit id is over ten minutes old.\n- `MEDIA_NOT_FOUND` — The asset id is not in that library.\n- `MEDIA_OFFLINE` — The asset cannot be fetched right now.\n- `MEDIA_UNAVAILABLE` — The asset is not usable for rendering.\n- `MEDIA_IMPORT_FAILED` — Importing media failed.\n- `FRAME_OUT_OF_RANGE` — The preview time is outside the project.\n- `PROJECT_TOO_LARGE` — The project exceeds the size limit.\n- `RESPONSE_TOO_LARGE` — The response would exceed its budget.\n- `EXPORT_FAILED` — The render failed; read `error.cause`.\n- `INVALID_PARAMS` — The request is malformed.\n- `PERMISSION_DENIED` — This credential may not do that here.\n- `NOT_IMPLEMENTED` — Not available on this platform yet.\n- `INTERNAL` — Unexpected failure; retry with the request id.\n<!-- cut-reference:end -->\n",
|
|
10371
10400
|
"http": "POST",
|
|
10372
10401
|
"path": "/cut/v1/projects/{project_id}:execute",
|
|
10373
10402
|
"streaming": "no",
|
|
@@ -20059,6 +20088,2121 @@ export const operations = [
|
|
|
20059
20088
|
]
|
|
20060
20089
|
}
|
|
20061
20090
|
},
|
|
20091
|
+
{
|
|
20092
|
+
"resource": "studio.codexes",
|
|
20093
|
+
"method": "list",
|
|
20094
|
+
"summary": "List the reference libraries of this organization",
|
|
20095
|
+
"description": "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.",
|
|
20096
|
+
"http": "GET",
|
|
20097
|
+
"path": "/studio/v1/codexes",
|
|
20098
|
+
"streaming": "no",
|
|
20099
|
+
"pagination": false,
|
|
20100
|
+
"pathParams": [],
|
|
20101
|
+
"query": [
|
|
20102
|
+
{
|
|
20103
|
+
"name": "page_size",
|
|
20104
|
+
"type": "integer",
|
|
20105
|
+
"required": false,
|
|
20106
|
+
"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."
|
|
20107
|
+
},
|
|
20108
|
+
{
|
|
20109
|
+
"name": "page_token",
|
|
20110
|
+
"type": "string",
|
|
20111
|
+
"required": false,
|
|
20112
|
+
"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."
|
|
20113
|
+
}
|
|
20114
|
+
]
|
|
20115
|
+
},
|
|
20116
|
+
{
|
|
20117
|
+
"resource": "studio.codexes",
|
|
20118
|
+
"method": "create",
|
|
20119
|
+
"summary": "Create a reference library",
|
|
20120
|
+
"description": "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.",
|
|
20121
|
+
"http": "POST",
|
|
20122
|
+
"path": "/studio/v1/codexes",
|
|
20123
|
+
"streaming": "no",
|
|
20124
|
+
"pagination": false,
|
|
20125
|
+
"pathParams": [],
|
|
20126
|
+
"query": [],
|
|
20127
|
+
"body": {
|
|
20128
|
+
"required": true,
|
|
20129
|
+
"fields": [
|
|
20130
|
+
{
|
|
20131
|
+
"name": "name",
|
|
20132
|
+
"type": "string",
|
|
20133
|
+
"required": true,
|
|
20134
|
+
"description": "Name of the new library, written so a person can tell it apart from the organization's other libraries."
|
|
20135
|
+
},
|
|
20136
|
+
{
|
|
20137
|
+
"name": "description",
|
|
20138
|
+
"type": "string",
|
|
20139
|
+
"required": false,
|
|
20140
|
+
"description": "What this library is for; it is shown wherever the library is chosen and reaches nobody's context pack by itself."
|
|
20141
|
+
},
|
|
20142
|
+
{
|
|
20143
|
+
"name": "labels",
|
|
20144
|
+
"type": "object",
|
|
20145
|
+
"required": false,
|
|
20146
|
+
"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."
|
|
20147
|
+
}
|
|
20148
|
+
]
|
|
20149
|
+
}
|
|
20150
|
+
},
|
|
20151
|
+
{
|
|
20152
|
+
"resource": "studio.codexes",
|
|
20153
|
+
"method": "delete",
|
|
20154
|
+
"summary": "Delete a reference library",
|
|
20155
|
+
"description": "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.",
|
|
20156
|
+
"http": "DELETE",
|
|
20157
|
+
"path": "/studio/v1/codexes/{codex}",
|
|
20158
|
+
"streaming": "no",
|
|
20159
|
+
"pagination": false,
|
|
20160
|
+
"pathParams": [
|
|
20161
|
+
{
|
|
20162
|
+
"name": "codex",
|
|
20163
|
+
"sdkName": "codex",
|
|
20164
|
+
"description": "Reference library being addressed, given by its cdx_ identifier; a library has no name-based address, so read the library list first when only the name is known."
|
|
20165
|
+
}
|
|
20166
|
+
],
|
|
20167
|
+
"query": []
|
|
20168
|
+
},
|
|
20169
|
+
{
|
|
20170
|
+
"resource": "studio.codexes",
|
|
20171
|
+
"method": "retrieve",
|
|
20172
|
+
"summary": "Read one reference library",
|
|
20173
|
+
"description": "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.",
|
|
20174
|
+
"http": "GET",
|
|
20175
|
+
"path": "/studio/v1/codexes/{codex}",
|
|
20176
|
+
"streaming": "no",
|
|
20177
|
+
"pagination": false,
|
|
20178
|
+
"pathParams": [
|
|
20179
|
+
{
|
|
20180
|
+
"name": "codex",
|
|
20181
|
+
"sdkName": "codex",
|
|
20182
|
+
"description": "Reference library being addressed, given by its cdx_ identifier; a library has no name-based address, so read the library list first when only the name is known."
|
|
20183
|
+
}
|
|
20184
|
+
],
|
|
20185
|
+
"query": []
|
|
20186
|
+
},
|
|
20187
|
+
{
|
|
20188
|
+
"resource": "studio.codexes",
|
|
20189
|
+
"method": "update",
|
|
20190
|
+
"summary": "Rename a reference library or change its description",
|
|
20191
|
+
"description": "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.",
|
|
20192
|
+
"http": "PATCH",
|
|
20193
|
+
"path": "/studio/v1/codexes/{codex}",
|
|
20194
|
+
"streaming": "no",
|
|
20195
|
+
"pagination": false,
|
|
20196
|
+
"pathParams": [
|
|
20197
|
+
{
|
|
20198
|
+
"name": "codex",
|
|
20199
|
+
"sdkName": "codex",
|
|
20200
|
+
"description": "Reference library being addressed, given by its cdx_ identifier; a library has no name-based address, so read the library list first when only the name is known."
|
|
20201
|
+
}
|
|
20202
|
+
],
|
|
20203
|
+
"query": [],
|
|
20204
|
+
"body": {
|
|
20205
|
+
"required": true,
|
|
20206
|
+
"fields": [
|
|
20207
|
+
{
|
|
20208
|
+
"name": "updateMask",
|
|
20209
|
+
"type": "array",
|
|
20210
|
+
"itemType": "string",
|
|
20211
|
+
"required": true,
|
|
20212
|
+
"description": "Field paths this call changes, such as name, description or labels; a field left out keeps its value."
|
|
20213
|
+
},
|
|
20214
|
+
{
|
|
20215
|
+
"name": "name",
|
|
20216
|
+
"type": "string",
|
|
20217
|
+
"required": false,
|
|
20218
|
+
"description": "New name of the library, replacing the previous one when name is named in the update mask."
|
|
20219
|
+
},
|
|
20220
|
+
{
|
|
20221
|
+
"name": "description",
|
|
20222
|
+
"type": "string",
|
|
20223
|
+
"required": false,
|
|
20224
|
+
"description": "New description of what the library is for; it replaces the previous description rather than appending to it."
|
|
20225
|
+
},
|
|
20226
|
+
{
|
|
20227
|
+
"name": "labels",
|
|
20228
|
+
"type": "object",
|
|
20229
|
+
"required": false,
|
|
20230
|
+
"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."
|
|
20231
|
+
}
|
|
20232
|
+
]
|
|
20233
|
+
}
|
|
20234
|
+
},
|
|
20235
|
+
{
|
|
20236
|
+
"resource": "studio.codexes.entries",
|
|
20237
|
+
"method": "list",
|
|
20238
|
+
"summary": "List the entries of a reference library",
|
|
20239
|
+
"description": "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.",
|
|
20240
|
+
"http": "GET",
|
|
20241
|
+
"path": "/studio/v1/codexes/{codex}/entries",
|
|
20242
|
+
"streaming": "no",
|
|
20243
|
+
"pagination": false,
|
|
20244
|
+
"pathParams": [
|
|
20245
|
+
{
|
|
20246
|
+
"name": "codex",
|
|
20247
|
+
"sdkName": "codex",
|
|
20248
|
+
"description": "Reference library being addressed, given by its cdx_ identifier; a library has no name-based address, so read the library list first when only the name is known."
|
|
20249
|
+
}
|
|
20250
|
+
],
|
|
20251
|
+
"query": [
|
|
20252
|
+
{
|
|
20253
|
+
"name": "page_size",
|
|
20254
|
+
"type": "integer",
|
|
20255
|
+
"required": false,
|
|
20256
|
+
"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."
|
|
20257
|
+
},
|
|
20258
|
+
{
|
|
20259
|
+
"name": "page_token",
|
|
20260
|
+
"type": "string",
|
|
20261
|
+
"required": false,
|
|
20262
|
+
"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."
|
|
20263
|
+
}
|
|
20264
|
+
]
|
|
20265
|
+
},
|
|
20266
|
+
{
|
|
20267
|
+
"resource": "studio.codexes.entries",
|
|
20268
|
+
"method": "create",
|
|
20269
|
+
"summary": "Add an entry to a reference library",
|
|
20270
|
+
"description": "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.",
|
|
20271
|
+
"http": "POST",
|
|
20272
|
+
"path": "/studio/v1/codexes/{codex}/entries",
|
|
20273
|
+
"streaming": "no",
|
|
20274
|
+
"pagination": false,
|
|
20275
|
+
"pathParams": [
|
|
20276
|
+
{
|
|
20277
|
+
"name": "codex",
|
|
20278
|
+
"sdkName": "codex",
|
|
20279
|
+
"description": "Reference library being addressed, given by its cdx_ identifier; a library has no name-based address, so read the library list first when only the name is known."
|
|
20280
|
+
}
|
|
20281
|
+
],
|
|
20282
|
+
"query": [],
|
|
20283
|
+
"body": {
|
|
20284
|
+
"required": true,
|
|
20285
|
+
"fields": [
|
|
20286
|
+
{
|
|
20287
|
+
"name": "type",
|
|
20288
|
+
"type": "string",
|
|
20289
|
+
"enum": [
|
|
20290
|
+
"character",
|
|
20291
|
+
"location",
|
|
20292
|
+
"item",
|
|
20293
|
+
"lore",
|
|
20294
|
+
"event",
|
|
20295
|
+
"source",
|
|
20296
|
+
"fact",
|
|
20297
|
+
"reference",
|
|
20298
|
+
"product",
|
|
20299
|
+
"audience",
|
|
20300
|
+
"brand",
|
|
20301
|
+
"persona",
|
|
20302
|
+
"footage"
|
|
20303
|
+
],
|
|
20304
|
+
"required": true,
|
|
20305
|
+
"description": "What kind of thing this entry is, from the types the genre's libraries carry."
|
|
20306
|
+
},
|
|
20307
|
+
{
|
|
20308
|
+
"name": "name",
|
|
20309
|
+
"type": "string",
|
|
20310
|
+
"required": true,
|
|
20311
|
+
"description": "Name as the text will mention it; it must be unique inside this library after normalization, and it is what a unit claims when it links this entry."
|
|
20312
|
+
},
|
|
20313
|
+
{
|
|
20314
|
+
"name": "aliases",
|
|
20315
|
+
"type": "array",
|
|
20316
|
+
"itemType": "string",
|
|
20317
|
+
"required": false,
|
|
20318
|
+
"description": "Other spellings the text may use, each matched like the name; use them instead of adding a second entry for the same thing."
|
|
20319
|
+
},
|
|
20320
|
+
{
|
|
20321
|
+
"name": "case_sensitive",
|
|
20322
|
+
"type": "boolean",
|
|
20323
|
+
"required": false,
|
|
20324
|
+
"description": "Whether matching distinguishes letter case; leave it false unless the name collides with an ordinary word in another case."
|
|
20325
|
+
},
|
|
20326
|
+
{
|
|
20327
|
+
"name": "exclude_phrases",
|
|
20328
|
+
"type": "array",
|
|
20329
|
+
"itemType": "string",
|
|
20330
|
+
"required": false,
|
|
20331
|
+
"description": "Phrases in which this name must not count as a mention, such as a longer idiom containing it."
|
|
20332
|
+
},
|
|
20333
|
+
{
|
|
20334
|
+
"name": "description",
|
|
20335
|
+
"type": "string",
|
|
20336
|
+
"required": false,
|
|
20337
|
+
"description": "What a writer should know, in the words the piece should be able to use; this text reaches the context pack."
|
|
20338
|
+
},
|
|
20339
|
+
{
|
|
20340
|
+
"name": "facts",
|
|
20341
|
+
"type": "object",
|
|
20342
|
+
"required": false,
|
|
20343
|
+
"description": "Fact ledger entries for this entry, keyed by the caller's own names; they reach the context pack and are compared for consistency."
|
|
20344
|
+
},
|
|
20345
|
+
{
|
|
20346
|
+
"name": "notes",
|
|
20347
|
+
"type": "string",
|
|
20348
|
+
"required": false,
|
|
20349
|
+
"description": "Notes for people only, which never reach a writer's context pack."
|
|
20350
|
+
},
|
|
20351
|
+
{
|
|
20352
|
+
"name": "tracking",
|
|
20353
|
+
"type": "string",
|
|
20354
|
+
"enum": [
|
|
20355
|
+
"always",
|
|
20356
|
+
"when_mentioned",
|
|
20357
|
+
"never"
|
|
20358
|
+
],
|
|
20359
|
+
"required": false,
|
|
20360
|
+
"description": "When this entry reaches a context pack; when_mentioned is the default and keeps the pack small."
|
|
20361
|
+
},
|
|
20362
|
+
{
|
|
20363
|
+
"name": "relations",
|
|
20364
|
+
"type": "array",
|
|
20365
|
+
"itemType": "object",
|
|
20366
|
+
"required": false,
|
|
20367
|
+
"description": "Entries this one relates to at creation, each naming the target and the label that reads from this entry to it."
|
|
20368
|
+
},
|
|
20369
|
+
{
|
|
20370
|
+
"name": "images",
|
|
20371
|
+
"type": "array",
|
|
20372
|
+
"itemType": "string",
|
|
20373
|
+
"required": false,
|
|
20374
|
+
"description": "Images to attach, referenced by file identifiers that belong to this organization."
|
|
20375
|
+
}
|
|
20376
|
+
]
|
|
20377
|
+
}
|
|
20378
|
+
},
|
|
20379
|
+
{
|
|
20380
|
+
"resource": "studio.codexes.entries",
|
|
20381
|
+
"method": "delete",
|
|
20382
|
+
"summary": "Delete a reference entry",
|
|
20383
|
+
"description": "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.",
|
|
20384
|
+
"http": "DELETE",
|
|
20385
|
+
"path": "/studio/v1/codexes/{codex}/entries/{entry}",
|
|
20386
|
+
"streaming": "no",
|
|
20387
|
+
"pagination": false,
|
|
20388
|
+
"pathParams": [
|
|
20389
|
+
{
|
|
20390
|
+
"name": "codex",
|
|
20391
|
+
"sdkName": "codex",
|
|
20392
|
+
"description": "Reference library being addressed, given by its cdx_ identifier; a library has no name-based address, so read the library list first when only the name is known."
|
|
20393
|
+
},
|
|
20394
|
+
{
|
|
20395
|
+
"name": "entry",
|
|
20396
|
+
"sdkName": "entry",
|
|
20397
|
+
"description": "Entry being addressed, by its name inside this library or by its ent_ identifier; a name containing a slash is passed by identifier instead."
|
|
20398
|
+
}
|
|
20399
|
+
],
|
|
20400
|
+
"query": []
|
|
20401
|
+
},
|
|
20402
|
+
{
|
|
20403
|
+
"resource": "studio.codexes.entries",
|
|
20404
|
+
"method": "retrieve",
|
|
20405
|
+
"summary": "Read one reference entry",
|
|
20406
|
+
"description": "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.",
|
|
20407
|
+
"http": "GET",
|
|
20408
|
+
"path": "/studio/v1/codexes/{codex}/entries/{entry}",
|
|
20409
|
+
"streaming": "no",
|
|
20410
|
+
"pagination": false,
|
|
20411
|
+
"pathParams": [
|
|
20412
|
+
{
|
|
20413
|
+
"name": "codex",
|
|
20414
|
+
"sdkName": "codex",
|
|
20415
|
+
"description": "Reference library being addressed, given by its cdx_ identifier; a library has no name-based address, so read the library list first when only the name is known."
|
|
20416
|
+
},
|
|
20417
|
+
{
|
|
20418
|
+
"name": "entry",
|
|
20419
|
+
"sdkName": "entry",
|
|
20420
|
+
"description": "Entry being addressed, by its name inside this library or by its ent_ identifier; a name containing a slash is passed by identifier instead."
|
|
20421
|
+
}
|
|
20422
|
+
],
|
|
20423
|
+
"query": []
|
|
20424
|
+
},
|
|
20425
|
+
{
|
|
20426
|
+
"resource": "studio.codexes.entries",
|
|
20427
|
+
"method": "update",
|
|
20428
|
+
"summary": "Change what a reference entry says",
|
|
20429
|
+
"description": "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.",
|
|
20430
|
+
"http": "PATCH",
|
|
20431
|
+
"path": "/studio/v1/codexes/{codex}/entries/{entry}",
|
|
20432
|
+
"streaming": "no",
|
|
20433
|
+
"pagination": false,
|
|
20434
|
+
"pathParams": [
|
|
20435
|
+
{
|
|
20436
|
+
"name": "codex",
|
|
20437
|
+
"sdkName": "codex",
|
|
20438
|
+
"description": "Reference library being addressed, given by its cdx_ identifier; a library has no name-based address, so read the library list first when only the name is known."
|
|
20439
|
+
},
|
|
20440
|
+
{
|
|
20441
|
+
"name": "entry",
|
|
20442
|
+
"sdkName": "entry",
|
|
20443
|
+
"description": "Entry being addressed, by its name inside this library or by its ent_ identifier; a name containing a slash is passed by identifier instead."
|
|
20444
|
+
}
|
|
20445
|
+
],
|
|
20446
|
+
"query": [],
|
|
20447
|
+
"body": {
|
|
20448
|
+
"required": true,
|
|
20449
|
+
"fields": [
|
|
20450
|
+
{
|
|
20451
|
+
"name": "updateMask",
|
|
20452
|
+
"type": "array",
|
|
20453
|
+
"itemType": "string",
|
|
20454
|
+
"required": true,
|
|
20455
|
+
"description": "Field paths this call changes, such as name, description or facts.成立年份; a field left out keeps its value, and a list field named here is replaced whole."
|
|
20456
|
+
},
|
|
20457
|
+
{
|
|
20458
|
+
"name": "type",
|
|
20459
|
+
"type": "string",
|
|
20460
|
+
"enum": [
|
|
20461
|
+
"character",
|
|
20462
|
+
"location",
|
|
20463
|
+
"item",
|
|
20464
|
+
"lore",
|
|
20465
|
+
"event",
|
|
20466
|
+
"source",
|
|
20467
|
+
"fact",
|
|
20468
|
+
"reference",
|
|
20469
|
+
"product",
|
|
20470
|
+
"audience",
|
|
20471
|
+
"brand",
|
|
20472
|
+
"persona",
|
|
20473
|
+
"footage"
|
|
20474
|
+
],
|
|
20475
|
+
"required": false,
|
|
20476
|
+
"description": "New kind for this entry, which changes how it is shown and how genres treat it."
|
|
20477
|
+
},
|
|
20478
|
+
{
|
|
20479
|
+
"name": "name",
|
|
20480
|
+
"type": "string",
|
|
20481
|
+
"required": false,
|
|
20482
|
+
"description": "New name for this entry, which also changes what the text has to mention for detection to find it."
|
|
20483
|
+
},
|
|
20484
|
+
{
|
|
20485
|
+
"name": "aliases",
|
|
20486
|
+
"type": "array",
|
|
20487
|
+
"itemType": "string",
|
|
20488
|
+
"required": false,
|
|
20489
|
+
"description": "Complete set of aliases, replacing the previous ones."
|
|
20490
|
+
},
|
|
20491
|
+
{
|
|
20492
|
+
"name": "case_sensitive",
|
|
20493
|
+
"type": "boolean",
|
|
20494
|
+
"required": false,
|
|
20495
|
+
"description": "Whether matching distinguishes letter case."
|
|
20496
|
+
},
|
|
20497
|
+
{
|
|
20498
|
+
"name": "exclude_phrases",
|
|
20499
|
+
"type": "array",
|
|
20500
|
+
"itemType": "string",
|
|
20501
|
+
"required": false,
|
|
20502
|
+
"description": "Complete set of phrases in which this name must not count as a mention."
|
|
20503
|
+
},
|
|
20504
|
+
{
|
|
20505
|
+
"name": "description",
|
|
20506
|
+
"type": "string",
|
|
20507
|
+
"required": false,
|
|
20508
|
+
"description": "New text a writer should know, replacing the previous description rather than appending to it."
|
|
20509
|
+
},
|
|
20510
|
+
{
|
|
20511
|
+
"name": "facts",
|
|
20512
|
+
"type": "object",
|
|
20513
|
+
"required": false,
|
|
20514
|
+
"description": "Complete fact ledger for this entry, replacing the previous one, so a fact removed here stops reaching writers."
|
|
20515
|
+
},
|
|
20516
|
+
{
|
|
20517
|
+
"name": "notes",
|
|
20518
|
+
"type": "string",
|
|
20519
|
+
"required": false,
|
|
20520
|
+
"description": "New notes for people only, which never reach a writer's context pack."
|
|
20521
|
+
},
|
|
20522
|
+
{
|
|
20523
|
+
"name": "tracking",
|
|
20524
|
+
"type": "string",
|
|
20525
|
+
"enum": [
|
|
20526
|
+
"always",
|
|
20527
|
+
"when_mentioned",
|
|
20528
|
+
"never"
|
|
20529
|
+
],
|
|
20530
|
+
"required": false,
|
|
20531
|
+
"description": "When this entry reaches a context pack."
|
|
20532
|
+
},
|
|
20533
|
+
{
|
|
20534
|
+
"name": "relations",
|
|
20535
|
+
"type": "array",
|
|
20536
|
+
"itemType": "object",
|
|
20537
|
+
"required": false,
|
|
20538
|
+
"description": "Complete relation set for this entry, replacing the previous one; leave it out to keep the relations as they are."
|
|
20539
|
+
},
|
|
20540
|
+
{
|
|
20541
|
+
"name": "images",
|
|
20542
|
+
"type": "array",
|
|
20543
|
+
"itemType": "string",
|
|
20544
|
+
"required": false,
|
|
20545
|
+
"description": "Complete set of images, replacing the previous ones."
|
|
20546
|
+
}
|
|
20547
|
+
]
|
|
20548
|
+
}
|
|
20549
|
+
},
|
|
20550
|
+
{
|
|
20551
|
+
"resource": "studio.genres",
|
|
20552
|
+
"method": "list",
|
|
20553
|
+
"summary": "List the genres Studio can write",
|
|
20554
|
+
"description": "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.",
|
|
20555
|
+
"http": "GET",
|
|
20556
|
+
"path": "/studio/v1/genres",
|
|
20557
|
+
"streaming": "no",
|
|
20558
|
+
"pagination": false,
|
|
20559
|
+
"pathParams": [],
|
|
20560
|
+
"query": [
|
|
20561
|
+
{
|
|
20562
|
+
"name": "include_unavailable",
|
|
20563
|
+
"type": "boolean",
|
|
20564
|
+
"required": false,
|
|
20565
|
+
"description": "Set to true to also list genres that are catalogued but not open yet; their available_from field says which delivery stage opens them. Leave it false to see only the genres a draft can be created with today."
|
|
20566
|
+
}
|
|
20567
|
+
]
|
|
20568
|
+
},
|
|
20569
|
+
{
|
|
20570
|
+
"resource": "studio.genres",
|
|
20571
|
+
"method": "retrieve",
|
|
20572
|
+
"summary": "Read one genre with its built-in templates",
|
|
20573
|
+
"description": "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.",
|
|
20574
|
+
"http": "GET",
|
|
20575
|
+
"path": "/studio/v1/genres/{genre}",
|
|
20576
|
+
"streaming": "no",
|
|
20577
|
+
"pagination": false,
|
|
20578
|
+
"pathParams": [
|
|
20579
|
+
{
|
|
20580
|
+
"name": "genre",
|
|
20581
|
+
"sdkName": "genre",
|
|
20582
|
+
"description": "Genre key from the genre list, such as novel_long or xiaohongshu_note; pass the key exactly, never the display name."
|
|
20583
|
+
}
|
|
20584
|
+
],
|
|
20585
|
+
"query": []
|
|
20586
|
+
},
|
|
20587
|
+
{
|
|
20588
|
+
"resource": "studio.platforms",
|
|
20589
|
+
"method": "list",
|
|
20590
|
+
"summary": "List the platforms a work can be produced for",
|
|
20591
|
+
"description": "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.",
|
|
20592
|
+
"http": "GET",
|
|
20593
|
+
"path": "/studio/v1/platforms",
|
|
20594
|
+
"streaming": "no",
|
|
20595
|
+
"pagination": false,
|
|
20596
|
+
"pathParams": [],
|
|
20597
|
+
"query": [
|
|
20598
|
+
{
|
|
20599
|
+
"name": "genre",
|
|
20600
|
+
"type": "string",
|
|
20601
|
+
"required": false,
|
|
20602
|
+
"description": "A genre key from the genre list; when given, only the platforms that genre produces by default are returned. Omit it to list every platform open today."
|
|
20603
|
+
}
|
|
20604
|
+
]
|
|
20605
|
+
},
|
|
20606
|
+
{
|
|
20607
|
+
"resource": "studio.platforms",
|
|
20608
|
+
"method": "retrieve",
|
|
20609
|
+
"summary": "Read the rules of one platform",
|
|
20610
|
+
"description": "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.",
|
|
20611
|
+
"http": "GET",
|
|
20612
|
+
"path": "/studio/v1/platforms/{platform}",
|
|
20613
|
+
"streaming": "no",
|
|
20614
|
+
"pagination": false,
|
|
20615
|
+
"pathParams": [
|
|
20616
|
+
{
|
|
20617
|
+
"name": "platform",
|
|
20618
|
+
"sdkName": "platform",
|
|
20619
|
+
"description": "Versioned platform key from the platform list, such as x@1 or xiaohongshu@1; the version suffix is part of the key."
|
|
20620
|
+
}
|
|
20621
|
+
],
|
|
20622
|
+
"query": []
|
|
20623
|
+
},
|
|
20624
|
+
{
|
|
20625
|
+
"resource": "studio.styles",
|
|
20626
|
+
"method": "list",
|
|
20627
|
+
"summary": "List the writing styles of this organization",
|
|
20628
|
+
"description": "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.",
|
|
20629
|
+
"http": "GET",
|
|
20630
|
+
"path": "/studio/v1/styles",
|
|
20631
|
+
"streaming": "no",
|
|
20632
|
+
"pagination": false,
|
|
20633
|
+
"pathParams": [],
|
|
20634
|
+
"query": [
|
|
20635
|
+
{
|
|
20636
|
+
"name": "page_size",
|
|
20637
|
+
"type": "integer",
|
|
20638
|
+
"required": false,
|
|
20639
|
+
"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."
|
|
20640
|
+
},
|
|
20641
|
+
{
|
|
20642
|
+
"name": "page_token",
|
|
20643
|
+
"type": "string",
|
|
20644
|
+
"required": false,
|
|
20645
|
+
"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."
|
|
20646
|
+
}
|
|
20647
|
+
]
|
|
20648
|
+
},
|
|
20649
|
+
{
|
|
20650
|
+
"resource": "studio.styles",
|
|
20651
|
+
"method": "create",
|
|
20652
|
+
"summary": "Create a writing style",
|
|
20653
|
+
"description": "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.",
|
|
20654
|
+
"http": "POST",
|
|
20655
|
+
"path": "/studio/v1/styles",
|
|
20656
|
+
"streaming": "no",
|
|
20657
|
+
"pagination": false,
|
|
20658
|
+
"pathParams": [],
|
|
20659
|
+
"query": [],
|
|
20660
|
+
"body": {
|
|
20661
|
+
"required": true,
|
|
20662
|
+
"fields": [
|
|
20663
|
+
{
|
|
20664
|
+
"name": "name",
|
|
20665
|
+
"type": "string",
|
|
20666
|
+
"required": true,
|
|
20667
|
+
"description": "Name of the style, written so a person can tell it apart from the organization's other styles."
|
|
20668
|
+
},
|
|
20669
|
+
{
|
|
20670
|
+
"name": "description",
|
|
20671
|
+
"type": "string",
|
|
20672
|
+
"required": false,
|
|
20673
|
+
"description": "Short description of the voice, shown wherever a style is chosen."
|
|
20674
|
+
},
|
|
20675
|
+
{
|
|
20676
|
+
"name": "samples",
|
|
20677
|
+
"type": "array",
|
|
20678
|
+
"itemType": "string",
|
|
20679
|
+
"required": false,
|
|
20680
|
+
"description": "One to five paragraphs of writing in the intended voice; these paragraphs are what reach a writer, so choose them carefully."
|
|
20681
|
+
},
|
|
20682
|
+
{
|
|
20683
|
+
"name": "use",
|
|
20684
|
+
"type": "array",
|
|
20685
|
+
"itemType": "string",
|
|
20686
|
+
"required": false,
|
|
20687
|
+
"description": "Wording and habits to keep, stated as instructions a writer can follow rather than as adjectives."
|
|
20688
|
+
},
|
|
20689
|
+
{
|
|
20690
|
+
"name": "avoid",
|
|
20691
|
+
"type": "array",
|
|
20692
|
+
"itemType": "string",
|
|
20693
|
+
"required": false,
|
|
20694
|
+
"description": "Words and stock phrases to avoid, which also become the banned-word check for drafts that use this style."
|
|
20695
|
+
},
|
|
20696
|
+
{
|
|
20697
|
+
"name": "glossary",
|
|
20698
|
+
"type": "object",
|
|
20699
|
+
"required": false,
|
|
20700
|
+
"description": "Terms mapped from a wrong spelling to the right one; each pair becomes a deterministic check on the text."
|
|
20701
|
+
}
|
|
20702
|
+
]
|
|
20703
|
+
}
|
|
20704
|
+
},
|
|
20705
|
+
{
|
|
20706
|
+
"resource": "studio.styles",
|
|
20707
|
+
"method": "delete",
|
|
20708
|
+
"summary": "Delete a writing style",
|
|
20709
|
+
"description": "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.",
|
|
20710
|
+
"http": "DELETE",
|
|
20711
|
+
"path": "/studio/v1/styles/{style}",
|
|
20712
|
+
"streaming": "no",
|
|
20713
|
+
"pagination": false,
|
|
20714
|
+
"pathParams": [
|
|
20715
|
+
{
|
|
20716
|
+
"name": "style",
|
|
20717
|
+
"sdkName": "style",
|
|
20718
|
+
"description": "Style being addressed, by its sty_ identifier; a style has no name-based address, so read the style list first when only the name is known."
|
|
20719
|
+
}
|
|
20720
|
+
],
|
|
20721
|
+
"query": []
|
|
20722
|
+
},
|
|
20723
|
+
{
|
|
20724
|
+
"resource": "studio.styles",
|
|
20725
|
+
"method": "retrieve",
|
|
20726
|
+
"summary": "Read one writing style",
|
|
20727
|
+
"description": "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.",
|
|
20728
|
+
"http": "GET",
|
|
20729
|
+
"path": "/studio/v1/styles/{style}",
|
|
20730
|
+
"streaming": "no",
|
|
20731
|
+
"pagination": false,
|
|
20732
|
+
"pathParams": [
|
|
20733
|
+
{
|
|
20734
|
+
"name": "style",
|
|
20735
|
+
"sdkName": "style",
|
|
20736
|
+
"description": "Style being addressed, by its sty_ identifier; a style has no name-based address, so read the style list first when only the name is known."
|
|
20737
|
+
}
|
|
20738
|
+
],
|
|
20739
|
+
"query": []
|
|
20740
|
+
},
|
|
20741
|
+
{
|
|
20742
|
+
"resource": "studio.styles",
|
|
20743
|
+
"method": "update",
|
|
20744
|
+
"summary": "Change a writing style",
|
|
20745
|
+
"description": "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.",
|
|
20746
|
+
"http": "PATCH",
|
|
20747
|
+
"path": "/studio/v1/styles/{style}",
|
|
20748
|
+
"streaming": "no",
|
|
20749
|
+
"pagination": false,
|
|
20750
|
+
"pathParams": [
|
|
20751
|
+
{
|
|
20752
|
+
"name": "style",
|
|
20753
|
+
"sdkName": "style",
|
|
20754
|
+
"description": "Style being addressed, by its sty_ identifier; a style has no name-based address, so read the style list first when only the name is known."
|
|
20755
|
+
}
|
|
20756
|
+
],
|
|
20757
|
+
"query": [],
|
|
20758
|
+
"body": {
|
|
20759
|
+
"required": true,
|
|
20760
|
+
"fields": [
|
|
20761
|
+
{
|
|
20762
|
+
"name": "updateMask",
|
|
20763
|
+
"type": "array",
|
|
20764
|
+
"itemType": "string",
|
|
20765
|
+
"required": true,
|
|
20766
|
+
"description": "Field paths this call changes, such as description, samples or avoid; a list named here is replaced whole and a field left out keeps its value."
|
|
20767
|
+
},
|
|
20768
|
+
{
|
|
20769
|
+
"name": "name",
|
|
20770
|
+
"type": "string",
|
|
20771
|
+
"required": false,
|
|
20772
|
+
"description": "New name of the style, replacing the previous one when name is named in the update mask."
|
|
20773
|
+
},
|
|
20774
|
+
{
|
|
20775
|
+
"name": "description",
|
|
20776
|
+
"type": "string",
|
|
20777
|
+
"required": false,
|
|
20778
|
+
"description": "New description of the voice, replacing the previous one."
|
|
20779
|
+
},
|
|
20780
|
+
{
|
|
20781
|
+
"name": "samples",
|
|
20782
|
+
"type": "array",
|
|
20783
|
+
"itemType": "string",
|
|
20784
|
+
"required": false,
|
|
20785
|
+
"description": "Complete set of sample paragraphs, replacing the previous ones; removing a sample removes it from every later context pack."
|
|
20786
|
+
},
|
|
20787
|
+
{
|
|
20788
|
+
"name": "use",
|
|
20789
|
+
"type": "array",
|
|
20790
|
+
"itemType": "string",
|
|
20791
|
+
"required": false,
|
|
20792
|
+
"description": "Complete set of wording and habits to keep, replacing the previous ones."
|
|
20793
|
+
},
|
|
20794
|
+
{
|
|
20795
|
+
"name": "avoid",
|
|
20796
|
+
"type": "array",
|
|
20797
|
+
"itemType": "string",
|
|
20798
|
+
"required": false,
|
|
20799
|
+
"description": "Complete set of words and phrases to avoid, replacing the previous ones and with them the banned-word check."
|
|
20800
|
+
},
|
|
20801
|
+
{
|
|
20802
|
+
"name": "glossary",
|
|
20803
|
+
"type": "object",
|
|
20804
|
+
"required": false,
|
|
20805
|
+
"description": "Complete glossary, replacing the previous one; a pair removed here stops being checked."
|
|
20806
|
+
}
|
|
20807
|
+
]
|
|
20808
|
+
}
|
|
20809
|
+
},
|
|
20810
|
+
{
|
|
20811
|
+
"resource": "studio.templates",
|
|
20812
|
+
"method": "list",
|
|
20813
|
+
"summary": "List the templates a genre can start from",
|
|
20814
|
+
"description": "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.",
|
|
20815
|
+
"http": "GET",
|
|
20816
|
+
"path": "/studio/v1/templates",
|
|
20817
|
+
"streaming": "no",
|
|
20818
|
+
"pagination": false,
|
|
20819
|
+
"pathParams": [],
|
|
20820
|
+
"query": [
|
|
20821
|
+
{
|
|
20822
|
+
"name": "genre",
|
|
20823
|
+
"type": "string",
|
|
20824
|
+
"required": false,
|
|
20825
|
+
"description": "Genre key to filter by; when given, only the built-in and saved templates of that genre are returned. Omit it to list every genre's templates together."
|
|
20826
|
+
},
|
|
20827
|
+
{
|
|
20828
|
+
"name": "page_size",
|
|
20829
|
+
"type": "integer",
|
|
20830
|
+
"required": false,
|
|
20831
|
+
"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."
|
|
20832
|
+
},
|
|
20833
|
+
{
|
|
20834
|
+
"name": "page_token",
|
|
20835
|
+
"type": "string",
|
|
20836
|
+
"required": false,
|
|
20837
|
+
"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."
|
|
20838
|
+
}
|
|
20839
|
+
]
|
|
20840
|
+
},
|
|
20841
|
+
{
|
|
20842
|
+
"resource": "studio.templates",
|
|
20843
|
+
"method": "create",
|
|
20844
|
+
"summary": "Save a starting structure as a template",
|
|
20845
|
+
"description": "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.",
|
|
20846
|
+
"http": "POST",
|
|
20847
|
+
"path": "/studio/v1/templates",
|
|
20848
|
+
"streaming": "no",
|
|
20849
|
+
"pagination": false,
|
|
20850
|
+
"pathParams": [],
|
|
20851
|
+
"query": [],
|
|
20852
|
+
"body": {
|
|
20853
|
+
"required": true,
|
|
20854
|
+
"fields": [
|
|
20855
|
+
{
|
|
20856
|
+
"name": "genre",
|
|
20857
|
+
"type": "string",
|
|
20858
|
+
"required": true,
|
|
20859
|
+
"description": "Genre the template belongs to; a draft of another genre cannot use it."
|
|
20860
|
+
},
|
|
20861
|
+
{
|
|
20862
|
+
"name": "name",
|
|
20863
|
+
"type": "string",
|
|
20864
|
+
"required": true,
|
|
20865
|
+
"description": "Name of the template, shown where a draft chooses its starting structure."
|
|
20866
|
+
},
|
|
20867
|
+
{
|
|
20868
|
+
"name": "guide",
|
|
20869
|
+
"type": "string",
|
|
20870
|
+
"required": false,
|
|
20871
|
+
"description": "Writing guidance that reaches the first context pack of a draft created from this template."
|
|
20872
|
+
},
|
|
20873
|
+
{
|
|
20874
|
+
"name": "outline",
|
|
20875
|
+
"type": "array",
|
|
20876
|
+
"itemType": "object",
|
|
20877
|
+
"required": true,
|
|
20878
|
+
"description": "Unit tree the template creates, in draft order, with children nested inside their parent."
|
|
20879
|
+
}
|
|
20880
|
+
]
|
|
20881
|
+
}
|
|
20882
|
+
},
|
|
20883
|
+
{
|
|
20884
|
+
"resource": "studio.templates",
|
|
20885
|
+
"method": "delete",
|
|
20886
|
+
"summary": "Delete a saved template",
|
|
20887
|
+
"description": "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.",
|
|
20888
|
+
"http": "DELETE",
|
|
20889
|
+
"path": "/studio/v1/templates/{template}",
|
|
20890
|
+
"streaming": "no",
|
|
20891
|
+
"pagination": false,
|
|
20892
|
+
"pathParams": [
|
|
20893
|
+
{
|
|
20894
|
+
"name": "template",
|
|
20895
|
+
"sdkName": "template",
|
|
20896
|
+
"description": "Template being addressed: a saved one by its tmpl_ identifier, or a built-in one by its key, optionally prefixed with its genre as in novel_long:three_act when several genres share the key."
|
|
20897
|
+
}
|
|
20898
|
+
],
|
|
20899
|
+
"query": []
|
|
20900
|
+
},
|
|
20901
|
+
{
|
|
20902
|
+
"resource": "studio.templates",
|
|
20903
|
+
"method": "retrieve",
|
|
20904
|
+
"summary": "Read one template",
|
|
20905
|
+
"description": "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.",
|
|
20906
|
+
"http": "GET",
|
|
20907
|
+
"path": "/studio/v1/templates/{template}",
|
|
20908
|
+
"streaming": "no",
|
|
20909
|
+
"pagination": false,
|
|
20910
|
+
"pathParams": [
|
|
20911
|
+
{
|
|
20912
|
+
"name": "template",
|
|
20913
|
+
"sdkName": "template",
|
|
20914
|
+
"description": "Template being addressed: a saved one by its tmpl_ identifier, or a built-in one by its key, optionally prefixed with its genre as in novel_long:three_act when several genres share the key."
|
|
20915
|
+
}
|
|
20916
|
+
],
|
|
20917
|
+
"query": []
|
|
20918
|
+
},
|
|
20919
|
+
{
|
|
20920
|
+
"resource": "studio.themes",
|
|
20921
|
+
"method": "list",
|
|
20922
|
+
"summary": "List the rendition themes of a platform",
|
|
20923
|
+
"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.",
|
|
20924
|
+
"http": "GET",
|
|
20925
|
+
"path": "/studio/v1/themes",
|
|
20926
|
+
"streaming": "no",
|
|
20927
|
+
"pagination": false,
|
|
20928
|
+
"pathParams": [],
|
|
20929
|
+
"query": [
|
|
20930
|
+
{
|
|
20931
|
+
"name": "platform",
|
|
20932
|
+
"type": "string",
|
|
20933
|
+
"required": false,
|
|
20934
|
+
"description": "Versioned platform key to filter by, such as wechat_mp@1; when given, only themes for that platform are returned. Omit it to list every platform's themes together."
|
|
20935
|
+
},
|
|
20936
|
+
{
|
|
20937
|
+
"name": "page_size",
|
|
20938
|
+
"type": "integer",
|
|
20939
|
+
"required": false,
|
|
20940
|
+
"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."
|
|
20941
|
+
},
|
|
20942
|
+
{
|
|
20943
|
+
"name": "page_token",
|
|
20944
|
+
"type": "string",
|
|
20945
|
+
"required": false,
|
|
20946
|
+
"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."
|
|
20947
|
+
}
|
|
20948
|
+
]
|
|
20949
|
+
},
|
|
20950
|
+
{
|
|
20951
|
+
"resource": "studio.themes",
|
|
20952
|
+
"method": "create",
|
|
20953
|
+
"summary": "Create a rendition theme",
|
|
20954
|
+
"description": "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.",
|
|
20955
|
+
"http": "POST",
|
|
20956
|
+
"path": "/studio/v1/themes",
|
|
20957
|
+
"streaming": "no",
|
|
20958
|
+
"pagination": false,
|
|
20959
|
+
"pathParams": [],
|
|
20960
|
+
"query": [],
|
|
20961
|
+
"body": {
|
|
20962
|
+
"required": true,
|
|
20963
|
+
"fields": [
|
|
20964
|
+
{
|
|
20965
|
+
"name": "platform",
|
|
20966
|
+
"type": "string",
|
|
20967
|
+
"required": true,
|
|
20968
|
+
"description": "Versioned platform key this theme renders for, taken from the platform list."
|
|
20969
|
+
},
|
|
20970
|
+
{
|
|
20971
|
+
"name": "name",
|
|
20972
|
+
"type": "string",
|
|
20973
|
+
"required": true,
|
|
20974
|
+
"description": "Name of the theme, shown wherever a rendition chooses its layout."
|
|
20975
|
+
},
|
|
20976
|
+
{
|
|
20977
|
+
"name": "html",
|
|
20978
|
+
"type": "string",
|
|
20979
|
+
"required": false,
|
|
20980
|
+
"description": "HTML template with a small mustache-like subset over the title, the units and the pages; give it for a markup platform."
|
|
20981
|
+
},
|
|
20982
|
+
{
|
|
20983
|
+
"name": "css",
|
|
20984
|
+
"type": "string",
|
|
20985
|
+
"required": false,
|
|
20986
|
+
"description": "Stylesheet applied to the markup, folded inline for a platform that requires inline styles."
|
|
20987
|
+
},
|
|
20988
|
+
{
|
|
20989
|
+
"name": "reference_docx",
|
|
20990
|
+
"type": "string",
|
|
20991
|
+
"required": false,
|
|
20992
|
+
"description": "Reference document giving a DOCX rendition its styles, by file identifier; give it instead of markup for a word-processor platform."
|
|
20993
|
+
},
|
|
20994
|
+
{
|
|
20995
|
+
"name": "header",
|
|
20996
|
+
"type": "string",
|
|
20997
|
+
"required": false,
|
|
20998
|
+
"description": "Fragment placed at the top of every rendition this theme produces."
|
|
20999
|
+
},
|
|
21000
|
+
{
|
|
21001
|
+
"name": "footer",
|
|
21002
|
+
"type": "string",
|
|
21003
|
+
"required": false,
|
|
21004
|
+
"description": "Fragment placed at the bottom of every rendition this theme produces."
|
|
21005
|
+
},
|
|
21006
|
+
{
|
|
21007
|
+
"name": "card",
|
|
21008
|
+
"type": "object",
|
|
21009
|
+
"required": false,
|
|
21010
|
+
"description": "How a card rendition is laid out: its proportions, its width and the fonts it expects."
|
|
21011
|
+
}
|
|
21012
|
+
]
|
|
21013
|
+
}
|
|
21014
|
+
},
|
|
21015
|
+
{
|
|
21016
|
+
"resource": "studio.themes",
|
|
21017
|
+
"method": "delete",
|
|
21018
|
+
"summary": "Delete a rendition theme",
|
|
21019
|
+
"description": "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.",
|
|
21020
|
+
"http": "DELETE",
|
|
21021
|
+
"path": "/studio/v1/themes/{theme}",
|
|
21022
|
+
"streaming": "no",
|
|
21023
|
+
"pagination": false,
|
|
21024
|
+
"pathParams": [
|
|
21025
|
+
{
|
|
21026
|
+
"name": "theme",
|
|
21027
|
+
"sdkName": "theme",
|
|
21028
|
+
"description": "Theme being addressed: a saved one by its thm_ identifier, or a built-in one by its key; the identifier is what the theme list returns for an organization's own theme."
|
|
21029
|
+
}
|
|
21030
|
+
],
|
|
21031
|
+
"query": []
|
|
21032
|
+
},
|
|
21033
|
+
{
|
|
21034
|
+
"resource": "studio.themes",
|
|
21035
|
+
"method": "retrieve",
|
|
21036
|
+
"summary": "Read one rendition theme",
|
|
21037
|
+
"description": "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.",
|
|
21038
|
+
"http": "GET",
|
|
21039
|
+
"path": "/studio/v1/themes/{theme}",
|
|
21040
|
+
"streaming": "no",
|
|
21041
|
+
"pagination": false,
|
|
21042
|
+
"pathParams": [
|
|
21043
|
+
{
|
|
21044
|
+
"name": "theme",
|
|
21045
|
+
"sdkName": "theme",
|
|
21046
|
+
"description": "Theme being addressed: a saved one by its thm_ identifier, or a built-in one by its key; the identifier is what the theme list returns for an organization's own theme."
|
|
21047
|
+
}
|
|
21048
|
+
],
|
|
21049
|
+
"query": []
|
|
21050
|
+
},
|
|
21051
|
+
{
|
|
21052
|
+
"resource": "studio.themes",
|
|
21053
|
+
"method": "update",
|
|
21054
|
+
"summary": "Change a rendition theme",
|
|
21055
|
+
"description": "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.",
|
|
21056
|
+
"http": "PATCH",
|
|
21057
|
+
"path": "/studio/v1/themes/{theme}",
|
|
21058
|
+
"streaming": "no",
|
|
21059
|
+
"pagination": false,
|
|
21060
|
+
"pathParams": [
|
|
21061
|
+
{
|
|
21062
|
+
"name": "theme",
|
|
21063
|
+
"sdkName": "theme",
|
|
21064
|
+
"description": "Theme being addressed: a saved one by its thm_ identifier, or a built-in one by its key; the identifier is what the theme list returns for an organization's own theme."
|
|
21065
|
+
}
|
|
21066
|
+
],
|
|
21067
|
+
"query": [],
|
|
21068
|
+
"body": {
|
|
21069
|
+
"required": true,
|
|
21070
|
+
"fields": [
|
|
21071
|
+
{
|
|
21072
|
+
"name": "updateMask",
|
|
21073
|
+
"type": "array",
|
|
21074
|
+
"itemType": "string",
|
|
21075
|
+
"required": true,
|
|
21076
|
+
"description": "Field paths this call changes, such as name, css or footer; a field left out keeps its value."
|
|
21077
|
+
},
|
|
21078
|
+
{
|
|
21079
|
+
"name": "name",
|
|
21080
|
+
"type": "string",
|
|
21081
|
+
"required": false,
|
|
21082
|
+
"description": "New name of the theme, replacing the previous one when name is named in the update mask."
|
|
21083
|
+
},
|
|
21084
|
+
{
|
|
21085
|
+
"name": "html",
|
|
21086
|
+
"type": "string",
|
|
21087
|
+
"required": false,
|
|
21088
|
+
"description": "New HTML template, replacing the previous one for renditions produced after this change."
|
|
21089
|
+
},
|
|
21090
|
+
{
|
|
21091
|
+
"name": "css",
|
|
21092
|
+
"type": "string",
|
|
21093
|
+
"required": false,
|
|
21094
|
+
"description": "New stylesheet, replacing the previous one."
|
|
21095
|
+
},
|
|
21096
|
+
{
|
|
21097
|
+
"name": "reference_docx",
|
|
21098
|
+
"type": "string",
|
|
21099
|
+
"required": false,
|
|
21100
|
+
"description": "New reference document for a DOCX rendition, by file identifier; it replaces the previous one."
|
|
21101
|
+
},
|
|
21102
|
+
{
|
|
21103
|
+
"name": "header",
|
|
21104
|
+
"type": "string",
|
|
21105
|
+
"required": false,
|
|
21106
|
+
"description": "New top fragment, replacing the previous one."
|
|
21107
|
+
},
|
|
21108
|
+
{
|
|
21109
|
+
"name": "footer",
|
|
21110
|
+
"type": "string",
|
|
21111
|
+
"required": false,
|
|
21112
|
+
"description": "New bottom fragment, replacing the previous one."
|
|
21113
|
+
},
|
|
21114
|
+
{
|
|
21115
|
+
"name": "card",
|
|
21116
|
+
"type": "object",
|
|
21117
|
+
"required": false,
|
|
21118
|
+
"description": "How a card rendition is laid out: its proportions, its width and the fonts it expects."
|
|
21119
|
+
}
|
|
21120
|
+
]
|
|
21121
|
+
}
|
|
21122
|
+
},
|
|
21123
|
+
{
|
|
21124
|
+
"resource": "studio.works",
|
|
21125
|
+
"method": "list",
|
|
21126
|
+
"summary": "List the works of this organization",
|
|
21127
|
+
"description": "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.",
|
|
21128
|
+
"http": "GET",
|
|
21129
|
+
"path": "/studio/v1/works",
|
|
21130
|
+
"streaming": "no",
|
|
21131
|
+
"pagination": false,
|
|
21132
|
+
"pathParams": [],
|
|
21133
|
+
"query": [
|
|
21134
|
+
{
|
|
21135
|
+
"name": "page_size",
|
|
21136
|
+
"type": "integer",
|
|
21137
|
+
"required": false,
|
|
21138
|
+
"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."
|
|
21139
|
+
},
|
|
21140
|
+
{
|
|
21141
|
+
"name": "page_token",
|
|
21142
|
+
"type": "string",
|
|
21143
|
+
"required": false,
|
|
21144
|
+
"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."
|
|
21145
|
+
},
|
|
21146
|
+
{
|
|
21147
|
+
"name": "archived",
|
|
21148
|
+
"type": "boolean",
|
|
21149
|
+
"required": false,
|
|
21150
|
+
"description": "Set to true to list archived works instead of active ones; each page lists one of the two, never both."
|
|
21151
|
+
}
|
|
21152
|
+
]
|
|
21153
|
+
},
|
|
21154
|
+
{
|
|
21155
|
+
"resource": "studio.works",
|
|
21156
|
+
"method": "create",
|
|
21157
|
+
"summary": "Create a work with its goal",
|
|
21158
|
+
"description": "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.",
|
|
21159
|
+
"http": "POST",
|
|
21160
|
+
"path": "/studio/v1/works",
|
|
21161
|
+
"streaming": "no",
|
|
21162
|
+
"pagination": false,
|
|
21163
|
+
"pathParams": [],
|
|
21164
|
+
"query": [],
|
|
21165
|
+
"body": {
|
|
21166
|
+
"required": true,
|
|
21167
|
+
"fields": [
|
|
21168
|
+
{
|
|
21169
|
+
"name": "title",
|
|
21170
|
+
"type": "string",
|
|
21171
|
+
"required": true,
|
|
21172
|
+
"description": "Working title of the new work, used in lists and in the Console; it does not become any rendition title."
|
|
21173
|
+
},
|
|
21174
|
+
{
|
|
21175
|
+
"name": "slug",
|
|
21176
|
+
"type": "string",
|
|
21177
|
+
"required": false,
|
|
21178
|
+
"description": "Organization-unique name to address the work by; omit it and one is derived from the title."
|
|
21179
|
+
},
|
|
21180
|
+
{
|
|
21181
|
+
"name": "goal",
|
|
21182
|
+
"type": "object",
|
|
21183
|
+
"required": true,
|
|
21184
|
+
"description": "What this work is for: who reads it, what that reader should get or do, the one message it carries, and the limits it is written under."
|
|
21185
|
+
},
|
|
21186
|
+
{
|
|
21187
|
+
"name": "brief",
|
|
21188
|
+
"type": "object",
|
|
21189
|
+
"required": false,
|
|
21190
|
+
"description": "The original requirement as it arrives with a new work: the person's text, any attached source files, and the points split from it."
|
|
21191
|
+
},
|
|
21192
|
+
{
|
|
21193
|
+
"name": "codexes",
|
|
21194
|
+
"type": "array",
|
|
21195
|
+
"itemType": "string",
|
|
21196
|
+
"required": false,
|
|
21197
|
+
"description": "Reference libraries to attach at creation; a library owned by another organization is refused rather than attached."
|
|
21198
|
+
},
|
|
21199
|
+
{
|
|
21200
|
+
"name": "style",
|
|
21201
|
+
"type": "string",
|
|
21202
|
+
"required": false,
|
|
21203
|
+
"description": "Style to attach to the work, whose samples and glossary then reach every context pack unless a draft overrides it."
|
|
21204
|
+
},
|
|
21205
|
+
{
|
|
21206
|
+
"name": "labels",
|
|
21207
|
+
"type": "object",
|
|
21208
|
+
"required": false,
|
|
21209
|
+
"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."
|
|
21210
|
+
},
|
|
21211
|
+
{
|
|
21212
|
+
"name": "requestId",
|
|
21213
|
+
"type": "string",
|
|
21214
|
+
"required": false,
|
|
21215
|
+
"description": "Caller-chosen key that makes this create safe to repeat: the same value answers the first result instead of creating a second work."
|
|
21216
|
+
}
|
|
21217
|
+
]
|
|
21218
|
+
}
|
|
21219
|
+
},
|
|
21220
|
+
{
|
|
21221
|
+
"resource": "studio.works",
|
|
21222
|
+
"method": "retrieve",
|
|
21223
|
+
"summary": "Read a work, optionally with one draft and unit",
|
|
21224
|
+
"description": "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.",
|
|
21225
|
+
"http": "GET",
|
|
21226
|
+
"path": "/studio/v1/works/{work}",
|
|
21227
|
+
"streaming": "no",
|
|
21228
|
+
"pagination": false,
|
|
21229
|
+
"pathParams": [
|
|
21230
|
+
{
|
|
21231
|
+
"name": "work",
|
|
21232
|
+
"sdkName": "work",
|
|
21233
|
+
"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."
|
|
21234
|
+
}
|
|
21235
|
+
],
|
|
21236
|
+
"query": [
|
|
21237
|
+
{
|
|
21238
|
+
"name": "draft",
|
|
21239
|
+
"type": "string",
|
|
21240
|
+
"required": false,
|
|
21241
|
+
"description": "Draft to include in the answer, either its in-work key such as novel or its drf_ identifier; when it is given, the answer also carries that draft's todos, outline and current unit."
|
|
21242
|
+
},
|
|
21243
|
+
{
|
|
21244
|
+
"name": "unit",
|
|
21245
|
+
"type": "string",
|
|
21246
|
+
"required": false,
|
|
21247
|
+
"description": "Unit to include in the answer, written as its in-work number without a hash, such as 12; it returns that unit with its blocks and Markdown body."
|
|
21248
|
+
},
|
|
21249
|
+
{
|
|
21250
|
+
"name": "expand",
|
|
21251
|
+
"type": "array",
|
|
21252
|
+
"itemType": "string",
|
|
21253
|
+
"enum": [
|
|
21254
|
+
"status",
|
|
21255
|
+
"drafts",
|
|
21256
|
+
"outline",
|
|
21257
|
+
"unit"
|
|
21258
|
+
],
|
|
21259
|
+
"required": false,
|
|
21260
|
+
"description": "Extra parts to include, comma separated: status for the draft todo list, drafts for the draft summaries, outline for the unit tree without bodies, and unit for the current unit with its body."
|
|
21261
|
+
}
|
|
21262
|
+
]
|
|
21263
|
+
},
|
|
21264
|
+
{
|
|
21265
|
+
"resource": "studio.works",
|
|
21266
|
+
"method": "update",
|
|
21267
|
+
"summary": "Change the title, goal or attached libraries",
|
|
21268
|
+
"description": "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.",
|
|
21269
|
+
"http": "PATCH",
|
|
21270
|
+
"path": "/studio/v1/works/{work}",
|
|
21271
|
+
"streaming": "no",
|
|
21272
|
+
"pagination": false,
|
|
21273
|
+
"pathParams": [
|
|
21274
|
+
{
|
|
21275
|
+
"name": "work",
|
|
21276
|
+
"sdkName": "work",
|
|
21277
|
+
"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."
|
|
21278
|
+
}
|
|
21279
|
+
],
|
|
21280
|
+
"query": [],
|
|
21281
|
+
"body": {
|
|
21282
|
+
"required": true,
|
|
21283
|
+
"fields": [
|
|
21284
|
+
{
|
|
21285
|
+
"name": "updateMask",
|
|
21286
|
+
"type": "array",
|
|
21287
|
+
"itemType": "string",
|
|
21288
|
+
"required": true,
|
|
21289
|
+
"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."
|
|
21290
|
+
},
|
|
21291
|
+
{
|
|
21292
|
+
"name": "expectedRevision",
|
|
21293
|
+
"type": "integer",
|
|
21294
|
+
"required": false,
|
|
21295
|
+
"description": "Work revision the caller read; when the work moved past it the write is refused with REVISION_CONFLICT and nothing changes."
|
|
21296
|
+
},
|
|
21297
|
+
{
|
|
21298
|
+
"name": "title",
|
|
21299
|
+
"type": "string",
|
|
21300
|
+
"required": false,
|
|
21301
|
+
"description": "New working title of the work, replacing the previous one when title is named in the update mask."
|
|
21302
|
+
},
|
|
21303
|
+
{
|
|
21304
|
+
"name": "slug",
|
|
21305
|
+
"type": "string",
|
|
21306
|
+
"required": false,
|
|
21307
|
+
"description": "New organization-unique name; the previous slug keeps resolving so existing links do not break."
|
|
21308
|
+
},
|
|
21309
|
+
{
|
|
21310
|
+
"name": "goal",
|
|
21311
|
+
"type": "object",
|
|
21312
|
+
"required": false,
|
|
21313
|
+
"description": "What this work is for: who reads it, what that reader should get or do, the one message it carries, and the limits it is written under."
|
|
21314
|
+
},
|
|
21315
|
+
{
|
|
21316
|
+
"name": "codexes",
|
|
21317
|
+
"type": "array",
|
|
21318
|
+
"itemType": "string",
|
|
21319
|
+
"required": false,
|
|
21320
|
+
"description": "Complete set of reference libraries to keep attached; a library left out is detached from the work."
|
|
21321
|
+
},
|
|
21322
|
+
{
|
|
21323
|
+
"name": "style",
|
|
21324
|
+
"type": "string",
|
|
21325
|
+
"required": false,
|
|
21326
|
+
"description": "Style to attach to the work, replacing the previous one; send an empty value to detach the style entirely."
|
|
21327
|
+
},
|
|
21328
|
+
{
|
|
21329
|
+
"name": "labels",
|
|
21330
|
+
"type": "object",
|
|
21331
|
+
"required": false,
|
|
21332
|
+
"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."
|
|
21333
|
+
},
|
|
21334
|
+
{
|
|
21335
|
+
"name": "archived",
|
|
21336
|
+
"type": "boolean",
|
|
21337
|
+
"required": false,
|
|
21338
|
+
"description": "Set to true to archive the work, which hides it from the default list without deleting anything."
|
|
21339
|
+
}
|
|
21340
|
+
]
|
|
21341
|
+
}
|
|
21342
|
+
},
|
|
21343
|
+
{
|
|
21344
|
+
"resource": "studio.works",
|
|
21345
|
+
"method": "updateBrief",
|
|
21346
|
+
"summary": "Add to or correct the original brief",
|
|
21347
|
+
"description": "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.",
|
|
21348
|
+
"http": "PATCH",
|
|
21349
|
+
"path": "/studio/v1/works/{work}/brief",
|
|
21350
|
+
"streaming": "no",
|
|
21351
|
+
"pagination": false,
|
|
21352
|
+
"pathParams": [
|
|
21353
|
+
{
|
|
21354
|
+
"name": "work",
|
|
21355
|
+
"sdkName": "work",
|
|
21356
|
+
"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."
|
|
21357
|
+
}
|
|
21358
|
+
],
|
|
21359
|
+
"query": [],
|
|
21360
|
+
"body": {
|
|
21361
|
+
"required": true,
|
|
21362
|
+
"fields": [
|
|
21363
|
+
{
|
|
21364
|
+
"name": "expectedRevision",
|
|
21365
|
+
"type": "integer",
|
|
21366
|
+
"required": false,
|
|
21367
|
+
"description": "Brief revision the caller read; a mismatch is refused with REVISION_CONFLICT rather than merged."
|
|
21368
|
+
},
|
|
21369
|
+
{
|
|
21370
|
+
"name": "text",
|
|
21371
|
+
"type": "string",
|
|
21372
|
+
"required": false,
|
|
21373
|
+
"description": "Text to append to the stored brief, added after what is already there and never replacing it."
|
|
21374
|
+
},
|
|
21375
|
+
{
|
|
21376
|
+
"name": "attachments",
|
|
21377
|
+
"type": "array",
|
|
21378
|
+
"itemType": "string",
|
|
21379
|
+
"required": false,
|
|
21380
|
+
"description": "Source files to keep with the brief, added to the ones already attached."
|
|
21381
|
+
},
|
|
21382
|
+
{
|
|
21383
|
+
"name": "addPoints",
|
|
21384
|
+
"type": "array",
|
|
21385
|
+
"itemType": "string",
|
|
21386
|
+
"required": false,
|
|
21387
|
+
"description": "New requirement points to split out of the brief; each receives the next free key in order."
|
|
21388
|
+
},
|
|
21389
|
+
{
|
|
21390
|
+
"name": "editPoints",
|
|
21391
|
+
"type": "array",
|
|
21392
|
+
"itemType": "object",
|
|
21393
|
+
"required": false,
|
|
21394
|
+
"description": "Existing points to reword, each naming the key it keeps and the text that replaces it."
|
|
21395
|
+
},
|
|
21396
|
+
{
|
|
21397
|
+
"name": "removePoints",
|
|
21398
|
+
"type": "array",
|
|
21399
|
+
"itemType": "string",
|
|
21400
|
+
"required": false,
|
|
21401
|
+
"description": "Keys of points to drop; a dropped key is never reused, so later points keep their own keys."
|
|
21402
|
+
}
|
|
21403
|
+
]
|
|
21404
|
+
}
|
|
21405
|
+
},
|
|
21406
|
+
{
|
|
21407
|
+
"resource": "studio.works.drafts",
|
|
21408
|
+
"method": "list",
|
|
21409
|
+
"summary": "List the drafts a work carries",
|
|
21410
|
+
"description": "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.",
|
|
21411
|
+
"http": "GET",
|
|
21412
|
+
"path": "/studio/v1/works/{work}/drafts",
|
|
21413
|
+
"streaming": "no",
|
|
21414
|
+
"pagination": false,
|
|
21415
|
+
"pathParams": [
|
|
21416
|
+
{
|
|
21417
|
+
"name": "work",
|
|
21418
|
+
"sdkName": "work",
|
|
21419
|
+
"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."
|
|
21420
|
+
}
|
|
21421
|
+
],
|
|
21422
|
+
"query": []
|
|
21423
|
+
},
|
|
21424
|
+
{
|
|
21425
|
+
"resource": "studio.works.drafts",
|
|
21426
|
+
"method": "create",
|
|
21427
|
+
"summary": "Create a draft of a genre inside a work",
|
|
21428
|
+
"description": "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.",
|
|
21429
|
+
"http": "POST",
|
|
21430
|
+
"path": "/studio/v1/works/{work}/drafts",
|
|
21431
|
+
"streaming": "no",
|
|
21432
|
+
"pagination": false,
|
|
21433
|
+
"pathParams": [
|
|
21434
|
+
{
|
|
21435
|
+
"name": "work",
|
|
21436
|
+
"sdkName": "work",
|
|
21437
|
+
"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."
|
|
21438
|
+
}
|
|
21439
|
+
],
|
|
21440
|
+
"query": [],
|
|
21441
|
+
"body": {
|
|
21442
|
+
"required": true,
|
|
21443
|
+
"fields": [
|
|
21444
|
+
{
|
|
21445
|
+
"name": "genre",
|
|
21446
|
+
"type": "string",
|
|
21447
|
+
"required": true,
|
|
21448
|
+
"description": "Genre key the draft is written in, taken from the genre list; it decides the unit kinds, the properties and the checks."
|
|
21449
|
+
},
|
|
21450
|
+
{
|
|
21451
|
+
"name": "title",
|
|
21452
|
+
"type": "string",
|
|
21453
|
+
"required": false,
|
|
21454
|
+
"description": "Page title of the new draft; omit it and one is derived from the genre and the work title."
|
|
21455
|
+
},
|
|
21456
|
+
{
|
|
21457
|
+
"name": "mode",
|
|
21458
|
+
"type": "string",
|
|
21459
|
+
"enum": [
|
|
21460
|
+
"skeleton",
|
|
21461
|
+
"space"
|
|
21462
|
+
],
|
|
21463
|
+
"required": false,
|
|
21464
|
+
"description": "Structure mode to create the draft in; omit it and the genre default applies, which is skeleton for most genres."
|
|
21465
|
+
},
|
|
21466
|
+
{
|
|
21467
|
+
"name": "template",
|
|
21468
|
+
"type": "string",
|
|
21469
|
+
"required": false,
|
|
21470
|
+
"description": "Template to seed the unit tree from, by template identifier or built-in key; when an outline is also given, the outline wins because the person's own structure is authoritative."
|
|
21471
|
+
},
|
|
21472
|
+
{
|
|
21473
|
+
"name": "outline",
|
|
21474
|
+
"type": "array",
|
|
21475
|
+
"itemType": "object",
|
|
21476
|
+
"required": false,
|
|
21477
|
+
"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."
|
|
21478
|
+
},
|
|
21479
|
+
{
|
|
21480
|
+
"name": "derivedFrom",
|
|
21481
|
+
"type": "object",
|
|
21482
|
+
"required": false,
|
|
21483
|
+
"description": "What the new draft should be derived from, so the service can record the source revision for later staleness checks."
|
|
21484
|
+
},
|
|
21485
|
+
{
|
|
21486
|
+
"name": "props",
|
|
21487
|
+
"type": "object",
|
|
21488
|
+
"required": false,
|
|
21489
|
+
"description": "Initial values for the genre properties, keyed by property key; a value the genre does not define is refused rather than stored."
|
|
21490
|
+
},
|
|
21491
|
+
{
|
|
21492
|
+
"name": "requestId",
|
|
21493
|
+
"type": "string",
|
|
21494
|
+
"required": false,
|
|
21495
|
+
"description": "Caller-chosen key that makes this create safe to repeat: the same value answers the first draft instead of creating a second one."
|
|
21496
|
+
}
|
|
21497
|
+
]
|
|
21498
|
+
}
|
|
21499
|
+
},
|
|
21500
|
+
{
|
|
21501
|
+
"resource": "studio.works.drafts",
|
|
21502
|
+
"method": "retrieve",
|
|
21503
|
+
"summary": "Read one draft with optional units and todos",
|
|
21504
|
+
"description": "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.",
|
|
21505
|
+
"http": "GET",
|
|
21506
|
+
"path": "/studio/v1/works/{work}/drafts/{draft}",
|
|
21507
|
+
"streaming": "no",
|
|
21508
|
+
"pagination": false,
|
|
21509
|
+
"pathParams": [
|
|
21510
|
+
{
|
|
21511
|
+
"name": "work",
|
|
21512
|
+
"sdkName": "work",
|
|
21513
|
+
"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."
|
|
21514
|
+
},
|
|
21515
|
+
{
|
|
21516
|
+
"name": "draft",
|
|
21517
|
+
"sdkName": "draft",
|
|
21518
|
+
"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."
|
|
21519
|
+
}
|
|
21520
|
+
],
|
|
21521
|
+
"query": [
|
|
21522
|
+
{
|
|
21523
|
+
"name": "expand",
|
|
21524
|
+
"type": "array",
|
|
21525
|
+
"itemType": "string",
|
|
21526
|
+
"enum": [
|
|
21527
|
+
"units",
|
|
21528
|
+
"status"
|
|
21529
|
+
],
|
|
21530
|
+
"required": false,
|
|
21531
|
+
"description": "Extra parts to include, comma separated: units adds the unit tree without bodies, and status adds the computed todo list of this draft."
|
|
21532
|
+
}
|
|
21533
|
+
]
|
|
21534
|
+
},
|
|
21535
|
+
{
|
|
21536
|
+
"resource": "studio.works.drafts",
|
|
21537
|
+
"method": "update",
|
|
21538
|
+
"summary": "Change a draft title, key, properties or style",
|
|
21539
|
+
"description": "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.",
|
|
21540
|
+
"http": "PATCH",
|
|
21541
|
+
"path": "/studio/v1/works/{work}/drafts/{draft}",
|
|
21542
|
+
"streaming": "no",
|
|
21543
|
+
"pagination": false,
|
|
21544
|
+
"pathParams": [
|
|
21545
|
+
{
|
|
21546
|
+
"name": "work",
|
|
21547
|
+
"sdkName": "work",
|
|
21548
|
+
"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."
|
|
21549
|
+
},
|
|
21550
|
+
{
|
|
21551
|
+
"name": "draft",
|
|
21552
|
+
"sdkName": "draft",
|
|
21553
|
+
"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."
|
|
21554
|
+
}
|
|
21555
|
+
],
|
|
21556
|
+
"query": [],
|
|
21557
|
+
"body": {
|
|
21558
|
+
"required": true,
|
|
21559
|
+
"fields": [
|
|
21560
|
+
{
|
|
21561
|
+
"name": "updateMask",
|
|
21562
|
+
"type": "array",
|
|
21563
|
+
"itemType": "string",
|
|
21564
|
+
"required": true,
|
|
21565
|
+
"description": "Field paths this call changes, such as title, key or props.topics; a field left out keeps its value."
|
|
21566
|
+
},
|
|
21567
|
+
{
|
|
21568
|
+
"name": "expectedRevision",
|
|
21569
|
+
"type": "integer",
|
|
21570
|
+
"required": false,
|
|
21571
|
+
"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."
|
|
21572
|
+
},
|
|
21573
|
+
{
|
|
21574
|
+
"name": "title",
|
|
21575
|
+
"type": "string",
|
|
21576
|
+
"required": false,
|
|
21577
|
+
"description": "New page title of the draft, replacing the previous one when title is named in the update mask."
|
|
21578
|
+
},
|
|
21579
|
+
{
|
|
21580
|
+
"name": "key",
|
|
21581
|
+
"type": "string",
|
|
21582
|
+
"required": false,
|
|
21583
|
+
"description": "New in-work key; the previous key keeps resolving so existing links and references do not break."
|
|
21584
|
+
},
|
|
21585
|
+
{
|
|
21586
|
+
"name": "props",
|
|
21587
|
+
"type": "object",
|
|
21588
|
+
"required": false,
|
|
21589
|
+
"description": "Property values to set, keyed by the genre property key; a property the genre does not define is refused."
|
|
21590
|
+
},
|
|
21591
|
+
{
|
|
21592
|
+
"name": "style",
|
|
21593
|
+
"type": "string",
|
|
21594
|
+
"required": false,
|
|
21595
|
+
"description": "Style to attach to this draft, overriding the work style; send an empty value to fall back to the work style."
|
|
21596
|
+
},
|
|
21597
|
+
{
|
|
21598
|
+
"name": "mode",
|
|
21599
|
+
"type": "string",
|
|
21600
|
+
"enum": [
|
|
21601
|
+
"skeleton",
|
|
21602
|
+
"space"
|
|
21603
|
+
],
|
|
21604
|
+
"required": false,
|
|
21605
|
+
"description": "Structure mode to switch the draft to; switching away from skeleton does not delete units that already exist."
|
|
21606
|
+
}
|
|
21607
|
+
]
|
|
21608
|
+
}
|
|
21609
|
+
},
|
|
21610
|
+
{
|
|
21611
|
+
"resource": "studio.works.drafts",
|
|
21612
|
+
"method": "retrieveExport",
|
|
21613
|
+
"summary": "Export the draft as Markdown or plain text",
|
|
21614
|
+
"description": "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.",
|
|
21615
|
+
"http": "GET",
|
|
21616
|
+
"path": "/studio/v1/works/{work}/drafts/{draft}/export",
|
|
21617
|
+
"streaming": "no",
|
|
21618
|
+
"pagination": false,
|
|
21619
|
+
"pathParams": [
|
|
21620
|
+
{
|
|
21621
|
+
"name": "work",
|
|
21622
|
+
"sdkName": "work",
|
|
21623
|
+
"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."
|
|
21624
|
+
},
|
|
21625
|
+
{
|
|
21626
|
+
"name": "draft",
|
|
21627
|
+
"sdkName": "draft",
|
|
21628
|
+
"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."
|
|
21629
|
+
}
|
|
21630
|
+
],
|
|
21631
|
+
"query": [
|
|
21632
|
+
{
|
|
21633
|
+
"name": "format",
|
|
21634
|
+
"type": "string",
|
|
21635
|
+
"enum": [
|
|
21636
|
+
"markdown",
|
|
21637
|
+
"text"
|
|
21638
|
+
],
|
|
21639
|
+
"required": true,
|
|
21640
|
+
"description": "Format to render the draft in: markdown keeps headings, list markers and block anchors, and text drops the markup entirely."
|
|
21641
|
+
}
|
|
21642
|
+
]
|
|
21643
|
+
},
|
|
21644
|
+
{
|
|
21645
|
+
"resource": "studio.works.drafts",
|
|
21646
|
+
"method": "retrieveOutline",
|
|
21647
|
+
"summary": "Read the whole unit outline as Markdown",
|
|
21648
|
+
"description": "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.",
|
|
21649
|
+
"http": "GET",
|
|
21650
|
+
"path": "/studio/v1/works/{work}/drafts/{draft}/outline",
|
|
21651
|
+
"streaming": "no",
|
|
21652
|
+
"pagination": false,
|
|
21653
|
+
"pathParams": [
|
|
21654
|
+
{
|
|
21655
|
+
"name": "work",
|
|
21656
|
+
"sdkName": "work",
|
|
21657
|
+
"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."
|
|
21658
|
+
},
|
|
21659
|
+
{
|
|
21660
|
+
"name": "draft",
|
|
21661
|
+
"sdkName": "draft",
|
|
21662
|
+
"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."
|
|
21663
|
+
}
|
|
21664
|
+
],
|
|
21665
|
+
"query": []
|
|
21666
|
+
},
|
|
21667
|
+
{
|
|
21668
|
+
"resource": "studio.works.drafts",
|
|
21669
|
+
"method": "retrieveReview",
|
|
21670
|
+
"summary": "Read a review pass over the whole draft",
|
|
21671
|
+
"description": "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.",
|
|
21672
|
+
"http": "GET",
|
|
21673
|
+
"path": "/studio/v1/works/{work}/drafts/{draft}/review",
|
|
21674
|
+
"streaming": "no",
|
|
21675
|
+
"pagination": false,
|
|
21676
|
+
"pathParams": [
|
|
21677
|
+
{
|
|
21678
|
+
"name": "work",
|
|
21679
|
+
"sdkName": "work",
|
|
21680
|
+
"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."
|
|
21681
|
+
},
|
|
21682
|
+
{
|
|
21683
|
+
"name": "draft",
|
|
21684
|
+
"sdkName": "draft",
|
|
21685
|
+
"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."
|
|
21686
|
+
}
|
|
21687
|
+
],
|
|
21688
|
+
"query": [
|
|
21689
|
+
{
|
|
21690
|
+
"name": "page_token",
|
|
21691
|
+
"type": "string",
|
|
21692
|
+
"required": false,
|
|
21693
|
+
"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."
|
|
21694
|
+
}
|
|
21695
|
+
]
|
|
21696
|
+
},
|
|
21697
|
+
{
|
|
21698
|
+
"resource": "studio.works.drafts.status",
|
|
21699
|
+
"method": "list",
|
|
21700
|
+
"summary": "Read the computed todo list of a draft",
|
|
21701
|
+
"description": "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.",
|
|
21702
|
+
"http": "GET",
|
|
21703
|
+
"path": "/studio/v1/works/{work}/drafts/{draft}/status",
|
|
21704
|
+
"streaming": "no",
|
|
21705
|
+
"pagination": false,
|
|
21706
|
+
"pathParams": [
|
|
21707
|
+
{
|
|
21708
|
+
"name": "work",
|
|
21709
|
+
"sdkName": "work",
|
|
21710
|
+
"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."
|
|
21711
|
+
},
|
|
21712
|
+
{
|
|
21713
|
+
"name": "draft",
|
|
21714
|
+
"sdkName": "draft",
|
|
21715
|
+
"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."
|
|
21716
|
+
}
|
|
21717
|
+
],
|
|
21718
|
+
"query": []
|
|
21719
|
+
},
|
|
21720
|
+
{
|
|
21721
|
+
"resource": "studio.works.drafts.units",
|
|
21722
|
+
"method": "create",
|
|
21723
|
+
"summary": "Add one unit to the draft tree",
|
|
21724
|
+
"description": "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.",
|
|
21725
|
+
"http": "POST",
|
|
21726
|
+
"path": "/studio/v1/works/{work}/drafts/{draft}/units",
|
|
21727
|
+
"streaming": "no",
|
|
21728
|
+
"pagination": false,
|
|
21729
|
+
"pathParams": [
|
|
21730
|
+
{
|
|
21731
|
+
"name": "work",
|
|
21732
|
+
"sdkName": "work",
|
|
21733
|
+
"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."
|
|
21734
|
+
},
|
|
21735
|
+
{
|
|
21736
|
+
"name": "draft",
|
|
21737
|
+
"sdkName": "draft",
|
|
21738
|
+
"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."
|
|
21739
|
+
}
|
|
21740
|
+
],
|
|
21741
|
+
"query": [],
|
|
21742
|
+
"body": {
|
|
21743
|
+
"required": true,
|
|
21744
|
+
"fields": [
|
|
21745
|
+
{
|
|
21746
|
+
"name": "kind",
|
|
21747
|
+
"type": "string",
|
|
21748
|
+
"required": true,
|
|
21749
|
+
"description": "Structural kind of the new unit, which must be one the genre allows at that position of the tree."
|
|
21750
|
+
},
|
|
21751
|
+
{
|
|
21752
|
+
"name": "name",
|
|
21753
|
+
"type": "string",
|
|
21754
|
+
"required": true,
|
|
21755
|
+
"description": "Structure name used to manage the tree, such as 场景 2 · 找上门; it is not the heading the finished piece shows."
|
|
21756
|
+
},
|
|
21757
|
+
{
|
|
21758
|
+
"name": "heading",
|
|
21759
|
+
"type": "string",
|
|
21760
|
+
"required": false,
|
|
21761
|
+
"description": "Heading the finished piece shows for this unit; leave it out when the genre wants the structure name kept out of the output."
|
|
21762
|
+
},
|
|
21763
|
+
{
|
|
21764
|
+
"name": "parent",
|
|
21765
|
+
"type": "string",
|
|
21766
|
+
"required": false,
|
|
21767
|
+
"description": "Unit this one should sit under, by number or identifier; null or omitted places it at the top level."
|
|
21768
|
+
},
|
|
21769
|
+
{
|
|
21770
|
+
"name": "after",
|
|
21771
|
+
"type": "string",
|
|
21772
|
+
"required": false,
|
|
21773
|
+
"description": "Sibling this one should follow, by number or identifier; null or omitted appends it at the end of its level."
|
|
21774
|
+
},
|
|
21775
|
+
{
|
|
21776
|
+
"name": "synopsis",
|
|
21777
|
+
"type": "string",
|
|
21778
|
+
"required": false,
|
|
21779
|
+
"description": "What this unit has to accomplish, written as the story so far for the units after it; a unit with a synopsis is outlined rather than merely planned."
|
|
21780
|
+
},
|
|
21781
|
+
{
|
|
21782
|
+
"name": "points",
|
|
21783
|
+
"type": "array",
|
|
21784
|
+
"itemType": "string",
|
|
21785
|
+
"required": false,
|
|
21786
|
+
"description": "Points this unit hits, called beats, arguments or selling points depending on the genre."
|
|
21787
|
+
},
|
|
21788
|
+
{
|
|
21789
|
+
"name": "brief_points",
|
|
21790
|
+
"type": "array",
|
|
21791
|
+
"itemType": "string",
|
|
21792
|
+
"required": false,
|
|
21793
|
+
"description": "Keys of the brief points this unit claims, which is how the coverage check follows each requirement to a unit."
|
|
21794
|
+
}
|
|
21795
|
+
]
|
|
21796
|
+
}
|
|
21797
|
+
},
|
|
21798
|
+
{
|
|
21799
|
+
"resource": "studio.works.drafts.units",
|
|
21800
|
+
"method": "batchCreate",
|
|
21801
|
+
"summary": "Add a whole outline of units at once",
|
|
21802
|
+
"description": "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.",
|
|
21803
|
+
"http": "POST",
|
|
21804
|
+
"path": "/studio/v1/works/{work}/drafts/{draft}/units:batchCreate",
|
|
21805
|
+
"streaming": "no",
|
|
21806
|
+
"pagination": false,
|
|
21807
|
+
"pathParams": [
|
|
21808
|
+
{
|
|
21809
|
+
"name": "work",
|
|
21810
|
+
"sdkName": "work",
|
|
21811
|
+
"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."
|
|
21812
|
+
},
|
|
21813
|
+
{
|
|
21814
|
+
"name": "draft",
|
|
21815
|
+
"sdkName": "draft",
|
|
21816
|
+
"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."
|
|
21817
|
+
}
|
|
21818
|
+
],
|
|
21819
|
+
"query": [],
|
|
21820
|
+
"body": {
|
|
21821
|
+
"required": true,
|
|
21822
|
+
"fields": [
|
|
21823
|
+
{
|
|
21824
|
+
"name": "expected_revision",
|
|
21825
|
+
"type": "integer",
|
|
21826
|
+
"required": false,
|
|
21827
|
+
"description": "Draft revision the caller read; a mismatch is refused, which is what stops a repeated batch from duplicating a structure."
|
|
21828
|
+
},
|
|
21829
|
+
{
|
|
21830
|
+
"name": "parent",
|
|
21831
|
+
"type": "string",
|
|
21832
|
+
"required": false,
|
|
21833
|
+
"description": "Unit the whole outline should hang under, by number or identifier; null or omitted builds it at the top level."
|
|
21834
|
+
},
|
|
21835
|
+
{
|
|
21836
|
+
"name": "outline",
|
|
21837
|
+
"type": "array",
|
|
21838
|
+
"itemType": "object",
|
|
21839
|
+
"required": true,
|
|
21840
|
+
"description": "Units to create in order, with children nested inside their parent; the nesting becomes the parent chain of the created units."
|
|
21841
|
+
}
|
|
21842
|
+
]
|
|
21843
|
+
}
|
|
21844
|
+
},
|
|
21845
|
+
{
|
|
21846
|
+
"resource": "studio.works.drafts.units",
|
|
21847
|
+
"method": "batchUpdate",
|
|
21848
|
+
"summary": "Write intents for many units in one call",
|
|
21849
|
+
"description": "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.",
|
|
21850
|
+
"http": "POST",
|
|
21851
|
+
"path": "/studio/v1/works/{work}/drafts/{draft}/units:batchUpdate",
|
|
21852
|
+
"streaming": "no",
|
|
21853
|
+
"pagination": false,
|
|
21854
|
+
"pathParams": [
|
|
21855
|
+
{
|
|
21856
|
+
"name": "work",
|
|
21857
|
+
"sdkName": "work",
|
|
21858
|
+
"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."
|
|
21859
|
+
},
|
|
21860
|
+
{
|
|
21861
|
+
"name": "draft",
|
|
21862
|
+
"sdkName": "draft",
|
|
21863
|
+
"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."
|
|
21864
|
+
}
|
|
21865
|
+
],
|
|
21866
|
+
"query": [],
|
|
21867
|
+
"body": {
|
|
21868
|
+
"required": true,
|
|
21869
|
+
"fields": [
|
|
21870
|
+
{
|
|
21871
|
+
"name": "expected_revision",
|
|
21872
|
+
"type": "integer",
|
|
21873
|
+
"required": false,
|
|
21874
|
+
"description": "Draft revision the caller read; a mismatch is refused, so a plan written from a stale outline cannot land."
|
|
21875
|
+
},
|
|
21876
|
+
{
|
|
21877
|
+
"name": "updates",
|
|
21878
|
+
"type": "array",
|
|
21879
|
+
"itemType": "object",
|
|
21880
|
+
"required": true,
|
|
21881
|
+
"description": "Units to change, each naming the unit and the intent fields it takes; a body is never part of a batch, because bodies are written one unit at a time."
|
|
21882
|
+
}
|
|
21883
|
+
]
|
|
21884
|
+
}
|
|
21885
|
+
},
|
|
21886
|
+
{
|
|
21887
|
+
"resource": "studio.works.drafts",
|
|
21888
|
+
"method": "rebase",
|
|
21889
|
+
"summary": "Confirm a draft already follows its source",
|
|
21890
|
+
"description": "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.",
|
|
21891
|
+
"http": "POST",
|
|
21892
|
+
"path": "/studio/v1/works/{work}/drafts/{draft}:rebase",
|
|
21893
|
+
"streaming": "no",
|
|
21894
|
+
"pagination": false,
|
|
21895
|
+
"pathParams": [
|
|
21896
|
+
{
|
|
21897
|
+
"name": "work",
|
|
21898
|
+
"sdkName": "work",
|
|
21899
|
+
"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."
|
|
21900
|
+
},
|
|
21901
|
+
{
|
|
21902
|
+
"name": "draft",
|
|
21903
|
+
"sdkName": "draft",
|
|
21904
|
+
"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."
|
|
21905
|
+
}
|
|
21906
|
+
],
|
|
21907
|
+
"query": [],
|
|
21908
|
+
"body": {
|
|
21909
|
+
"required": false,
|
|
21910
|
+
"fields": [
|
|
21911
|
+
{
|
|
21912
|
+
"name": "expectedRevision",
|
|
21913
|
+
"type": "integer",
|
|
21914
|
+
"required": false,
|
|
21915
|
+
"description": "Draft revision the caller read; a mismatch is refused rather than confirming a draft that changed under the caller."
|
|
21916
|
+
}
|
|
21917
|
+
]
|
|
21918
|
+
}
|
|
21919
|
+
},
|
|
21920
|
+
{
|
|
21921
|
+
"resource": "studio.works.units",
|
|
21922
|
+
"method": "retrieve",
|
|
21923
|
+
"summary": "Read one unit with its blocks and Markdown",
|
|
21924
|
+
"description": "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.",
|
|
21925
|
+
"http": "GET",
|
|
21926
|
+
"path": "/studio/v1/works/{work}/units/{unit}",
|
|
21927
|
+
"streaming": "no",
|
|
21928
|
+
"pagination": false,
|
|
21929
|
+
"pathParams": [
|
|
21930
|
+
{
|
|
21931
|
+
"name": "work",
|
|
21932
|
+
"sdkName": "work",
|
|
21933
|
+
"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."
|
|
21934
|
+
},
|
|
21935
|
+
{
|
|
21936
|
+
"name": "unit",
|
|
21937
|
+
"sdkName": "unit",
|
|
21938
|
+
"description": "Unit being addressed, written as its in-work number such as 12, as #12, or as its unt_ identifier; the number never changes when the unit is moved."
|
|
21939
|
+
}
|
|
21940
|
+
],
|
|
21941
|
+
"query": [
|
|
21942
|
+
{
|
|
21943
|
+
"name": "view",
|
|
21944
|
+
"type": "string",
|
|
21945
|
+
"enum": [
|
|
21946
|
+
"full",
|
|
21947
|
+
"basic"
|
|
21948
|
+
],
|
|
21949
|
+
"required": false,
|
|
21950
|
+
"description": "How much of the unit to return: full includes the blocks and the Markdown body, and basic returns the unit row without the body for a cheap status check."
|
|
21951
|
+
}
|
|
21952
|
+
]
|
|
21953
|
+
},
|
|
21954
|
+
{
|
|
21955
|
+
"resource": "studio.works.units",
|
|
21956
|
+
"method": "update",
|
|
21957
|
+
"summary": "Change a unit intent, body or status",
|
|
21958
|
+
"description": "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.",
|
|
21959
|
+
"http": "PATCH",
|
|
21960
|
+
"path": "/studio/v1/works/{work}/units/{unit}",
|
|
21961
|
+
"streaming": "no",
|
|
21962
|
+
"pagination": false,
|
|
21963
|
+
"pathParams": [
|
|
21964
|
+
{
|
|
21965
|
+
"name": "work",
|
|
21966
|
+
"sdkName": "work",
|
|
21967
|
+
"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."
|
|
21968
|
+
},
|
|
21969
|
+
{
|
|
21970
|
+
"name": "unit",
|
|
21971
|
+
"sdkName": "unit",
|
|
21972
|
+
"description": "Unit being addressed, written as its in-work number such as 12, as #12, or as its unt_ identifier; the number never changes when the unit is moved."
|
|
21973
|
+
}
|
|
21974
|
+
],
|
|
21975
|
+
"query": [],
|
|
21976
|
+
"body": {
|
|
21977
|
+
"required": true,
|
|
21978
|
+
"fields": [
|
|
21979
|
+
{
|
|
21980
|
+
"name": "expected_revision",
|
|
21981
|
+
"type": "integer",
|
|
21982
|
+
"required": false,
|
|
21983
|
+
"description": "Unit revision the caller read; required whenever body is sent, because replacing the whole text would discard blocks another writer inserted since."
|
|
21984
|
+
},
|
|
21985
|
+
{
|
|
21986
|
+
"name": "name",
|
|
21987
|
+
"type": "string",
|
|
21988
|
+
"required": false,
|
|
21989
|
+
"description": "New structure name of the unit, used by people and agents to manage the tree."
|
|
21990
|
+
},
|
|
21991
|
+
{
|
|
21992
|
+
"name": "heading",
|
|
21993
|
+
"type": "string",
|
|
21994
|
+
"required": false,
|
|
21995
|
+
"description": "New heading the finished piece shows; send an empty value to remove the heading entirely."
|
|
21996
|
+
},
|
|
21997
|
+
{
|
|
21998
|
+
"name": "synopsis",
|
|
21999
|
+
"type": "string",
|
|
22000
|
+
"required": false,
|
|
22001
|
+
"description": "New synopsis of what this unit has to accomplish; changing it advances the intent revision, which leaves any existing body behind it."
|
|
22002
|
+
},
|
|
22003
|
+
{
|
|
22004
|
+
"name": "points",
|
|
22005
|
+
"type": "array",
|
|
22006
|
+
"itemType": "string",
|
|
22007
|
+
"required": false,
|
|
22008
|
+
"description": "Complete set of points this unit hits, replacing the previous ones."
|
|
22009
|
+
},
|
|
22010
|
+
{
|
|
22011
|
+
"name": "brief_points",
|
|
22012
|
+
"type": "array",
|
|
22013
|
+
"itemType": "string",
|
|
22014
|
+
"required": false,
|
|
22015
|
+
"description": "Complete set of brief point keys this unit claims, replacing the previous claims so coverage follows the latest intent."
|
|
22016
|
+
},
|
|
22017
|
+
{
|
|
22018
|
+
"name": "body",
|
|
22019
|
+
"type": "string",
|
|
22020
|
+
"required": false,
|
|
22021
|
+
"description": "Whole body as Markdown with block anchors kept inline; the blocks named by anchors keep their identifiers, and paragraphs without an anchor become new blocks."
|
|
22022
|
+
},
|
|
22023
|
+
{
|
|
22024
|
+
"name": "synopsis_from_body",
|
|
22025
|
+
"type": "boolean",
|
|
22026
|
+
"required": false,
|
|
22027
|
+
"description": "Set to true together with body to record that the synopsis now describes what the text actually says rather than what was planned."
|
|
22028
|
+
},
|
|
22029
|
+
{
|
|
22030
|
+
"name": "status",
|
|
22031
|
+
"type": "string",
|
|
22032
|
+
"enum": [
|
|
22033
|
+
"idea",
|
|
22034
|
+
"outlined",
|
|
22035
|
+
"writing",
|
|
22036
|
+
"drafted",
|
|
22037
|
+
"revised",
|
|
22038
|
+
"final"
|
|
22039
|
+
],
|
|
22040
|
+
"required": false,
|
|
22041
|
+
"description": "Unit status to set; moving to final declares the unit done, and changing it afterwards needs the confirmation flag."
|
|
22042
|
+
},
|
|
22043
|
+
{
|
|
22044
|
+
"name": "links",
|
|
22045
|
+
"type": "object",
|
|
22046
|
+
"required": false,
|
|
22047
|
+
"description": "Reference entries to tie to a unit or untie from it, beyond the mentions detected in its text."
|
|
22048
|
+
},
|
|
22049
|
+
{
|
|
22050
|
+
"name": "seconds",
|
|
22051
|
+
"type": "integer",
|
|
22052
|
+
"required": false,
|
|
22053
|
+
"description": "Duration of this unit in seconds for a video genre, which its length checks measure; send null to clear it."
|
|
22054
|
+
},
|
|
22055
|
+
{
|
|
22056
|
+
"name": "confirm_final_edit",
|
|
22057
|
+
"type": "boolean",
|
|
22058
|
+
"required": false,
|
|
22059
|
+
"description": "Confirmation that a unit marked final may change; send it only when the person themselves asked for the change, never to make a refusal go away."
|
|
22060
|
+
}
|
|
22061
|
+
]
|
|
22062
|
+
}
|
|
22063
|
+
},
|
|
22064
|
+
{
|
|
22065
|
+
"resource": "studio.works.units.blocks",
|
|
22066
|
+
"method": "patch",
|
|
22067
|
+
"summary": "Edit a unit body block by block",
|
|
22068
|
+
"description": "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.",
|
|
22069
|
+
"http": "POST",
|
|
22070
|
+
"path": "/studio/v1/works/{work}/units/{unit}/blocks:patch",
|
|
22071
|
+
"streaming": "no",
|
|
22072
|
+
"pagination": false,
|
|
22073
|
+
"pathParams": [
|
|
22074
|
+
{
|
|
22075
|
+
"name": "work",
|
|
22076
|
+
"sdkName": "work",
|
|
22077
|
+
"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."
|
|
22078
|
+
},
|
|
22079
|
+
{
|
|
22080
|
+
"name": "unit",
|
|
22081
|
+
"sdkName": "unit",
|
|
22082
|
+
"description": "Unit being addressed, written as its in-work number such as 12, as #12, or as its unt_ identifier; the number never changes when the unit is moved."
|
|
22083
|
+
}
|
|
22084
|
+
],
|
|
22085
|
+
"query": [],
|
|
22086
|
+
"body": {
|
|
22087
|
+
"required": true,
|
|
22088
|
+
"fields": [
|
|
22089
|
+
{
|
|
22090
|
+
"name": "expected_revision",
|
|
22091
|
+
"type": "integer",
|
|
22092
|
+
"required": true,
|
|
22093
|
+
"description": "Unit revision the caller read; it is required, and when a block this call touches changed after it the whole call is refused rather than applied partially."
|
|
22094
|
+
},
|
|
22095
|
+
{
|
|
22096
|
+
"name": "ops",
|
|
22097
|
+
"type": "array",
|
|
22098
|
+
"itemType": "object",
|
|
22099
|
+
"required": true,
|
|
22100
|
+
"description": "Operations in the order they apply; each one addresses existing blocks by identifier, so an order that deletes before replacing what it deleted is refused."
|
|
22101
|
+
},
|
|
22102
|
+
{
|
|
22103
|
+
"name": "confirm_final_edit",
|
|
22104
|
+
"type": "boolean",
|
|
22105
|
+
"required": false,
|
|
22106
|
+
"description": "Confirmation that a unit marked final may change; send it only when the person themselves asked for the change."
|
|
22107
|
+
}
|
|
22108
|
+
]
|
|
22109
|
+
}
|
|
22110
|
+
},
|
|
22111
|
+
{
|
|
22112
|
+
"resource": "studio.works.units",
|
|
22113
|
+
"method": "retrieveContext",
|
|
22114
|
+
"summary": "Read the context pack for writing one unit",
|
|
22115
|
+
"description": "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.",
|
|
22116
|
+
"http": "GET",
|
|
22117
|
+
"path": "/studio/v1/works/{work}/units/{unit}/context",
|
|
22118
|
+
"streaming": "no",
|
|
22119
|
+
"pagination": false,
|
|
22120
|
+
"pathParams": [
|
|
22121
|
+
{
|
|
22122
|
+
"name": "work",
|
|
22123
|
+
"sdkName": "work",
|
|
22124
|
+
"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."
|
|
22125
|
+
},
|
|
22126
|
+
{
|
|
22127
|
+
"name": "unit",
|
|
22128
|
+
"sdkName": "unit",
|
|
22129
|
+
"description": "Unit being addressed, written as its in-work number such as 12, as #12, or as its unt_ identifier; the number never changes when the unit is moved."
|
|
22130
|
+
}
|
|
22131
|
+
],
|
|
22132
|
+
"query": [
|
|
22133
|
+
{
|
|
22134
|
+
"name": "budget_tokens",
|
|
22135
|
+
"type": "integer",
|
|
22136
|
+
"required": false,
|
|
22137
|
+
"description": "Token budget the pack must fit into; the reference and previous sections are cut to fit it while the genre, brief and unit sections always arrive whole. Omit it to use the service default."
|
|
22138
|
+
}
|
|
22139
|
+
]
|
|
22140
|
+
},
|
|
22141
|
+
{
|
|
22142
|
+
"resource": "studio.works.units",
|
|
22143
|
+
"method": "move",
|
|
22144
|
+
"summary": "Move a unit to another place in the tree",
|
|
22145
|
+
"description": "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.",
|
|
22146
|
+
"http": "POST",
|
|
22147
|
+
"path": "/studio/v1/works/{work}/units/{unit}:move",
|
|
22148
|
+
"streaming": "no",
|
|
22149
|
+
"pagination": false,
|
|
22150
|
+
"pathParams": [
|
|
22151
|
+
{
|
|
22152
|
+
"name": "work",
|
|
22153
|
+
"sdkName": "work",
|
|
22154
|
+
"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."
|
|
22155
|
+
},
|
|
22156
|
+
{
|
|
22157
|
+
"name": "unit",
|
|
22158
|
+
"sdkName": "unit",
|
|
22159
|
+
"description": "Unit being addressed, written as its in-work number such as 12, as #12, or as its unt_ identifier; the number never changes when the unit is moved."
|
|
22160
|
+
}
|
|
22161
|
+
],
|
|
22162
|
+
"query": [],
|
|
22163
|
+
"body": {
|
|
22164
|
+
"required": true,
|
|
22165
|
+
"fields": [
|
|
22166
|
+
{
|
|
22167
|
+
"name": "expected_revision",
|
|
22168
|
+
"type": "integer",
|
|
22169
|
+
"required": false,
|
|
22170
|
+
"description": "Unit revision the caller read; a mismatch is refused so a move never lands on a unit someone else just changed."
|
|
22171
|
+
},
|
|
22172
|
+
{
|
|
22173
|
+
"name": "parent",
|
|
22174
|
+
"type": "string",
|
|
22175
|
+
"required": false,
|
|
22176
|
+
"description": "Unit to move this one under, by number or identifier; null or omitted moves it to the top level."
|
|
22177
|
+
},
|
|
22178
|
+
{
|
|
22179
|
+
"name": "after",
|
|
22180
|
+
"type": "string",
|
|
22181
|
+
"required": false,
|
|
22182
|
+
"description": "Sibling to place this unit after, by number or identifier; null or omitted puts it first among its new siblings."
|
|
22183
|
+
}
|
|
22184
|
+
]
|
|
22185
|
+
}
|
|
22186
|
+
},
|
|
22187
|
+
{
|
|
22188
|
+
"resource": "studio.works",
|
|
22189
|
+
"method": "resolve",
|
|
22190
|
+
"summary": "Resolve a loose reference to a work, draft or unit",
|
|
22191
|
+
"description": "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.",
|
|
22192
|
+
"http": "GET",
|
|
22193
|
+
"path": "/studio/v1/works:resolve",
|
|
22194
|
+
"streaming": "no",
|
|
22195
|
+
"pagination": false,
|
|
22196
|
+
"pathParams": [],
|
|
22197
|
+
"query": [
|
|
22198
|
+
{
|
|
22199
|
+
"name": "ref",
|
|
22200
|
+
"type": "string",
|
|
22201
|
+
"required": true,
|
|
22202
|
+
"description": "What the caller said, such as a work slug, a work title, a draft key with a unit number like novel#12, or a title with a typo; it is matched loosely and never has to be an identifier."
|
|
22203
|
+
}
|
|
22204
|
+
]
|
|
22205
|
+
},
|
|
20062
22206
|
{
|
|
20063
22207
|
"resource": "ticket.activity",
|
|
20064
22208
|
"method": "retrieve",
|