{"openapi":"3.1.0","jsonSchemaDialect":"https://json-schema.org/draft/2020-12/schema","info":{"title":"Quest Shell API","version":"1.0.0","description":"The installation-free API for one delegated Quest Workspace."},"servers":[{"url":"/","description":"The current Quest origin"}],"tags":[{"name":"Discovery","description":"Public protocol discovery."},{"name":"Authorization","description":"Browser-approved bootstrap for a delegated Workspace connection."},{"name":"Session","description":"The live delegated connection and Workspace."},{"name":"Filesystem","description":"Path-first access to folders, versioned Files, and atomic Pages."},{"name":"Pages","description":"Effect-free validation for complete atomic Page packages."}],"paths":{"/v1":{"get":{"operationId":"discoverV1","tags":["Discovery"],"summary":"Discover the live v1 surface","description":"Returns only capabilities and links that are mounted in this checkpoint. Authentication is not required.","security":[],"parameters":[{"$ref":"#/components/parameters/RequestId"}],"responses":{"200":{"description":"The live public v1 discovery document.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Discovery"}}}},"500":{"$ref":"#/components/responses/InternalError"}}}},"/v1/openapi.json":{"get":{"operationId":"readV1OpenApi","tags":["Discovery"],"summary":"Read this OpenAPI document","description":"Returns the OpenAPI 3.1 contract for the currently mounted v1 surface.","security":[],"parameters":[{"$ref":"#/components/parameters/RequestId"}],"responses":{"200":{"description":"The live OpenAPI 3.1 document.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"type":"object","required":["openapi","info","servers","paths","components"],"properties":{"openapi":{"type":"string","const":"3.1.0"},"jsonSchemaDialect":{"type":"string","format":"uri"},"info":{"type":"object"},"servers":{"type":"array","items":{"type":"object"}},"tags":{"type":"array","items":{"type":"object"}},"paths":{"type":"object"},"components":{"type":"object"}}}}}},"500":{"$ref":"#/components/responses/InternalError"}}}},"/v1/auth/device":{"post":{"operationId":"createV1DeviceAuthorization","tags":["Authorization"],"summary":"Start browser authorization","description":"Creates a short-lived one-time request. Show the person the complete verification URL and matching user code, keep the device code private, and poll only at the advertised cadence.","security":[],"parameters":[{"$ref":"#/components/parameters/RequestId"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1DeviceAuthorizationRequest"}}}},"responses":{"201":{"description":"Safe browser instructions and the secret one-time polling code.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Cache-Control":{"$ref":"#/components/headers/NoStore"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1DeviceAuthorizationResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"413":{"$ref":"#/components/responses/AuthorizationContentTooLarge"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}}}},"/v1/auth/token":{"post":{"operationId":"exchangeV1DeviceAuthorization","tags":["Authorization"],"summary":"Poll and exchange browser authorization","description":"Returns pending until the person decides. A successful exchange returns the bearer token exactly once; write the response directly to protected credential storage and never print it.","security":[],"parameters":[{"$ref":"#/components/parameters/RequestId"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1DeviceTokenRequest"}}}},"responses":{"200":{"description":"The delegated connection token, returned exactly once.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Cache-Control":{"$ref":"#/components/headers/NoStore"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1DeviceTokenResponse"}}}},"202":{"description":"The person has not decided yet.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Cache-Control":{"$ref":"#/components/headers/NoStore"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1DeviceTokenPendingResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"403":{"$ref":"#/components/responses/Forbidden"},"409":{"$ref":"#/components/responses/Conflict"},"410":{"$ref":"#/components/responses/Gone"},"413":{"$ref":"#/components/responses/AuthorizationContentTooLarge"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}}}},"/v1/session":{"get":{"operationId":"readV1Session","tags":["Session"],"summary":"Inspect the delegated Workspace session","description":"Validates the bearer connection against its current user, Workspace membership, role, expiry, and scopes. No additional scope is required.","security":[{"bearerAuth":[]}],"x-proforma-required-scopes":[],"parameters":[{"$ref":"#/components/parameters/RequestId"}],"responses":{"200":{"description":"The current delegated session.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Session"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"500":{"$ref":"#/components/responses/InternalError"}}}},"/v1/pages/validate":{"post":{"operationId":"validateV1PageProject","tags":["Pages"],"summary":"Validate one complete Page project","description":"Requires `workspace:read`. Runs the structural, runtime-capability, import, and TypeScript checks used by durable Page commits. This operation does not write Workspace state and does not render or visually review the Page.","security":[{"bearerAuth":[]}],"x-proforma-required-scopes":["workspace:read"],"parameters":[{"$ref":"#/components/parameters/RequestId"}],"requestBody":{"required":true,"description":"One complete PageProject wrapped in a JSON object. Maximum transport body: 10485760 bytes (10 MiB).","x-proforma-max-bytes":10485760,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1PageProjectValidationRequest"}}}},"responses":{"200":{"description":"Authoritative static validation result. `valid=false` is a successful validation response with error diagnostics.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1PageProjectValidationResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"413":{"$ref":"#/components/responses/PageValidationContentTooLarge"},"500":{"$ref":"#/components/responses/InternalError"}}}},"/v1/fs":{"get":{"operationId":"readV1FilesystemPath","tags":["Filesystem"],"summary":"Read a Workspace folder, File, or Page by absolute path","description":"Requires `workspace:read`. Folder listings are at most one level deep and include Files and Pages. File content up to the advertised inline limit is returned in JSON; larger content uses an authenticated download descriptor. Set `download=true` on a File to receive raw bytes, optionally pinned by its `revision` id. A Page returns its complete current PageProject and canonical app link.","security":[{"bearerAuth":[]}],"x-proforma-required-scopes":["workspace:read"],"parameters":[{"$ref":"#/components/parameters/RequestId"},{"$ref":"#/components/parameters/WorkspacePath"},{"$ref":"#/components/parameters/Depth"},{"$ref":"#/components/parameters/Download"},{"$ref":"#/components/parameters/Revision"}],"responses":{"200":{"description":"A JSON folder, File, or Page resource, or raw File bytes when `download=true`.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"ETag":{"$ref":"#/components/headers/ETag"},"X-ProForma-File-Id":{"$ref":"#/components/headers/FileId"},"X-ProForma-Page-Id":{"$ref":"#/components/headers/PageId"},"X-ProForma-Revision-Id":{"$ref":"#/components/headers/RevisionId"},"Link":{"$ref":"#/components/headers/AppLink"},"Content-Disposition":{"$ref":"#/components/headers/ContentDisposition"},"Content-Security-Policy":{"$ref":"#/components/headers/ContentSecurityPolicy"},"X-Content-Type-Options":{"$ref":"#/components/headers/ContentTypeOptions"},"Content-Length":{"$ref":"#/components/headers/ContentLength"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1FsGetResponse"}},"application/octet-stream":{"schema":{"type":"string","format":"binary"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"409":{"$ref":"#/components/responses/Conflict"},"500":{"$ref":"#/components/responses/InternalError"}}},"put":{"operationId":"putV1FilesystemResource","tags":["Filesystem"],"summary":"Conditionally create or replace one File or Page","description":"Requires `workspace:write`. Send exactly one precondition: `If-None-Match: *` creates at an absent path, while `If-Match` replaces the current resource revision. Omit `kind` to write ordinary File bytes. Set `kind=page` and Content-Type `application/vnd.proforma.page+json` to write one complete PageProject atomically. `Idempotency-Key` makes an identical retry safe; reusing it for different input is a conflict.","security":[{"bearerAuth":[]}],"x-proforma-required-scopes":["workspace:write"],"x-proforma-precondition":{"exactlyOneOfHeaders":["If-Match","If-None-Match"]},"parameters":[{"$ref":"#/components/parameters/RequestId"},{"$ref":"#/components/parameters/WorkspaceResourcePath"},{"$ref":"#/components/parameters/WorkspaceResourceKind"},{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/IfNoneMatch"},{"$ref":"#/components/parameters/IfMatch"}],"requestBody":{"required":true,"description":"Raw File bytes, or one complete PageProject when kind=page and Content-Type is application/vnd.proforma.page+json. Maximum transport body: 52428800 bytes (50 MiB).","x-proforma-max-bytes":52428800,"content":{"application/vnd.proforma.page+json":{"schema":{"$ref":"#/components/schemas/PageProject"}},"*/*":{"schema":{"type":"string","format":"binary","maxLength":52428800,"description":"The raw File body; maxLength is measured in bytes."}}}},"responses":{"200":{"description":"The existing File or Page was replaced with a new revision.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"ETag":{"$ref":"#/components/headers/ETag"},"X-ProForma-File-Id":{"$ref":"#/components/headers/FileId"},"X-ProForma-Page-Id":{"$ref":"#/components/headers/PageId"},"X-ProForma-Revision-Id":{"$ref":"#/components/headers/RevisionId"},"X-ProForma-Commit-Id":{"$ref":"#/components/headers/CommitId"},"Idempotency-Replayed":{"$ref":"#/components/headers/IdempotencyReplayed"},"Location":{"$ref":"#/components/headers/Location"},"Link":{"$ref":"#/components/headers/AppLink"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/V1FsGetResponse"},{"$ref":"#/components/schemas/V1FsPageWriteResponse"}]}}}},"201":{"description":"A new File or Page was created.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"ETag":{"$ref":"#/components/headers/ETag"},"X-ProForma-File-Id":{"$ref":"#/components/headers/FileId"},"X-ProForma-Page-Id":{"$ref":"#/components/headers/PageId"},"X-ProForma-Revision-Id":{"$ref":"#/components/headers/RevisionId"},"X-ProForma-Commit-Id":{"$ref":"#/components/headers/CommitId"},"Idempotency-Replayed":{"$ref":"#/components/headers/IdempotencyReplayed"},"Location":{"$ref":"#/components/headers/Location"},"Link":{"$ref":"#/components/headers/AppLink"}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/V1FsGetResponse"},{"$ref":"#/components/schemas/V1FsPageWriteResponse"}]}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"409":{"$ref":"#/components/responses/Conflict"},"413":{"$ref":"#/components/responses/ContentTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableContent"},"428":{"$ref":"#/components/responses/PreconditionRequired"},"500":{"$ref":"#/components/responses/InternalError"}}}},"/v1/fs/history":{"get":{"operationId":"readV1FilesystemHistory","tags":["Filesystem"],"summary":"Read ordinary File revision history by absolute path","description":"Requires `workspace:read`. Returns the current File resource and its attributed revision history.","security":[{"bearerAuth":[]}],"x-proforma-required-scopes":["workspace:read"],"parameters":[{"$ref":"#/components/parameters/RequestId"},{"$ref":"#/components/parameters/WorkspacePath"}],"responses":{"200":{"description":"The File and all retained revisions, newest first.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"ETag":{"$ref":"#/components/headers/ETag"},"X-ProForma-File-Id":{"$ref":"#/components/headers/FileId"},"X-ProForma-Revision-Id":{"$ref":"#/components/headers/RevisionId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1FsHistoryResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"500":{"$ref":"#/components/responses/InternalError"}}}}},"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"prfm_agent_...","description":"A delegated external-agent token. Send it only over HTTPS (loopback HTTP is allowed for local development). The server revalidates its connection, expiry, grantor, Workspace membership, role, and scopes on every request.","x-proforma-scopes":{"workspace:read":"List folders and read ordinary versioned files in the selected Workspace.","workspace:write":"Write new file revisions with conflict checks, attribution, and audit history.","context:read":"Read bounded context about the Workspace, its files, Pages, and Actions.","catalog:read":"Discover approved Sources, Models, and their metadata.","query:preview":"Read bounded preview rows from Data permitted by the model policy.","data:api":"Run bounded queries against Data permitted by the model policy.","data:define":"Create or revise Source and Model definitions in the selected Workspace.","connections:read":"Inspect the Workspace's configured data and service connections.","connections:manage":"Create, configure, and remove data or service connections.","runs:read":"Inspect Action run status, history, output, and errors.","runs:operate":"Start and cancel Actions and other operational runs.","automations:manage":"Create, update, enable, disable, and remove schedules and webhooks.","chat:run":"Start governed Quest agent conversations for Workspace analysis.","artifact:create":"Allow delegated Quest agent runs to create new analysis Models and Apps.","tracking:read":"Inspect tracking databases, keys, configuration, and recent activity.","tracking:key:create":"Issue new public or secret credentials that can ingest tracking events.","tracking:write":"Configure tracking ingestion, retention, and session replay behavior.","prospecting:read":"Search companies and people, page search runs, and inspect Prospecting lists.","prospecting:write":"Create Prospecting lists, add records, and export selected records to Sources.","prospecting:reveal":"Explicitly reveal business contact details for one identified person.","browser:read":"Read BrowserOps tasks, runs, commands, approvals, and paired-client state.","browser:operate":"Claim local BrowserOps runs and exchange bounded observations, commands, and results."}}},"parameters":{"RequestId":{"name":"X-Request-Id","in":"header","required":false,"description":"Optional caller request identifier. Invalid values are replaced. The accepted form is 1–128 ASCII letters, digits, dots, underscores, colons, or hyphens.","schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9._:-]+$"}},"WorkspacePath":{"name":"path","in":"query","required":true,"description":"Absolute NFC-normalized Workspace path. `/` addresses the root. Non-root segments are at most 255 Unicode characters, have no leading/trailing whitespace, and cannot be `.`, `..`, empty, contain control characters, or contain path separators.","schema":{"$ref":"#/components/schemas/WorkspacePath"}},"WorkspaceResourcePath":{"name":"path","in":"query","required":true,"description":"Absolute NFC-normalized path for a File or extensionless Page. The Workspace root is not a valid write target.","schema":{"allOf":[{"$ref":"#/components/schemas/WorkspacePath"},{"not":{"const":"/"}}]}},"WorkspaceResourceKind":{"name":"kind","in":"query","required":false,"description":"Set to `page` to interpret the body as one complete PageProject. Omit it for an ordinary File write.","schema":{"type":"string","const":"page"}},"Depth":{"name":"depth","in":"query","required":false,"description":"Folder listing depth. This checkpoint supports the addressed item or one level.","schema":{"type":"integer","minimum":0,"maximum":1,"default":1}},"Download":{"name":"download","in":"query","required":false,"description":"For a File, return authenticated raw bytes instead of JSON. `1` and `0` are also accepted for shell clients. Folders cannot be downloaded.","schema":{"type":"boolean","default":false}},"Revision":{"name":"revision","in":"query","required":false,"description":"Immutable revision id for a pinned File download. It is valid only with `download=true`, and it must belong to the File currently addressed by `path`.","schema":{"type":"string","minLength":1,"maxLength":255}},"IdempotencyKey":{"name":"Idempotency-Key","in":"header","required":true,"description":"A caller-generated key for this mutation. Retry the same logical write with the same key; do not reuse it for different input.","schema":{"type":"string","minLength":1,"maxLength":255}},"IfNoneMatch":{"name":"If-None-Match","in":"header","required":false,"description":"Use `*` to create only when the target path is absent.","schema":{"type":"string","const":"*"}},"IfMatch":{"name":"If-Match","in":"header","required":false,"description":"The exact current composite File or Page ETag required to replace an existing resource.","schema":{"type":"string","minLength":1}}},"headers":{"RequestId":{"description":"The request identifier used in logs and error envelopes.","schema":{"type":"string","minLength":1,"maxLength":255}},"NoStore":{"description":"Prevents storage of authorization codes and issued credentials.","schema":{"type":"string","const":"no-store"}},"RetryAfter":{"description":"Minimum number of seconds before the next request.","schema":{"type":"integer","minimum":1}},"ETag":{"description":"The current composite Workspace resource ETag.","schema":{"type":"string","minLength":1}},"FileId":{"description":"The stable Workspace File identifier.","schema":{"type":"string","minLength":1}},"PageId":{"description":"The stable Page identifier.","schema":{"type":"string","minLength":1}},"RevisionId":{"description":"The selected immutable File revision identifier.","schema":{"type":"string","minLength":1}},"CommitId":{"description":"The durable Workspace commit identifier produced by a write.","schema":{"type":"string","minLength":1}},"IdempotencyReplayed":{"description":"Whether this response replayed a previously committed idempotent write.","schema":{"type":"boolean"}},"Location":{"description":"The canonical v1 path for the resulting File or Page.","schema":{"type":"string","pattern":"^/v1(?:/|\\?)","maxLength":2048}},"AppLink":{"description":"For a Page, `<absolute-app-url>; rel=\"alternate\"; type=\"text/html\"`, identifying the canonical human-facing app view.","example":"<https://app.proformalabs.ai/o/example/w/example/pages/page_id>; rel=\"alternate\"; type=\"text/html\"","schema":{"type":"string","minLength":1,"maxLength":2048}},"ContentDisposition":{"description":"A safe attachment filename for raw File content.","schema":{"type":"string"}},"ContentSecurityPolicy":{"description":"Prevents active content from executing when raw File bytes are opened.","schema":{"type":"string","const":"sandbox"}},"ContentTypeOptions":{"description":"Prevents MIME sniffing of raw File bytes.","schema":{"type":"string","const":"nosniff"}},"ContentLength":{"description":"Raw File size in bytes.","schema":{"type":"integer","minimum":0}}},"responses":{"BadRequest":{"description":"The transport, body, query, path, headers, or precondition combination is invalid.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorEnvelope"}}}},"Unauthorized":{"description":"The bearer token is missing, invalid, expired, revoked, or no longer live.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorEnvelope"}}}},"Forbidden":{"description":"The connection lacks the required scope or current Workspace authority.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorEnvelope"}}}},"NotFound":{"description":"No visible File, Page, folder, parent path, or selected File revision exists.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorEnvelope"}}}},"Conflict":{"description":"The path is occupied, the resource changed, or an idempotency key was reused for different input.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorEnvelope"}}}},"Gone":{"description":"The short-lived authorization request expired.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Cache-Control":{"$ref":"#/components/headers/NoStore"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorEnvelope"}}}},"TooManyRequests":{"description":"The caller exceeded the creation limit or polled too quickly.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Cache-Control":{"$ref":"#/components/headers/NoStore"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorEnvelope"}}}},"AuthorizationContentTooLarge":{"description":"The authorization JSON body exceeds 4096 bytes.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Cache-Control":{"$ref":"#/components/headers/NoStore"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorEnvelope"}}}},"ContentTooLarge":{"description":"The direct-write body exceeds 52428800 bytes (50 MiB).","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorEnvelope"}}}},"PageValidationContentTooLarge":{"description":"The Page validation JSON body exceeds 10485760 bytes (10 MiB).","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorEnvelope"}}}},"UnprocessableContent":{"description":"The Page project failed commit validation or the destination parent is not an ordinary Workspace folder.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorEnvelope"}}}},"PreconditionRequired":{"description":"A create or replace precondition header is required.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorEnvelope"}}}},"InternalError":{"description":"The request failed unexpectedly.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorEnvelope"}}}}},"schemas":{"ExternalAgentScope":{"type":"string","enum":["workspace:read","workspace:write","context:read","catalog:read","query:preview","data:api","data:define","connections:read","connections:manage","runs:read","runs:operate","automations:manage","chat:run","artifact:create","tracking:read","tracking:key:create","tracking:write","prospecting:read","prospecting:write","prospecting:reveal","browser:read","browser:operate"],"description":"A delegated connection scope. Canonical v1 and compatibility Agent API operations enforce the same exact grant."},"V1ExternalAgentAccess":{"type":"string","enum":["explore","build","operate"],"description":"A versioned scope preset. `explore` reads Workspace context and approved Data; `build` also authors; `operate` additionally manages connections, runs, automations, and tracking."},"ExternalAgentModelAccessMode":{"type":"string","enum":["selected_models","all_materialized_models"],"description":"The Data-policy boundary applied in addition to the connection scopes."},"AllowedModelKeys":{"type":"array","maxItems":200,"uniqueItems":true,"items":{"type":"string","minLength":1,"maxLength":255}},"V1DeviceAuthorizationRequest":{"type":"object","additionalProperties":false,"required":[],"properties":{"connectionName":{"type":"string","minLength":1,"maxLength":120,"default":"External agent"},"clientName":{"type":"string","minLength":1,"maxLength":120},"clientKind":{"type":"string","enum":["external_agent","browser_extension"],"description":"External callers use external_agent. Browser extension grants have a fixed scope set and cannot customize requestedScopes."},"access":{"allOf":[{"$ref":"#/components/schemas/V1ExternalAgentAccess"}],"default":"build"},"requestedScopes":{"type":"array","minItems":1,"maxItems":50,"uniqueItems":true,"items":{"$ref":"#/components/schemas/ExternalAgentScope"},"description":"Optional exact scope request for an external agent. Every item must belong to the selected access preset and workspace:read is required. Omit it to request the complete preset."},"purpose":{"type":"string","minLength":1,"maxLength":500}}},"V1DeviceAuthorizationResponse":{"type":"object","additionalProperties":false,"required":["deviceCode","userCode","verificationUrl","verificationUrlComplete","expiresAt","expiresInSeconds","pollAfterSeconds","exchange","requestedScopes","modelAccessMode","allowedModelKeys"],"properties":{"deviceCode":{"type":"string","pattern":"^prfm_device_[A-Za-z0-9_-]{43}$","writeOnly":true},"userCode":{"type":"string","pattern":"^[A-HJ-NP-Z2-9]{4}-[A-HJ-NP-Z2-9]{4}$"},"verificationUrl":{"type":"string","format":"uri"},"verificationUrlComplete":{"type":"string","format":"uri"},"expiresAt":{"type":"string","format":"date-time"},"expiresInSeconds":{"type":"integer","minimum":1,"maximum":3600},"pollAfterSeconds":{"type":"integer","minimum":1},"exchange":{"type":"string","const":"/v1/auth/token"},"requestedScopes":{"type":"array","minItems":1,"maxItems":50,"uniqueItems":true,"items":{"$ref":"#/components/schemas/ExternalAgentScope"}},"modelAccessMode":{"$ref":"#/components/schemas/ExternalAgentModelAccessMode"},"allowedModelKeys":{"$ref":"#/components/schemas/AllowedModelKeys"}}},"V1DeviceTokenRequest":{"type":"object","additionalProperties":false,"required":["deviceCode"],"properties":{"deviceCode":{"type":"string","pattern":"^prfm_device_[A-Za-z0-9_-]{43}$","writeOnly":true}}},"V1DeviceTokenPendingResponse":{"type":"object","additionalProperties":false,"required":["status","pollAfterSeconds"],"properties":{"status":{"type":"string","const":"pending"},"pollAfterSeconds":{"type":"integer","minimum":1}}},"V1DeviceTokenResponse":{"type":"object","additionalProperties":false,"required":["apiUrl","token","tokenType","expiresAt","session","workspace","connection","scopes","modelAccessMode","allowedModelKeys"],"properties":{"apiUrl":{"type":"string","format":"uri"},"token":{"type":"string","pattern":"^prfm_agent_[A-Za-z0-9_-]+$","writeOnly":true},"tokenType":{"type":"string","const":"Bearer"},"expiresAt":{"type":"string","format":"date-time"},"session":{"type":"string","const":"/v1/session"},"workspace":{"type":"object","additionalProperties":false,"required":["id","name","slug"],"properties":{"id":{"type":"string","minLength":1,"maxLength":255},"name":{"type":"string","minLength":1,"maxLength":255},"slug":{"type":"string","minLength":1,"maxLength":255}}},"connection":{"type":"object","additionalProperties":false,"required":["id","name"],"properties":{"id":{"type":"string","minLength":1,"maxLength":255},"name":{"type":"string","minLength":1,"maxLength":120}}},"scopes":{"type":"array","minItems":1,"maxItems":50,"items":{"$ref":"#/components/schemas/ExternalAgentScope"}},"modelAccessMode":{"$ref":"#/components/schemas/ExternalAgentModelAccessMode"},"allowedModelKeys":{"$ref":"#/components/schemas/AllowedModelKeys"}}},"WorkspacePath":{"type":"string","minLength":1,"maxLength":4096,"description":"An absolute NFC-normalized Workspace path of at most 4096 Unicode characters. Non-root segments are at most 255 characters and exclude empty segments, leading/trailing whitespace, dot segments, path separators, controls, and unpaired surrogates."},"WorkspacePathSegment":{"type":"string","minLength":1,"maxLength":255,"description":"An NFC-normalized path segment without leading/trailing whitespace, dot segments, separators, controls, or unpaired surrogates."},"V1Capabilities":{"type":"object","additionalProperties":false,"required":["session","files","pages","data","stagedCommits"],"properties":{"session":{"type":"boolean","const":true},"files":{"type":"object","additionalProperties":false,"required":["read","write","history"],"properties":{"read":{"type":"boolean","const":true},"write":{"type":"boolean","const":true},"history":{"type":"boolean","const":true}}},"pages":{"type":"boolean","const":true},"data":{"type":"boolean","const":false},"stagedCommits":{"type":"boolean","const":false}}},"V1Limits":{"type":"object","additionalProperties":false,"required":["fs"],"properties":{"fs":{"type":"object","additionalProperties":false,"required":["maxDepth","inlineMaxBytes","directWriteMaxBytes"],"properties":{"maxDepth":{"type":"integer","const":1},"inlineMaxBytes":{"type":"integer","const":1048576},"directWriteMaxBytes":{"type":"integer","const":52428800}}}}},"V1Links":{"type":"object","additionalProperties":false,"required":["self","openapi","authDevice","authToken","session","fs","fsHistory","pageValidate"],"properties":{"self":{"type":"string","const":"/v1"},"openapi":{"type":"string","const":"/v1/openapi.json"},"authDevice":{"type":"string","const":"/v1/auth/device"},"authToken":{"type":"string","const":"/v1/auth/token"},"session":{"type":"string","const":"/v1/session"},"fs":{"type":"string","const":"/v1/fs"},"fsHistory":{"type":"string","const":"/v1/fs/history"},"pageValidate":{"type":"string","const":"/v1/pages/validate"}}},"V1Discovery":{"type":"object","additionalProperties":false,"required":["api","authentication","version","capabilities","limits","links"],"properties":{"api":{"type":"string","const":"proforma"},"authentication":{"type":"object","additionalProperties":false,"required":["type"],"properties":{"type":{"type":"string","const":"bearer"}}},"version":{"type":"string","const":"v1"},"capabilities":{"$ref":"#/components/schemas/V1Capabilities","description":"Mounted API availability for this checkpoint."},"limits":{"$ref":"#/components/schemas/V1Limits"},"links":{"$ref":"#/components/schemas/V1Links"}}},"V1AgentApiPermissions":{"type":"object","additionalProperties":false,"required":["context","catalog","data","pages","actions","connections","runs","automations","tracking","prospecting","chat"],"properties":{"context":{"type":"object","additionalProperties":false,"required":["read"],"properties":{"read":{"type":"boolean"}}},"catalog":{"type":"object","additionalProperties":false,"required":["read"],"properties":{"read":{"type":"boolean"}}},"data":{"type":"object","additionalProperties":false,"required":["preview","query","define"],"properties":{"preview":{"type":"boolean"},"query":{"type":"boolean"},"define":{"type":"boolean"}}},"pages":{"type":"object","additionalProperties":false,"required":["read","write"],"properties":{"read":{"type":"boolean"},"write":{"type":"boolean"}}},"actions":{"type":"object","additionalProperties":false,"required":["read","write","run"],"properties":{"read":{"type":"boolean"},"write":{"type":"boolean"},"run":{"type":"boolean"}}},"connections":{"type":"object","additionalProperties":false,"required":["read","manage"],"properties":{"read":{"type":"boolean"},"manage":{"type":"boolean"}}},"runs":{"type":"object","additionalProperties":false,"required":["read","operate"],"properties":{"read":{"type":"boolean"},"operate":{"type":"boolean"}}},"automations":{"type":"object","additionalProperties":false,"required":["read","manage"],"properties":{"read":{"type":"boolean"},"manage":{"type":"boolean"}}},"tracking":{"type":"object","additionalProperties":false,"required":["read","keyCreate","write"],"properties":{"read":{"type":"boolean"},"keyCreate":{"type":"boolean"},"write":{"type":"boolean"}}},"prospecting":{"type":"object","additionalProperties":false,"required":["read","write","reveal"],"properties":{"read":{"type":"boolean"},"write":{"type":"boolean"},"reveal":{"type":"boolean"}}},"chat":{"type":"object","additionalProperties":false,"required":["run","createArtifacts"],"properties":{"run":{"type":"boolean"},"createArtifacts":{"type":"boolean"}}}}},"V1Session":{"type":"object","additionalProperties":false,"required":["version","capabilities","limits","links","requestId","workspace","connection","scopes","modelAccessMode","allowedModelKeys","agentApiPermissions"],"properties":{"version":{"type":"string","const":"v1"},"capabilities":{"$ref":"#/components/schemas/V1Capabilities","description":"Mounted API availability. Effective authority is determined separately by scopes and the current Workspace role."},"limits":{"$ref":"#/components/schemas/V1Limits"},"links":{"$ref":"#/components/schemas/V1Links"},"requestId":{"type":"string","minLength":1,"maxLength":255},"workspace":{"type":"object","additionalProperties":false,"required":["id","name","slug","role"],"properties":{"id":{"type":"string","minLength":1,"maxLength":255},"name":{"type":"string","minLength":1,"maxLength":255},"slug":{"type":"string","minLength":1,"maxLength":255},"role":{"type":"string","enum":["owner","editor","viewer"]}}},"connection":{"type":"object","additionalProperties":false,"required":["id","name","expiresAt"],"properties":{"id":{"type":"string","minLength":1,"maxLength":255},"name":{"type":"string","minLength":1,"maxLength":120},"expiresAt":{"oneOf":[{"type":"string","format":"date-time"},{"type":"null"}]}}},"scopes":{"type":"array","maxItems":50,"uniqueItems":true,"items":{"$ref":"#/components/schemas/ExternalAgentScope"}},"modelAccessMode":{"$ref":"#/components/schemas/ExternalAgentModelAccessMode"},"allowedModelKeys":{"$ref":"#/components/schemas/AllowedModelKeys"},"agentApiPermissions":{"$ref":"#/components/schemas/V1AgentApiPermissions"}}},"V1ErrorEnvelope":{"type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId","requiredScopes","details","authorizationUrl"],"properties":{"code":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-z][a-z0-9_]*$"},"message":{"type":"string","minLength":1,"maxLength":10000},"requestId":{"type":"string","minLength":1,"maxLength":255},"requiredScopes":{"type":"array","maxItems":50,"items":{"$ref":"#/components/schemas/ExternalAgentScope"}},"details":{"oneOf":[{"type":"object","additionalProperties":true},{"type":"null"}]},"authorizationUrl":{"oneOf":[{"type":"string","format":"uri"},{"type":"null"}]}}}}},"WorkspaceFolderNode":{"type":"object","additionalProperties":false,"required":["state","nodeId","workspaceId","kind","parentId","position","name","path","nodeVersion","etag"],"properties":{"state":{"type":"string","const":"active"},"nodeId":{"type":"string","minLength":1},"workspaceId":{"type":"string","minLength":1},"kind":{"type":"string","const":"folder"},"parentId":{"oneOf":[{"type":"string","minLength":1},{"type":"null"}]},"position":{"type":"integer","minimum":0},"name":{"$ref":"#/components/schemas/WorkspacePathSegment"},"path":{"allOf":[{"$ref":"#/components/schemas/WorkspacePath"},{"not":{"const":"/"}}]},"nodeVersion":{"type":"integer","minimum":1},"etag":{"type":"string","minLength":1}}},"SourceColumn":{"type":"object","additionalProperties":false,"required":["name","type"],"properties":{"name":{"type":"string","minLength":1},"type":{"type":"string","minLength":1},"nullable":{"type":"boolean"},"description":{"type":"string"}}},"WorkspaceFileMetadata":{"type":"object","additionalProperties":false,"properties":{"previewRows":{"type":"integer","minimum":0},"totalRows":{"oneOf":[{"type":"integer","minimum":0},{"type":"null"}]},"columns":{"type":"array","items":{"$ref":"#/components/schemas/SourceColumn"}},"pageCount":{"oneOf":[{"type":"integer","minimum":1},{"type":"null"}]},"textLength":{"type":"integer","minimum":0},"imageMediaType":{"type":"string","minLength":1,"maxLength":255},"videoMediaType":{"type":"string","minLength":1,"maxLength":255},"pdfIndexStatus":{"type":"string","enum":["not_applicable","indexed","partial","failed"]},"pdfIndexedAt":{"type":"string","format":"date-time"},"pdfIndexedPageCount":{"type":"integer","minimum":0},"pdfIndexedChunkCount":{"type":"integer","minimum":0},"pdfPoorPageCount":{"type":"integer","minimum":0},"pdfIndexError":{"type":"string","minLength":1,"maxLength":2000}}},"WorkspaceFileRevision":{"type":"object","additionalProperties":false,"required":["id","revision","parentRevisionId","fileKind","extension","contentType","sizeBytes","checksumSha256","metadata","authorUserId","externalConnectionId","authorKind","message","createdAt"],"properties":{"id":{"type":"string","minLength":1},"revision":{"type":"integer","minimum":1},"parentRevisionId":{"oneOf":[{"type":"string","minLength":1},{"type":"null"}]},"fileKind":{"type":"string","enum":["csv","pdf","image","video","text","binary"]},"extension":{"oneOf":[{"type":"string","pattern":"^[a-z0-9]{1,32}$"},{"type":"null"}]},"contentType":{"type":"string","minLength":1,"maxLength":255},"sizeBytes":{"type":"integer","minimum":0},"checksumSha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"metadata":{"$ref":"#/components/schemas/WorkspaceFileMetadata"},"authorUserId":{"oneOf":[{"type":"string","minLength":1},{"type":"null"}]},"externalConnectionId":{"oneOf":[{"type":"string","minLength":1},{"type":"null"}]},"authorKind":{"type":"string","enum":["human","ai","external_agent","system"]},"message":{"oneOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time"}}},"WorkspaceFile":{"type":"object","additionalProperties":false,"required":["fileId","workspaceId","parentId","name","path","nodeVersion","etag","revision"],"description":"The path must end with `name`.","properties":{"fileId":{"type":"string","minLength":1},"workspaceId":{"type":"string","minLength":1},"parentId":{"oneOf":[{"type":"string","minLength":1},{"type":"null"}]},"name":{"$ref":"#/components/schemas/WorkspacePathSegment"},"path":{"$ref":"#/components/schemas/WorkspacePath"},"nodeVersion":{"type":"integer","minimum":1},"etag":{"type":"string","minLength":1},"revision":{"$ref":"#/components/schemas/WorkspaceFileRevision"}}},"PageProject":{"type":"object","additionalProperties":false,"required":["format","entrypoint","files"],"description":"One atomic Page package. `files` must include `index.tsx`; paths are normalized relative .ts/.tsx module paths, Page-local modules never become Workspace nodes, and total source across all files cannot exceed 2000000 characters. Source runs in the governed Page runtime: raw browser globals, direct network/navigation APIs, dynamic code loading, unsupported imports, and module-scope hooks are rejected. Use POST /v1/pages/validate for authoritative static diagnostics before writing.","properties":{"format":{"type":"string","const":"project-v1"},"entrypoint":{"type":"string","const":"index.tsx"},"files":{"type":"object","minProperties":1,"maxProperties":100,"x-proforma-max-total-source-characters":2000000,"propertyNames":{"type":"string","minLength":1,"maxLength":240,"pattern":"^(?!/)(?![A-Za-z][A-Za-z0-9+.-]*:)(?![\\s\\S]*[\\\\\\u0000])(?![\\s\\S]*[\\uD800-\\uDFFF])(?![\\s\\S]*(?:^|/)\\.{1,2}(?:/|$))(?![\\s\\S]*//)[\\s\\S]+\\.tsx?$","description":"A relative POSIX .ts/.tsx path without empty or dot segments, URL schemes, NUL bytes, or unpaired Unicode surrogates."},"additionalProperties":{"type":"string","maxLength":500000,"pattern":"^(?![\\s\\S]*[\\u0000\\uD800-\\uDFFF])[\\s\\S]*$","description":"Page source cannot contain NUL bytes or unpaired Unicode surrogates."},"required":["index.tsx"]}}},"V1PageProjectValidationRequest":{"type":"object","additionalProperties":false,"required":["project"],"properties":{"project":{"$ref":"#/components/schemas/PageProject"}}},"PageBuildDiagnostic":{"type":"object","additionalProperties":false,"required":["phase","severity","message"],"properties":{"phase":{"type":"string","enum":["file_validation","project_validation","typecheck","render","visual_review","commit"]},"severity":{"type":"string","enum":["error","warning"]},"path":{"oneOf":[{"type":"string","minLength":1,"maxLength":240,"pattern":"^(?!/)(?![A-Za-z][A-Za-z0-9+.-]*:)(?![\\s\\S]*[\\\\\\u0000])(?![\\s\\S]*[\\uD800-\\uDFFF])(?![\\s\\S]*(?:^|/)\\.{1,2}(?:/|$))(?![\\s\\S]*//)[\\s\\S]+\\.tsx?$"},{"type":"null"}]},"line":{"type":"integer","minimum":1},"column":{"type":"integer","minimum":1},"code":{"type":"string","minLength":1,"maxLength":120},"message":{"type":"string","minLength":1,"maxLength":2000}}},"V1PageProjectValidationResponse":{"type":"object","additionalProperties":false,"required":["valid","diagnostics"],"description":"`valid` is true exactly when `diagnostics` contains no error-severity item.","properties":{"valid":{"type":"boolean"},"diagnostics":{"type":"array","maxItems":32,"items":{"$ref":"#/components/schemas/PageBuildDiagnostic"}}}},"WorkspacePage":{"type":"object","additionalProperties":false,"required":["workspaceId","pageId","nodeId","parentId","name","path","nodeVersion","revisionId","revision","etag"],"description":"The path must end with `name`.","properties":{"workspaceId":{"type":"string","minLength":1},"pageId":{"type":"string","minLength":1},"nodeId":{"type":"string","minLength":1},"parentId":{"oneOf":[{"type":"string","minLength":1},{"type":"null"}]},"name":{"$ref":"#/components/schemas/WorkspacePathSegment"},"path":{"$ref":"#/components/schemas/WorkspacePath"},"nodeVersion":{"type":"integer","minimum":1},"revisionId":{"type":"string","minLength":1},"revision":{"type":"integer","minimum":1},"etag":{"type":"string","minLength":1}}},"V1FsPageLinks":{"type":"object","additionalProperties":false,"required":["app"],"properties":{"app":{"type":"string","format":"uri","pattern":"^https?://","maxLength":2048,"description":"The canonical Quest app URL for this Page."}}},"V1FsFolderChild":{"type":"object","additionalProperties":false,"required":["kind","node"],"properties":{"kind":{"type":"string","const":"folder"},"node":{"$ref":"#/components/schemas/WorkspaceFolderNode"}}},"V1FsFileChild":{"type":"object","additionalProperties":false,"required":["kind","file"],"properties":{"kind":{"type":"string","const":"file"},"file":{"$ref":"#/components/schemas/WorkspaceFile"}}},"V1FsPageChild":{"type":"object","additionalProperties":false,"required":["kind","page","links"],"properties":{"kind":{"type":"string","const":"page"},"page":{"$ref":"#/components/schemas/WorkspacePage"},"links":{"$ref":"#/components/schemas/V1FsPageLinks"}}},"V1FsFolder":{"type":"object","additionalProperties":false,"required":["kind","path","node","children"],"description":"The Workspace root has `path: /` and `node: null`; every other folder has a matching folder node.","properties":{"kind":{"type":"string","const":"folder"},"path":{"$ref":"#/components/schemas/WorkspacePath"},"node":{"oneOf":[{"$ref":"#/components/schemas/WorkspaceFolderNode"},{"type":"null"}]},"children":{"type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/V1FsFolderChild"},{"$ref":"#/components/schemas/V1FsFileChild"},{"$ref":"#/components/schemas/V1FsPageChild"}],"discriminator":{"propertyName":"kind","mapping":{"folder":"#/components/schemas/V1FsFolderChild","file":"#/components/schemas/V1FsFileChild","page":"#/components/schemas/V1FsPageChild"}}}}}},"V1FsInlineUtf8Content":{"type":"object","additionalProperties":false,"required":["type","encoding","contentType","sizeBytes","content"],"properties":{"type":{"type":"string","const":"inline"},"encoding":{"type":"string","const":"utf8"},"contentType":{"type":"string","minLength":1,"maxLength":255},"sizeBytes":{"type":"integer","minimum":0,"maximum":1048576},"content":{"type":"string"}}},"V1FsInlineBase64Content":{"type":"object","additionalProperties":false,"required":["type","encoding","contentType","sizeBytes","content"],"properties":{"type":{"type":"string","const":"inline"},"encoding":{"type":"string","const":"base64"},"contentType":{"type":"string","minLength":1,"maxLength":255},"sizeBytes":{"type":"integer","minimum":0,"maximum":1048576},"content":{"type":"string","pattern":"^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$"}}},"V1FsDownloadContent":{"type":"object","additionalProperties":false,"required":["type","authenticated","href","contentType","sizeBytes"],"properties":{"type":{"type":"string","const":"download"},"authenticated":{"type":"boolean","const":true},"href":{"type":"string","pattern":"^/v1(?:/|\\?)","minLength":1,"maxLength":2048},"contentType":{"type":"string","minLength":1,"maxLength":255},"sizeBytes":{"type":"integer","minimum":0}}},"V1FsFile":{"type":"object","additionalProperties":false,"required":["kind","file","content"],"description":"The content descriptor's contentType and sizeBytes exactly match the selected File revision.","properties":{"kind":{"type":"string","const":"file"},"file":{"$ref":"#/components/schemas/WorkspaceFile"},"content":{"oneOf":[{"$ref":"#/components/schemas/V1FsInlineUtf8Content"},{"$ref":"#/components/schemas/V1FsInlineBase64Content"},{"$ref":"#/components/schemas/V1FsDownloadContent"}]}}},"V1FsPage":{"type":"object","additionalProperties":false,"required":["kind","page","project","links"],"properties":{"kind":{"type":"string","const":"page"},"page":{"$ref":"#/components/schemas/WorkspacePage"},"project":{"$ref":"#/components/schemas/PageProject"},"links":{"$ref":"#/components/schemas/V1FsPageLinks"}}},"V1FsGetResponse":{"type":"object","additionalProperties":false,"required":["resource"],"properties":{"resource":{"oneOf":[{"$ref":"#/components/schemas/V1FsFolder"},{"$ref":"#/components/schemas/V1FsFile"},{"$ref":"#/components/schemas/V1FsPage"}],"discriminator":{"propertyName":"kind","mapping":{"folder":"#/components/schemas/V1FsFolder","file":"#/components/schemas/V1FsFile","page":"#/components/schemas/V1FsPage"}}}}},"V1FsPageCommitResult":{"type":"object","additionalProperties":false,"required":["operation","operationIndex","page"],"properties":{"operation":{"type":"string","enum":["create_page","revise_page"]},"operationIndex":{"type":"integer","const":0},"page":{"$ref":"#/components/schemas/WorkspacePage"}}},"V1FsPageCommitReceipt":{"type":"object","additionalProperties":false,"required":["format","commitId","workspaceId","idempotencyKey","message","committedAt","results"],"properties":{"format":{"type":"string","const":"workspace-commit-v1"},"commitId":{"type":"string","minLength":1},"workspaceId":{"type":"string","minLength":1},"idempotencyKey":{"type":"string","minLength":1,"maxLength":255},"message":{"oneOf":[{"type":"string"},{"type":"null"}]},"committedAt":{"type":"string","format":"date-time"},"results":{"type":"array","minItems":1,"maxItems":1,"items":{"$ref":"#/components/schemas/V1FsPageCommitResult"}}}},"V1FsPageWriteResponse":{"type":"object","additionalProperties":false,"required":["receipt","replayed","resource"],"description":"The receipt contains exactly one Page result whose Workspace, identity, revision, path, and ETag match `resource.page`.","properties":{"receipt":{"$ref":"#/components/schemas/V1FsPageCommitReceipt"},"replayed":{"type":"boolean"},"resource":{"$ref":"#/components/schemas/V1FsPage"}}},"V1FsHistoryResponse":{"type":"object","additionalProperties":false,"required":["file","revisions"],"properties":{"file":{"$ref":"#/components/schemas/WorkspaceFile"},"revisions":{"type":"array","items":{"$ref":"#/components/schemas/WorkspaceFileRevision"}}}}}}}