@deepraxis/sdk 0.1.1-dev.e5db771 → 0.1.1-dev.e9377c2
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 +53 -1
- package/README.md +2 -2
- package/dist/generated/index.d.ts +2 -2
- package/dist/generated/index.js +1 -1
- package/dist/generated/sdk.gen.d.ts +132 -25
- package/dist/generated/sdk.gen.js +283 -24
- package/dist/generated/types.gen.d.ts +1444 -33
- package/dist/operations.generated.d.ts +482 -17
- package/dist/operations.generated.js +574 -17
- package/dist/resources.generated.d.ts +41 -8
- package/dist/resources.generated.js +34 -0
- package/package.json +2 -2
|
@@ -135,7 +135,7 @@ export const operations = [
|
|
|
135
135
|
"type": "array",
|
|
136
136
|
"itemType": "object",
|
|
137
137
|
"required": false,
|
|
138
|
-
"description": "Platform resources and services this service agent's codemode may reach, as one list of typed bindings. Only kind=service accepts a nonempty list; general and personal agents return 400. There are two kinds. A resource binding names one resource with id and access: database (id db_..., read_only or read_write), vector_store (id vs_..., read_only or read_write), file (id file- plus 24 letters or digits, as the File API returns it; read_only), media_library (any id without ':' or whitespace, read_only or read_write), model (a model catalog id, invoke), workflow and script (id <namespace>/<name>, invoke). A service binding opens a whole service and carries only enabled: search or
|
|
138
|
+
"description": "Platform resources and services this service agent's codemode may reach, as one list of typed bindings. Only kind=service accepts a nonempty list; general and personal agents return 400. There are two kinds. A resource binding names one resource with id and access: database (id db_..., read_only or read_write), vector_store (id vs_..., read_only or read_write), file (id file- plus 24 letters or digits, as the File API returns it; read_only), media_library (any id without ':' or whitespace, read_only or read_write), model (a model catalog id, invoke), workflow and script (id <namespace>/<name>, invoke). A service binding opens a whole service and carries only enabled: search, browser, ticket, crm, canvas or cut. There is no binding by default; enabling one opens every public method of that service. At most 20 bindings per type, no repeated type and id, and each service type at most once. A session is authorized by the agent version it runs: newly added bindings apply only to new sessions, and a version saved with apply=false changes no access until it is applied. Applying a version that disables, removes or downgrades a binding revokes it immediately in running sessions on older versions. A resource that is not bound returns 404, a service that is not opened returns 403, and a write to a resource bound read_only returns 403 BINDING_READ_ONLY. Unknown types, fields on the wrong kind (id, access or instructions on a service binding), wrong access and malformed ids return 400. The former databases, vector_stores and files fields are removed and return 400. Omit on create for no bindings. Saving checks added or changed database, vector_store, media_library and file bindings in the organization: unknown or deleted ids return 400. If an owner is unavailable or takes more than 3 seconds, saving succeeds with verified=false for the affected bindings. Unchanged bindings keep their previous verification result and are not rechecked. workflow and script ids are not verified at save time."
|
|
139
139
|
},
|
|
140
140
|
{
|
|
141
141
|
"name": "kind",
|
|
@@ -5987,7 +5987,7 @@ export const operations = [
|
|
|
5987
5987
|
"allow"
|
|
5988
5988
|
],
|
|
5989
5989
|
"required": false,
|
|
5990
|
-
"description": "skip
|
|
5990
|
+
"description": "skip skips while a previous run is still active; allow permits overlapping runs. When omitted, schedule triggers use skip and webhook triggers use allow."
|
|
5991
5991
|
},
|
|
5992
5992
|
{
|
|
5993
5993
|
"name": "catchup_window_seconds",
|
|
@@ -6161,7 +6161,7 @@ export const operations = [
|
|
|
6161
6161
|
"allow"
|
|
6162
6162
|
],
|
|
6163
6163
|
"required": false,
|
|
6164
|
-
"description": "skip
|
|
6164
|
+
"description": "skip skips while a previous run is still active; allow permits overlapping runs. When omitted, schedule triggers use skip and webhook triggers use allow."
|
|
6165
6165
|
},
|
|
6166
6166
|
{
|
|
6167
6167
|
"name": "catchup_window_seconds",
|
|
@@ -10027,6 +10027,12 @@ export const operations = [
|
|
|
10027
10027
|
"type": "integer",
|
|
10028
10028
|
"required": false,
|
|
10029
10029
|
"description": "Committed project revision from retrieve, state, timeline or execute; increases after each successful write."
|
|
10030
|
+
},
|
|
10031
|
+
{
|
|
10032
|
+
"name": "loudness",
|
|
10033
|
+
"type": "object",
|
|
10034
|
+
"required": false,
|
|
10035
|
+
"description": "Optional loudness normalization target; normalization adds analysis and rendering work."
|
|
10030
10036
|
}
|
|
10031
10037
|
]
|
|
10032
10038
|
}
|
|
@@ -10250,7 +10256,7 @@ export const operations = [
|
|
|
10250
10256
|
"resource": "cut.projects",
|
|
10251
10257
|
"method": "execute",
|
|
10252
10258
|
"summary": "Execute editing script",
|
|
10253
|
-
"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### Script function reference\n\nFunctions are synchronous globals; do not import them. `project` is the current project ID. TrackId and ClipId are strings returned by AddTrack and Insert or read from GetTimeline. JoinId is the string returned by Join or read from GetTimeline().joins. Reads see earlier writes in the same script.\n\n```ts\nGetTimeline(o?: { from?: number; to?: number; tracks?: TrackId[] }): TimelineView;\nGetItem(id: ClipId): ItemView;\nFindItems<T>(visit: (item: ItemView, ctx: { track: TrackView; index: number }) => T | undefined): T[];\nGetMedia(ref: MediaRef): MediaInfo;\nGetTranscript(ref: MediaRef, o?: { from?: number; to?: number }): Word[];\nGetAnalysis(ref: MediaRef, kind: AnalysisKind): Segment[];\nListTransitions(): TransitionInfo[];\nListAnimations(): { id: string; version: number; phase: \"in\" | \"out\" | \"loop\"; target: \"any\" | \"text\"; name: string; description: string; defaultDuration: number; params: { name: string; type: string; values?: string[]; default?: string | number; min?: number; max?: number; description: string }[] }[];\nListFonts(): { family: string; weights: number[]; scripts: (\"latin\"|\"cjk\")[]; source: \"bundled\"|\"catalog\" }[];\nInsert(track: TrackId, item: ItemInit, o?: { ripple?: boolean }): ClipId;\nUpdate(id: ClipId, patch: ItemPatchView): void;\nSetSpeed(id: ClipId, rate: number, o: { keep: \"source\" | \"duration\"; ripple?: boolean }): { length: number; sourceOut: number };\nDelete(id: ClipId, o?: { ripple?: boolean }): void;\nJoin(left: ClipId, right: ClipId, o: { length?: number; effect: TransitionInput }): JoinId;\nUpdateJoin(id: JoinId, patch: { length?: number; effect?: TransitionInput }): void;\nDeleteJoin(id: JoinId): void;\nSplit(id: ClipId, at: number): ClipId;\nTrim(id: ClipId, edge: \"in\" | \"out\", delta: number, o?: { ripple?: boolean }): void;\nMove(id: ClipId, start: number, track?: TrackId): void;\nRippleDeleteRange(from: number, to: number, tracks?: TrackId[]): void;\nAddTrack(kind: \"video\" | \"audio\" | \"caption\", init?: { name?: string }, index?: number): TrackId;\nUpdateTrack(id: TrackId, patch: TrackPatch): void;\nDeleteTrack(id: TrackId): void;\nSetSettings(patch: Partial<ProjectSettingsView>): void;\nAddCaptionsFromTranscript(track: TrackId, source: ClipId, o?: { style?: Partial<CaptionStyle>; maxChars?: number }): ClipId[];\nSetMarker(at: number, label: string): string;\nPrint(...values: unknown[]): void;\nPreview(at: number[]): void;\n```\n\n| Functions | Behavior and arguments |\n| --- | --- |\n| GetTimeline, GetItem | Read compact item views: id, track, type, start, end, length, optional media, playback, sourceIn/sourceOut, text and offline reason. GetTimeline returns duration, tracks (id, kind, name, index, locked, items), and joins (id, track, left, right, length in seconds, normalized effect). from/to and tracks narrow the items and joins; joins are selected by their overlap window. |\n| ListTransitions | Discover the shared validation catalog: each entry contains kind (effect ID), name, description and params. Each parameter has name, type (enum/number/integer), default, description, enum values or numeric min/max. Use the returned kind and parameter names inside effect. |\n| ListAnimations | Discover animation presets. Each entry has id, version, phase (`in`, `out`, `loop`), target (`any`, `text`), name, description, defaultDuration (seconds), and params (name, type, values/default/min/max/description as applicable). A slot use is `{preset, duration?, ...params}`; duration is seconds. |\n| FindItems | Visit items with their track and index; return undefined to omit an item, any other value to collect it. |\n| GetMedia | Read metadata for `{libraryId, assetId}` in a bound library: kind, dimensions, fps, hasAudio and durationUs when available. durationUs is microseconds. |\n| GetTranscript, GetAnalysis | Read available transcript words or silence/filler/scenes segments. Transcript filter from/to is seconds; returned word and segment from/to values are source microseconds (divide by 1,000,000 for editing). Words contain text and optional speaker/filler; segments may include label/confidence. Request analysis first if unavailable. |\n| Insert, Update, Delete | Insert returns the new clip ID; Update changes supplied fields; Delete removes the clip. Optional ripple on Insert/Delete closes or opens space on the track. |\n| SetSpeed | Change video/audio rate in 0.25–4; keep is required. source preserves consumed source and changes length, duration preserves output length. Returns actual length and sourceOut in seconds. Optional ripple explicitly shifts same-track followers when keeping source; otherwise overlaps are rejected. |\n| Join, UpdateJoin, DeleteJoin | Join creates an overlap between two butt-adjacent visual clips on the same track and returns its ID. length defaults to 0.5 seconds; effect is required. The right clip and all same-track followers move left by length, shortening that track and potentially the project. UpdateJoin moves those followers by the difference in length; omitted fields are preserved. DeleteJoin moves them right to restore the butt cut. Other tracks stay in place. |\n| Split, Trim, Move | Split at a timeline position and return the new right-hand clip ID. Trim changes the in or out edge by delta seconds. Move sets the timeline start and optionally a new track. |\n| RippleDeleteRange | Delete a timeline interval and close its gap on the specified tracks, or all unlocked tracks when omitted. |\n| AddTrack, UpdateTrack, DeleteTrack | Add video/audio/caption tracks; index selects layer order (0 is top). TrackPatch supports name, locked, hidden, muted, gainDb and style as appropriate to track kind. |\n| SetSettings | Supply any of width/height (pixels), fps (frames per second), background (color). |\n| AddCaptionsFromTranscript | Create captions from an audio/video clip's kept words. Optional maxChars is 1–1000, default 16; style updates the caption track. Returns caption IDs. |\n| SetMarker | Add a label at a timeline time and return its ID. |\n| Print, Preview | Print appends text to prints. Preview requests up to eight times total per execute and puts images in the result's frames. Each url is an inline PNG data URL, not an HTTP image link. Decode the base64 payload to save an image. Codemode returns at most four images per call; request at most four times there. |\n\n#### Joins between clips\n\nEndpoints may be video, image, text, color or shape; audio and caption are rejected. Require 0 < length < each endpoint's length. Each clip allows at most one incoming and one outgoing join; their summed lengths cannot exceed its length. Three-input overlaps, nonadjacent endpoints and cross-track joins are rejected with OPS_REJECTED. Read the rejection's code and message, shorten or remove conflicting joins, and retry the saved edit.\n\nTransitionInput is an object with kind plus the parameters returned by ListTransitions; omitted parameters use catalog defaults. Unknown kinds and invalid parameters return INVALID_TRANSITION_PARAM with available parameters. Effects: dissolve; dip color black/white default black; push and wipe direction left/right/up/down default left; wipe softness 0–1 default 0; iris centerX/centerY 0–1 default 0.5; blinds integer count 2–64 default 8 and orientation vertical/horizontal default vertical; blur radius 0–100 pixels at 1080-pixel frame height default 24; zoom direction in/out default in, amount 0.1–3 default 1, blur 0–1 default 0.5; clock direction clockwise/counterclockwise default clockwise, startAngle 0–360 degrees default 0 (twelve o'clock), softness 0–1 default 0; flash color white/black default white, intensity 0–1 default 1. Zoom blur uses up to eight radial samples per shot and is slower on server rendering. Join options and UpdateJoin patches accept only length and effect. Effect updates replace the effect object and apply defaults for omitted parameters.\n\nMinimal example on an existing visual track with adjacent clips left and right: `Print(ListTransitions()); const j = Join(left, right, {length: 0.5, effect: {kind: \"dissolve\"}}); Print(GetTimeline().joins); Preview([GetItem(right).start + 0.25]);` Use `UpdateJoin(j, {length: 0.8})` to adjust it in a later edit or `DeleteJoin(j)` to restore the cut. Preview uses server-rendered frames and includes joins. Per-clip transitionIn/transitionOut remain separate entrance/exit effects.\n\n#### Insert fields (ItemInit)\n\nEvery item requires `type` and `start`. Times used for editing are seconds and snap to the project frame rate: start, length, sourceIn, fadeIn/fadeOut, transition length, keyframe at, reveal delay/stagger/duration. Keyframe and reveal times are relative to the clip start. Video/audio may omit length to use the remaining source duration; other types require length.\n\n| type | Required fields beyond type/start | Optional fields |\n| --- | --- | --- |\n| video | media | length, sourceIn, playback, volumeDb, transform, fit, animate, animation, transitionIn, transitionOut |\n| image | media, length | transform, fit, animate, animation, transitionIn, transitionOut |\n| text | text, length | style, transform, reveal, animate, animation, transitionIn, transitionOut |\n| color | color, length | transform, fill, animate, animation, transitionIn, transitionOut |\n| shape | shape, length, width, height, fill | radius, stroke, transform, animate, animation, transitionIn, transitionOut |\n| audio | media | length, sourceIn, playback, volumeDb, fadeIn, fadeOut |\n| caption | text, length | — |\n\nVideo tracks accept video/image/text/color/shape; audio and caption tracks accept their corresponding type. Media is `{libraryId: string, assetId: string}` from a bound library. sourceIn defaults to 0, volumeDb to 0 dB, audio fades to 0 seconds. fit defaults to contain: contain fits the whole image, cover fills and crops, fill stretches, none keeps native dimensions.\n\n| Field | Value |\n| --- | --- |\n| transform | Partial `{x, y, scale, rotation, opacity, crop, blur}`. x/y are normalized canvas center coordinates (default 0.5); scale 1 is fitted size; rotation is degrees (default 0); opacity is 0–1 (default 1). crop is `{top,right,bottom,left}`. blur is 0–100 pixels at 1080-pixel frame height. |\n| style | Partial `{fontFamily, fontSize, fontWeight, color, fill, stroke, strokes, shadows, glow, background, align, maxWidth, position, margin}`. fill accepts a color or linear/radial gradient across the entire text bounding box. strokes draw outside to inside; at most 4, width 0–40. shadows accepts at most 4 `{color,x,y,blur}` entries; blur is 0–100. glow is `{color,radius,strength}` with radius 0–100 and strength 0–1. All dimensions use pixels at 1080 frame height and scale with the text. Glow and large shadow blur increase render time. Invalid colors or ranges return actionable INVALID_STYLE errors. `ListFonts()` discovers family, available weights, scripts and bundled/catalog source. Text and captions share the style fields; caption style additionally supports highlightColor and maxLines: 2. |\n| animate | An object keyed by x, y, scale, rotation, opacity or blur. Each value is an array of `{at: number, value: number, ease?: Ease}` sorted by at with distinct frame-snapped times. Values hold before the first and after the last keyframe, overriding the static transform. |\n| animation | `{in?: AnimationUse, out?: AnimationUse, loop?: AnimationUse}` on visual clips. Each use is `{preset: string, duration?: number, ...params}`; duration and parameter units follow `ListAnimations()`. Presets replace existing animate and reveal when applied. Update accepts `animation: null` to clear the preset and its generated effects. |\n| Ease | linear, in, out, inOut, `{bezier: [x1,y1,x2,y2]}` or `{spring: {stiffness, damping, mass?}}`. Easing shapes the segment arriving at that keyframe; springs may overshoot. |\n| reveal | `{by, delay?: number, stagger: number, duration: number, from: {y?, opacity?, scale?, blur?}, ease?: Ease}`. by selects char, word or line. Unit k starts at delay + k * stagger and takes duration seconds to reach its resting state; from.y is a fraction of font size. |\n| fill | A color string (#RRGGBB or #RRGGBBAA), `{linear: {angle, stops: [{at,color}, ...]}}` or `{radial: {stops: [{at,color}, ...]}}`. Stop positions are 0–1; angle is degrees, 0 left to right. On color clips, fill replaces color when supplied. |\n| shape, width, height, radius, stroke | shape is rect or ellipse. width/height are fractions of canvas width/height before scaling. radius rounds rect corners in pixels at 1080-pixel frame height. stroke is `{color: string, width: number}`. |\n| transitionIn, transitionOut | `{kind, length: number}` at the clip's beginning/end. length is seconds. fade changes opacity; dissolve blends; push_left/push_right move horizontally; wipe_left reveals horizontally. |\n\n#### Update fields (ItemPatchView)\n\nAll fields are optional; use only fields relevant to the item's type. Supported fields: start, length, sourceIn, playback, volumeDb, transform, fit, text, style, color, fadeIn, fadeOut, animate, reveal, animation, fill, stroke, shape, width, height, radius, transitionIn, transitionOut. Values and units match Insert. Set animation to null to clear the preset; set animate or reveal to null to remove that effect. Applying a preset replaces existing animate/reveal. Do not set animation together with animate or reveal in one Insert/Update call. Omit a field to preserve it.\n\n#### Animation presets\n\nDiscover the catalog with `ListAnimations()`. Its entries contain id, version, phase (`in`, `out`, `loop`), target (`any` or `text`), name, description, defaultDuration in seconds, and params. Slots may combine one in, one out and one loop preset. A loop runs only in the interval between in and out; if the same property is animated by multiple slots, loop occupies only that middle interval. Text-target presets are entrances. Their duration controls the rhythm per character/word/line, not the total reveal time. Out and loop presets apply to the whole clip, not per text unit.\n\nPresets replace the clip's existing animate and reveal when applied. The source preset is retained, so changing clip length or transform automatically regenerates its keyframes/reveal. If a clip becomes shorter, in/out durations shrink proportionally; when it grows, the requested durations are restored. Split keeps in on the left, out on the right, and loop on both. Writing animate or reveal directly detaches the preset; setting animation to null clears both source and generated effects. Insert/Update reject a call that supplies animation together with animate or reveal.\n\nErrors: UNKNOWN_ANIMATION (unknown preset), INVALID_ANIMATION_PARAM (invalid slot/parameter or frame/keyframe limit), ANIMATION_TOO_LONG (in+out exceed clip length), ANIMATION_TARGET_MISMATCH (text-only preset on a non-text or preset on non-visual clip), ANIMATION_PHASE_MISMATCH (preset in the wrong slot). Each animated property is limited to 600 keyframes; loop duration must be at least 4 frames. `ANIMATION_TOO_LONG` is avoided during later length changes by proportional fitting.\n\n#### Speed, reverse and freeze\n\nVideo/audio Insert and Update accept playback as `{kind: \"rate\", rate: number, direction: \"forward\" | \"reverse\", audio: \"preservePitch\" | \"resample\" | \"mute\"}` or `{kind: \"freeze\"}`. Rate is finite and inclusive 0.25–4. Omitted playback defaults to 1× forward with preservePitch; supply the complete rate object when changing playback. preservePitch keeps pitch, resample changes pitch with speed, mute removes audio. Reverse requires explicit audio: \"mute\"; preservePitch/resample are rejected with UNSUPPORTED_PLAYBACK rather than silently muted. Freeze holds sourceIn and is silent. GetItem/GetTimeline echo playback and the source interval in seconds; sourceOut is exclusive even for reverse and equals sourceIn for freeze.\n\nUpdate of playback keeps output length unless length is also supplied. SetSpeed preserves direction/audio, rejects frozen and non-video/audio clips, and requires keep: \"source\" or \"duration\". keep: \"source\" computes round(consumed source / new rate × fps) frames, falling back to floor if rounding would exceed the source end; the returned length/sourceOut are actual frame-rounded seconds. keep: \"duration\" keeps output length and changes source consumption. Length conflicts fail with OVERLAP; move/shorten the conflicting clip, keep duration, or explicitly use ripple: true to shift following clips on the same track. Source overflow fails with OUT_OF_SOURCE; rate limits fail with RATE_OUT_OF_RANGE. Unknown playback fields and SetSpeed options are rejected with UNKNOWN_FIELD; options only accept keep and boolean ripple.\n\nExample for an existing four-second video/audio clip id: `Print(SetSpeed(id, 0.5, {keep: \"source\"})); Print(SetSpeed(id, 2, {keep: \"source\"}));` returns lengths 8 then 2, keeping the same source interval. Reverse: `Update(id, {playback: {kind: \"rate\", rate: 1, direction: \"reverse\", audio: \"mute\"}})`. Freeze: `Update(id, {playback: {kind: \"freeze\"}})`. Ensure enough source remains for the chosen length/rate. Browser reverse playback currently displays a placeholder; server-rendered Preview/frames and exports support reverse normally. Speed-adjusted audio is generated asynchronously after the edit transaction commits; exports wait for that audio before rendering.\n\n#### Script names versus HTTP response names\n\nUse camelCase inside scripts, including nested objects. HTTP request/response JSON outside script source uses snake_case. Map media.library_id → media.libraryId, media.asset_id → media.assetId, source_in → sourceIn, volume_db → volumeDb, fade_in/fade_out → fadeIn/fadeOut, transition_in/transition_out → transitionIn/transitionOut, font_family/font_size/font_weight/max_width → fontFamily/fontSize/fontWeight/maxWidth, gain_db → gainDb, highlight_color/max_lines → highlightColor/maxLines. Fields such as animate, reveal, fill, stroke, at and length retain their spelling. GetTimeline/GetItem already return camelCase compact views; the expanded retrieveTimeline HTTP response is not an Insert object.\n\nUnrecognized script fields fail with OPS_REJECTED and rejection code UNKNOWN_FIELD; snake_case mistakes suggest the corresponding camelCase name. The error message lists each rejection's #opIndex, code and reason. Correct the named fields and retry the saved edit; do not assume an ignored field applied an effect.\n",
|
|
10259
|
+
"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### Script function reference\n\nFunctions are synchronous globals; do not import them. `project` is the current project ID. TrackId and ClipId are strings returned by AddTrack and Insert or read from GetTimeline. JoinId is the string returned by Join or read from GetTimeline().joins. Reads see earlier writes in the same script.\n\n```ts\nGetTimeline(o?: { from?: number; to?: number; tracks?: TrackId[] }): TimelineView;\nGetItem(id: ClipId): ItemView;\nFindItems<T>(visit: (item: ItemView, ctx: { track: TrackView; index: number }) => T | undefined): T[];\nGetMedia(ref: MediaRef): MediaInfo;\nGetTranscript(ref: MediaRef, o?: { from?: number; to?: number }): Word[];\nGetAnalysis(ref: MediaRef, kind: AnalysisKind): Segment[];\nListTransitions(): TransitionInfo[];\nListEffects(): EffectInfo[];\nListTextStyles(): TextStylePreset[];\nListTextTemplates(): TextTemplate[];\nListAnimations(): { id: string; version: number; phase: \"in\" | \"out\" | \"loop\"; target: \"any\" | \"text\"; name: string; description: string; defaultDuration: number; params: { name: string; type: string; values?: string[]; default?: string | number; min?: number; max?: number; description: string }[] }[];\nListFonts(): { family: string; weights: number[]; scripts: (\"latin\"|\"cjk\")[]; source: \"bundled\"|\"catalog\" }[];\nInsert(track: TrackId, item: ItemInit, o?: { ripple?: boolean }): ClipId;\nUpdate(id: ClipId, patch: ItemPatchView): void;\nSetSpeed(id: ClipId, rate: number | { curve: { at: number; rate: number; ease?: Ease }[]; audio?: \"mute\" | \"resample\" }, o: { keep: \"source\" | \"duration\"; ripple?: boolean }): { length: number; sourceOut: number };\nDelete(id: ClipId, o?: { ripple?: boolean }): void;\nJoin(left: ClipId, right: ClipId, o: { length?: number; effect: TransitionInput }): JoinId;\nUpdateJoin(id: JoinId, patch: { length?: number; effect?: TransitionInput }): void;\nDeleteJoin(id: JoinId): void;\nSplit(id: ClipId, at: number): ClipId;\nTrim(id: ClipId, edge: \"in\" | \"out\", delta: number, o?: { ripple?: boolean }): void;\nMove(id: ClipId, start: number, track?: TrackId): void;\nRippleDeleteRange(from: number, to: number, tracks?: TrackId[]): void;\nAddTrack(kind: \"video\" | \"audio\" | \"caption\", init?: { name?: string; role?: \"voice\" | \"music\" | \"sfx\" }, index?: number): TrackId;\nUpdateTrack(id: TrackId, patch: TrackPatch): void;\nDeleteTrack(id: TrackId): void;\nSetSettings(patch: Partial<ProjectSettingsView>): void;\nAddCaptionsFromTranscript(track: TrackId, source: ClipId, o?: { style?: Partial<CaptionStyle> & { preset?: string }; maxChars?: number }): ClipId[];\nInsertTemplate(track: TrackId, o: { template: string; start: number; slots?: Record<string, string> }): ClipId[];\nAlignCaptions(trackId: TrackId, script: string, options?: { resplit?: boolean; maxChars?: number }): { replaced: number; added: number; deleted: number };\nImportCaptions(trackId: TrackId, text: string, o?: { format?: \"srt\" | \"vtt\"; offset?: number }): ClipId[];\nExportCaptions(trackId: TrackId, o: { format: \"srt\" | \"vtt\" }): string;\nSetMarker(at: number, label: string): string;\nPrint(...values: unknown[]): void;\nPreview(at: number[]): void;\n```\n\n| Functions | Behavior and arguments |\n| --- | --- |\n| GetTimeline, GetItem | Read compact item views: id, track, type, start, end, length, optional media, playback, sourceIn/sourceOut, text, effects, blend and offline reason. GetTimeline returns duration, tracks (id, kind, name, index, locked, items), and joins (id, track, left, right, length in seconds, normalized effect). from/to and tracks narrow the items and joins; joins are selected by their overlap window. |\n| ListEffects | Discover the shared visual-effect catalog with parameter types, ranges, defaults, cost and bounds. Effects are supported only on visual clips. |\n| ListTransitions | Discover the shared validation catalog: each entry contains kind (effect ID), name, description and params. Each parameter has name, type (enum/number/integer), default, description, enum values or numeric min/max. Use the returned kind and parameter names inside effect. |\n| ListAnimations | Discover animation presets. Each entry has id, version, phase (`in`, `out`, `loop`), target (`any`, `text`), name, description, defaultDuration (seconds), and params (name, type, values/default/min/max/description as applicable). A slot use is `{preset, duration?, ...params}`; duration is seconds. |\n| FindItems | Visit items with their track and index; return undefined to omit an item, any other value to collect it. |\n| GetMedia | Read metadata for `{libraryId, assetId}` in a bound library: kind, dimensions, fps, hasAudio and durationUs when available. durationUs is microseconds. |\n| GetTranscript, GetAnalysis | Read available transcript words or silence/filler/scenes segments. Transcript filter from/to is seconds; returned word and segment from/to values are source microseconds (divide by 1,000,000 for editing). Words contain text and optional speaker/filler; segments may include label/confidence. Request analysis first if unavailable. |\n| Insert, Update, Delete | Insert returns the new clip ID; Update changes supplied fields; Delete removes the clip. Optional ripple on Insert/Delete closes or opens space on the track. |\n| SetSpeed | Change video/audio rate in 0.25–4; keep is required. A `{curve: [{at, rate, ease?}, ...], audio?: \"mute\" | \"resample\"}` rate is forward-only and holds output duration fixed; pitch preservation is unavailable. Scalar rates: source preserves consumed source and changes length; duration preserves output length. Returns actual length and sourceOut in seconds. Optional ripple explicitly shifts same-track followers when keeping source; otherwise overlaps are rejected. |\n| Join, UpdateJoin, DeleteJoin | Join creates an overlap between two butt-adjacent visual clips on the same track and returns its ID. length defaults to 0.5 seconds; effect is required. The right clip and all same-track followers move left by length, shortening that track and potentially the project. UpdateJoin moves those followers by the difference in length; omitted fields are preserved. DeleteJoin moves them right to restore the butt cut. Other tracks stay in place. |\n| Split, Trim, Move | Split at a timeline position and return the new right-hand clip ID. Trim changes the in or out edge by delta seconds. Move sets the timeline start and optionally a new track. |\n| RippleDeleteRange | Delete a timeline interval and close its gap on the specified tracks, or all unlocked tracks when omitted. |\n| AddTrack, UpdateTrack, DeleteTrack | Add video/audio/caption tracks; index selects layer order (0 is top). TrackPatch supports name, locked, hidden, muted, gainDb, audio role (`voice`, `music`, `sfx`) and style as appropriate to track kind. |\n| SetSettings | Supply any of width/height (pixels), fps (frames per second), background (color). |\n| AddCaptionsFromTranscript | Create captions from an audio/video clip's kept words. Optional maxChars is 1–1000, default 16; style updates the caption track. Returns caption IDs. |\n| ImportCaptions, ExportCaptions | Import SRT or WebVTT text onto a caption track and export it back. format is inferred from a WEBVTT header when omitted. offset shifts imported cues in seconds. Import rejects more than 100000 bytes, more than 5000 cues, malformed or overlapping file cues with INVALID_CAPTION_FILE; overlap with existing timeline clips uses the normal OVERLAP rejection. Export sorts by timeline start and writes millisecond timecodes. |\n| SetMarker | Add a label at a timeline time and return its ID. |\n| Print, Preview | Print appends text to prints. Preview requests up to eight times total per execute and puts images in the result's frames. Each url is an inline PNG data URL, not an HTTP image link. Decode the base64 payload to save an image. Codemode returns at most four images per call; request at most four times there. |\n\n#### Joins between clips\n\nEndpoints may be video, image, text, color or shape; audio and caption are rejected. Require 0 < length < each endpoint's length. Each clip allows at most one incoming and one outgoing join; their summed lengths cannot exceed its length. Three-input overlaps, nonadjacent endpoints and cross-track joins are rejected with OPS_REJECTED. Read the rejection's code and message, shorten or remove conflicting joins, and retry the saved edit.\n\nTransitionInput is an object with kind plus the parameters returned by ListTransitions; omitted parameters use catalog defaults. Unknown kinds and invalid parameters return INVALID_TRANSITION_PARAM with available parameters. Effects: dissolve; dip color black/white default black; push and wipe direction left/right/up/down default left; wipe softness 0–1 default 0; iris centerX/centerY 0–1 default 0.5; blinds integer count 2–64 default 8 and orientation vertical/horizontal default vertical; blur radius 0–100 pixels at 1080-pixel frame height default 24; zoom direction in/out default in, amount 0.1–3 default 1, blur 0–1 default 0.5; clock direction clockwise/counterclockwise default clockwise, startAngle 0–360 degrees default 0 (twelve o'clock), softness 0–1 default 0; flash color white/black default white, intensity 0–1 default 1. Zoom blur uses up to eight radial samples per shot and is slower on server rendering. Join options and UpdateJoin patches accept only length and effect. Effect updates replace the effect object and apply defaults for omitted parameters.\n\nMinimal example on an existing visual track with adjacent clips left and right: `Print(ListTransitions()); const j = Join(left, right, {length: 0.5, effect: {kind: \"dissolve\"}}); Print(GetTimeline().joins); Preview([GetItem(right).start + 0.25]);` Use `UpdateJoin(j, {length: 0.8})` to adjust it in a later edit or `DeleteJoin(j)` to restore the cut. Preview uses server-rendered frames and includes joins. Per-clip transitionIn/transitionOut remain separate entrance/exit effects.\n\n#### Insert fields (ItemInit)\n\nEvery item requires `type` and `start`. Times used for editing are seconds and snap to the project frame rate: start, length, sourceIn, fadeIn/fadeOut, transition length, keyframe at, reveal delay/stagger/duration. Keyframe and reveal times are relative to the clip start. Video/audio may omit length to use the remaining source duration; other types require length.\n\n| type | Required fields beyond type/start | Optional fields |\n| --- | --- | --- |\n| video | media | length, sourceIn, playback, volumeDb, transform, fit, blend, animate, animation, effects, mask, transitionIn, transitionOut |\n| image | media, length | transform, fit, blend, animate, animation, effects, mask, transitionIn, transitionOut |\n| text | text, length | style, transform, blend, reveal, animate, animation, effects, mask, transitionIn, transitionOut |\n| color | color, length | transform, fill, blend, animate, animation, effects, mask, transitionIn, transitionOut |\n| shape | shape, length, width, height, fill | radius, stroke, transform, blend, animate, animation, effects, mask, transitionIn, transitionOut |\n| audio | media | length, sourceIn, playback, volumeDb, gain, fadeIn, fadeOut, duck |\n| caption | text, length | — |\n\nVisual Insert/Update also accepts `blend`: `normal` (default), `screen`, `multiply`, `overlay`, or `add`; set it to null in Update to clear it. During a Join overlap, both inputs render with normal blending. Video tracks accept video/image/text/color/shape; audio and caption tracks accept their corresponding type. Media is `{libraryId: string, assetId: string}` from a bound library. sourceIn defaults to 0, volumeDb to 0 dB, audio fades to 0 seconds. fit defaults to contain: contain fits the whole image, cover fills and crops, fill stretches, none keeps native dimensions.\n\n| Field | Value |\n| --- | --- |\n| transform | Partial `{x, y, scale, rotation, opacity, crop, blur}`. x/y are normalized canvas center coordinates (default 0.5); scale 1 is fitted size; rotation is degrees (default 0); opacity is 0–1 (default 1). crop is `{top,right,bottom,left}`. blur is 0–100 pixels at 1080-pixel frame height. |\n| style | Partial `{fontFamily, fontSize, fontWeight, color, fill, stroke, strokes, shadows, glow, background, align, maxWidth, position, margin}`. fill accepts a color or linear/radial gradient across the entire text bounding box. strokes draw outside to inside; at most 4, width 0–40. shadows accepts at most 4 `{color,x,y,blur}` entries; blur is 0–100. glow is `{color,radius,strength}` with radius 0–100 and strength 0–1. All dimensions use pixels at 1080 frame height and scale with the text. Glow and large shadow blur increase render time. Invalid colors or ranges return actionable INVALID_STYLE errors. `ListFonts()` discovers family, available weights, scripts and bundled/catalog source. Text and captions share the style fields; caption style additionally supports highlightColor and maxLines: 2. |\n| animate | An object keyed by x, y, scale, rotation, opacity or blur. Each value is an array of `{at: number, value: number, ease?: Ease}` sorted by at with distinct frame-snapped times. Values hold before the first and after the last keyframe, overriding the static transform. |\n| animation | `{in?: AnimationUse, out?: AnimationUse, loop?: AnimationUse}` on visual clips. Each use is `{preset: string, duration?: number, ...params}`; duration and parameter units follow `ListAnimations()`. Presets replace existing animate and reveal when applied. Update accepts `animation: null` to clear the preset and its generated effects. |\n| Ease | linear, in, out, inOut, `{bezier: [x1,y1,x2,y2]}` or `{spring: {stiffness, damping, mass?}}`. Easing shapes the segment arriving at that keyframe; springs may overshoot. |\n| reveal | `{by, delay?: number, stagger: number, duration: number, from: {y?, opacity?, scale?, blur?}, ease?: Ease}`. by selects char, word or line. Unit k starts at delay + k * stagger and takes duration seconds to reach its resting state; from.y is a fraction of font size. |\n| fill | A color string (#RRGGBB or #RRGGBBAA), `{linear: {angle, stops: [{at,color}, ...]}}` or `{radial: {stops: [{at,color}, ...]}}`. Stop positions are 0–1; angle is degrees, 0 left to right. On color clips, fill replaces color when supplied. |\n| shape, width, height, radius, stroke | shape is rect or ellipse. width/height are fractions of canvas width/height before scaling. radius rounds rect corners in pixels at 1080-pixel frame height. stroke is `{color: string, width: number}`. |\n| transitionIn, transitionOut | `{kind, length: number}` at the clip's beginning/end. length is seconds. fade changes opacity; dissolve blends; push_left/push_right move horizontally; wipe_left reveals horizontally. |\n\n#### Visual effects\n\n`effects` is an ordered stack of at most 8 catalog entries. Call `ListEffects()` to discover the catalog; unknown kinds return `UNKNOWN_EFFECT`, invalid names/values/keyframes return `INVALID_EFFECT_PARAM`, and stacks over 8 return `TOO_MANY_EFFECTS`. Entries include blur, color adjustment, vignette, film grain, chromatic aberration, pixelate, glitch, shake, flash, light leak and built-in `lut` looks; user `.cube` LUTs are not supported. `speed` is cycles per second. Effects run on CPU during export and increase render time. Parameters are discovered with ListEffects(). Catalog entries expose their own parameters through ListEffects(), including `blur` (`radius` 0–100, default 24) and `color_adjust`: `brightness`, `contrast`, `temperature`, and `tint` each range -1–1 (default 0), while `saturation` ranges 0–2 (default 1). Disabled entries are skipped. `color_adjust` uses an SDR-only Rec.709 adjustment matrix with no color management.\n\nNumeric and integer effect parameters accept `keyframes: {parameter: [{at, value, ease?}, ...]}`; times are seconds relative to the clip, snap to frames like `animate`, must be strictly increasing and within clip duration, and values follow that parameter's catalog range. Omitted parameters use catalog defaults. Trim and Split preserve effect keyframes with the same clip-local behavior as `animate`. There are no custom shaders.\n\n`blend` applies to the completed visual layer after its content, effects and `transform.blur`; `add` maps to Skia Plus. The default `normal` path adds no blend layer. During Join overlaps, blending is forced to normal because each input is composed on transparency.\n\n#### Update fields (ItemPatchView)\n\nAll fields are optional; use only fields relevant to the item's type. Supported fields: start, length, sourceIn, playback, volumeDb, transform, fit, text, style, color, fadeIn, fadeOut, duck, animate, reveal, animation, fill, stroke, shape, width, height, radius, transitionIn, transitionOut, effects, blend, mask, gain. Values and units match Insert; set effects or blend to null to clear them. Set animation to null to clear the preset; set animate or reveal to null to remove that effect. Applying a preset replaces existing animate/reveal. Do not set animation together with animate or reveal in one Insert/Update call. Omit a field to preserve it.\n\n#### Animation presets\n\nDiscover the catalog with `ListAnimations()`. Its entries contain id, version, phase (`in`, `out`, `loop`), target (`any` or `text`), name, description, defaultDuration in seconds, and params. Slots may combine one in, one out and one loop preset. A loop runs only in the interval between in and out; if the same property is animated by multiple slots, loop occupies only that middle interval. Text-target presets are entrances. Their duration controls the rhythm per character/word/line, not the total reveal time. Out and loop presets apply to the whole clip, not per text unit.\n\nPresets replace the clip's existing animate and reveal when applied. The source preset is retained, so changing clip length or transform automatically regenerates its keyframes/reveal. If a clip becomes shorter, in/out durations shrink proportionally; when it grows, the requested durations are restored. Split keeps in on the left, out on the right, and loop on both. Writing animate or reveal directly detaches the preset; setting animation to null clears both source and generated effects. Insert/Update reject a call that supplies animation together with animate or reveal.\n\nErrors: UNKNOWN_ANIMATION (unknown preset), INVALID_ANIMATION_PARAM (invalid slot/parameter or frame/keyframe limit), ANIMATION_TOO_LONG (in+out exceed clip length), ANIMATION_TARGET_MISMATCH (text-only preset on a non-text or preset on non-visual clip), ANIMATION_PHASE_MISMATCH (preset in the wrong slot). Each animated property is limited to 600 keyframes; loop duration must be at least 4 frames. `ANIMATION_TOO_LONG` is avoided during later length changes by proportional fitting.\n\n#### Speed, reverse and freeze\n\nVideo/audio Insert and Update accept playback as `{kind: \"rate\", rate: number, direction: \"forward\" | \"reverse\", audio: \"preservePitch\" | \"resample\" | \"mute\"}` or `{kind: \"freeze\"}`. Rate is finite and inclusive 0.25–4. Omitted playback defaults to 1× forward with preservePitch; supply the complete rate object when changing playback. preservePitch keeps pitch, resample changes pitch with speed, mute removes audio. Reverse requires explicit audio: \"mute\"; preservePitch/resample are rejected with UNSUPPORTED_PLAYBACK rather than silently muted. Freeze holds sourceIn and is silent. GetItem/GetTimeline echo playback and the source interval in seconds; sourceOut is exclusive even for reverse and equals sourceIn for freeze.\n\nUpdate of playback keeps output length unless length is also supplied. SetSpeed preserves direction/audio, rejects frozen and non-video/audio clips, and requires keep: \"source\" or \"duration\". keep: \"source\" computes round(consumed source / new rate × fps) frames, falling back to floor if rounding would exceed the source end; the returned length/sourceOut are actual frame-rounded seconds. keep: \"duration\" keeps output length and changes source consumption. Length conflicts fail with OVERLAP; move/shorten the conflicting clip, keep duration, or explicitly use ripple: true to shift following clips on the same track. Source overflow fails with OUT_OF_SOURCE; rate limits fail with RATE_OUT_OF_RANGE. Unknown playback fields and SetSpeed options are rejected with UNKNOWN_FIELD; options only accept keep and boolean ripple.\n\nExample for an existing four-second video/audio clip id: `Print(SetSpeed(id, 0.5, {keep: \"source\"})); Print(SetSpeed(id, 2, {keep: \"source\"}));` returns lengths 8 then 2, keeping the same source interval. Reverse: `Update(id, {playback: {kind: \"rate\", rate: 1, direction: \"reverse\", audio: \"mute\"}})`. Freeze: `Update(id, {playback: {kind: \"freeze\"}})`. Ensure enough source remains for the chosen length/rate. Browser reverse playback currently displays a placeholder; server-rendered Preview/frames and exports support reverse normally. Speed-adjusted audio is generated asynchronously after the edit transaction commits; exports wait for that audio before rendering.\n\n#### Script names versus HTTP response names\n\nUse camelCase inside scripts, including nested objects. HTTP request/response JSON outside script source uses snake_case. Map media.library_id → media.libraryId, media.asset_id → media.assetId, source_in → sourceIn, volume_db → volumeDb, fade_in/fade_out → fadeIn/fadeOut, transition_in/transition_out → transitionIn/transitionOut, font_family/font_size/font_weight/max_width → fontFamily/fontSize/fontWeight/maxWidth, gain_db → gainDb, highlight_color/max_lines → highlightColor/maxLines. Fields such as animate, reveal, fill, stroke, at and length retain their spelling. GetTimeline/GetItem already return camelCase compact views; the expanded retrieveTimeline HTTP response is not an Insert object.\n\nUnrecognized script fields fail with OPS_REJECTED and rejection code UNKNOWN_FIELD; snake_case mistakes suggest the corresponding camelCase name. The error message lists each rejection's #opIndex, code and reason. Correct the named fields and retry the saved edit; do not assume an ignored field applied an effect.\n",
|
|
10254
10260
|
"http": "POST",
|
|
10255
10261
|
"path": "/cut/v1/projects/{project_id}:execute",
|
|
10256
10262
|
"streaming": "no",
|
|
@@ -11492,7 +11498,7 @@ export const operations = [
|
|
|
11492
11498
|
"resource": "file.uploads",
|
|
11493
11499
|
"method": "create",
|
|
11494
11500
|
"summary": "Create an upload",
|
|
11495
|
-
"description": "Start a multipart upload for a file larger than the 100000000-byte direct-upload limit. Supply the exact byte length, filename, MIME type and purpose. Unlike OpenAI, uploads accept at most
|
|
11501
|
+
"description": "Start a multipart upload for a file larger than the 100000000-byte direct-upload limit. Supply the exact byte length, filename, MIME type and purpose. Unlike OpenAI, uploads accept at most 20 GiB (21474836480 bytes) and only user_data, assistants and vision purposes. Send parts of at most 64000000 bytes; an unfinished upload waits for them for 7 days, so a client can create → send parts → query GET /file/v1/uploads/{upload_id} → resend only the missing parts → complete. Optional part_size fixes every part length and makes each numbered part retryable with identical bytes. expires_after applies to the resulting file (3600–7776000 seconds on this own face); without it the file persists until deleted.",
|
|
11496
11502
|
"http": "POST",
|
|
11497
11503
|
"path": "/file/v1/uploads",
|
|
11498
11504
|
"streaming": "no",
|
|
@@ -11506,7 +11512,7 @@ export const operations = [
|
|
|
11506
11512
|
"name": "bytes",
|
|
11507
11513
|
"type": "integer",
|
|
11508
11514
|
"required": true,
|
|
11509
|
-
"description": "Exact complete file length in bytes, from 1 through
|
|
11515
|
+
"description": "Exact complete file length in bytes, from 1 through 21474836480 (20 GiB); the sum of completed parts must match."
|
|
11510
11516
|
},
|
|
11511
11517
|
{
|
|
11512
11518
|
"name": "filename",
|
|
@@ -11550,7 +11556,7 @@ export const operations = [
|
|
|
11550
11556
|
"resource": "file.uploads",
|
|
11551
11557
|
"method": "createSigned",
|
|
11552
11558
|
"summary": "Create a one-time upload URL",
|
|
11553
|
-
"description": "Upload a local file of up to
|
|
11559
|
+
"description": "Upload a local file of up to 20 GiB from a coding agent without sending bytes through the model. Provide basename, exact byte count and MIME type. Up to 104857600 bytes, PUT the file to url with curl -T photo.png -H 'Content-Type: image/png' '<url>'; success returns 201 with the file object, and reuse returns 410 CAPABILITY_USED. Above that threshold, split the file into part_size chunks (default 64000000 bytes) and PUT each chunk to its numbered parts[].url in any order; an interrupted client GETs status_url to see the received parts and resends only what is missing, then POSTs complete_url without a body. Part PUTs return 200; completion returns 201 with the file object, including its state, or 400 if a part is missing. A processing file can be polled with files.retrieve until active. Identical part bytes may be retried; changed bytes at the same number return 400. Completion reuse returns 410 CAPABILITY_USED. Each PUT requires the exact signed Content-Length; single-PUT Content-Type must match content_type or be omitted. Expired, revoked, invalid, wrong-action or cross-organization URLs return 404. URL lifetime defaults to 900 seconds for single PUT or 604800 (7 days) for multipart, at most 604800; all multipart URLs, including status_url, share an expiry. Multipart creation reserves storage quota. Issuance requires the same unscoped credential as direct file creation. Each issuance creates a new upload and is not idempotent. Example body: {\"filename\":\"photo.png\",\"bytes\":2048,\"content_type\":\"image/png\"}.",
|
|
11554
11560
|
"http": "POST",
|
|
11555
11561
|
"path": "/file/v1/uploads/signed",
|
|
11556
11562
|
"streaming": "no",
|
|
@@ -11570,7 +11576,7 @@ export const operations = [
|
|
|
11570
11576
|
"name": "bytes",
|
|
11571
11577
|
"type": "integer",
|
|
11572
11578
|
"required": true,
|
|
11573
|
-
"description": "Exact local file size in bytes, from 1 through
|
|
11579
|
+
"description": "Exact local file size in bytes, from 1 through 21474836480 (20 GiB). Up to 104857600 bytes returns one PUT URL; larger files return numbered part URLs, a completion URL and a status URL. Every PUT requires its exact signed Content-Length."
|
|
11574
11580
|
},
|
|
11575
11581
|
{
|
|
11576
11582
|
"name": "content_type",
|
|
@@ -11593,7 +11599,7 @@ export const operations = [
|
|
|
11593
11599
|
"name": "expires_in",
|
|
11594
11600
|
"type": "integer",
|
|
11595
11601
|
"required": false,
|
|
11596
|
-
"description": "Lifetime in seconds, from 1 through 604800: defaults to 900 for single PUT or
|
|
11602
|
+
"description": "Lifetime in seconds, from 1 through 604800: defaults to 900 for single PUT or 604800 (7 days) for multipart. All part URLs, the status URL and the completion URL share one expiry. This does not set the resulting file's lifetime."
|
|
11597
11603
|
},
|
|
11598
11604
|
{
|
|
11599
11605
|
"name": "part_size",
|
|
@@ -11604,6 +11610,24 @@ export const operations = [
|
|
|
11604
11610
|
]
|
|
11605
11611
|
}
|
|
11606
11612
|
},
|
|
11613
|
+
{
|
|
11614
|
+
"resource": "file.uploads",
|
|
11615
|
+
"method": "retrieve",
|
|
11616
|
+
"summary": "Retrieve an upload",
|
|
11617
|
+
"description": "Read the state of an unfinished upload — its status, declared bytes, fixed part_size and the parts it already holds (received_parts, each with part_number, bytes and sha256). After a break or a failed part, call it to resend only the missing numbers, then complete. A cancelled or expired upload is refused; a completed one returns its file. A missing or other-organization upload returns 404.",
|
|
11618
|
+
"http": "GET",
|
|
11619
|
+
"path": "/file/v1/uploads/{upload_id}",
|
|
11620
|
+
"streaming": "no",
|
|
11621
|
+
"pagination": false,
|
|
11622
|
+
"pathParams": [
|
|
11623
|
+
{
|
|
11624
|
+
"name": "upload_id",
|
|
11625
|
+
"sdkName": "upload_id",
|
|
11626
|
+
"description": "Upload identifier returned by create; the upload must belong to your organization."
|
|
11627
|
+
}
|
|
11628
|
+
],
|
|
11629
|
+
"query": []
|
|
11630
|
+
},
|
|
11607
11631
|
{
|
|
11608
11632
|
"resource": "file.uploads",
|
|
11609
11633
|
"method": "cancel",
|
|
@@ -11626,7 +11650,7 @@ export const operations = [
|
|
|
11626
11650
|
"resource": "file.uploads",
|
|
11627
11651
|
"method": "complete",
|
|
11628
11652
|
"summary": "Complete an upload",
|
|
11629
|
-
"description": "Assemble the uploaded parts into a file. Supply upload_id from create and part_ids from addPart in file byte order; their sizes must total the declared bytes. Optional md5 verifies the assembled content. Retrying identical part_ids and normalized md5 returns the same result; different inputs return 409. Unlike OpenAI, completed can contain a file still processing (status uploaded). Poll files.retrieve using file.id until status processed (own face state active); error, expiry or 404 means processing failed and the file cannot be used.",
|
|
11653
|
+
"description": "Assemble the uploaded parts into a file. Supply upload_id from create and part_ids from addPart in file byte order; their sizes must total the declared bytes. When parts were lost, query GET /file/v1/uploads/{upload_id} and resend them before completing. Optional md5 verifies the assembled content. Retrying identical part_ids and normalized md5 returns the same result; different inputs return 409. Unlike OpenAI, completed can contain a file still processing (status uploaded). Poll files.retrieve using file.id until status processed (own face state active); error, expiry or 404 means processing failed and the file cannot be used.",
|
|
11630
11654
|
"http": "POST",
|
|
11631
11655
|
"path": "/file/v1/uploads/{upload_id}/complete",
|
|
11632
11656
|
"streaming": "no",
|
|
@@ -11662,7 +11686,7 @@ export const operations = [
|
|
|
11662
11686
|
"resource": "file.uploads.parts",
|
|
11663
11687
|
"method": "create",
|
|
11664
11688
|
"summary": "Add an upload part",
|
|
11665
|
-
"description": "Send one nonempty part as the multipart data field, at most 64000000 bytes. Parts may arrive concurrently in any order. Use upload_id from create. For a fixed-size upload, supply part_number starting at 1 and exactly part_size bytes except for the final remainder; retry the same number with identical bytes to recover its part ID. Without part_size, each request creates a new part and part_number is ignored. Save the returned part IDs for complete.",
|
|
11689
|
+
"description": "Send one nonempty part as the multipart data field, at most 64000000 bytes. Parts may arrive concurrently in any order. Use upload_id from create. For a fixed-size upload, supply part_number starting at 1 and exactly part_size bytes except for the final remainder; retry the same number with identical bytes to recover its part ID, and query GET /file/v1/uploads/{upload_id} to see which numbers already arrived. Without part_size, each request creates a new part and part_number is ignored. Save the returned part IDs for complete.",
|
|
11666
11690
|
"http": "POST",
|
|
11667
11691
|
"path": "/file/v1/uploads/{upload_id}/parts",
|
|
11668
11692
|
"streaming": "no",
|
|
@@ -12711,7 +12735,7 @@ export const operations = [
|
|
|
12711
12735
|
"resource": "media.libraries.assets",
|
|
12712
12736
|
"method": "create",
|
|
12713
12737
|
"summary": "Upload asset",
|
|
12714
|
-
"description": " For understanding, Media generates proxies for video sources of 25 MB or more and audio-only sources of 100 MB or more; originals remain available unchanged.
|
|
12738
|
+
"description": " For understanding, Media generates proxies for video sources of 25 MB or more or longer than 10 minutes, and for audio-only sources of 100 MB or more; originals remain available unchanged. Long videos are supported. When a video proxy is needed and is still above 95 MB after recompression, the source is reported as UNSUPPORTED with the limit in the failure message. Proxy preparation uses the organization’s metered sandbox resources.",
|
|
12715
12739
|
"http": "POST",
|
|
12716
12740
|
"path": "/media/v1/libraries/{library_id}/assets",
|
|
12717
12741
|
"streaming": "no",
|
|
@@ -12835,7 +12859,7 @@ export const operations = [
|
|
|
12835
12859
|
"resource": "media.libraries.assets.import",
|
|
12836
12860
|
"method": "create",
|
|
12837
12861
|
"summary": "Import file",
|
|
12838
|
-
"description": "Copy a File into an independent Media asset. New assets default to organization-private delivery (type=authenticated); explicitly set type=upload for public originals and derivatives. Omitting type on overwrite preserves the current type. Deleting the source File does not delete this copy. For understanding, Media generates proxies for video sources of 25 MB or more and audio-only sources of 100 MB or more; originals remain available unchanged.
|
|
12862
|
+
"description": "Copy a File into an independent Media asset. New assets default to organization-private delivery (type=authenticated); explicitly set type=upload for public originals and derivatives. Omitting type on overwrite preserves the current type. Deleting the source File does not delete this copy. For understanding, Media generates proxies for video sources of 25 MB or more or longer than 10 minutes, and for audio-only sources of 100 MB or more; originals remain available unchanged. Long videos are supported. When a video proxy is needed and is still above 95 MB after recompression, the source is reported as UNSUPPORTED with the limit in the failure message. Proxy preparation uses the organization’s metered sandbox resources.",
|
|
12839
12863
|
"http": "POST",
|
|
12840
12864
|
"path": "/media/v1/libraries/{library_id}/assets/import",
|
|
12841
12865
|
"streaming": "no",
|
|
@@ -13103,7 +13127,7 @@ export const operations = [
|
|
|
13103
13127
|
"resource": "media.libraries.assets.reprocess",
|
|
13104
13128
|
"method": "create",
|
|
13105
13129
|
"summary": "Reprocess asset",
|
|
13106
|
-
"description": " For understanding, Media generates proxies for video sources of 25 MB or more and audio-only sources of 100 MB or more; originals remain available unchanged.
|
|
13130
|
+
"description": " For understanding, Media generates proxies for video sources of 25 MB or more or longer than 10 minutes, and for audio-only sources of 100 MB or more; originals remain available unchanged. Long videos are supported. When a video proxy is needed and is still above 95 MB after recompression, the source is reported as UNSUPPORTED with the limit in the failure message. Proxy preparation uses the organization’s metered sandbox resources.",
|
|
13107
13131
|
"http": "POST",
|
|
13108
13132
|
"path": "/media/v1/libraries/{library_id}/assets/{asset_id}/reprocess",
|
|
13109
13133
|
"streaming": "no",
|
|
@@ -13202,7 +13226,7 @@ export const operations = [
|
|
|
13202
13226
|
"resource": "media.libraries.assets",
|
|
13203
13227
|
"method": "batch",
|
|
13204
13228
|
"summary": "Batch assets alias",
|
|
13205
|
-
"description": "Queue a frozen selection for tagging, untagging, context replacement, moving, deleting or reprocessing. IDs are limited to 1000; use an expression for larger selections, subject to the search scan budget. reprocess starts at most 30 assets per rolling minute per library. Only retryable failed steps and legacy source-size unsupported steps rerun. Omit kinds to inspect all recoverable steps, or supply kinds to narrow them. Other unsupported, permanent and completed steps remain unchanged; a permanent output blocks only its own step. Assets without any selected recoverable step count as failed items without starting understanding. Poll the returned job id; done counts accepted launches, not successful model inference. Staff Admin only permits reprocess and requires a nonblank reason. Example: {\"action\":\"reprocess\",\"selector\":{\"expression\":\"processing_state=failed AND failure_code=UPSTREAM_FAILED\"}}. For understanding, Media generates proxies for video sources of 25 MB or more and audio-only sources of 100 MB or more; originals remain available unchanged.
|
|
13229
|
+
"description": "Queue a frozen selection for tagging, untagging, context replacement, moving, deleting or reprocessing. IDs are limited to 1000; use an expression for larger selections, subject to the search scan budget. reprocess starts at most 30 assets per rolling minute per library. Only retryable failed steps and legacy source-size unsupported steps rerun. Omit kinds to inspect all recoverable steps, or supply kinds to narrow them. Other unsupported, permanent and completed steps remain unchanged; a permanent output blocks only its own step. Assets without any selected recoverable step count as failed items without starting understanding. Poll the returned job id; done counts accepted launches, not successful model inference. Staff Admin only permits reprocess and requires a nonblank reason. Example: {\"action\":\"reprocess\",\"selector\":{\"expression\":\"processing_state=failed AND failure_code=UPSTREAM_FAILED\"}}. For understanding, Media generates proxies for video sources of 25 MB or more or longer than 10 minutes, and for audio-only sources of 100 MB or more; originals remain available unchanged. Long videos are supported. When a video proxy is needed and is still above 95 MB after recompression, the source is reported as UNSUPPORTED with the limit in the failure message. Proxy preparation uses the organization’s metered sandbox resources.",
|
|
13206
13230
|
"http": "POST",
|
|
13207
13231
|
"path": "/media/v1/libraries/{library_id}/assets:batch",
|
|
13208
13232
|
"streaming": "no",
|
|
@@ -13237,7 +13261,7 @@ export const operations = [
|
|
|
13237
13261
|
"resource": "media.libraries.batches",
|
|
13238
13262
|
"method": "create",
|
|
13239
13263
|
"summary": "Create batch",
|
|
13240
|
-
"description": "Queue a frozen selection for tagging, untagging, context replacement, moving, deleting or reprocessing. IDs are limited to 1000; use an expression for larger selections, subject to the search scan budget. reprocess starts at most 30 assets per rolling minute per library. Only retryable failed steps and legacy source-size unsupported steps rerun. Omit kinds to inspect all recoverable steps, or supply kinds to narrow them. Other unsupported, permanent and completed steps remain unchanged; a permanent output blocks only its own step. Assets without any selected recoverable step count as failed items without starting understanding. Poll the returned job id; done counts accepted launches, not successful model inference. Staff Admin only permits reprocess and requires a nonblank reason. Example: {\"action\":\"reprocess\",\"selector\":{\"expression\":\"processing_state=failed AND failure_code=UPSTREAM_FAILED\"}}. For understanding, Media generates proxies for video sources of 25 MB or more and audio-only sources of 100 MB or more; originals remain available unchanged.
|
|
13264
|
+
"description": "Queue a frozen selection for tagging, untagging, context replacement, moving, deleting or reprocessing. IDs are limited to 1000; use an expression for larger selections, subject to the search scan budget. reprocess starts at most 30 assets per rolling minute per library. Only retryable failed steps and legacy source-size unsupported steps rerun. Omit kinds to inspect all recoverable steps, or supply kinds to narrow them. Other unsupported, permanent and completed steps remain unchanged; a permanent output blocks only its own step. Assets without any selected recoverable step count as failed items without starting understanding. Poll the returned job id; done counts accepted launches, not successful model inference. Staff Admin only permits reprocess and requires a nonblank reason. Example: {\"action\":\"reprocess\",\"selector\":{\"expression\":\"processing_state=failed AND failure_code=UPSTREAM_FAILED\"}}. For understanding, Media generates proxies for video sources of 25 MB or more or longer than 10 minutes, and for audio-only sources of 100 MB or more; originals remain available unchanged. Long videos are supported. When a video proxy is needed and is still above 95 MB after recompression, the source is reported as UNSUPPORTED with the limit in the failure message. Proxy preparation uses the organization’s metered sandbox resources.",
|
|
13241
13265
|
"http": "POST",
|
|
13242
13266
|
"path": "/media/v1/libraries/{library_id}/batches",
|
|
13243
13267
|
"streaming": "no",
|
|
@@ -16244,6 +16268,539 @@ export const operations = [
|
|
|
16244
16268
|
],
|
|
16245
16269
|
"query": []
|
|
16246
16270
|
},
|
|
16271
|
+
{
|
|
16272
|
+
"resource": "ontology.changesets",
|
|
16273
|
+
"method": "create",
|
|
16274
|
+
"summary": "Apply changeset",
|
|
16275
|
+
"description": "Apply a batch of node, relation and invalidation operations as one transaction, when a mirror has several records to write together and a partial write would leave the graph inconsistent. Every operation succeeds or none is applied. Send an Idempotency-Key header; the same key with the same content replays the first result, and the same key with different content is ONTOLOGY_CONFLICT.",
|
|
16276
|
+
"http": "POST",
|
|
16277
|
+
"path": "/ontology/v1/changesets",
|
|
16278
|
+
"streaming": "no",
|
|
16279
|
+
"pagination": false,
|
|
16280
|
+
"pathParams": [],
|
|
16281
|
+
"query": [],
|
|
16282
|
+
"body": {
|
|
16283
|
+
"required": true,
|
|
16284
|
+
"fields": [
|
|
16285
|
+
{
|
|
16286
|
+
"name": "at",
|
|
16287
|
+
"type": "string",
|
|
16288
|
+
"required": true,
|
|
16289
|
+
"description": "World time the batch describes, in ISO 8601 UTC; operations without their own time are dated by it."
|
|
16290
|
+
},
|
|
16291
|
+
{
|
|
16292
|
+
"name": "scope",
|
|
16293
|
+
"type": "string",
|
|
16294
|
+
"required": false,
|
|
16295
|
+
"description": "Scope the batch came from, normally the session id it was observed in; it is stored with the operations for later reading."
|
|
16296
|
+
},
|
|
16297
|
+
{
|
|
16298
|
+
"name": "ops",
|
|
16299
|
+
"type": "array",
|
|
16300
|
+
"itemType": "object",
|
|
16301
|
+
"required": true,
|
|
16302
|
+
"description": "At most 500 operations, applied in order; each names its kind in op and the fields that kind requires."
|
|
16303
|
+
}
|
|
16304
|
+
]
|
|
16305
|
+
}
|
|
16306
|
+
},
|
|
16307
|
+
{
|
|
16308
|
+
"resource": "ontology.nodes",
|
|
16309
|
+
"method": "list",
|
|
16310
|
+
"summary": "List nodes",
|
|
16311
|
+
"description": "Discover the entities in this organization's graph and obtain node ids for retrieval, updates and relations. Filter by type, by free text over names, aliases, descriptions and facts, or by owner; limit is 1–100 and defaults to 50. Omit cursor for the first page, then copy next_cursor into the next request until it is null. A node whose content belongs to somebody else comes back as a restricted entry carrying only its id, type and name.",
|
|
16312
|
+
"http": "GET",
|
|
16313
|
+
"path": "/ontology/v1/nodes",
|
|
16314
|
+
"streaming": "no",
|
|
16315
|
+
"pagination": true,
|
|
16316
|
+
"pathParams": [],
|
|
16317
|
+
"query": [
|
|
16318
|
+
{
|
|
16319
|
+
"name": "type",
|
|
16320
|
+
"type": "array",
|
|
16321
|
+
"itemType": "string",
|
|
16322
|
+
"required": false,
|
|
16323
|
+
"description": "Repeat to filter to any of several registered node type names, for example type=file&type=ticket; omit to list every type."
|
|
16324
|
+
},
|
|
16325
|
+
{
|
|
16326
|
+
"name": "q",
|
|
16327
|
+
"type": "string",
|
|
16328
|
+
"required": false,
|
|
16329
|
+
"description": "Free text matched against node names, aliases and descriptions; omit to list without a text filter."
|
|
16330
|
+
},
|
|
16331
|
+
{
|
|
16332
|
+
"name": "owner",
|
|
16333
|
+
"type": "string",
|
|
16334
|
+
"required": false,
|
|
16335
|
+
"description": "Filter to nodes owned by this member id, or omit to list nodes of every owner; organization-wide nodes carry no owner."
|
|
16336
|
+
},
|
|
16337
|
+
{
|
|
16338
|
+
"name": "as_of",
|
|
16339
|
+
"type": "string",
|
|
16340
|
+
"required": false,
|
|
16341
|
+
"description": "ISO 8601 timestamp; return the graph as it was then, so a node recorded later is absent. Omit to read current state."
|
|
16342
|
+
},
|
|
16343
|
+
{
|
|
16344
|
+
"name": "limit",
|
|
16345
|
+
"type": "integer",
|
|
16346
|
+
"required": false,
|
|
16347
|
+
"description": "Maximum items to return per page, from 1 to 100; defaults to 50 when omitted. Values above 100 are clamped to 100."
|
|
16348
|
+
},
|
|
16349
|
+
{
|
|
16350
|
+
"name": "cursor",
|
|
16351
|
+
"type": "string",
|
|
16352
|
+
"required": false,
|
|
16353
|
+
"description": "Opaque next_cursor from the preceding list response; omit for the first page and stop when next_cursor is null."
|
|
16354
|
+
}
|
|
16355
|
+
]
|
|
16356
|
+
},
|
|
16357
|
+
{
|
|
16358
|
+
"resource": "ontology.nodes",
|
|
16359
|
+
"method": "create",
|
|
16360
|
+
"summary": "Create node",
|
|
16361
|
+
"description": "Record one entity in the graph, for a system mirroring a record it owns. type must already be registered and ref, when given, must match that type's ref_prefix. Send an Idempotency-Key header; repeating the same key with the same content returns the first result instead of creating a second node. This writes structure only — to give an agent something to remember, use POST /agent/v1/agents/{agent_id}/consolidations.",
|
|
16362
|
+
"http": "POST",
|
|
16363
|
+
"path": "/ontology/v1/nodes",
|
|
16364
|
+
"streaming": "no",
|
|
16365
|
+
"pagination": false,
|
|
16366
|
+
"pathParams": [],
|
|
16367
|
+
"query": [],
|
|
16368
|
+
"body": {
|
|
16369
|
+
"required": true,
|
|
16370
|
+
"fields": [
|
|
16371
|
+
{
|
|
16372
|
+
"name": "type",
|
|
16373
|
+
"type": "string",
|
|
16374
|
+
"required": true,
|
|
16375
|
+
"description": "Registered node type name from types.list; an unregistered name is refused and nothing is written."
|
|
16376
|
+
},
|
|
16377
|
+
{
|
|
16378
|
+
"name": "ref",
|
|
16379
|
+
"type": "string",
|
|
16380
|
+
"required": false,
|
|
16381
|
+
"description": "Id of the mirrored record in the owning service, which must start with the type's ref_prefix; omit or null for a concept with no external record."
|
|
16382
|
+
},
|
|
16383
|
+
{
|
|
16384
|
+
"name": "name",
|
|
16385
|
+
"type": "string",
|
|
16386
|
+
"required": true,
|
|
16387
|
+
"description": "Display name of the entity, at most 200 characters."
|
|
16388
|
+
},
|
|
16389
|
+
{
|
|
16390
|
+
"name": "aliases",
|
|
16391
|
+
"type": "array",
|
|
16392
|
+
"itemType": "string",
|
|
16393
|
+
"required": false,
|
|
16394
|
+
"description": "Other names this entity is known by; they are matched by search alongside the name."
|
|
16395
|
+
},
|
|
16396
|
+
{
|
|
16397
|
+
"name": "description",
|
|
16398
|
+
"type": "string",
|
|
16399
|
+
"required": false,
|
|
16400
|
+
"description": "Profile of the entity, at most 500 characters; omit or null for none."
|
|
16401
|
+
},
|
|
16402
|
+
{
|
|
16403
|
+
"name": "owner",
|
|
16404
|
+
"type": "string",
|
|
16405
|
+
"required": false,
|
|
16406
|
+
"description": "Member id whose content this is, restricting it to that member; omit or null to make it readable organization-wide."
|
|
16407
|
+
}
|
|
16408
|
+
]
|
|
16409
|
+
}
|
|
16410
|
+
},
|
|
16411
|
+
{
|
|
16412
|
+
"resource": "ontology.nodes",
|
|
16413
|
+
"method": "retrieve",
|
|
16414
|
+
"summary": "Retrieve node",
|
|
16415
|
+
"description": "Read one node's content and, with expand=relations, every relation on and around it. as_of reads the node as it was at that time. A node id from another organization, or one that never existed, answers ONTOLOGY_NODE_NOT_FOUND; a node you may reach but not read returns restricted true with its name only.",
|
|
16416
|
+
"http": "GET",
|
|
16417
|
+
"path": "/ontology/v1/nodes/{node_id}",
|
|
16418
|
+
"streaming": "no",
|
|
16419
|
+
"pagination": false,
|
|
16420
|
+
"pathParams": [
|
|
16421
|
+
{
|
|
16422
|
+
"name": "node_id",
|
|
16423
|
+
"sdkName": "node_id",
|
|
16424
|
+
"description": "Node id returned by nodes.list, nodes.create or a changeset, in the form ond_ followed by 32 lowercase letters or digits; a name or an external record id is not accepted."
|
|
16425
|
+
}
|
|
16426
|
+
],
|
|
16427
|
+
"query": [
|
|
16428
|
+
{
|
|
16429
|
+
"name": "expand",
|
|
16430
|
+
"type": "string",
|
|
16431
|
+
"enum": [
|
|
16432
|
+
"relations"
|
|
16433
|
+
],
|
|
16434
|
+
"required": false,
|
|
16435
|
+
"description": "Set to relations to include the node's incoming and outgoing relations in the same response; omit for the node alone."
|
|
16436
|
+
},
|
|
16437
|
+
{
|
|
16438
|
+
"name": "as_of",
|
|
16439
|
+
"type": "string",
|
|
16440
|
+
"required": false,
|
|
16441
|
+
"description": "ISO 8601 timestamp; read the node and its relations as they were then, including relations invalidated since. Omit to read current state."
|
|
16442
|
+
}
|
|
16443
|
+
]
|
|
16444
|
+
},
|
|
16445
|
+
{
|
|
16446
|
+
"resource": "ontology.nodes",
|
|
16447
|
+
"method": "update",
|
|
16448
|
+
"summary": "Update node",
|
|
16449
|
+
"description": "Change a node's name, aliases or description when the mirrored record was renamed, without touching its type or identity. Send only the fields to change; omitted fields keep their current values and an explicitly null description clears it. Repeating the same edit converges on the same node, so this needs no Idempotency-Key.",
|
|
16450
|
+
"http": "PATCH",
|
|
16451
|
+
"path": "/ontology/v1/nodes/{node_id}",
|
|
16452
|
+
"streaming": "no",
|
|
16453
|
+
"pagination": false,
|
|
16454
|
+
"pathParams": [
|
|
16455
|
+
{
|
|
16456
|
+
"name": "node_id",
|
|
16457
|
+
"sdkName": "node_id",
|
|
16458
|
+
"description": "Node id returned by nodes.list, nodes.create or a changeset, in the form ond_ followed by 32 lowercase letters or digits; a name or an external record id is not accepted."
|
|
16459
|
+
}
|
|
16460
|
+
],
|
|
16461
|
+
"query": [],
|
|
16462
|
+
"body": {
|
|
16463
|
+
"required": true,
|
|
16464
|
+
"fields": [
|
|
16465
|
+
{
|
|
16466
|
+
"name": "name",
|
|
16467
|
+
"type": "string",
|
|
16468
|
+
"required": false,
|
|
16469
|
+
"description": "New display name, at most 200 characters; omit to keep the current name."
|
|
16470
|
+
},
|
|
16471
|
+
{
|
|
16472
|
+
"name": "aliases",
|
|
16473
|
+
"type": "array",
|
|
16474
|
+
"itemType": "string",
|
|
16475
|
+
"required": false,
|
|
16476
|
+
"description": "Replacement alias list; an empty array clears the aliases and omitting the field keeps them."
|
|
16477
|
+
},
|
|
16478
|
+
{
|
|
16479
|
+
"name": "description",
|
|
16480
|
+
"type": "string",
|
|
16481
|
+
"required": false,
|
|
16482
|
+
"description": "Replacement profile, at most 500 characters; an explicit null clears it and omitting the field keeps it."
|
|
16483
|
+
}
|
|
16484
|
+
]
|
|
16485
|
+
}
|
|
16486
|
+
},
|
|
16487
|
+
{
|
|
16488
|
+
"resource": "ontology.nodes.merge",
|
|
16489
|
+
"method": "create",
|
|
16490
|
+
"summary": "Merge node",
|
|
16491
|
+
"description": "Fold a duplicate node into the node that should survive, when two records are discovered to be the same entity. The merged node's relations and aliases move to the survivor and later reads of the duplicate resolve to it. Send an Idempotency-Key header; repeating the same key replays the first result. Reversal is a staff operation, not available here.",
|
|
16492
|
+
"http": "POST",
|
|
16493
|
+
"path": "/ontology/v1/nodes/{node_id}/merge",
|
|
16494
|
+
"streaming": "no",
|
|
16495
|
+
"pagination": false,
|
|
16496
|
+
"pathParams": [
|
|
16497
|
+
{
|
|
16498
|
+
"name": "node_id",
|
|
16499
|
+
"sdkName": "node_id",
|
|
16500
|
+
"description": "Node id returned by nodes.list, nodes.create or a changeset, in the form ond_ followed by 32 lowercase letters or digits; a name or an external record id is not accepted."
|
|
16501
|
+
}
|
|
16502
|
+
],
|
|
16503
|
+
"query": [],
|
|
16504
|
+
"body": {
|
|
16505
|
+
"required": true,
|
|
16506
|
+
"fields": [
|
|
16507
|
+
{
|
|
16508
|
+
"name": "into",
|
|
16509
|
+
"type": "string",
|
|
16510
|
+
"required": true,
|
|
16511
|
+
"description": "Node id that should survive, from nodes.list or search; the merged node's relations and aliases move to it."
|
|
16512
|
+
}
|
|
16513
|
+
]
|
|
16514
|
+
}
|
|
16515
|
+
},
|
|
16516
|
+
{
|
|
16517
|
+
"resource": "ontology.relations",
|
|
16518
|
+
"method": "list",
|
|
16519
|
+
"summary": "List relations",
|
|
16520
|
+
"description": "Read the facts in the graph and obtain relation ids for retrieval, invalidation or spreading. Filter by endpoint node, by type and by direction; as_of reads the relations as they were then. Invalidated relations are omitted unless include_invalid is true. limit is 1–100 and defaults to 50; follow next_cursor until it is null.",
|
|
16521
|
+
"http": "GET",
|
|
16522
|
+
"path": "/ontology/v1/relations",
|
|
16523
|
+
"streaming": "no",
|
|
16524
|
+
"pagination": true,
|
|
16525
|
+
"pathParams": [],
|
|
16526
|
+
"query": [
|
|
16527
|
+
{
|
|
16528
|
+
"name": "node",
|
|
16529
|
+
"type": "string",
|
|
16530
|
+
"required": false,
|
|
16531
|
+
"description": "A node id from nodes.list or nodes.create; returns the relations this node takes part in, narrowed by direction. Omit to list relations between every node."
|
|
16532
|
+
},
|
|
16533
|
+
{
|
|
16534
|
+
"name": "type",
|
|
16535
|
+
"type": "array",
|
|
16536
|
+
"itemType": "string",
|
|
16537
|
+
"required": false,
|
|
16538
|
+
"description": "Repeat to filter to any of several registered relation type names, for example type=references&type=serves; omit to list every type."
|
|
16539
|
+
},
|
|
16540
|
+
{
|
|
16541
|
+
"name": "direction",
|
|
16542
|
+
"type": "string",
|
|
16543
|
+
"enum": [
|
|
16544
|
+
"out",
|
|
16545
|
+
"in",
|
|
16546
|
+
"both"
|
|
16547
|
+
],
|
|
16548
|
+
"required": false,
|
|
16549
|
+
"description": "Which side of node to follow; out returns relations the node is the source of, in returns those it is the target of. Only meaningful together with node."
|
|
16550
|
+
},
|
|
16551
|
+
{
|
|
16552
|
+
"name": "as_of",
|
|
16553
|
+
"type": "string",
|
|
16554
|
+
"required": false,
|
|
16555
|
+
"description": "ISO 8601 timestamp; read relations as they were then, so one recorded or invalidated later is judged by that time. Omit to read current state."
|
|
16556
|
+
},
|
|
16557
|
+
{
|
|
16558
|
+
"name": "include_invalid",
|
|
16559
|
+
"type": "boolean",
|
|
16560
|
+
"required": false,
|
|
16561
|
+
"description": "Set true to include relations whose invalid_at has passed, which is how a relation that stopped being true stays readable. Omit or false for currently valid relations only."
|
|
16562
|
+
},
|
|
16563
|
+
{
|
|
16564
|
+
"name": "limit",
|
|
16565
|
+
"type": "integer",
|
|
16566
|
+
"required": false,
|
|
16567
|
+
"description": "Maximum items to return per page, from 1 to 100; defaults to 50 when omitted. Values above 100 are clamped to 100."
|
|
16568
|
+
},
|
|
16569
|
+
{
|
|
16570
|
+
"name": "cursor",
|
|
16571
|
+
"type": "string",
|
|
16572
|
+
"required": false,
|
|
16573
|
+
"description": "Opaque next_cursor from the preceding list response; omit for the first page and stop when next_cursor is null."
|
|
16574
|
+
}
|
|
16575
|
+
]
|
|
16576
|
+
},
|
|
16577
|
+
{
|
|
16578
|
+
"resource": "ontology.relations",
|
|
16579
|
+
"method": "create",
|
|
16580
|
+
"summary": "Create relation",
|
|
16581
|
+
"description": "Record one fact between two existing nodes, for a system mirroring a relationship it owns. type must be registered and must admit these endpoints; fact states the relationship in one sentence. Send an Idempotency-Key header; repeating the same key returns the first result instead of writing a second relation. This writes structure only — to give an agent something to remember, use POST /agent/v1/agents/{agent_id}/consolidations.",
|
|
16582
|
+
"http": "POST",
|
|
16583
|
+
"path": "/ontology/v1/relations",
|
|
16584
|
+
"streaming": "no",
|
|
16585
|
+
"pagination": false,
|
|
16586
|
+
"pathParams": [],
|
|
16587
|
+
"query": [],
|
|
16588
|
+
"body": {
|
|
16589
|
+
"required": true,
|
|
16590
|
+
"fields": [
|
|
16591
|
+
{
|
|
16592
|
+
"name": "type",
|
|
16593
|
+
"type": "string",
|
|
16594
|
+
"required": true,
|
|
16595
|
+
"description": "Registered relation type name from types.list; it must admit both endpoints or the write is refused."
|
|
16596
|
+
},
|
|
16597
|
+
{
|
|
16598
|
+
"name": "source",
|
|
16599
|
+
"type": "string",
|
|
16600
|
+
"required": true,
|
|
16601
|
+
"description": "Node id the fact starts from, from nodes.list or nodes.create."
|
|
16602
|
+
},
|
|
16603
|
+
{
|
|
16604
|
+
"name": "target",
|
|
16605
|
+
"type": "string",
|
|
16606
|
+
"required": true,
|
|
16607
|
+
"description": "Node id the fact points at, from nodes.list or nodes.create."
|
|
16608
|
+
},
|
|
16609
|
+
{
|
|
16610
|
+
"name": "fact",
|
|
16611
|
+
"type": "string",
|
|
16612
|
+
"required": true,
|
|
16613
|
+
"description": "The relationship in one sentence, at most 280 characters, written to read back on its own."
|
|
16614
|
+
},
|
|
16615
|
+
{
|
|
16616
|
+
"name": "valid_at",
|
|
16617
|
+
"type": "string",
|
|
16618
|
+
"required": false,
|
|
16619
|
+
"description": "World time the fact became true, when the mirrored record dates it; omit to leave it undated."
|
|
16620
|
+
},
|
|
16621
|
+
{
|
|
16622
|
+
"name": "owner",
|
|
16623
|
+
"type": "string",
|
|
16624
|
+
"required": false,
|
|
16625
|
+
"description": "Member id whose content this fact is, restricting it to that member; omit or null for organization-wide."
|
|
16626
|
+
}
|
|
16627
|
+
]
|
|
16628
|
+
}
|
|
16629
|
+
},
|
|
16630
|
+
{
|
|
16631
|
+
"resource": "ontology.relations",
|
|
16632
|
+
"method": "retrieve",
|
|
16633
|
+
"summary": "Retrieve relation",
|
|
16634
|
+
"description": "Read one relation's fact and both of its clocks — valid_at and invalid_at for when it was true in the world, created_at and expired_at for when it was recorded and retired. An id from another organization, or one that never existed, answers ONTOLOGY_EDGE_NOT_FOUND.",
|
|
16635
|
+
"http": "GET",
|
|
16636
|
+
"path": "/ontology/v1/relations/{relation_id}",
|
|
16637
|
+
"streaming": "no",
|
|
16638
|
+
"pagination": false,
|
|
16639
|
+
"pathParams": [
|
|
16640
|
+
{
|
|
16641
|
+
"name": "relation_id",
|
|
16642
|
+
"sdkName": "relation_id",
|
|
16643
|
+
"description": "Relation id returned by relations.list, relations.create or a changeset, in the form oed_ followed by 32 lowercase letters or digits; a node id is not accepted."
|
|
16644
|
+
}
|
|
16645
|
+
],
|
|
16646
|
+
"query": []
|
|
16647
|
+
},
|
|
16648
|
+
{
|
|
16649
|
+
"resource": "ontology.relations.invalidate",
|
|
16650
|
+
"method": "create",
|
|
16651
|
+
"summary": "Invalidate relation",
|
|
16652
|
+
"description": "Mark a relation as no longer true from a world time, when the mirrored record changed. The relation is kept — invalid_at moves and the relation still reads at an earlier as_of, so history stays answerable. Send an Idempotency-Key header; repeating the same key replays the first result. There is no delete.",
|
|
16653
|
+
"http": "POST",
|
|
16654
|
+
"path": "/ontology/v1/relations/{relation_id}/invalidate",
|
|
16655
|
+
"streaming": "no",
|
|
16656
|
+
"pagination": false,
|
|
16657
|
+
"pathParams": [
|
|
16658
|
+
{
|
|
16659
|
+
"name": "relation_id",
|
|
16660
|
+
"sdkName": "relation_id",
|
|
16661
|
+
"description": "Relation id returned by relations.list, relations.create or a changeset, in the form oed_ followed by 32 lowercase letters or digits; a node id is not accepted."
|
|
16662
|
+
}
|
|
16663
|
+
],
|
|
16664
|
+
"query": [],
|
|
16665
|
+
"body": {
|
|
16666
|
+
"required": true,
|
|
16667
|
+
"fields": [
|
|
16668
|
+
{
|
|
16669
|
+
"name": "invalid_at",
|
|
16670
|
+
"type": "string",
|
|
16671
|
+
"required": true,
|
|
16672
|
+
"description": "World time the fact stopped being true, in ISO 8601 UTC; reads at an earlier as_of still return the relation."
|
|
16673
|
+
},
|
|
16674
|
+
{
|
|
16675
|
+
"name": "superseded_by",
|
|
16676
|
+
"type": "string",
|
|
16677
|
+
"required": false,
|
|
16678
|
+
"description": "Relation id that replaces this one, when a successor was recorded; omit or null when nothing replaced it."
|
|
16679
|
+
},
|
|
16680
|
+
{
|
|
16681
|
+
"name": "reason",
|
|
16682
|
+
"type": "string",
|
|
16683
|
+
"required": false,
|
|
16684
|
+
"description": "Why it stopped being true, for people reading the history later; not enforced and safe to omit."
|
|
16685
|
+
}
|
|
16686
|
+
]
|
|
16687
|
+
}
|
|
16688
|
+
},
|
|
16689
|
+
{
|
|
16690
|
+
"resource": "ontology.search",
|
|
16691
|
+
"method": "create",
|
|
16692
|
+
"summary": "Search nodes",
|
|
16693
|
+
"description": "Resolve text to the nodes it most likely names, when a mirror holds a name and needs the node id it corresponds to. Results are ranked candidates, not an answer, each reporting whether the match came from the node's name, an alias, its description or a relation's fact. Narrow with types, and cap the result count with limit (1–50, default 20). This reads structure; it is not an agent recall — agents recall through POST /agent/v1/agents/{agent_id}/consolidations.",
|
|
16694
|
+
"http": "POST",
|
|
16695
|
+
"path": "/ontology/v1/search",
|
|
16696
|
+
"streaming": "no",
|
|
16697
|
+
"pagination": false,
|
|
16698
|
+
"pathParams": [],
|
|
16699
|
+
"query": [],
|
|
16700
|
+
"body": {
|
|
16701
|
+
"required": true,
|
|
16702
|
+
"fields": [
|
|
16703
|
+
{
|
|
16704
|
+
"name": "text",
|
|
16705
|
+
"type": "string",
|
|
16706
|
+
"required": true,
|
|
16707
|
+
"description": "Text to find nodes for, matched against names, aliases, descriptions and relation facts; an empty string is refused."
|
|
16708
|
+
},
|
|
16709
|
+
{
|
|
16710
|
+
"name": "types",
|
|
16711
|
+
"type": "array",
|
|
16712
|
+
"itemType": "string",
|
|
16713
|
+
"required": false,
|
|
16714
|
+
"description": "Registered node type names to search within; omit to search every type."
|
|
16715
|
+
},
|
|
16716
|
+
{
|
|
16717
|
+
"name": "window",
|
|
16718
|
+
"type": "object",
|
|
16719
|
+
"required": false,
|
|
16720
|
+
"description": "Restrict matches to facts recorded within a period; omit to search all time."
|
|
16721
|
+
},
|
|
16722
|
+
{
|
|
16723
|
+
"name": "limit",
|
|
16724
|
+
"type": "integer",
|
|
16725
|
+
"required": false,
|
|
16726
|
+
"description": "Maximum candidate nodes to return, from 1 to 50; defaults to 20 when omitted."
|
|
16727
|
+
}
|
|
16728
|
+
]
|
|
16729
|
+
}
|
|
16730
|
+
},
|
|
16731
|
+
{
|
|
16732
|
+
"resource": "ontology.types",
|
|
16733
|
+
"method": "list",
|
|
16734
|
+
"summary": "List types",
|
|
16735
|
+
"description": "Read the node and relation types registered for this organization before writing, so a create names a type the graph accepts. Each entry is one registrant's registration with its owner, version and definitions. Types cannot be created at runtime; they are registered by the owning service at deploy time, so a type missing here is not available to write.",
|
|
16736
|
+
"http": "GET",
|
|
16737
|
+
"path": "/ontology/v1/types",
|
|
16738
|
+
"streaming": "no",
|
|
16739
|
+
"pagination": false,
|
|
16740
|
+
"pathParams": [],
|
|
16741
|
+
"query": []
|
|
16742
|
+
},
|
|
16743
|
+
{
|
|
16744
|
+
"resource": "ontology.types",
|
|
16745
|
+
"method": "create",
|
|
16746
|
+
"summary": "Register type",
|
|
16747
|
+
"description": "Register a node or relation type for this organization. Not open yet — this call currently answers 501 NOT_IMPLEMENTED and writes nothing, because a registration is checked and stored by the deploy gate that ships the registering service, not by a runtime call. Until it opens, read the types already in force with praxis.ontology.types.list and create records only of those types.",
|
|
16748
|
+
"http": "POST",
|
|
16749
|
+
"path": "/ontology/v1/types",
|
|
16750
|
+
"streaming": "no",
|
|
16751
|
+
"pagination": false,
|
|
16752
|
+
"pathParams": [],
|
|
16753
|
+
"query": [],
|
|
16754
|
+
"body": {
|
|
16755
|
+
"required": true,
|
|
16756
|
+
"fields": [
|
|
16757
|
+
{
|
|
16758
|
+
"name": "owner",
|
|
16759
|
+
"type": "string",
|
|
16760
|
+
"required": true,
|
|
16761
|
+
"description": "Service that registered these types, for example file or ticket; it is the registrant a later change to a type is checked against."
|
|
16762
|
+
},
|
|
16763
|
+
{
|
|
16764
|
+
"name": "version",
|
|
16765
|
+
"type": "integer",
|
|
16766
|
+
"required": true,
|
|
16767
|
+
"description": "Monotonic version of this owner's registration; a later registration must extend this one without removing or narrowing anything."
|
|
16768
|
+
},
|
|
16769
|
+
{
|
|
16770
|
+
"name": "nodes",
|
|
16771
|
+
"type": "array",
|
|
16772
|
+
"itemType": "object",
|
|
16773
|
+
"required": true,
|
|
16774
|
+
"description": "Node types this owner registers."
|
|
16775
|
+
},
|
|
16776
|
+
{
|
|
16777
|
+
"name": "edges",
|
|
16778
|
+
"type": "array",
|
|
16779
|
+
"itemType": "object",
|
|
16780
|
+
"required": true,
|
|
16781
|
+
"description": "Relation types this owner registers."
|
|
16782
|
+
}
|
|
16783
|
+
]
|
|
16784
|
+
}
|
|
16785
|
+
},
|
|
16786
|
+
{
|
|
16787
|
+
"resource": "ontology.types",
|
|
16788
|
+
"method": "retrieve",
|
|
16789
|
+
"summary": "Retrieve type",
|
|
16790
|
+
"description": "Read one registered type's definition before writing a record of it, to learn whether it is a node or an edge, which endpoints an edge type admits, and which origins it accepts. The name comes from types.list; a name that is not registered answers ONTOLOGY_TYPE_UNKNOWN, and writes of that type are refused.",
|
|
16791
|
+
"http": "GET",
|
|
16792
|
+
"path": "/ontology/v1/types/{name}",
|
|
16793
|
+
"streaming": "no",
|
|
16794
|
+
"pagination": false,
|
|
16795
|
+
"pathParams": [
|
|
16796
|
+
{
|
|
16797
|
+
"name": "name",
|
|
16798
|
+
"sdkName": "name",
|
|
16799
|
+
"description": "A type name from types.list, with its dots preserved — a display label is not accepted."
|
|
16800
|
+
}
|
|
16801
|
+
],
|
|
16802
|
+
"query": []
|
|
16803
|
+
},
|
|
16247
16804
|
{
|
|
16248
16805
|
"resource": "organization.charges",
|
|
16249
16806
|
"method": "list",
|
|
@@ -20426,7 +20983,7 @@ export const operations = [
|
|
|
20426
20983
|
"resource": "vault.vaults",
|
|
20427
20984
|
"method": "create",
|
|
20428
20985
|
"summary": "Create vault",
|
|
20429
|
-
"description": "Create an empty, active vault to hold credentials for your account, with a display name and optional metadata. Use its returned id as vault_id when creating secrets or OAuth authorizations.
|
|
20986
|
+
"description": "Create an empty, active vault to hold credentials for your account, with a display name and optional metadata. Use its returned id as vault_id when creating secrets or OAuth authorizations. Agent sessions and deployments accept up to 50 vault_ids and match their credentials against the session's MCP servers, so a stored static or oauth credential does serve as vault-backed MCP authentication; only environment_variable credentials are not yet placed, because the egress proxy ADR-058 §6 gives them is not built. Application vault references are also unavailable; praxis_vault_ref version bindings and secret writes with a vault source return 501, so creating a vault does not yet enable either consumer.",
|
|
20430
20987
|
"http": "POST",
|
|
20431
20988
|
"path": "/vault/v1/vaults",
|
|
20432
20989
|
"streaming": "no",
|