REST reference · 0.2.0
REST API
112 operations from the public OpenAPI contract, with request parameters, schemas and documented responses.
Request conventions
Requests use your API origin followed by /v1. Supply the credential required by each operation and replace the placeholders in endpoint examples with your resource IDs and values.
curl "$NUFS_ENDPOINT/v1/drives" \
-H "Authorization: Bearer $NUFS_TOKEN"POST /auth/refreshRotate a refresh token+
Authorization
No bearer security requirement is declared for this operation.
Parameters
No parameter schema is declared here. Path identities shown in the URL must still be supplied.
Request body
Required · application/json
| Field | Type | Meaning and constraints |
|---|---|---|
refresh_tokenRequired | string | minLength: 1 |
{
"application/json": {
"schema": {
"type": "object",
"required": [
"refresh_token"
],
"properties": {
"refresh_token": {
"type": "string",
"minLength": 1
}
}
}
}
}Documented responses
200 · Rotated session
{
"application/json": {
"schema": {
"$ref": "#/components/schemas/RefreshedSession"
}
}
}401 · invalid_session
{
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}500 · Session rotation or reuse revocation could not be committed
{
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}Request template
curl --request POST \
'https://api.example.test/v1/auth/refresh' \
-H 'Content-Type: application/json' \
--data '{"refresh_token":"REPLACE_WITH_VALID_VALUE"}'Add all required query/header parameters shown above. Binary bodies, authentication inputs and omitted schemas require the corresponding operation’s input; this template is not a ready-to-run credentialed request.
Request and response fields
{
"type": "object",
"required": [
"access_token",
"access_expires_at",
"refresh_token",
"refresh_expires_at"
],
"properties": {
"access_token": {
"type": "string",
"minLength": 1
},
"access_expires_at": {
"type": "string",
"format": "date-time"
},
"refresh_token": {
"type": "string",
"minLength": 1
},
"refresh_expires_at": {
"type": "string",
"format": "date-time"
}
}
}{
"type": "object",
"required": [
"error"
],
"properties": {
"error": {
"type": "object",
"required": [
"code",
"message"
],
"properties": {
"code": {
"type": "string"
},
"message": {
"type": "string"
}
}
}
}
}POST /auth/logoutOperation reference+
Authorization
Use the authority permitted by this operation. bearer
Parameters
No parameter schema is declared here. Path identities shown in the URL must still be supplied.
Request body
No request-body schema is declared in the contract for this operation. This does not imply an empty body is sufficient for every endpoint.
Documented responses
204 · Current interactive session revoked
401 · Interactive session required; machine keys return unauthorized
{
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}500 · Session revocation could not be committed
{
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}Request template
curl --request POST \
'https://api.example.test/v1/auth/logout' \
-H 'Authorization: Bearer REPLACE_WITH_OPERATION_CREDENTIAL'Add all required query/header parameters shown above. Binary bodies, authentication inputs and omitted schemas require the corresponding operation’s input; this template is not a ready-to-run credentialed request.
Request and response fields
{
"type": "object",
"required": [
"error"
],
"properties": {
"error": {
"type": "object",
"required": [
"code",
"message"
],
"properties": {
"code": {
"type": "string"
},
"message": {
"type": "string"
}
}
}
}
}GET /access-keysList active machine credentials+
Authorization
Use the authority permitted by this operation. bearer
Parameters
No parameter schema is declared here. Path identities shown in the URL must still be supplied.
Request body
No request-body schema is declared in the contract for this operation. This does not imply an empty body is sufficient for every endpoint.
Documented responses
200 · Active access keys
401 · Interactive session required
Request template
curl --request GET \
'https://api.example.test/v1/access-keys' \
-H 'Authorization: Bearer REPLACE_WITH_OPERATION_CREDENTIAL'Add all required query/header parameters shown above. Binary bodies, authentication inputs and omitted schemas require the corresponding operation’s input; this template is not a ready-to-run credentialed request.
POST /access-keysCreate a machine credential; its secret is returned exactly once+
Authorization
Use the authority permitted by this operation. bearer
Parameters
No parameter schema is declared here. Path identities shown in the URL must still be supplied.
Request body
Required · application/json
| Field | Type | Meaning and constraints |
|---|---|---|
labelRequired | string | minLength: 1 · maxLength: 100 |
accessRequired | "read" | "write" | "admin" | |
scope_typeOptional | "account" | "drive" | |
scope_idOptional | string | null | format: "uuid" |
expires_atOptional | string | null | format: "date-time" |
{
"application/json": {
"schema": {
"type": "object",
"required": [
"label",
"access"
],
"properties": {
"label": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"access": {
"enum": [
"read",
"write",
"admin"
]
},
"scope_type": {
"enum": [
"account",
"drive"
],
"default": "account"
},
"scope_id": {
"type": [
"string",
"null"
],
"format": "uuid"
},
"expires_at": {
"type": [
"string",
"null"
],
"format": "date-time"
}
}
}
}
}Documented responses
201 · Access key, one-time bearer secret, and separate S3 access-key ID/signing secret
401 · Interactive session required
Request template
curl --request POST \
'https://api.example.test/v1/access-keys' \
-H 'Authorization: Bearer REPLACE_WITH_OPERATION_CREDENTIAL' \
-H 'Content-Type: application/json' \
--data '{"label":"REPLACE_WITH_VALID_VALUE","access":"read"}'Add all required query/header parameters shown above. Binary bodies, authentication inputs and omitted schemas require the corresponding operation’s input; this template is not a ready-to-run credentialed request.
DELETE /access-keys/{key}Revoke a machine credential+
Authorization
Use the authority permitted by this operation. bearer
Parameters
| Name / location | Type | Requirement and constraints |
|---|---|---|
key · path | string | Required. format: "uuid" |
Request body
No request-body schema is declared in the contract for this operation. This does not imply an empty body is sufficient for every endpoint.
Documented responses
204 · Revoked
404 · Access key not found
Request template
curl --request DELETE \
'https://api.example.test/v1/access-keys/{key}' \
-H 'Authorization: Bearer REPLACE_WITH_OPERATION_CREDENTIAL'Add all required query/header parameters shown above. Binary bodies, authentication inputs and omitted schemas require the corresponding operation’s input; this template is not a ready-to-run credentialed request.
POST /access-keys/delegateMint a narrower child credential from an access key+
Authorization
Use the authority permitted by this operation. bearer
Parameters
No parameter schema is declared here. Path identities shown in the URL must still be supplied.
Request body
No request-body schema is declared in the contract for this operation. This does not imply an empty body is sufficient for every endpoint.
Documented responses
201 · Child key and one-time secret
403 · Scope, authority, or expiry escalation
Request template
curl --request POST \
'https://api.example.test/v1/access-keys/delegate' \
-H 'Authorization: Bearer REPLACE_WITH_OPERATION_CREDENTIAL'Add all required query/header parameters shown above. Binary bodies, authentication inputs and omitted schemas require the corresponding operation’s input; this template is not a ready-to-run credentialed request.
GET /drivesOperation reference+
Authorization
Use the authority permitted by this operation. bearer
Parameters
No parameter schema is declared here. Path identities shown in the URL must still be supplied.
Request body
No request-body schema is declared in the contract for this operation. This does not imply an empty body is sufficient for every endpoint.
Documented responses
200 · Drives visible to the current identity, filtered by key scope
Request template
curl --request GET \
'https://api.example.test/v1/drives' \
-H 'Authorization: Bearer REPLACE_WITH_OPERATION_CREDENTIAL'Add all required query/header parameters shown above. Binary bodies, authentication inputs and omitted schemas require the corresponding operation’s input; this template is not a ready-to-run credentialed request.
POST /drivesActivate an owned drive from selected storage and seats+
Authorization
Use the authority permitted by this operation. bearer
Parameters
No parameter schema is declared here. Path identities shown in the URL must still be supplied.
Request body
Required · application/json
| Field | Type | Meaning and constraints |
|---|---|---|
nameRequired | string | minLength: 1 · maxLength: 100 |
storage_bytesRequired | integer | minimum: 1 · maximum: 1000000000000000 |
seatsRequired | integer | minimum: 1 · maximum: 100000 |
plan_version_idOptional | string | Version returned by GET /plans. Rejects stale terms with 409; omit when cancelling an existing subscription. format: "uuid" |
{
"application/json": {
"schema": {
"$ref": "#/components/schemas/DrivePlanSelection"
}
}
}Documented responses
201 · Drive created
403 · Permission or entitlement limit
Request template
curl --request POST \
'https://api.example.test/v1/drives' \
-H 'Authorization: Bearer REPLACE_WITH_OPERATION_CREDENTIAL' \
-H 'Content-Type: application/json' \
--data '{"name":"REPLACE_WITH_VALID_VALUE","storage_bytes":1,"seats":1}'Add all required query/header parameters shown above. Binary bodies, authentication inputs and omitted schemas require the corresponding operation’s input; this template is not a ready-to-run credentialed request.
Request and response fields
{
"type": "object",
"additionalProperties": false,
"required": [
"name",
"storage_bytes",
"seats"
],
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"storage_bytes": {
"type": "integer",
"minimum": 1,
"maximum": 1000000000000000
},
"seats": {
"type": "integer",
"minimum": 1,
"maximum": 100000
},
"plan_version_id": {
"type": "string",
"format": "uuid",
"description": "Version returned by GET /plans. Rejects stale terms with 409; omit when cancelling an existing subscription."
}
},
"description": "Storage and member allowances are validated against the published plan catalog. Retrieve /plans before selecting a plan; prices and add-on increments can change."
}GET /drives/{drive}Operation reference+
Authorization
Use the authority permitted by this operation. bearer
Parameters
| Name / location | Type | Requirement and constraints |
|---|---|---|
drive · path | string | Required. format: "uuid" |
Request body
No request-body schema is declared in the contract for this operation. This does not imply an empty body is sufficient for every endpoint.
Documented responses
200 · Drive
404 · Not found or inaccessible
Request template
curl --request GET \
'https://api.example.test/v1/drives/{drive}' \
-H 'Authorization: Bearer REPLACE_WITH_OPERATION_CREDENTIAL'Add all required query/header parameters shown above. Binary bodies, authentication inputs and omitted schemas require the corresponding operation’s input; this template is not a ready-to-run credentialed request.
DELETE /drives/{drive}Operation reference+
Authorization
Use the authority permitted by this operation. bearer
Parameters
| Name / location | Type | Requirement and constraints |
|---|---|---|
drive · path | string | Required. format: "uuid" |
Request body
No request-body schema is declared in the contract for this operation. This does not imply an empty body is sufficient for every endpoint.
Documented responses
204 · Drive deleted
404 · Drive inaccessible
Request template
curl --request DELETE \
'https://api.example.test/v1/drives/{drive}' \
-H 'Authorization: Bearer REPLACE_WITH_OPERATION_CREDENTIAL'Add all required query/header parameters shown above. Binary bodies, authentication inputs and omitted schemas require the corresponding operation’s input; this template is not a ready-to-run credentialed request.
POST /drives/{drive}/mount-credentialsIssue a short-lived read or write credential for one drive+
Authorization
Use the authority permitted by this operation. bearer
Parameters
| Name / location | Type | Requirement and constraints |
|---|---|---|
drive · path | string | Required. format: "uuid" |
Request body
Required · application/json
| Field | Type | Meaning and constraints |
|---|---|---|
accessOptional | "read" | "write" | |
ttl_secondsOptional | integer | minimum: 60 · maximum: 86400 |
{
"application/json": {
"schema": {
"type": "object",
"properties": {
"access": {
"type": "string",
"enum": [
"read",
"write"
],
"default": "write"
},
"ttl_seconds": {
"type": "integer",
"minimum": 60,
"maximum": 86400,
"default": 3600
}
}
}
}
}Documented responses
201 · Temporary credential and one-time secret
403 · Authority cannot be delegated
Request template
curl --request POST \
'https://api.example.test/v1/drives/{drive}/mount-credentials' \
-H 'Authorization: Bearer REPLACE_WITH_OPERATION_CREDENTIAL' \
-H 'Content-Type: application/json' \
--data '{}'Add all required query/header parameters shown above. Binary bodies, authentication inputs and omitted schemas require the corresponding operation’s input; this template is not a ready-to-run credentialed request.
DELETE /drives/{drive}/mount-credentials/{credential}Revoke an owned temporary credential; scoped parents can revoke only their own direct children+
Authorization
Use the authority permitted by this operation. bearer
Parameters
| Name / location | Type | Requirement and constraints |
|---|---|---|
drive · path | string | Required. format: "uuid" |
credential · path | string | Required. format: "uuid" |
Request body
No request-body schema is declared in the contract for this operation. This does not imply an empty body is sufficient for every endpoint.
Documented responses
204 · Revoked, including repeated delivery
403 · A mount credential cannot manage credentials
404 · Credential not found or not owned by this parent
Request template
curl --request DELETE \
'https://api.example.test/v1/drives/{drive}/mount-credentials/{credential}' \
-H 'Authorization: Bearer REPLACE_WITH_OPERATION_CREDENTIAL'Add all required query/header parameters shown above. Binary bodies, authentication inputs and omitted schemas require the corresponding operation’s input; this template is not a ready-to-run credentialed request.
GET /drives/{drive}/membersOperation reference+
Authorization
Use the authority permitted by this operation. bearer
Parameters
| Name / location | Type | Requirement and constraints |
|---|---|---|
drive · path | string | Required. format: "uuid" |
Request body
No request-body schema is declared in the contract for this operation. This does not imply an empty body is sufficient for every endpoint.
Documented responses
200 · Drive members
{
"application/json": {
"schema": {
"type": "object",
"required": [
"members"
],
"properties": {
"members": {
"type": "array",
"items": {
"$ref": "#/components/schemas/DriveMember"
}
}
}
}
}
}Request template
curl --request GET \
'https://api.example.test/v1/drives/{drive}/members' \
-H 'Authorization: Bearer REPLACE_WITH_OPERATION_CREDENTIAL'Add all required query/header parameters shown above. Binary bodies, authentication inputs and omitted schemas require the corresponding operation’s input; this template is not a ready-to-run credentialed request.
Request and response fields
{
"type": "object",
"required": [
"user_id",
"email",
"role",
"created_at"
],
"additionalProperties": false,
"properties": {
"user_id": {
"type": "string",
"format": "uuid"
},
"email": {
"type": "string",
"format": "email"
},
"role": {
"type": "string",
"enum": [
"owner",
"admin",
"editor",
"viewer"
]
},
"created_at": {
"type": "string",
"format": "date-time"
}
}
}PATCH /drives/{drive}/members/{member}Change a non-owner member role using interactive admin authority+
Authorization
Use the authority permitted by this operation. bearer
Parameters
No parameter schema is declared here. Path identities shown in the URL must still be supplied.
Request body
Required · application/json
| Field | Type | Meaning and constraints |
|---|---|---|
roleRequired | "viewer" | "editor" | "admin" | |
expected_roleRequired | "viewer" | "editor" | "admin" | "owner" |
{
"application/json": {
"schema": {
"$ref": "#/components/schemas/DriveMemberChange"
}
}
}Documented responses
200 · Updated member
{
"application/json": {
"schema": {
"$ref": "#/components/schemas/DriveMember"
}
}
}400 · Invalid input
401 · Interactive session required
403 · Owner is protected
404 · Drive or member inaccessible
409 · Displayed role no longer matches
Request template
curl --request PATCH \
'https://api.example.test/v1/drives/{drive}/members/{member}' \
-H 'Authorization: Bearer REPLACE_WITH_OPERATION_CREDENTIAL' \
-H 'Content-Type: application/json' \
--data '{"role":"viewer","expected_role":"viewer"}'Add all required query/header parameters shown above. Binary bodies, authentication inputs and omitted schemas require the corresponding operation’s input; this template is not a ready-to-run credentialed request.
Request and response fields
{
"type": "object",
"required": [
"role",
"expected_role"
],
"additionalProperties": false,
"properties": {
"role": {
"type": "string",
"enum": [
"viewer",
"editor",
"admin"
]
},
"expected_role": {
"type": "string",
"enum": [
"viewer",
"editor",
"admin",
"owner"
]
}
}
}{
"type": "object",
"required": [
"user_id",
"email",
"role",
"created_at"
],
"additionalProperties": false,
"properties": {
"user_id": {
"type": "string",
"format": "uuid"
},
"email": {
"type": "string",
"format": "email"
},
"role": {
"type": "string",
"enum": [
"owner",
"admin",
"editor",
"viewer"
]
},
"created_at": {
"type": "string",
"format": "date-time"
}
}
}DELETE /drives/{drive}/members/{member}Remove non-owner access and invalidate outstanding invitations+
Authorization
Use the authority permitted by this operation. bearer
Parameters
| Name / location | Type | Requirement and constraints |
|---|---|---|
expected_role · query | "viewer" | "editor" | "admin" | "owner" | Required. |
Request body
No request-body schema is declared in the contract for this operation. This does not imply an empty body is sufficient for every endpoint.
Documented responses
204 · Membership removed; files remain unchanged
400 · Missing or invalid displayed role
401 · Interactive session required
403 · Owner is protected
404 · Drive or member inaccessible
409 · Displayed role no longer matches
Request template
curl --request DELETE \
'https://api.example.test/v1/drives/{drive}/members/{member}' \
-H 'Authorization: Bearer REPLACE_WITH_OPERATION_CREDENTIAL'Add all required query/header parameters shown above. Binary bodies, authentication inputs and omitted schemas require the corresponding operation’s input; this template is not a ready-to-run credentialed request.
GET /drives/{drive}/members/policyRead explicit drive member limit and occupied seats+
Interactive owner or admin only. Null means no configured cap. The owner counts as a member. Distinct active invitation emails reserve seats until accepted or unusable.
Authorization
Use the authority permitted by this operation. bearer
Parameters
| Name / location | Type | Requirement and constraints |
|---|---|---|
drive · path | string | Required. format: "uuid" |
Request body
No request-body schema is declared in the contract for this operation. This does not imply an empty body is sufficient for every endpoint.
Documented responses
200 · Member policy
{
"application/json": {
"schema": {
"$ref": "#/components/schemas/DriveMemberPolicy"
}
}
}400 · Invalid drive ID
401 · Interactive session required
404 · Administration unavailable
500 · Policy read failed
Request template
curl --request GET \
'https://api.example.test/v1/drives/{drive}/members/policy' \
-H 'Authorization: Bearer REPLACE_WITH_OPERATION_CREDENTIAL'Add all required query/header parameters shown above. Binary bodies, authentication inputs and omitted schemas require the corresponding operation’s input; this template is not a ready-to-run credentialed request.
Request and response fields
{
"type": "object",
"additionalProperties": false,
"required": [
"drive_id",
"max_members",
"members",
"reserved_invitations",
"revision"
],
"properties": {
"drive_id": {
"type": "string",
"format": "uuid"
},
"max_members": {
"type": [
"integer",
"null"
],
"minimum": 1,
"maximum": 100000
},
"members": {
"type": "integer",
"minimum": 1
},
"reserved_invitations": {
"type": "integer",
"minimum": 0
},
"revision": {
"type": "string",
"pattern": "^[1-9][0-9]*$"
}
}
}GET /account/audit/retentionRead account audit retention policy+
Requires an interactive account owner session. Null keep_days means indefinite retention. Account legal hold blocks cleanup.
Authorization
Use the authority permitted by this operation. bearer
Parameters
No parameter schema is declared here. Path identities shown in the URL must still be supplied.
Request body
No request-body schema is declared in the contract for this operation. This does not imply an empty body is sufficient for every endpoint.
Documented responses
200 · Audit retention policy
{
"application/json": {
"schema": {
"$ref": "#/components/schemas/AccountAuditRetentionPolicy"
}
}
}400 · Invalid account ID
401 · Interactive session required
404 · Account administration unavailable
Request template
curl --request GET \
'https://api.example.test/v1/account/audit/retention' \
-H 'Authorization: Bearer REPLACE_WITH_OPERATION_CREDENTIAL'Add all required query/header parameters shown above. Binary bodies, authentication inputs and omitted schemas require the corresponding operation’s input; this template is not a ready-to-run credentialed request.
Request and response fields
{
"type": "object",
"additionalProperties": false,
"required": [
"user_id",
"keep_days",
"legal_hold",
"revision"
],
"properties": {
"user_id": {
"type": "string",
"format": "uuid"
},
"keep_days": {
"type": [
"integer",
"null"
],
"minimum": 7,
"maximum": 36500,
"description": "Null retains account audit history indefinitely"
},
"legal_hold": {
"type": "boolean",
"description": "Account legal hold blocks cleanup and cannot be changed by this endpoint"
},
"revision": {
"type": "string",
"pattern": "^[1-9][0-9]*$"
}
}
}PUT /account/audit/retentionConfigure account audit retention with a displayed revision guard+
Requires an interactive account owner session. Setting 7–36500 days enables bounded background retirement; null disables retirement. Existing legal hold remains unchanged. Cleanup already committed cannot be undone by a later hold or policy extension.
Authorization
Use the authority permitted by this operation. bearer
Parameters
No parameter schema is declared here. Path identities shown in the URL must still be supplied.
Request body
Required · application/json
| Field | Type | Meaning and constraints |
|---|---|---|
keep_daysRequired | integer | null | minimum: 7 · maximum: 36500 |
expected_revisionRequired | string | Displayed audit policy revision pattern: "^[1-9][0-9]*$" |
{
"application/json": {
"schema": {
"$ref": "#/components/schemas/AuditRetentionUpdate"
}
}
}Documented responses
200 · Updated audit retention policy
{
"application/json": {
"schema": {
"$ref": "#/components/schemas/AccountAuditRetentionPolicy"
}
}
}400 · Invalid retention days or displayed revision
401 · Interactive session required
404 · Account administration unavailable
409 · Displayed policy revision is stale
Request template
curl --request PUT \
'https://api.example.test/v1/account/audit/retention' \
-H 'Authorization: Bearer REPLACE_WITH_OPERATION_CREDENTIAL' \
-H 'Content-Type: application/json' \
--data '{"keep_days":null,"expected_revision":"REPLACE_WITH_VALID_VALUE"}'Add all required query/header parameters shown above. Binary bodies, authentication inputs and omitted schemas require the corresponding operation’s input; this template is not a ready-to-run credentialed request.
Request and response fields
{
"type": "object",
"additionalProperties": false,
"required": [
"keep_days",
"expected_revision"
],
"properties": {
"keep_days": {
"type": [
"integer",
"null"
],
"minimum": 7,
"maximum": 36500
},
"expected_revision": {
"type": "string",
"pattern": "^[1-9][0-9]*$",
"description": "Displayed audit policy revision"
}
}
}{
"type": "object",
"additionalProperties": false,
"required": [
"user_id",
"keep_days",
"legal_hold",
"revision"
],
"properties": {
"user_id": {
"type": "string",
"format": "uuid"
},
"keep_days": {
"type": [
"integer",
"null"
],
"minimum": 7,
"maximum": 36500,
"description": "Null retains account audit history indefinitely"
},
"legal_hold": {
"type": "boolean",
"description": "Account legal hold blocks cleanup and cannot be changed by this endpoint"
},
"revision": {
"type": "string",
"pattern": "^[1-9][0-9]*$"
}
}
}GET /account/auditRead a bounded page of account audit history+
Interactive account session required on every page. The authenticated user is the account subject; no supplied account ID is accepted. Drive events and unattributed unknown login attempts are excluded. Anonymous recovery and reuse events retain null actors. Events descend by identity rather than timestamp. Continue with next_cursor until null; refresh without a cursor for new events. This live traversal is not a database snapshot and late commits may require a refresh. Raw metadata and credential material are omitted.
Authorization
Use the authority permitted by this operation. bearer
Parameters
| Name / location | Type | Requirement and constraints |
|---|---|---|
limit · query | integer | Optional. minimum: 1 · maximum: 200 |
cursor · query | string | Optional. maxLength: 256 |
Request body
No request-body schema is declared in the contract for this operation. This does not imply an empty body is sufficient for every endpoint.
Documented responses
200 · Audit page
{
"application/json": {
"schema": {
"$ref": "#/components/schemas/AuditPage"
}
}
}400 · Invalid page limit or account cursor
401 · Interactive session required
404 · Account administration unavailable
500 · Audit history could not be read
Request template
curl --request GET \
'https://api.example.test/v1/account/audit' \
-H 'Authorization: Bearer REPLACE_WITH_OPERATION_CREDENTIAL'Add all required query/header parameters shown above. Binary bodies, authentication inputs and omitted schemas require the corresponding operation’s input; this template is not a ready-to-run credentialed request.
Request and response fields
{
"type": "object",
"additionalProperties": false,
"required": [
"events",
"next_cursor"
],
"properties": {
"events": {
"type": "array",
"maxItems": 200,
"items": {
"$ref": "#/components/schemas/AuditEvent"
}
},
"next_cursor": {
"type": [
"string",
"null"
],
"maxLength": 256
}
}
}{
"type": "object",
"additionalProperties": false,
"required": [
"id",
"actor_user_id",
"actor_key_id",
"action",
"target_type",
"target_id",
"outcome",
"created_at"
],
"properties": {
"id": {
"type": "string",
"pattern": "^[1-9][0-9]*$",
"description": "Decimal bigint identity preserved without numeric rounding"
},
"actor_user_id": {
"type": [
"string",
"null"
],
"format": "uuid"
},
"actor_key_id": {
"type": [
"string",
"null"
],
"format": "uuid"
},
"action": {
"type": "string"
},
"target_type": {
"type": "string"
},
"target_id": {
"type": [
"string",
"null"
]
},
"outcome": {
"type": "string",
"enum": [
"success",
"denied",
"failed"
]
},
"created_at": {
"type": "string",
"format": "date-time"
}
}
}GET /drives/{drive}/audit/retentionRead drive audit retention policy+
Requires an interactive owner or admin session. Null keep_days means indefinite retention. Shared drive legal hold blocks cleanup.
Authorization
Use the authority permitted by this operation. bearer
Parameters
| Name / location | Type | Requirement and constraints |
|---|---|---|
drive · path | string | Required. format: "uuid" |
Request body
No request-body schema is declared in the contract for this operation. This does not imply an empty body is sufficient for every endpoint.
Documented responses
200 · Audit retention policy
{
"application/json": {
"schema": {
"$ref": "#/components/schemas/AuditRetentionPolicy"
}
}
}400 · Invalid drive ID
401 · Interactive session required
404 · Drive administration unavailable
Request template
curl --request GET \
'https://api.example.test/v1/drives/{drive}/audit/retention' \
-H 'Authorization: Bearer REPLACE_WITH_OPERATION_CREDENTIAL'Add all required query/header parameters shown above. Binary bodies, authentication inputs and omitted schemas require the corresponding operation’s input; this template is not a ready-to-run credentialed request.
Request and response fields
{
"type": "object",
"additionalProperties": false,
"required": [
"drive_id",
"keep_days",
"legal_hold",
"revision"
],
"properties": {
"drive_id": {
"type": "string",
"format": "uuid"
},
"keep_days": {
"type": [
"integer",
"null"
],
"minimum": 7,
"maximum": 36500,
"description": "Null retains audit history indefinitely"
},
"legal_hold": {
"type": "boolean",
"description": "Shared drive legal hold blocks audit cleanup"
},
"revision": {
"type": "string",
"pattern": "^[1-9][0-9]*$"
}
}
}PUT /drives/{drive}/audit/retentionConfigure drive audit retention with a displayed revision guard+
Requires an interactive owner or admin session. Setting 7–36500 days enables bounded background retirement; null disables retirement. Existing legal hold remains unchanged. Cleanup already committed cannot be undone by a later hold or policy extension.
Authorization
Use the authority permitted by this operation. bearer
Parameters
| Name / location | Type | Requirement and constraints |
|---|---|---|
drive · path | string | Required. format: "uuid" |
Request body
Required · application/json
| Field | Type | Meaning and constraints |
|---|---|---|
keep_daysRequired | integer | null | minimum: 7 · maximum: 36500 |
expected_revisionRequired | string | Displayed audit policy revision pattern: "^[1-9][0-9]*$" |
{
"application/json": {
"schema": {
"$ref": "#/components/schemas/AuditRetentionUpdate"
}
}
}Documented responses
200 · Updated audit retention policy
{
"application/json": {
"schema": {
"$ref": "#/components/schemas/AuditRetentionPolicy"
}
}
}400 · Invalid retention days or displayed revision
401 · Interactive session required
404 · Drive administration unavailable
409 · Displayed policy revision is stale
Request template
curl --request PUT \
'https://api.example.test/v1/drives/{drive}/audit/retention' \
-H 'Authorization: Bearer REPLACE_WITH_OPERATION_CREDENTIAL' \
-H 'Content-Type: application/json' \
--data '{"keep_days":null,"expected_revision":"REPLACE_WITH_VALID_VALUE"}'Add all required query/header parameters shown above. Binary bodies, authentication inputs and omitted schemas require the corresponding operation’s input; this template is not a ready-to-run credentialed request.
Request and response fields
{
"type": "object",
"additionalProperties": false,
"required": [
"keep_days",
"expected_revision"
],
"properties": {
"keep_days": {
"type": [
"integer",
"null"
],
"minimum": 7,
"maximum": 36500
},
"expected_revision": {
"type": "string",
"pattern": "^[1-9][0-9]*$",
"description": "Displayed audit policy revision"
}
}
}{
"type": "object",
"additionalProperties": false,
"required": [
"drive_id",
"keep_days",
"legal_hold",
"revision"
],
"properties": {
"drive_id": {
"type": "string",
"format": "uuid"
},
"keep_days": {
"type": [
"integer",
"null"
],
"minimum": 7,
"maximum": 36500,
"description": "Null retains audit history indefinitely"
},
"legal_hold": {
"type": "boolean",
"description": "Shared drive legal hold blocks audit cleanup"
},
"revision": {
"type": "string",
"pattern": "^[1-9][0-9]*$"
}
}
}GET /drives/{drive}/auditRead a bounded page of drive audit history+
Interactive owner or admin session required on every page. Events descend by identity rather than timestamp. Continue with next_cursor until null; refresh without a cursor for new events. This live traversal is not a database snapshot and late commits may require a refresh. Raw metadata and credential material are omitted.
Authorization
Use the authority permitted by this operation. bearer
Parameters
| Name / location | Type | Requirement and constraints |
|---|---|---|
drive · path | string | Required. format: "uuid" |
limit · query | integer | Optional. minimum: 1 · maximum: 200 |
cursor · query | string | Optional. maxLength: 256 |
Request body
No request-body schema is declared in the contract for this operation. This does not imply an empty body is sufficient for every endpoint.
Documented responses
200 · Audit page
{
"application/json": {
"schema": {
"$ref": "#/components/schemas/AuditPage"
}
}
}400 · Invalid page limit or drive cursor
401 · Interactive session required
404 · Drive administration unavailable
500 · Audit history could not be read
Request template
curl --request GET \
'https://api.example.test/v1/drives/{drive}/audit' \
-H 'Authorization: Bearer REPLACE_WITH_OPERATION_CREDENTIAL'Add all required query/header parameters shown above. Binary bodies, authentication inputs and omitted schemas require the corresponding operation’s input; this template is not a ready-to-run credentialed request.
Request and response fields
{
"type": "object",
"additionalProperties": false,
"required": [
"events",
"next_cursor"
],
"properties": {
"events": {
"type": "array",
"maxItems": 200,
"items": {
"$ref": "#/components/schemas/AuditEvent"
}
},
"next_cursor": {
"type": [
"string",
"null"
],
"maxLength": 256
}
}
}{
"type": "object",
"additionalProperties": false,
"required": [
"id",
"actor_user_id",
"actor_key_id",
"action",
"target_type",
"target_id",
"outcome",
"created_at"
],
"properties": {
"id": {
"type": "string",
"pattern": "^[1-9][0-9]*$",
"description": "Decimal bigint identity preserved without numeric rounding"
},
"actor_user_id": {
"type": [
"string",
"null"
],
"format": "uuid"
},
"actor_key_id": {
"type": [
"string",
"null"
],
"format": "uuid"
},
"action": {
"type": "string"
},
"target_type": {
"type": "string"
},
"target_id": {
"type": [
"string",
"null"
]
},
"outcome": {
"type": "string",
"enum": [
"success",
"denied",
"failed"
]
},
"created_at": {
"type": "string",
"format": "date-time"
}
}
}GET /drives/{drive}/retentionRead the enforced version-retention policy+
Authorization
Use the authority permitted by this operation. bearer
Parameters
| Name / location | Type | Requirement and constraints |
|---|---|---|
drive · path | string | Required. format: "uuid" |
Request body
No request-body schema is declared in the contract for this operation. This does not imply an empty body is sufficient for every endpoint.
Documented responses
200 · Retention policy
Request template
curl --request GET \
'https://api.example.test/v1/drives/{drive}/retention' \
-H 'Authorization: Bearer REPLACE_WITH_OPERATION_CREDENTIAL'Add all required query/header parameters shown above. Binary bodies, authentication inputs and omitted schemas require the corresponding operation’s input; this template is not a ready-to-run credentialed request.
PUT /drives/{drive}/retentionReplace the enforced version-retention policy+
Authorization
Use the authority permitted by this operation. bearer
Parameters
| Name / location | Type | Requirement and constraints |
|---|---|---|
drive · path | string | Required. format: "uuid" |
Request body
No request-body schema is declared in the contract for this operation. This does not imply an empty body is sufficient for every endpoint.
Documented responses
200 · Updated retention policy
403 · Admin access required
Request template
curl --request PUT \
'https://api.example.test/v1/drives/{drive}/retention' \
-H 'Authorization: Bearer REPLACE_WITH_OPERATION_CREDENTIAL'Add all required query/header parameters shown above. Binary bodies, authentication inputs and omitted schemas require the corresponding operation’s input; this template is not a ready-to-run credentialed request.
POST /drives/{drive}/reclaimRun safe reachability-based retention and object reclamation+
Authorization
Use the authority permitted by this operation. bearer
Parameters
| Name / location | Type | Requirement and constraints |
|---|---|---|
drive · path | string | Required. format: "uuid" |
Request body
No request-body schema is declared in the contract for this operation. This does not imply an empty body is sufficient for every endpoint.
Documented responses
200 · Reclamation counts and queued physical deletions
403 · Admin access required
Request template
curl --request POST \
'https://api.example.test/v1/drives/{drive}/reclaim' \
-H 'Authorization: Bearer REPLACE_WITH_OPERATION_CREDENTIAL'Add all required query/header parameters shown above. Binary bodies, authentication inputs and omitted schemas require the corresponding operation’s input; this template is not a ready-to-run credentialed request.
POST /drives/{drive}/invitationsOperation reference+
Authorization
Use the authority permitted by this operation. bearer
Parameters
| Name / location | Type | Requirement and constraints |
|---|---|---|
drive · path | string | Required. format: "uuid" |
Request body
No request-body schema is declared in the contract for this operation. This does not imply an empty body is sufficient for every endpoint.
Documented responses
201 · Invitation created
{
"application/json": {
"schema": {
"$ref": "#/components/schemas/InvitationResult"
}
}
}409 · Configured member limit reached
500 · Invitation and audit could not be committed
Request template
curl --request POST \
'https://api.example.test/v1/drives/{drive}/invitations' \
-H 'Authorization: Bearer REPLACE_WITH_OPERATION_CREDENTIAL'Add all required query/header parameters shown above. Binary bodies, authentication inputs and omitted schemas require the corresponding operation’s input; this template is not a ready-to-run credentialed request.
Request and response fields
{
"type": "object",
"required": [
"invitation"
],
"additionalProperties": false,
"properties": {
"invitation": {
"$ref": "#/components/schemas/DriveInvitation"
},
"token": {
"type": "string",
"minLength": 1,
"description": "One-time token exposed only by configured local development delivery"
}
}
}{
"type": "object",
"required": [
"id",
"drive_id",
"email",
"role",
"expires_at",
"created_at"
],
"additionalProperties": false,
"properties": {
"id": {
"type": "string",
"format": "uuid"
},
"drive_id": {
"type": "string",
"format": "uuid"
},
"email": {
"type": "string",
"format": "email"
},
"role": {
"type": "string",
"enum": [
"viewer",
"editor",
"admin"
]
},
"expires_at": {
"type": "string",
"format": "date-time"
},
"accepted_at": {
"type": [
"string",
"null"
],
"format": "date-time"
},
"created_at": {
"type": "string",
"format": "date-time"
}
}
}POST /invitations/acceptOperation reference+
Authorization
Use the authority permitted by this operation. bearer
Parameters
No parameter schema is declared here. Path identities shown in the URL must still be supplied.
Request body
No request-body schema is declared in the contract for this operation. This does not imply an empty body is sufficient for every endpoint.
Documented responses
200 · Membership added or existing role preserved
{
"application/json": {
"schema": {
"$ref": "#/components/schemas/Drive"
}
}
}404 · Invitation expired or revoked or issuer no longer has admin authority
409 · Configured member limit reached
500 · Membership and audit could not be committed
Request template
curl --request POST \
'https://api.example.test/v1/invitations/accept' \
-H 'Authorization: Bearer REPLACE_WITH_OPERATION_CREDENTIAL'Add all required query/header parameters shown above. Binary bodies, authentication inputs and omitted schemas require the corresponding operation’s input; this template is not a ready-to-run credentialed request.
Request and response fields
{
"type": "object",
"required": [
"id",
"name",
"quota_bytes",
"used_bytes",
"state",
"plan",
"role",
"created_at"
],
"properties": {
"id": {
"type": "string",
"format": "uuid"
},
"name": {
"type": "string"
},
"quota_bytes": {
"type": "integer",
"format": "int64"
},
"used_bytes": {
"type": "integer",
"format": "int64"
},
"state": {
"enum": [
"active",
"deleting",
"deleted"
]
},
"source_drive_id": {
"type": [
"string",
"null"
],
"format": "uuid"
},
"source_sequence": {
"type": [
"integer",
"null"
],
"format": "int64"
},
"plan": {
"enum": [
"individual",
"team",
"enterprise"
]
},
"role": {
"enum": [
"viewer",
"editor",
"admin",
"owner"
]
},
"created_at": {
"type": "string",
"format": "date-time"
}
}
}POST /drives/{drive}/snapshotsCapture one immutable, complete drive state+
Authorization
Use the authority permitted by this operation. bearer
Parameters
| Name / location | Type | Requirement and constraints |
|---|---|---|
drive · path | string | Required. format: "uuid" |
Request body
No request-body schema is declared in the contract for this operation. This does not imply an empty body is sufficient for every endpoint.
Documented responses
201 · Snapshot created
404 · Drive not found
Request template
curl --request POST \
'https://api.example.test/v1/drives/{drive}/snapshots' \
-H 'Authorization: Bearer REPLACE_WITH_OPERATION_CREDENTIAL'Add all required query/header parameters shown above. Binary bodies, authentication inputs and omitted schemas require the corresponding operation’s input; this template is not a ready-to-run credentialed request.
GET /drives/{drive}/snapshots/{snapshot}Retrieve a snapshot and its exact namespace references+
Authorization
Use the authority permitted by this operation. bearer
Parameters
| Name / location | Type | Requirement and constraints |
|---|---|---|
drive · path | string | Required. format: "uuid" |
snapshot · path | string | Required. format: "uuid" |
Request body
No request-body schema is declared in the contract for this operation. This does not imply an empty body is sufficient for every endpoint.
Documented responses
200 · Snapshot and entries
404 · Snapshot not found
Request template
curl --request GET \
'https://api.example.test/v1/drives/{drive}/snapshots/{snapshot}' \
-H 'Authorization: Bearer REPLACE_WITH_OPERATION_CREDENTIAL'Add all required query/header parameters shown above. Binary bodies, authentication inputs and omitted schemas require the corresponding operation’s input; this template is not a ready-to-run credentialed request.
GET /drives/{drive}/branchesOperation reference+
Authorization
Use the authority permitted by this operation. bearer
Parameters
| Name / location | Type | Requirement and constraints |
|---|---|---|
drive · path | string | Required. format: "uuid" |
Request body
No request-body schema is declared in the contract for this operation. This does not imply an empty body is sufficient for every endpoint.
Documented responses
200 · Branches; an empty drive returns an empty array, never null
{
"application/json": {
"schema": {
"type": "object",
"required": [
"branches"
],
"properties": {
"branches": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Branch"
}
}
}
}
}
}Request template
curl --request GET \
'https://api.example.test/v1/drives/{drive}/branches' \
-H 'Authorization: Bearer REPLACE_WITH_OPERATION_CREDENTIAL'Add all required query/header parameters shown above. Binary bodies, authentication inputs and omitted schemas require the corresponding operation’s input; this template is not a ready-to-run credentialed request.
Request and response fields
{
"type": "object",
"required": [
"id",
"source_drive_id",
"base_snapshot_id",
"drive_id",
"name",
"status",
"created_by",
"created_at",
"updated_at"
],
"properties": {
"id": {
"type": "string",
"format": "uuid"
},
"source_drive_id": {
"type": "string",
"format": "uuid"
},
"base_snapshot_id": {
"type": "string",
"format": "uuid"
},
"drive_id": {
"type": "string",
"format": "uuid",
"description": "Filesystem scope to mount through nufs-engine"
},
"name": {
"type": "string"
},
"task_id": {
"type": [
"string",
"null"
]
},
"status": {
"enum": [
"active",
"integrated",
"discarded"
]
},
"created_by": {
"type": "string",
"format": "uuid"
},
"created_at": {
"type": "string",
"format": "date-time"
},
"updated_at": {
"type": "string",
"format": "date-time"
},
"integrated_at": {
"type": [
"string",
"null"
],
"format": "date-time"
},
"discarded_at": {
"type": [
"string",
"null"
],
"format": "date-time"
}
}
}POST /drives/{drive}/branchesCreate an isolated branch from an explicit drive snapshot+
Authorization
Use the authority permitted by this operation. bearer
Parameters
| Name / location | Type | Requirement and constraints |
|---|---|---|
drive · path | string | Required. format: "uuid" |
Request body
Required · application/json
| Field | Type | Meaning and constraints |
|---|---|---|
base_snapshot_idRequired | string | format: "uuid" |
nameRequired | string | |
task_idOptional | string | null |
{
"application/json": {
"schema": {
"type": "object",
"required": [
"base_snapshot_id",
"name"
],
"properties": {
"base_snapshot_id": {
"type": "string",
"format": "uuid"
},
"name": {
"type": "string"
},
"task_id": {
"type": [
"string",
"null"
]
}
}
}
}
}Documented responses
201 · Persistent branch created
404 · Snapshot not found
Request template
curl --request POST \
'https://api.example.test/v1/drives/{drive}/branches' \
-H 'Authorization: Bearer REPLACE_WITH_OPERATION_CREDENTIAL' \
-H 'Content-Type: application/json' \
--data '{"base_snapshot_id":"00000000-0000-0000-0000-000000000000","name":"REPLACE_WITH_VALID_VALUE"}'Add all required query/header parameters shown above. Binary bodies, authentication inputs and omitted schemas require the corresponding operation’s input; this template is not a ready-to-run credentialed request.
GET /branches/{branch}Operation reference+
Authorization
Use the authority permitted by this operation. bearer
Parameters
| Name / location | Type | Requirement and constraints |
|---|---|---|
branch · path | string | Required. format: "uuid" |
Request body
No request-body schema is declared in the contract for this operation. This does not imply an empty body is sufficient for every endpoint.
Documented responses
200 · Branch metadata
404 · Branch not found
Request template
curl --request GET \
'https://api.example.test/v1/branches/{branch}' \
-H 'Authorization: Bearer REPLACE_WITH_OPERATION_CREDENTIAL'Add all required query/header parameters shown above. Binary bodies, authentication inputs and omitted schemas require the corresponding operation’s input; this template is not a ready-to-run credentialed request.
GET /branches/{branch}/changesOperation reference+
Authorization
Use the authority permitted by this operation. bearer
Parameters
| Name / location | Type | Requirement and constraints |
|---|---|---|
branch · path | string | Required. format: "uuid" |
Request body
No request-body schema is declared in the contract for this operation. This does not imply an empty body is sufficient for every endpoint.
Documented responses
200 · Added, modified, and deleted entries relative to the base snapshot
{
"application/json": {
"schema": {
"type": "object",
"required": [
"changes"
],
"properties": {
"changes": {
"type": "array",
"items": {
"$ref": "#/components/schemas/BranchChange"
}
}
}
}
}
}Request template
curl --request GET \
'https://api.example.test/v1/branches/{branch}/changes' \
-H 'Authorization: Bearer REPLACE_WITH_OPERATION_CREDENTIAL'Add all required query/header parameters shown above. Binary bodies, authentication inputs and omitted schemas require the corresponding operation’s input; this template is not a ready-to-run credentialed request.
Request and response fields
{
"type": "object",
"required": [
"status",
"branch_entry_id",
"name",
"path",
"kind",
"logical_size"
],
"properties": {
"status": {
"enum": [
"added",
"modified",
"deleted"
]
},
"base_entry_id": {
"type": [
"string",
"null"
],
"format": "uuid"
},
"branch_entry_id": {
"type": "string",
"format": "uuid"
},
"name": {
"type": "string"
},
"path": {
"type": "string",
"description": "Current path in the branch"
},
"base_path": {
"type": [
"string",
"null"
],
"description": "Path in the immutable base snapshot"
},
"kind": {
"enum": [
"file",
"folder"
]
},
"base_version_id": {
"type": [
"string",
"null"
],
"format": "uuid"
},
"version_id": {
"type": [
"string",
"null"
],
"format": "uuid"
},
"logical_size": {
"type": "integer",
"format": "int64"
},
"actor_id": {
"type": [
"string",
"null"
],
"format": "uuid",
"description": "Latest authenticated actor for this branch entry when available"
}
}
}POST /branches/{branch}/access-keyCreate an expiring machine credential scoped to one active branch+
Authorization
Use the authority permitted by this operation. bearer
Parameters
| Name / location | Type | Requirement and constraints |
|---|---|---|
branch · path | string | Required. format: "uuid" |
Request body
No request-body schema is declared in the contract for this operation. This does not imply an empty body is sufficient for every endpoint.
Documented responses
201 · Branch key and one-time secret
401 · Interactive session required
Request template
curl --request POST \
'https://api.example.test/v1/branches/{branch}/access-key' \
-H 'Authorization: Bearer REPLACE_WITH_OPERATION_CREDENTIAL'Add all required query/header parameters shown above. Binary bodies, authentication inputs and omitted schemas require the corresponding operation’s input; this template is not a ready-to-run credentialed request.
POST /branches/{branch}/integrateAtomically integrate branch changes if target entries still match the base snapshot+
Authorization
Use the authority permitted by this operation. bearer
Parameters
| Name / location | Type | Requirement and constraints |
|---|---|---|
branch · path | string | Required. format: "uuid" |
Request body
No request-body schema is declared in the contract for this operation. This does not imply an empty body is sufficient for every endpoint.
Documented responses
200 · Changes integrated
409 · Integration conflict with both states preserved
Request template
curl --request POST \
'https://api.example.test/v1/branches/{branch}/integrate' \
-H 'Authorization: Bearer REPLACE_WITH_OPERATION_CREDENTIAL'Add all required query/header parameters shown above. Binary bodies, authentication inputs and omitted schemas require the corresponding operation’s input; this template is not a ready-to-run credentialed request.
POST /branches/{branch}/discardMark an active branch discarded without deleting shared immutable content+
Authorization
Use the authority permitted by this operation. bearer
Parameters
| Name / location | Type | Requirement and constraints |
|---|---|---|
branch · path | string | Required. format: "uuid" |
Request body
No request-body schema is declared in the contract for this operation. This does not imply an empty body is sufficient for every endpoint.
Documented responses
200 · Branch discarded
409 · Branch is no longer active
Request template
curl --request POST \
'https://api.example.test/v1/branches/{branch}/discard' \
-H 'Authorization: Bearer REPLACE_WITH_OPERATION_CREDENTIAL'Add all required query/header parameters shown above. Binary bodies, authentication inputs and omitted schemas require the corresponding operation’s input; this template is not a ready-to-run credentialed request.
GET /drives/{drive}/entriesOperation reference+
Authorization
Use the authority permitted by this operation. bearer
Parameters
| Name / location | Type | Requirement and constraints |
|---|---|---|
parent_id · query | string | Optional. format: "uuid" |
as_of · query | integer | Optional. Committed drive sequence to resolve under current permissions; this read does not pin history format: "int64" · minimum: 0 |
Request body
No request-body schema is declared in the contract for this operation. This does not imply an empty body is sufficient for every endpoint.
Documented responses
200 · Directory entries
410 · history_expired — a visible historical file version required by this listing was reclaimed
Request template
curl --request GET \
'https://api.example.test/v1/drives/{drive}/entries' \
-H 'Authorization: Bearer REPLACE_WITH_OPERATION_CREDENTIAL'Add all required query/header parameters shown above. Binary bodies, authentication inputs and omitted schemas require the corresponding operation’s input; this template is not a ready-to-run credentialed request.
POST /drives/{drive}/entriesOperation reference+
Authorization
Use the authority permitted by this operation. bearer
Parameters
No parameter schema is declared here. Path identities shown in the URL must still be supplied.
Request body
No request-body schema is declared in the contract for this operation. This does not imply an empty body is sufficient for every endpoint.
Documented responses
201 · Entry created
409 · Name conflict
Request template
curl --request POST \
'https://api.example.test/v1/drives/{drive}/entries' \
-H 'Authorization: Bearer REPLACE_WITH_OPERATION_CREDENTIAL'Add all required query/header parameters shown above. Binary bodies, authentication inputs and omitted schemas require the corresponding operation’s input; this template is not a ready-to-run credentialed request.
GET /entries/{entry}Operation reference+
Authorization
Use the authority permitted by this operation. bearer
Parameters
No parameter schema is declared here. Path identities shown in the URL must still be supplied.
Request body
No request-body schema is declared in the contract for this operation. This does not imply an empty body is sufficient for every endpoint.
Documented responses
200 · Entry metadata
Request template
curl --request GET \
'https://api.example.test/v1/entries/{entry}' \
-H 'Authorization: Bearer REPLACE_WITH_OPERATION_CREDENTIAL'Add all required query/header parameters shown above. Binary bodies, authentication inputs and omitted schemas require the corresponding operation’s input; this template is not a ready-to-run credentialed request.
PATCH /entries/{entry}Operation reference+
Authorization
Use the authority permitted by this operation. bearer
Parameters
No parameter schema is declared here. Path identities shown in the URL must still be supplied.
Request body
No request-body schema is declared in the contract for this operation. This does not imply an empty body is sufficient for every endpoint.
Documented responses
200 · Renamed or moved
409 · Revision conflict
Request template
curl --request PATCH \
'https://api.example.test/v1/entries/{entry}' \
-H 'Authorization: Bearer REPLACE_WITH_OPERATION_CREDENTIAL'Add all required query/header parameters shown above. Binary bodies, authentication inputs and omitted schemas require the corresponding operation’s input; this template is not a ready-to-run credentialed request.
DELETE /entries/{entry}Operation reference+
Authorization
Use the authority permitted by this operation. bearer
Parameters
| Name / location | Type | Requirement and constraints |
|---|---|---|
expected_revision · query | integer | Required. |
Request body
No request-body schema is declared in the contract for this operation. This does not imply an empty body is sufficient for every endpoint.
Documented responses
204 · Tombstoned
409 · Revision conflict
Request template
curl --request DELETE \
'https://api.example.test/v1/entries/{entry}' \
-H 'Authorization: Bearer REPLACE_WITH_OPERATION_CREDENTIAL'Add all required query/header parameters shown above. Binary bodies, authentication inputs and omitted schemas require the corresponding operation’s input; this template is not a ready-to-run credentialed request.
POST /files/{file}/versions/{version}/browser-downloadIssue a file/version-scoped HttpOnly download cookie for the current session+
Authorization
Use the authority permitted by this operation. bearer
Parameters
No parameter schema is declared here. Path identities shown in the URL must still be supplied.
Request body
No request-body schema is declared in the contract for this operation. This does not imply an empty body is sufficient for every endpoint.
Documented responses
200 · Native browser download path; 15-minute grant rechecks session and membership
{
"application/json": {
"schema": {
"$ref": "#/components/schemas/BrowserDownloadGrant"
}
}
}401 · Interactive session required
404 · Version inaccessible
Request template
curl --request POST \
'https://api.example.test/v1/files/{file}/versions/{version}/browser-download' \
-H 'Authorization: Bearer REPLACE_WITH_OPERATION_CREDENTIAL'Add all required query/header parameters shown above. Binary bodies, authentication inputs and omitted schemas require the corresponding operation’s input; this template is not a ready-to-run credentialed request.
Request and response fields
{
"type": "object",
"required": [
"download_path",
"expires_at"
],
"additionalProperties": false,
"properties": {
"download_path": {
"type": "string",
"pattern": "^/v1/files/[0-9a-f-]{36}/versions/[0-9a-f-]{36}/browser-download$"
},
"expires_at": {
"type": "string",
"format": "date-time"
}
}
}GET /files/{file}/versions/{version}/browser-downloadStream an immutable download using only its scoped cookie+
Authorization
Use the authority permitted by this operation. The contract does not declare a per-operation security scheme.
Parameters
No parameter schema is declared here. Path identities shown in the URL must still be supplied.
Request body
No request-body schema is declared in the contract for this operation. This does not imply an empty body is sufficient for every endpoint.
Documented responses
200 · Exact binary bytes
206 · Exact requested byte range
401 · Grant missing or expired or session revoked
404 · Version or membership unavailable
416 · Invalid byte range
Request template
curl --request GET \
'https://api.example.test/v1/files/{file}/versions/{version}/browser-download' \
-H 'Authorization: Bearer REPLACE_WITH_OPERATION_CREDENTIAL'Add all required query/header parameters shown above. Binary bodies, authentication inputs and omitted schemas require the corresponding operation’s input; this template is not a ready-to-run credentialed request.
POST /files/{file}/uploadsOperation reference+
Authorization
Use the authority permitted by this operation. bearer
Parameters
| Name / location | Type | Requirement and constraints |
|---|---|---|
file · path | string | Required. format: "uuid" |
Request body
No request-body schema is declared in the contract for this operation. This does not imply an empty body is sufficient for every endpoint.
Documented responses
201 · Signed PUT authorization
409 · Revision conflict
Request template
curl --request POST \
'https://api.example.test/v1/files/{file}/uploads' \
-H 'Authorization: Bearer REPLACE_WITH_OPERATION_CREDENTIAL'Add all required query/header parameters shown above. Binary bodies, authentication inputs and omitted schemas require the corresponding operation’s input; this template is not a ready-to-run credentialed request.
POST /files/{file}/chunk-uploadsBegin immutable manifest upload and authorize only missing content chunks+
Authorization
Use the authority permitted by this operation. bearer
Parameters
| Name / location | Type | Requirement and constraints |
|---|---|---|
file · path | string | Required. format: "uuid" |
Request body
Required · application/json
| Field | Type | Meaning and constraints |
|---|---|---|
expected_revisionRequired | integer | format: "int64" |
manifestRequired | ChunkManifest | |
manifest_sha256Required | string | pattern: "^[0-9a-f]{64}$" |
{
"application/json": {
"schema": {
"type": "object",
"required": [
"expected_revision",
"manifest",
"manifest_sha256"
],
"properties": {
"expected_revision": {
"type": "integer",
"format": "int64"
},
"manifest": {
"$ref": "#/components/schemas/ChunkManifest"
},
"manifest_sha256": {
"type": "string",
"pattern": "^[0-9a-f]{64}$"
}
}
}
}
}Documented responses
201 · Upload ID and signed targets for chunks absent from this user's store
409 · Revision conflict
Request template
curl --request POST \
'https://api.example.test/v1/files/{file}/chunk-uploads' \
-H 'Authorization: Bearer REPLACE_WITH_OPERATION_CREDENTIAL' \
-H 'Content-Type: application/json' \
--data '{"expected_revision":0,"manifest":{"logical_size":0,"chunks":[]},"manifest_sha256":"REPLACE_WITH_VALID_VALUE"}'Add all required query/header parameters shown above. Binary bodies, authentication inputs and omitted schemas require the corresponding operation’s input; this template is not a ready-to-run credentialed request.
Request and response fields
{
"type": "object",
"required": [
"logical_size",
"chunks"
],
"properties": {
"logical_size": {
"type": "integer",
"format": "int64",
"minimum": 0
},
"chunks": {
"type": "array",
"maxItems": 1000000,
"items": {
"$ref": "#/components/schemas/ChunkRef"
}
},
"base_version_id": {
"type": "string",
"format": "uuid",
"description": "Immutable current version selected at upload creation and pinned through completion"
}
}
}{
"type": "object",
"required": [
"sha256",
"size"
],
"properties": {
"sha256": {
"type": "string",
"pattern": "^([0-9a-f]{64})?$",
"description": "Empty for a zero extent or immutable base reference"
},
"size": {
"type": "integer",
"format": "int64",
"minimum": 1
},
"zero": {
"type": "boolean",
"default": false,
"description": "True means this extent represents zero bytes without an object"
},
"base_offset": {
"type": "integer",
"format": "int64",
"minimum": 0,
"description": "Reuse this range from base_version_id; excludes zero and a content hash"
}
}
}POST /uploads/{upload}/complete-chunksValidate uploaded chunks and commit immutable manifest version+
Authorization
Use the authority permitted by this operation. bearer
Parameters
| Name / location | Type | Requirement and constraints |
|---|---|---|
upload · path | string | Required. format: "uuid" |
Request body
No request-body schema is declared in the contract for this operation. This does not imply an empty body is sufficient for every endpoint.
Documented responses
200 · Chunked version committed
409 · Missing chunks or revision conflict
Request template
curl --request POST \
'https://api.example.test/v1/uploads/{upload}/complete-chunks' \
-H 'Authorization: Bearer REPLACE_WITH_OPERATION_CREDENTIAL'Add all required query/header parameters shown above. Binary bodies, authentication inputs and omitted schemas require the corresponding operation’s input; this template is not a ready-to-run credentialed request.
POST /uploads/{upload}/resume-chunksRenew signed targets for an uncommitted chunk upload, omitting objects already present and valid+
Authorization
Use the authority permitted by this operation. bearer
Parameters
| Name / location | Type | Requirement and constraints |
|---|---|---|
upload · path | string | Required. format: "uuid" |
Request body
No request-body schema is declared in the contract for this operation. This does not imply an empty body is sufficient for every endpoint.
Documented responses
200 · Renewable upload targets
409 · Upload expired or already finalized
Request template
curl --request POST \
'https://api.example.test/v1/uploads/{upload}/resume-chunks' \
-H 'Authorization: Bearer REPLACE_WITH_OPERATION_CREDENTIAL'Add all required query/header parameters shown above. Binary bodies, authentication inputs and omitted schemas require the corresponding operation’s input; this template is not a ready-to-run credentialed request.
POST /uploads/{upload}/completeOperation reference+
Authorization
Use the authority permitted by this operation. bearer
Parameters
| Name / location | Type | Requirement and constraints |
|---|---|---|
upload · path | string | Required. format: "uuid" |
Request body
No request-body schema is declared in the contract for this operation. This does not imply an empty body is sufficient for every endpoint.
Documented responses
200 · Immutable version committed
409 · Object or revision conflict
Request template
curl --request POST \
'https://api.example.test/v1/uploads/{upload}/complete' \
-H 'Authorization: Bearer REPLACE_WITH_OPERATION_CREDENTIAL'Add all required query/header parameters shown above. Binary bodies, authentication inputs and omitted schemas require the corresponding operation’s input; this template is not a ready-to-run credentialed request.
GET /files/{file}/downloadOperation reference+
Authorization
Use the authority permitted by this operation. bearer
Parameters
| Name / location | Type | Requirement and constraints |
|---|---|---|
file · path | string | Required. format: "uuid" |
Request body
No request-body schema is declared in the contract for this operation. This does not imply an empty body is sufficient for every endpoint.
Documented responses
200 · Signed range-capable GET authorization
Request template
curl --request GET \
'https://api.example.test/v1/files/{file}/download' \
-H 'Authorization: Bearer REPLACE_WITH_OPERATION_CREDENTIAL'Add all required query/header parameters shown above. Binary bodies, authentication inputs and omitted schemas require the corresponding operation’s input; this template is not a ready-to-run credentialed request.
DELETE /files/{file}/versionsClear earlier versions of one file+
Authorization
Use the authority permitted by this operation. bearer
Parameters
| Name / location | Type | Requirement and constraints |
|---|---|---|
file · path | string | Required. format: "uuid" |
Request body
No request-body schema is declared in the contract for this operation. This does not imply an empty body is sufficient for every endpoint.
Documented responses
200 · Success
{
"application/json": {
"schema": {
"$ref": "#/components/schemas/HistoryCleanupResult"
}
}
}400 · Invalid input
403 · Drive owner authority is required
404 · Drive or history not found
409 · Revision changed or selected content is protected
Request template
curl --request DELETE \
'https://api.example.test/v1/files/{file}/versions' \
-H 'Authorization: Bearer REPLACE_WITH_OPERATION_CREDENTIAL'Add all required query/header parameters shown above. Binary bodies, authentication inputs and omitted schemas require the corresponding operation’s input; this template is not a ready-to-run credentialed request.
Request and response fields
{
"type": "object",
"description": "Clears earlier versions, keeps current files, and releases allowance immediately. Protected snapshots, forks and live links are skipped. Physical reclamation is asynchronous and preserves replay and active-save pins.",
"required": [
"versions_cleared",
"versions_skipped",
"bytes_freed",
"used_bytes"
],
"properties": {
"versions_cleared": {
"type": "integer",
"format": "int64",
"minimum": 0
},
"versions_skipped": {
"type": "integer",
"format": "int64",
"minimum": 0
},
"bytes_freed": {
"type": "integer",
"format": "int64",
"minimum": 0
},
"used_bytes": {
"type": "integer",
"format": "int64",
"minimum": 0
}
}
}GET /files/{file}/versionsOperation reference+
Authorization
Use the authority permitted by this operation. bearer
Parameters
| Name / location | Type | Requirement and constraints |
|---|---|---|
file · path | string | Required. format: "uuid" |
Request body
No request-body schema is declared in the contract for this operation. This does not imply an empty body is sufficient for every endpoint.
Documented responses
200 · Immutable version history
Request template
curl --request GET \
'https://api.example.test/v1/files/{file}/versions' \
-H 'Authorization: Bearer REPLACE_WITH_OPERATION_CREDENTIAL'Add all required query/header parameters shown above. Binary bodies, authentication inputs and omitted schemas require the corresponding operation’s input; this template is not a ready-to-run credentialed request.
GET /files/{file}/bytesStream current file bytes, optionally as one HTTP byte range+
Authorization
Use the authority permitted by this operation. bearer
Parameters
| Name / location | Type | Requirement and constraints |
|---|---|---|
file · path | string | Required. format: "uuid" |
Range · header | string | Optional. |
Request body
No request-body schema is declared in the contract for this operation. This does not imply an empty body is sufficient for every endpoint.
Documented responses
200 · Full content
206 · Exact requested range
416 · Unsatisfiable range
Request template
curl --request GET \
'https://api.example.test/v1/files/{file}/bytes' \
-H 'Authorization: Bearer REPLACE_WITH_OPERATION_CREDENTIAL'Add all required query/header parameters shown above. Binary bodies, authentication inputs and omitted schemas require the corresponding operation’s input; this template is not a ready-to-run credentialed request.
HEAD /files/{file}/bytesRead current logical size and version headers without content+
Authorization
Use the authority permitted by this operation. bearer
Parameters
| Name / location | Type | Requirement and constraints |
|---|---|---|
file · path | string | Required. format: "uuid" |
Request body
No request-body schema is declared in the contract for this operation. This does not imply an empty body is sufficient for every endpoint.
Documented responses
200 · File metadata headers
Request template
curl --request HEAD \
'https://api.example.test/v1/files/{file}/bytes' \
-H 'Authorization: Bearer REPLACE_WITH_OPERATION_CREDENTIAL'Add all required query/header parameters shown above. Binary bodies, authentication inputs and omitted schemas require the corresponding operation’s input; this template is not a ready-to-run credentialed request.
PUT /files/{file}/bytesAtomically replace file bytes with bounded binary ingestion+
Uploads up to 100 MiB in bounded server chunks. Retry the same body and identity after interruption. A new file entry may remain empty until content commits.
Authorization
Use the authority permitted by this operation. bearer
Parameters
| Name / location | Type | Requirement and constraints |
|---|---|---|
file · path | string | Required. format: "uuid" |
If-Match · header | string | Required. |
Idempotency-Key · header | string | Required. minLength: 1 · maxLength: 200 |
X-Content-SHA256 · header | string | Required. pattern: "^[0-9a-f]{64}$" |
Request body
Required · application/octet-stream
{
"application/octet-stream": {
"schema": {
"type": "string",
"format": "binary"
}
}
}Documented responses
200 · Exactly one committed version or its replay
{
"application/json": {
"schema": {
"$ref": "#/components/schemas/MutationResult"
}
}
}400 · Invalid size or checksum or incomplete body
401 · Authentication required
403 · Credential scope or access denied
404 · File or write permission unavailable
409 · Idempotency identity conflict
412 · Base version changed
428 · Version precondition required
503 · Content storage unavailable
507 · Quota exhausted
Request template
curl --request PUT \
'https://api.example.test/v1/files/{file}/bytes' \
-H 'Authorization: Bearer REPLACE_WITH_OPERATION_CREDENTIAL'Add all required query/header parameters shown above. Binary bodies, authentication inputs and omitted schemas require the corresponding operation’s input; this template is not a ready-to-run credentialed request.
Request and response fields
{
"type": "object",
"required": [
"entry",
"version"
],
"properties": {
"entry": {
"$ref": "#/components/schemas/Entry"
},
"version": {
"$ref": "#/components/schemas/Version"
},
"idempotent_replay": {
"type": "boolean",
"default": false
}
}
}{
"type": "object",
"required": [
"id",
"drive_id",
"name",
"kind",
"logical_size",
"revision",
"created_at",
"modified_at",
"deleted"
],
"properties": {
"id": {
"type": "string",
"format": "uuid"
},
"drive_id": {
"type": "string",
"format": "uuid"
},
"parent_id": {
"type": [
"string",
"null"
],
"format": "uuid"
},
"name": {
"type": "string"
},
"kind": {
"enum": [
"file",
"folder"
]
},
"current_version_id": {
"type": [
"string",
"null"
],
"format": "uuid"
},
"logical_size": {
"type": "integer",
"format": "int64"
},
"checksum_sha256": {
"type": [
"string",
"null"
]
},
"revision": {
"type": "integer",
"format": "int64"
},
"created_at": {
"type": "string",
"format": "date-time"
},
"modified_at": {
"type": "string",
"format": "date-time"
},
"deleted": {
"type": "boolean"
}
}
}{
"type": "object",
"required": [
"id",
"file_id",
"logical_size",
"checksum_sha256",
"storage_format",
"created_at"
],
"properties": {
"id": {
"type": "string",
"format": "uuid"
},
"file_id": {
"type": "string",
"format": "uuid"
},
"logical_size": {
"type": "integer",
"format": "int64"
},
"checksum_sha256": {
"type": "string"
},
"manifest_sha256": {
"type": "string"
},
"storage_format": {
"enum": [
"blob",
"chunked_v1",
"extent_v2"
]
},
"created_at": {
"type": "string",
"format": "date-time"
},
"operation": {
"enum": [
"write",
"write_at",
"patch",
"insert",
"remove",
"splice",
"truncate",
"restore",
"conflict_preserved"
]
},
"drive_sequence": {
"type": "integer",
"format": "int64"
}
}
}GET /files/{file}/versions/{version}/bytesStream bytes from one immutable historical version+
Authorization
Use the authority permitted by this operation. bearer
Parameters
| Name / location | Type | Requirement and constraints |
|---|---|---|
file · path | string | Required. format: "uuid" |
version · path | string | Required. format: "uuid" |
Range · header | string | Optional. |
Request body
No request-body schema is declared in the contract for this operation. This does not imply an empty body is sufficient for every endpoint.
Documented responses
200 · Full historical content
206 · Historical range
404 · Version does not belong to file
Request template
curl --request GET \
'https://api.example.test/v1/files/{file}/versions/{version}/bytes' \
-H 'Authorization: Bearer REPLACE_WITH_OPERATION_CREDENTIAL'Add all required query/header parameters shown above. Binary bodies, authentication inputs and omitted schemas require the corresponding operation’s input; this template is not a ready-to-run credentialed request.
PUT /files/{file}/contentAtomically replace a file through the canonical extent engine+
Authorization
Use the authority permitted by this operation. bearer
Parameters
| Name / location | Type | Requirement and constraints |
|---|---|---|
file · path | string | Required. format: "uuid" |
If-Match · header | string | Required. Base version UUID or quoted `none` |
Idempotency-Key · header | string | Required. maxLength: 200 |
Request body
Required · application/json
| Field | Type | Meaning and constraints |
|---|---|---|
dataRequired | string | Exact replacement bytes; empty replaces with an empty file |
{
"application/json": {
"schema": {
"$ref": "#/components/schemas/ContentMutation"
}
}
}Documented responses
200 · One committed immutable version
{
"application/json": {
"schema": {
"$ref": "#/components/schemas/MutationResult"
}
}
}400 · Invalid input or missing idempotency key
{
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}409 · Idempotency key belongs to another request
{
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}412 · version_precondition_failed
{
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}413 · mutation_too_large
{
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}428 · version_precondition_required
{
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}Request template
curl --request PUT \
'https://api.example.test/v1/files/{file}/content' \
-H 'Authorization: Bearer REPLACE_WITH_OPERATION_CREDENTIAL' \
-H 'Content-Type: application/json' \
--data '{"data":"REPLACE_WITH_VALID_VALUE"}'Add all required query/header parameters shown above. Binary bodies, authentication inputs and omitted schemas require the corresponding operation’s input; this template is not a ready-to-run credentialed request.
Request and response fields
{
"type": "object",
"required": [
"data"
],
"properties": {
"data": {
"type": "string",
"contentEncoding": "base64",
"description": "Exact replacement bytes; empty replaces with an empty file"
}
}
}{
"type": "object",
"required": [
"entry",
"version"
],
"properties": {
"entry": {
"$ref": "#/components/schemas/Entry"
},
"version": {
"$ref": "#/components/schemas/Version"
},
"idempotent_replay": {
"type": "boolean",
"default": false
}
}
}{
"type": "object",
"required": [
"id",
"drive_id",
"name",
"kind",
"logical_size",
"revision",
"created_at",
"modified_at",
"deleted"
],
"properties": {
"id": {
"type": "string",
"format": "uuid"
},
"drive_id": {
"type": "string",
"format": "uuid"
},
"parent_id": {
"type": [
"string",
"null"
],
"format": "uuid"
},
"name": {
"type": "string"
},
"kind": {
"enum": [
"file",
"folder"
]
},
"current_version_id": {
"type": [
"string",
"null"
],
"format": "uuid"
},
"logical_size": {
"type": "integer",
"format": "int64"
},
"checksum_sha256": {
"type": [
"string",
"null"
]
},
"revision": {
"type": "integer",
"format": "int64"
},
"created_at": {
"type": "string",
"format": "date-time"
},
"modified_at": {
"type": "string",
"format": "date-time"
},
"deleted": {
"type": "boolean"
}
}
}{
"type": "object",
"required": [
"id",
"file_id",
"logical_size",
"checksum_sha256",
"storage_format",
"created_at"
],
"properties": {
"id": {
"type": "string",
"format": "uuid"
},
"file_id": {
"type": "string",
"format": "uuid"
},
"logical_size": {
"type": "integer",
"format": "int64"
},
"checksum_sha256": {
"type": "string"
},
"manifest_sha256": {
"type": "string"
},
"storage_format": {
"enum": [
"blob",
"chunked_v1",
"extent_v2"
]
},
"created_at": {
"type": "string",
"format": "date-time"
},
"operation": {
"enum": [
"write",
"write_at",
"patch",
"insert",
"remove",
"splice",
"truncate",
"restore",
"conflict_preserved"
]
},
"drive_sequence": {
"type": "integer",
"format": "int64"
}
}
}{
"type": "object",
"required": [
"error"
],
"properties": {
"error": {
"type": "object",
"required": [
"code",
"message"
],
"properties": {
"code": {
"type": "string"
},
"message": {
"type": "string"
}
}
}
}
}POST /files/{file}/write-atOverwrite bytes at a 64-bit logical offset without replacing unaffected content+
Authorization
Use the authority permitted by this operation. bearer
Parameters
| Name / location | Type | Requirement and constraints |
|---|---|---|
file · path | string | Required. format: "uuid" |
If-Match · header | string | Required. |
Idempotency-Key · header | string | Required. minLength: 1 · maxLength: 200 |
Request body
Required · application/json
| Field | Type | Meaning and constraints |
|---|---|---|
offsetRequired | integer | format: "int64" · minimum: 0 · maximum: 9223372036854776000 |
dataRequired | string | minLength: 1 |
{
"application/json": {
"schema": {
"$ref": "#/components/schemas/WriteAtMutation"
}
}
}Documented responses
200 · One committed immutable version
{
"application/json": {
"schema": {
"$ref": "#/components/schemas/MutationResult"
}
}
}400 · Invalid input or missing idempotency key
{
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}409 · Idempotency key belongs to another request
{
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}412 · version_precondition_failed
{
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}413 · mutation_too_large
{
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}428 · version_precondition_required
{
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}Request template
curl --request POST \
'https://api.example.test/v1/files/{file}/write-at' \
-H 'Authorization: Bearer REPLACE_WITH_OPERATION_CREDENTIAL' \
-H 'Content-Type: application/json' \
--data '{"offset":0,"data":"REPLACE_WITH_VALID_VALUE"}'Add all required query/header parameters shown above. Binary bodies, authentication inputs and omitted schemas require the corresponding operation’s input; this template is not a ready-to-run credentialed request.
Request and response fields
{
"type": "object",
"required": [
"offset",
"data"
],
"properties": {
"offset": {
"type": "integer",
"format": "int64",
"minimum": 0,
"maximum": 9223372036854776000
},
"data": {
"type": "string",
"contentEncoding": "base64",
"minLength": 1
}
}
}{
"type": "object",
"required": [
"entry",
"version"
],
"properties": {
"entry": {
"$ref": "#/components/schemas/Entry"
},
"version": {
"$ref": "#/components/schemas/Version"
},
"idempotent_replay": {
"type": "boolean",
"default": false
}
}
}{
"type": "object",
"required": [
"id",
"drive_id",
"name",
"kind",
"logical_size",
"revision",
"created_at",
"modified_at",
"deleted"
],
"properties": {
"id": {
"type": "string",
"format": "uuid"
},
"drive_id": {
"type": "string",
"format": "uuid"
},
"parent_id": {
"type": [
"string",
"null"
],
"format": "uuid"
},
"name": {
"type": "string"
},
"kind": {
"enum": [
"file",
"folder"
]
},
"current_version_id": {
"type": [
"string",
"null"
],
"format": "uuid"
},
"logical_size": {
"type": "integer",
"format": "int64"
},
"checksum_sha256": {
"type": [
"string",
"null"
]
},
"revision": {
"type": "integer",
"format": "int64"
},
"created_at": {
"type": "string",
"format": "date-time"
},
"modified_at": {
"type": "string",
"format": "date-time"
},
"deleted": {
"type": "boolean"
}
}
}{
"type": "object",
"required": [
"id",
"file_id",
"logical_size",
"checksum_sha256",
"storage_format",
"created_at"
],
"properties": {
"id": {
"type": "string",
"format": "uuid"
},
"file_id": {
"type": "string",
"format": "uuid"
},
"logical_size": {
"type": "integer",
"format": "int64"
},
"checksum_sha256": {
"type": "string"
},
"manifest_sha256": {
"type": "string"
},
"storage_format": {
"enum": [
"blob",
"chunked_v1",
"extent_v2"
]
},
"created_at": {
"type": "string",
"format": "date-time"
},
"operation": {
"enum": [
"write",
"write_at",
"patch",
"insert",
"remove",
"splice",
"truncate",
"restore",
"conflict_preserved"
]
},
"drive_sequence": {
"type": "integer",
"format": "int64"
}
}
}{
"type": "object",
"required": [
"error"
],
"properties": {
"error": {
"type": "object",
"required": [
"code",
"message"
],
"properties": {
"code": {
"type": "string"
},
"message": {
"type": "string"
}
}
}
}
}POST /files/{file}/patchApply up to 10,000 non-overlapping overwrite edits as one version+
Authorization
Use the authority permitted by this operation. bearer
Parameters
| Name / location | Type | Requirement and constraints |
|---|---|---|
file · path | string | Required. format: "uuid" |
If-Match · header | string | Required. |
Idempotency-Key · header | string | Required. minLength: 1 · maxLength: 200 |
Request body
Required · application/json
| Field | Type | Meaning and constraints |
|---|---|---|
changesRequired | array<WriteAtMutation> | Non-overlapping overwrites; all edits are validated before publication minItems: 1 · maxItems: 10000 |
{
"application/json": {
"schema": {
"$ref": "#/components/schemas/PatchMutation"
}
}
}Documented responses
200 · One committed immutable version
{
"application/json": {
"schema": {
"$ref": "#/components/schemas/MutationResult"
}
}
}400 · Invalid input or missing idempotency key
{
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}409 · Idempotency key belongs to another request
{
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}412 · version_precondition_failed
{
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}413 · mutation_too_large
{
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}428 · version_precondition_required
{
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}Request template
curl --request POST \
'https://api.example.test/v1/files/{file}/patch' \
-H 'Authorization: Bearer REPLACE_WITH_OPERATION_CREDENTIAL' \
-H 'Content-Type: application/json' \
--data '{"changes":[]}'Add all required query/header parameters shown above. Binary bodies, authentication inputs and omitted schemas require the corresponding operation’s input; this template is not a ready-to-run credentialed request.
Request and response fields
{
"type": "object",
"required": [
"changes"
],
"properties": {
"changes": {
"type": "array",
"minItems": 1,
"maxItems": 10000,
"items": {
"$ref": "#/components/schemas/WriteAtMutation"
},
"description": "Non-overlapping overwrites; all edits are validated before publication"
}
}
}{
"type": "object",
"required": [
"offset",
"data"
],
"properties": {
"offset": {
"type": "integer",
"format": "int64",
"minimum": 0,
"maximum": 9223372036854776000
},
"data": {
"type": "string",
"contentEncoding": "base64",
"minLength": 1
}
}
}{
"type": "object",
"required": [
"entry",
"version"
],
"properties": {
"entry": {
"$ref": "#/components/schemas/Entry"
},
"version": {
"$ref": "#/components/schemas/Version"
},
"idempotent_replay": {
"type": "boolean",
"default": false
}
}
}{
"type": "object",
"required": [
"id",
"drive_id",
"name",
"kind",
"logical_size",
"revision",
"created_at",
"modified_at",
"deleted"
],
"properties": {
"id": {
"type": "string",
"format": "uuid"
},
"drive_id": {
"type": "string",
"format": "uuid"
},
"parent_id": {
"type": [
"string",
"null"
],
"format": "uuid"
},
"name": {
"type": "string"
},
"kind": {
"enum": [
"file",
"folder"
]
},
"current_version_id": {
"type": [
"string",
"null"
],
"format": "uuid"
},
"logical_size": {
"type": "integer",
"format": "int64"
},
"checksum_sha256": {
"type": [
"string",
"null"
]
},
"revision": {
"type": "integer",
"format": "int64"
},
"created_at": {
"type": "string",
"format": "date-time"
},
"modified_at": {
"type": "string",
"format": "date-time"
},
"deleted": {
"type": "boolean"
}
}
}{
"type": "object",
"required": [
"id",
"file_id",
"logical_size",
"checksum_sha256",
"storage_format",
"created_at"
],
"properties": {
"id": {
"type": "string",
"format": "uuid"
},
"file_id": {
"type": "string",
"format": "uuid"
},
"logical_size": {
"type": "integer",
"format": "int64"
},
"checksum_sha256": {
"type": "string"
},
"manifest_sha256": {
"type": "string"
},
"storage_format": {
"enum": [
"blob",
"chunked_v1",
"extent_v2"
]
},
"created_at": {
"type": "string",
"format": "date-time"
},
"operation": {
"enum": [
"write",
"write_at",
"patch",
"insert",
"remove",
"splice",
"truncate",
"restore",
"conflict_preserved"
]
},
"drive_sequence": {
"type": "integer",
"format": "int64"
}
}
}{
"type": "object",
"required": [
"error"
],
"properties": {
"error": {
"type": "object",
"required": [
"code",
"message"
],
"properties": {
"code": {
"type": "string"
},
"message": {
"type": "string"
}
}
}
}
}POST /files/{file}/insertInsert bytes and shift the unchanged suffix through manifest path-copying+
Authorization
Use the authority permitted by this operation. bearer
Parameters
| Name / location | Type | Requirement and constraints |
|---|---|---|
file · path | string | Required. format: "uuid" |
If-Match · header | string | Required. |
Idempotency-Key · header | string | Required. minLength: 1 · maxLength: 200 |
Request body
Required · application/json
| Field | Type | Meaning and constraints |
|---|---|---|
offsetRequired | integer | format: "int64" · minimum: 0 · maximum: 9223372036854776000 |
dataRequired | string | minLength: 1 |
{
"application/json": {
"schema": {
"$ref": "#/components/schemas/InsertMutation"
}
}
}Documented responses
200 · One committed immutable version
{
"application/json": {
"schema": {
"$ref": "#/components/schemas/MutationResult"
}
}
}400 · Invalid input or missing idempotency key
{
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}409 · Idempotency key belongs to another request
{
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}412 · version_precondition_failed
{
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}413 · mutation_too_large
{
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}428 · version_precondition_required
{
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}Request template
curl --request POST \
'https://api.example.test/v1/files/{file}/insert' \
-H 'Authorization: Bearer REPLACE_WITH_OPERATION_CREDENTIAL' \
-H 'Content-Type: application/json' \
--data '{"offset":0,"data":"REPLACE_WITH_VALID_VALUE"}'Add all required query/header parameters shown above. Binary bodies, authentication inputs and omitted schemas require the corresponding operation’s input; this template is not a ready-to-run credentialed request.
Request and response fields
{
"type": "object",
"required": [
"offset",
"data"
],
"properties": {
"offset": {
"type": "integer",
"format": "int64",
"minimum": 0,
"maximum": 9223372036854776000
},
"data": {
"type": "string",
"contentEncoding": "base64",
"minLength": 1
}
}
}{
"type": "object",
"required": [
"entry",
"version"
],
"properties": {
"entry": {
"$ref": "#/components/schemas/Entry"
},
"version": {
"$ref": "#/components/schemas/Version"
},
"idempotent_replay": {
"type": "boolean",
"default": false
}
}
}{
"type": "object",
"required": [
"id",
"drive_id",
"name",
"kind",
"logical_size",
"revision",
"created_at",
"modified_at",
"deleted"
],
"properties": {
"id": {
"type": "string",
"format": "uuid"
},
"drive_id": {
"type": "string",
"format": "uuid"
},
"parent_id": {
"type": [
"string",
"null"
],
"format": "uuid"
},
"name": {
"type": "string"
},
"kind": {
"enum": [
"file",
"folder"
]
},
"current_version_id": {
"type": [
"string",
"null"
],
"format": "uuid"
},
"logical_size": {
"type": "integer",
"format": "int64"
},
"checksum_sha256": {
"type": [
"string",
"null"
]
},
"revision": {
"type": "integer",
"format": "int64"
},
"created_at": {
"type": "string",
"format": "date-time"
},
"modified_at": {
"type": "string",
"format": "date-time"
},
"deleted": {
"type": "boolean"
}
}
}{
"type": "object",
"required": [
"id",
"file_id",
"logical_size",
"checksum_sha256",
"storage_format",
"created_at"
],
"properties": {
"id": {
"type": "string",
"format": "uuid"
},
"file_id": {
"type": "string",
"format": "uuid"
},
"logical_size": {
"type": "integer",
"format": "int64"
},
"checksum_sha256": {
"type": "string"
},
"manifest_sha256": {
"type": "string"
},
"storage_format": {
"enum": [
"blob",
"chunked_v1",
"extent_v2"
]
},
"created_at": {
"type": "string",
"format": "date-time"
},
"operation": {
"enum": [
"write",
"write_at",
"patch",
"insert",
"remove",
"splice",
"truncate",
"restore",
"conflict_preserved"
]
},
"drive_sequence": {
"type": "integer",
"format": "int64"
}
}
}{
"type": "object",
"required": [
"error"
],
"properties": {
"error": {
"type": "object",
"required": [
"code",
"message"
],
"properties": {
"code": {
"type": "string"
},
"message": {
"type": "string"
}
}
}
}
}POST /files/{file}/removeRemove a logical range and close the gap without copying the suffix+
Authorization
Use the authority permitted by this operation. bearer
Parameters
| Name / location | Type | Requirement and constraints |
|---|---|---|
file · path | string | Required. format: "uuid" |
If-Match · header | string | Required. |
Idempotency-Key · header | string | Required. minLength: 1 · maxLength: 200 |
Request body
Required · application/json
| Field | Type | Meaning and constraints |
|---|---|---|
offsetRequired | integer | format: "int64" · minimum: 0 · maximum: 9223372036854776000 |
delete_lengthRequired | integer | format: "int64" · minimum: 1 · maximum: 9223372036854776000 |
{
"application/json": {
"schema": {
"$ref": "#/components/schemas/RemoveMutation"
}
}
}Documented responses
200 · One committed immutable version
{
"application/json": {
"schema": {
"$ref": "#/components/schemas/MutationResult"
}
}
}400 · Invalid input or missing idempotency key
{
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}409 · Idempotency key belongs to another request
{
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}412 · version_precondition_failed
{
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}413 · mutation_too_large
{
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}428 · version_precondition_required
{
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}Request template
curl --request POST \
'https://api.example.test/v1/files/{file}/remove' \
-H 'Authorization: Bearer REPLACE_WITH_OPERATION_CREDENTIAL' \
-H 'Content-Type: application/json' \
--data '{"offset":0,"delete_length":1}'Add all required query/header parameters shown above. Binary bodies, authentication inputs and omitted schemas require the corresponding operation’s input; this template is not a ready-to-run credentialed request.
Request and response fields
{
"type": "object",
"required": [
"offset",
"delete_length"
],
"properties": {
"offset": {
"type": "integer",
"format": "int64",
"minimum": 0,
"maximum": 9223372036854776000
},
"delete_length": {
"type": "integer",
"format": "int64",
"minimum": 1,
"maximum": 9223372036854776000
}
}
}{
"type": "object",
"required": [
"entry",
"version"
],
"properties": {
"entry": {
"$ref": "#/components/schemas/Entry"
},
"version": {
"$ref": "#/components/schemas/Version"
},
"idempotent_replay": {
"type": "boolean",
"default": false
}
}
}{
"type": "object",
"required": [
"id",
"drive_id",
"name",
"kind",
"logical_size",
"revision",
"created_at",
"modified_at",
"deleted"
],
"properties": {
"id": {
"type": "string",
"format": "uuid"
},
"drive_id": {
"type": "string",
"format": "uuid"
},
"parent_id": {
"type": [
"string",
"null"
],
"format": "uuid"
},
"name": {
"type": "string"
},
"kind": {
"enum": [
"file",
"folder"
]
},
"current_version_id": {
"type": [
"string",
"null"
],
"format": "uuid"
},
"logical_size": {
"type": "integer",
"format": "int64"
},
"checksum_sha256": {
"type": [
"string",
"null"
]
},
"revision": {
"type": "integer",
"format": "int64"
},
"created_at": {
"type": "string",
"format": "date-time"
},
"modified_at": {
"type": "string",
"format": "date-time"
},
"deleted": {
"type": "boolean"
}
}
}{
"type": "object",
"required": [
"id",
"file_id",
"logical_size",
"checksum_sha256",
"storage_format",
"created_at"
],
"properties": {
"id": {
"type": "string",
"format": "uuid"
},
"file_id": {
"type": "string",
"format": "uuid"
},
"logical_size": {
"type": "integer",
"format": "int64"
},
"checksum_sha256": {
"type": "string"
},
"manifest_sha256": {
"type": "string"
},
"storage_format": {
"enum": [
"blob",
"chunked_v1",
"extent_v2"
]
},
"created_at": {
"type": "string",
"format": "date-time"
},
"operation": {
"enum": [
"write",
"write_at",
"patch",
"insert",
"remove",
"splice",
"truncate",
"restore",
"conflict_preserved"
]
},
"drive_sequence": {
"type": "integer",
"format": "int64"
}
}
}{
"type": "object",
"required": [
"error"
],
"properties": {
"error": {
"type": "object",
"required": [
"code",
"message"
],
"properties": {
"code": {
"type": "string"
},
"message": {
"type": "string"
}
}
}
}
}POST /files/{file}/spliceReplace a logical range with different-length content atomically+
Authorization
Use the authority permitted by this operation. bearer
Parameters
| Name / location | Type | Requirement and constraints |
|---|---|---|
file · path | string | Required. format: "uuid" |
If-Match · header | string | Required. |
Idempotency-Key · header | string | Required. minLength: 1 · maxLength: 200 |
Request body
Required · application/json
| Field | Type | Meaning and constraints |
|---|---|---|
offsetRequired | integer | format: "int64" · minimum: 0 · maximum: 9223372036854776000 |
delete_lengthRequired | integer | format: "int64" · minimum: 0 · maximum: 9223372036854776000 |
dataRequired | string |
{
"application/json": {
"schema": {
"$ref": "#/components/schemas/SpliceMutation"
}
}
}Documented responses
200 · One committed immutable version
{
"application/json": {
"schema": {
"$ref": "#/components/schemas/MutationResult"
}
}
}400 · Invalid input or missing idempotency key
{
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}409 · Idempotency key belongs to another request
{
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}412 · version_precondition_failed
{
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}413 · mutation_too_large
{
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}428 · version_precondition_required
{
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}Request template
curl --request POST \
'https://api.example.test/v1/files/{file}/splice' \
-H 'Authorization: Bearer REPLACE_WITH_OPERATION_CREDENTIAL' \
-H 'Content-Type: application/json' \
--data '{"offset":0,"delete_length":0,"data":"REPLACE_WITH_VALID_VALUE"}'Add all required query/header parameters shown above. Binary bodies, authentication inputs and omitted schemas require the corresponding operation’s input; this template is not a ready-to-run credentialed request.
Request and response fields
{
"type": "object",
"required": [
"offset",
"delete_length",
"data"
],
"properties": {
"offset": {
"type": "integer",
"format": "int64",
"minimum": 0,
"maximum": 9223372036854776000
},
"delete_length": {
"type": "integer",
"format": "int64",
"minimum": 0,
"maximum": 9223372036854776000
},
"data": {
"type": "string",
"contentEncoding": "base64"
}
},
"anyOf": [
{
"properties": {
"delete_length": {
"minimum": 1
}
}
},
{
"properties": {
"data": {
"minLength": 1
}
}
}
]
}{
"type": "object",
"required": [
"entry",
"version"
],
"properties": {
"entry": {
"$ref": "#/components/schemas/Entry"
},
"version": {
"$ref": "#/components/schemas/Version"
},
"idempotent_replay": {
"type": "boolean",
"default": false
}
}
}{
"type": "object",
"required": [
"id",
"drive_id",
"name",
"kind",
"logical_size",
"revision",
"created_at",
"modified_at",
"deleted"
],
"properties": {
"id": {
"type": "string",
"format": "uuid"
},
"drive_id": {
"type": "string",
"format": "uuid"
},
"parent_id": {
"type": [
"string",
"null"
],
"format": "uuid"
},
"name": {
"type": "string"
},
"kind": {
"enum": [
"file",
"folder"
]
},
"current_version_id": {
"type": [
"string",
"null"
],
"format": "uuid"
},
"logical_size": {
"type": "integer",
"format": "int64"
},
"checksum_sha256": {
"type": [
"string",
"null"
]
},
"revision": {
"type": "integer",
"format": "int64"
},
"created_at": {
"type": "string",
"format": "date-time"
},
"modified_at": {
"type": "string",
"format": "date-time"
},
"deleted": {
"type": "boolean"
}
}
}{
"type": "object",
"required": [
"id",
"file_id",
"logical_size",
"checksum_sha256",
"storage_format",
"created_at"
],
"properties": {
"id": {
"type": "string",
"format": "uuid"
},
"file_id": {
"type": "string",
"format": "uuid"
},
"logical_size": {
"type": "integer",
"format": "int64"
},
"checksum_sha256": {
"type": "string"
},
"manifest_sha256": {
"type": "string"
},
"storage_format": {
"enum": [
"blob",
"chunked_v1",
"extent_v2"
]
},
"created_at": {
"type": "string",
"format": "date-time"
},
"operation": {
"enum": [
"write",
"write_at",
"patch",
"insert",
"remove",
"splice",
"truncate",
"restore",
"conflict_preserved"
]
},
"drive_sequence": {
"type": "integer",
"format": "int64"
}
}
}{
"type": "object",
"required": [
"error"
],
"properties": {
"error": {
"type": "object",
"required": [
"code",
"message"
],
"properties": {
"code": {
"type": "string"
},
"message": {
"type": "string"
}
}
}
}
}POST /files/{file}/truncateTruncate or sparse-extend a file atomically+
Authorization
Use the authority permitted by this operation. bearer
Parameters
| Name / location | Type | Requirement and constraints |
|---|---|---|
file · path | string | Required. format: "uuid" |
If-Match · header | string | Required. |
Idempotency-Key · header | string | Required. minLength: 1 · maxLength: 200 |
Request body
Required · application/json
| Field | Type | Meaning and constraints |
|---|---|---|
sizeRequired | integer | format: "int64" · minimum: 0 · maximum: 9223372036854776000 |
{
"application/json": {
"schema": {
"$ref": "#/components/schemas/TruncateMutation"
}
}
}Documented responses
200 · One committed immutable version
{
"application/json": {
"schema": {
"$ref": "#/components/schemas/MutationResult"
}
}
}400 · Invalid input or missing idempotency key
{
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}409 · Idempotency key belongs to another request
{
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}412 · version_precondition_failed
{
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}413 · mutation_too_large
{
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}428 · version_precondition_required
{
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}Request template
curl --request POST \
'https://api.example.test/v1/files/{file}/truncate' \
-H 'Authorization: Bearer REPLACE_WITH_OPERATION_CREDENTIAL' \
-H 'Content-Type: application/json' \
--data '{"size":0}'Add all required query/header parameters shown above. Binary bodies, authentication inputs and omitted schemas require the corresponding operation’s input; this template is not a ready-to-run credentialed request.
Request and response fields
{
"type": "object",
"required": [
"size"
],
"properties": {
"size": {
"type": "integer",
"format": "int64",
"minimum": 0,
"maximum": 9223372036854776000
}
}
}{
"type": "object",
"required": [
"entry",
"version"
],
"properties": {
"entry": {
"$ref": "#/components/schemas/Entry"
},
"version": {
"$ref": "#/components/schemas/Version"
},
"idempotent_replay": {
"type": "boolean",
"default": false
}
}
}{
"type": "object",
"required": [
"id",
"drive_id",
"name",
"kind",
"logical_size",
"revision",
"created_at",
"modified_at",
"deleted"
],
"properties": {
"id": {
"type": "string",
"format": "uuid"
},
"drive_id": {
"type": "string",
"format": "uuid"
},
"parent_id": {
"type": [
"string",
"null"
],
"format": "uuid"
},
"name": {
"type": "string"
},
"kind": {
"enum": [
"file",
"folder"
]
},
"current_version_id": {
"type": [
"string",
"null"
],
"format": "uuid"
},
"logical_size": {
"type": "integer",
"format": "int64"
},
"checksum_sha256": {
"type": [
"string",
"null"
]
},
"revision": {
"type": "integer",
"format": "int64"
},
"created_at": {
"type": "string",
"format": "date-time"
},
"modified_at": {
"type": "string",
"format": "date-time"
},
"deleted": {
"type": "boolean"
}
}
}{
"type": "object",
"required": [
"id",
"file_id",
"logical_size",
"checksum_sha256",
"storage_format",
"created_at"
],
"properties": {
"id": {
"type": "string",
"format": "uuid"
},
"file_id": {
"type": "string",
"format": "uuid"
},
"logical_size": {
"type": "integer",
"format": "int64"
},
"checksum_sha256": {
"type": "string"
},
"manifest_sha256": {
"type": "string"
},
"storage_format": {
"enum": [
"blob",
"chunked_v1",
"extent_v2"
]
},
"created_at": {
"type": "string",
"format": "date-time"
},
"operation": {
"enum": [
"write",
"write_at",
"patch",
"insert",
"remove",
"splice",
"truncate",
"restore",
"conflict_preserved"
]
},
"drive_sequence": {
"type": "integer",
"format": "int64"
}
}
}{
"type": "object",
"required": [
"error"
],
"properties": {
"error": {
"type": "object",
"required": [
"code",
"message"
],
"properties": {
"code": {
"type": "string"
},
"message": {
"type": "string"
}
}
}
}
}GET /files/{file}/mutations/{key}Resolve the durable result/state of an idempotent mutation+
Authorization
Use the authority permitted by this operation. bearer
Parameters
| Name / location | Type | Requirement and constraints |
|---|---|---|
file · path | string | Required. format: "uuid" |
key · path | string | Required. |
Request body
No request-body schema is declared in the contract for this operation. This does not imply an empty body is sufficient for every endpoint.
Documented responses
200 · Mutation intent state
404 · Mutation not found
Request template
curl --request GET \
'https://api.example.test/v1/files/{file}/mutations/{key}' \
-H 'Authorization: Bearer REPLACE_WITH_OPERATION_CREDENTIAL'Add all required query/header parameters shown above. Binary bodies, authentication inputs and omitted schemas require the corresponding operation’s input; this template is not a ready-to-run credentialed request.
GET /files/{file}/versions/{version}/contentResolve a version to a legacy blob URL or chunk manifest+
Authorization
Use the authority permitted by this operation. bearer
Parameters
| Name / location | Type | Requirement and constraints |
|---|---|---|
file · path | string | Required. format: "uuid" |
version · path | string | Required. format: "uuid" |
Request body
No request-body schema is declared in the contract for this operation. This does not imply an empty body is sufficient for every endpoint.
Documented responses
200 · Version content descriptor; chunked versions contain a manifest
Request template
curl --request GET \
'https://api.example.test/v1/files/{file}/versions/{version}/content' \
-H 'Authorization: Bearer REPLACE_WITH_OPERATION_CREDENTIAL'Add all required query/header parameters shown above. Binary bodies, authentication inputs and omitted schemas require the corresponding operation’s input; this template is not a ready-to-run credentialed request.
POST /chunks/download-urlsAuthorize reads of chunks referenced by a specific version+
Authorization
Use the authority permitted by this operation. bearer
Parameters
No parameter schema is declared here. Path identities shown in the URL must still be supplied.
Request body
Required · application/json
| Field | Type | Meaning and constraints |
|---|---|---|
file_idRequired | string | format: "uuid" |
version_idRequired | string | format: "uuid" |
sha256Required | array<string> | maxItems: 1000 |
{
"application/json": {
"schema": {
"type": "object",
"required": [
"file_id",
"version_id",
"sha256"
],
"properties": {
"file_id": {
"type": "string",
"format": "uuid"
},
"version_id": {
"type": "string",
"format": "uuid"
},
"sha256": {
"type": "array",
"maxItems": 1000,
"items": {
"type": "string",
"pattern": "^[0-9a-f]{64}$"
}
}
}
}
}
}Documented responses
200 · Short-lived authorized chunk URLs
404 · Chunk is not referenced by this version
Request template
curl --request POST \
'https://api.example.test/v1/chunks/download-urls' \
-H 'Authorization: Bearer REPLACE_WITH_OPERATION_CREDENTIAL' \
-H 'Content-Type: application/json' \
--data '{"file_id":"00000000-0000-0000-0000-000000000000","version_id":"00000000-0000-0000-0000-000000000000","sha256":[]}'Add all required query/header parameters shown above. Binary bodies, authentication inputs and omitted schemas require the corresponding operation’s input; this template is not a ready-to-run credentialed request.
POST /files/{file}/versions/{version}/restoreOperation reference+
Authorization
Use the authority permitted by this operation. bearer
Parameters
| Name / location | Type | Requirement and constraints |
|---|---|---|
file · path | string | Required. format: "uuid" |
version · path | string | Required. format: "uuid" |
Request body
Required · application/json
| Field | Type | Meaning and constraints |
|---|---|---|
expected_revisionRequired | integer | format: "int64" |
{
"application/json": {
"schema": {
"type": "object",
"required": [
"expected_revision"
],
"properties": {
"expected_revision": {
"type": "integer",
"format": "int64"
}
}
}
}
}Documented responses
200 · New immutable restore version committed, with updated entry and ETag
{
"application/json": {
"schema": {
"$ref": "#/components/schemas/MutationResult"
}
}
}409 · Revision conflict
Request template
curl --request POST \
'https://api.example.test/v1/files/{file}/versions/{version}/restore' \
-H 'Authorization: Bearer REPLACE_WITH_OPERATION_CREDENTIAL' \
-H 'Content-Type: application/json' \
--data '{"expected_revision":0}'Add all required query/header parameters shown above. Binary bodies, authentication inputs and omitted schemas require the corresponding operation’s input; this template is not a ready-to-run credentialed request.
Request and response fields
{
"type": "object",
"required": [
"entry",
"version"
],
"properties": {
"entry": {
"$ref": "#/components/schemas/Entry"
},
"version": {
"$ref": "#/components/schemas/Version"
},
"idempotent_replay": {
"type": "boolean",
"default": false
}
}
}{
"type": "object",
"required": [
"id",
"drive_id",
"name",
"kind",
"logical_size",
"revision",
"created_at",
"modified_at",
"deleted"
],
"properties": {
"id": {
"type": "string",
"format": "uuid"
},
"drive_id": {
"type": "string",
"format": "uuid"
},
"parent_id": {
"type": [
"string",
"null"
],
"format": "uuid"
},
"name": {
"type": "string"
},
"kind": {
"enum": [
"file",
"folder"
]
},
"current_version_id": {
"type": [
"string",
"null"
],
"format": "uuid"
},
"logical_size": {
"type": "integer",
"format": "int64"
},
"checksum_sha256": {
"type": [
"string",
"null"
]
},
"revision": {
"type": "integer",
"format": "int64"
},
"created_at": {
"type": "string",
"format": "date-time"
},
"modified_at": {
"type": "string",
"format": "date-time"
},
"deleted": {
"type": "boolean"
}
}
}{
"type": "object",
"required": [
"id",
"file_id",
"logical_size",
"checksum_sha256",
"storage_format",
"created_at"
],
"properties": {
"id": {
"type": "string",
"format": "uuid"
},
"file_id": {
"type": "string",
"format": "uuid"
},
"logical_size": {
"type": "integer",
"format": "int64"
},
"checksum_sha256": {
"type": "string"
},
"manifest_sha256": {
"type": "string"
},
"storage_format": {
"enum": [
"blob",
"chunked_v1",
"extent_v2"
]
},
"created_at": {
"type": "string",
"format": "date-time"
},
"operation": {
"enum": [
"write",
"write_at",
"patch",
"insert",
"remove",
"splice",
"truncate",
"restore",
"conflict_preserved"
]
},
"drive_sequence": {
"type": "integer",
"format": "int64"
}
}
}GET /drives/{drive}/changesOperation reference+
Authorization
Use the authority permitted by this operation. bearer
Parameters
| Name / location | Type | Requirement and constraints |
|---|---|---|
drive · path | string | Required. format: "uuid" |
after · query | integer | Optional. format: "int64" · minimum: 0 |
epoch · query | string | Optional. Epoch from the persisted drive checkpoint format: "uuid" |
limit · query | integer | Optional. maximum: 1000 |
Request body
No request-body schema is declared in the contract for this operation. This does not imply an empty body is sufficient for every endpoint.
Documented responses
200 · Ordered incremental change feed
{
"application/json": {
"schema": {
"$ref": "#/components/schemas/ChangePage"
}
}
}404 · Drive unavailable to this caller
409 · Cursor requires reconciliation
{
"application/json": {
"schema": {
"$ref": "#/components/schemas/CursorReset"
}
}
}Request template
curl --request GET \
'https://api.example.test/v1/drives/{drive}/changes' \
-H 'Authorization: Bearer REPLACE_WITH_OPERATION_CREDENTIAL'Add all required query/header parameters shown above. Binary bodies, authentication inputs and omitted schemas require the corresponding operation’s input; this template is not a ready-to-run credentialed request.
Request and response fields
{
"type": "object",
"required": [
"cursor",
"epoch",
"changes"
],
"properties": {
"cursor": {
"type": "integer",
"format": "int64",
"minimum": 0
},
"epoch": {
"type": "string",
"format": "uuid"
},
"changes": {
"type": "array",
"items": {
"type": "object",
"required": [
"sequence",
"drive_id",
"entry_id",
"operation",
"revision",
"created_at"
],
"properties": {
"sequence": {
"type": "integer",
"format": "int64"
},
"drive_id": {
"type": "string",
"format": "uuid"
},
"entry_id": {
"type": "string",
"format": "uuid"
},
"operation": {
"type": "string"
},
"revision": {
"type": "integer",
"format": "int64"
},
"created_at": {
"type": "string",
"format": "date-time"
}
}
}
}
}
}{
"type": "object",
"required": [
"error",
"reset"
],
"properties": {
"error": {
"type": "object",
"required": [
"code",
"message"
],
"properties": {
"code": {
"const": "cursor_reset_required"
},
"message": {
"type": "string"
}
}
},
"reset": {
"$ref": "#/components/schemas/CursorBoundary"
}
}
}{
"type": "object",
"required": [
"epoch",
"sequence"
],
"properties": {
"epoch": {
"type": "string",
"format": "uuid"
},
"sequence": {
"type": "integer",
"format": "int64",
"minimum": 0
}
}
}GET /drives/{drive}/reconcilePage a consistent flat namespace at a change-reset boundary+
Authorization
Use the authority permitted by this operation. bearer
Parameters
| Name / location | Type | Requirement and constraints |
|---|---|---|
drive · path | string | Required. format: "uuid" |
sequence · query | integer | Required. format: "int64" · minimum: 0 |
epoch · query | string | Required. format: "uuid" |
after_id · query | string | Optional. format: "uuid" |
Request body
No request-body schema is declared in the contract for this operation. This does not imply an empty body is sufficient for every endpoint.
Documented responses
200 · Up to 500 entries from the same sequence/epoch
{
"application/json": {
"schema": {
"$ref": "#/components/schemas/ReconcilePage"
}
}
}404 · Drive unavailable to this caller
409 · Boundary retired
{
"application/json": {
"schema": {
"$ref": "#/components/schemas/CursorReset"
}
}
}410 · Historical version needed by this boundary was reclaimed
Request template
curl --request GET \
'https://api.example.test/v1/drives/{drive}/reconcile' \
-H 'Authorization: Bearer REPLACE_WITH_OPERATION_CREDENTIAL'Add all required query/header parameters shown above. Binary bodies, authentication inputs and omitted schemas require the corresponding operation’s input; this template is not a ready-to-run credentialed request.
Request and response fields
{
"type": "object",
"required": [
"boundary",
"entries",
"next_entry_id"
],
"properties": {
"boundary": {
"$ref": "#/components/schemas/CursorBoundary"
},
"entries": {
"type": "array",
"maxItems": 500,
"items": {
"$ref": "#/components/schemas/Entry"
}
},
"next_entry_id": {
"type": [
"string",
"null"
],
"format": "uuid"
}
}
}{
"type": "object",
"required": [
"epoch",
"sequence"
],
"properties": {
"epoch": {
"type": "string",
"format": "uuid"
},
"sequence": {
"type": "integer",
"format": "int64",
"minimum": 0
}
}
}{
"type": "object",
"required": [
"id",
"drive_id",
"name",
"kind",
"logical_size",
"revision",
"created_at",
"modified_at",
"deleted"
],
"properties": {
"id": {
"type": "string",
"format": "uuid"
},
"drive_id": {
"type": "string",
"format": "uuid"
},
"parent_id": {
"type": [
"string",
"null"
],
"format": "uuid"
},
"name": {
"type": "string"
},
"kind": {
"enum": [
"file",
"folder"
]
},
"current_version_id": {
"type": [
"string",
"null"
],
"format": "uuid"
},
"logical_size": {
"type": "integer",
"format": "int64"
},
"checksum_sha256": {
"type": [
"string",
"null"
]
},
"revision": {
"type": "integer",
"format": "int64"
},
"created_at": {
"type": "string",
"format": "date-time"
},
"modified_at": {
"type": "string",
"format": "date-time"
},
"deleted": {
"type": "boolean"
}
}
}{
"type": "object",
"required": [
"error",
"reset"
],
"properties": {
"error": {
"type": "object",
"required": [
"code",
"message"
],
"properties": {
"code": {
"const": "cursor_reset_required"
},
"message": {
"type": "string"
}
}
},
"reset": {
"$ref": "#/components/schemas/CursorBoundary"
}
}
}GET /drives/{drive}/versionsOperation reference+
Authorization
Use the authority permitted by this operation. bearer
Parameters
| Name / location | Type | Requirement and constraints |
|---|---|---|
drive · path | string | Required. format: "uuid" |
limit · query | integer | Optional. maximum: 100 |
Request body
No request-body schema is declared in the contract for this operation. This does not imply an empty body is sufficient for every endpoint.
Documented responses
200 · Current and retained versions for drive history
{
"application/json": {
"schema": {
"type": "object",
"required": [
"versions"
],
"properties": {
"versions": {
"type": "array",
"items": {
"$ref": "#/components/schemas/VersionSummary"
}
}
}
}
}
}Request template
curl --request GET \
'https://api.example.test/v1/drives/{drive}/versions' \
-H 'Authorization: Bearer REPLACE_WITH_OPERATION_CREDENTIAL'Add all required query/header parameters shown above. Binary bodies, authentication inputs and omitted schemas require the corresponding operation’s input; this template is not a ready-to-run credentialed request.
Request and response fields
{
"type": "object",
"description": "",
"required": [
"version_id",
"file_id",
"file_name",
"logical_size",
"checksum_sha256",
"created_at",
"current",
"file_revision"
],
"properties": {
"version_id": {
"type": "string",
"format": "uuid"
},
"file_id": {
"type": "string",
"format": "uuid"
},
"file_name": {
"type": "string"
},
"logical_size": {
"type": "integer",
"format": "int64",
"minimum": 0
},
"checksum_sha256": {
"type": "string"
},
"created_at": {
"type": "string",
"format": "date-time"
},
"current": {
"type": "boolean"
},
"file_revision": {
"type": "integer",
"format": "int64",
"minimum": 0
},
"storage_format": {
"type": "string"
},
"manifest_sha256": {
"type": "string"
},
"operation": {
"type": "string"
},
"drive_sequence": {
"type": "integer",
"format": "int64",
"minimum": 0
}
}
}GET /devicesOperation reference+
Authorization
Use the authority permitted by this operation. bearer
Parameters
No parameter schema is declared here. Path identities shown in the URL must still be supplied.
Request body
No request-body schema is declared in the contract for this operation. This does not imply an empty body is sufficient for every endpoint.
Documented responses
200 · Registered devices
Request template
curl --request GET \
'https://api.example.test/v1/devices' \
-H 'Authorization: Bearer REPLACE_WITH_OPERATION_CREDENTIAL'Add all required query/header parameters shown above. Binary bodies, authentication inputs and omitted schemas require the corresponding operation’s input; this template is not a ready-to-run credentialed request.
POST /devicesOperation reference+
Authorization
Use the authority permitted by this operation. bearer
Parameters
No parameter schema is declared here. Path identities shown in the URL must still be supplied.
Request body
No request-body schema is declared in the contract for this operation. This does not imply an empty body is sufficient for every endpoint.
Documented responses
201 · Device registered
Request template
curl --request POST \
'https://api.example.test/v1/devices' \
-H 'Authorization: Bearer REPLACE_WITH_OPERATION_CREDENTIAL'Add all required query/header parameters shown above. Binary bodies, authentication inputs and omitted schemas require the corresponding operation’s input; this template is not a ready-to-run credentialed request.
PUT /devices/currentReport the current desktop installation+
Operational inventory is independent of optional usage analytics. Requires an interactive session; binds that session to this account and installation.
Authorization
Use the authority permitted by this operation. bearer
Parameters
No parameter schema is declared here. Path identities shown in the URL must still be supplied.
Request body
Required · application/json
| Field | Type | Meaning and constraints |
|---|---|---|
installation_idRequired | string | format: "uuid" |
nameRequired | string | minLength: 1 · maxLength: 100 |
platformRequired | "linux" | "windows" | "macos" | |
os_versionOptional | string | maxLength: 80 |
architectureRequired | "x86_64" | "arm64" | |
app_versionRequired | string | pattern: "^[0-9]+\\.[0-9]+\\.[0-9]+$" |
release_channelRequired | "beta" | "stable" | "preview" | "development" | |
package_formatRequired | "deb" | "rpm" | "exe" | "dmg" | "development" |
{
"application/json": {
"schema": {
"type": "object",
"additionalProperties": false,
"required": [
"installation_id",
"name",
"platform",
"architecture",
"app_version",
"release_channel",
"package_format"
],
"properties": {
"installation_id": {
"type": "string",
"format": "uuid"
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"platform": {
"type": "string",
"enum": [
"linux",
"windows",
"macos"
]
},
"os_version": {
"type": "string",
"maxLength": 80
},
"architecture": {
"type": "string",
"enum": [
"x86_64",
"arm64"
]
},
"app_version": {
"type": "string",
"pattern": "^[0-9]+\\.[0-9]+\\.[0-9]+$"
},
"release_channel": {
"type": "string",
"enum": [
"beta",
"stable",
"preview",
"development"
]
},
"package_format": {
"type": "string",
"enum": [
"deb",
"rpm",
"exe",
"dmg",
"development"
]
}
}
}
}
}Documented responses
200 · Installation registered and session bound
400 · Invalid device details
401 · Interactive sign-in required
409 · Session or device is unavailable; sign in again
Request template
curl --request PUT \
'https://api.example.test/v1/devices/current' \
-H 'Authorization: Bearer REPLACE_WITH_OPERATION_CREDENTIAL' \
-H 'Content-Type: application/json' \
--data '{"installation_id":"00000000-0000-0000-0000-000000000000","name":"REPLACE_WITH_VALID_VALUE","platform":"linux","architecture":"x86_64","app_version":"REPLACE_WITH_VALID_VALUE","release_channel":"beta","package_format":"deb"}'Add all required query/header parameters shown above. Binary bodies, authentication inputs and omitted schemas require the corresponding operation’s input; this template is not a ready-to-run credentialed request.
GET /devices/inventoryList the signed-in account's desktop devices+
Authorization
Use the authority permitted by this operation. bearer
Parameters
No parameter schema is declared here. Path identities shown in the URL must still be supplied.
Request body
No request-body schema is declared in the contract for this operation. This does not imply an empty body is sufficient for every endpoint.
Documented responses
200 · Account-scoped device inventory, including reported versions and revocation timestamps
{
"application/json": {
"schema": {
"type": "object",
"required": [
"devices"
],
"properties": {
"devices": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"format": "uuid"
},
"name": {
"type": "string"
},
"platform": {
"type": "string"
},
"os_version": {
"type": "string"
},
"architecture": {
"type": "string"
},
"app_version": {
"type": "string"
},
"release_channel": {
"type": "string"
},
"package_format": {
"type": "string"
},
"last_seen_at": {
"type": "string",
"format": "date-time"
},
"created_at": {
"type": "string",
"format": "date-time"
},
"version_observed_at": {
"type": [
"string",
"null"
],
"format": "date-time"
},
"revoked_at": {
"type": [
"string",
"null"
],
"format": "date-time"
}
}
}
}
}
}
}
}401 · Interactive sign-in required
Request template
curl --request GET \
'https://api.example.test/v1/devices/inventory' \
-H 'Authorization: Bearer REPLACE_WITH_OPERATION_CREDENTIAL'Add all required query/header parameters shown above. Binary bodies, authentication inputs and omitted schemas require the corresponding operation’s input; this template is not a ready-to-run credentialed request.
POST /devices/{device}/cursorOperation reference+
Authorization
Use the authority permitted by this operation. bearer
Parameters
| Name / location | Type | Requirement and constraints |
|---|---|---|
device · path | string | Required. format: "uuid" |
Request body
No request-body schema is declared in the contract for this operation. This does not imply an empty body is sufficient for every endpoint.
Documented responses
204 · Cursor acknowledged
Request template
curl --request POST \
'https://api.example.test/v1/devices/{device}/cursor' \
-H 'Authorization: Bearer REPLACE_WITH_OPERATION_CREDENTIAL'Add all required query/header parameters shown above. Binary bodies, authentication inputs and omitted schemas require the corresponding operation’s input; this template is not a ready-to-run credentialed request.
DELETE /devices/{device}Operation reference+
Authorization
Use the authority permitted by this operation. bearer
Parameters
| Name / location | Type | Requirement and constraints |
|---|---|---|
device · path | string | Required. format: "uuid" |
Request body
No request-body schema is declared in the contract for this operation. This does not imply an empty body is sufficient for every endpoint.
Documented responses
204 · Device revoked, including bound sessions and mount credentials
404 · Device not found
Request template
curl --request DELETE \
'https://api.example.test/v1/devices/{device}' \
-H 'Authorization: Bearer REPLACE_WITH_OPERATION_CREDENTIAL'Add all required query/header parameters shown above. Binary bodies, authentication inputs and omitted schemas require the corresponding operation’s input; this template is not a ready-to-run credentialed request.
POST /files/{file}/linksInteractive drive administrators select one immutable version. Required expiry is in the future and at most 90 days away. Active links pin that version against retention. The secret is returned once.+
Interactive drive administrators select one immutable version. Required expiry is in the future and at most 90 days away. Active links pin that version against retention. The secret is returned once.
Authorization
Use the authority permitted by this operation. bearer
Parameters
No parameter schema is declared here. Path identities shown in the URL must still be supplied.
Request body
Required · application/json
| Field | Type | Meaning and constraints |
|---|---|---|
version_idRequired | string | format: "uuid" |
expires_atRequired | string | format: "date-time" |
{
"application/json": {
"schema": {
"type": "object",
"required": [
"version_id",
"expires_at"
],
"properties": {
"version_id": {
"type": "string",
"format": "uuid"
},
"expires_at": {
"type": "string",
"format": "date-time"
}
}
}
}
}Documented responses
201 · Immutable link and one-time secret
{
"application/json": {
"schema": {
"$ref": "#/components/schemas/PublicFileLinkResult"
}
}
}400 · Invalid version or expiry
401 · Interactive session required
404 · File or version unavailable to administrator
Request template
curl --request POST \
'https://api.example.test/v1/files/{file}/links' \
-H 'Authorization: Bearer REPLACE_WITH_OPERATION_CREDENTIAL' \
-H 'Content-Type: application/json' \
--data '{"version_id":"00000000-0000-0000-0000-000000000000","expires_at":"REPLACE_WITH_VALID_VALUE"}'Add all required query/header parameters shown above. Binary bodies, authentication inputs and omitted schemas require the corresponding operation’s input; this template is not a ready-to-run credentialed request.
Request and response fields
{
"type": "object",
"required": [
"file_link",
"secret"
],
"properties": {
"file_link": {
"$ref": "#/components/schemas/PublicFileLink"
},
"secret": {
"type": "string"
}
}
}{
"type": "object",
"required": [
"id",
"file_id",
"version_id",
"file_name",
"expires_at",
"created_at"
],
"properties": {
"id": {
"type": "string",
"format": "uuid"
},
"file_id": {
"type": "string",
"format": "uuid"
},
"version_id": {
"type": [
"string",
"null"
],
"format": "uuid"
},
"file_name": {
"type": "string"
},
"expires_at": {
"type": "string",
"format": "date-time"
},
"revoked_at": {
"type": [
"string",
"null"
],
"format": "date-time"
},
"created_at": {
"type": "string",
"format": "date-time"
}
}
}GET /files/{file}/linksAdministrator-only keyset listing of at most 100 links. No secrets or digests are returned.+
Administrator-only keyset listing of at most 100 links. No secrets or digests are returned.
Authorization
Use the authority permitted by this operation. bearer
Parameters
| Name / location | Type | Requirement and constraints |
|---|---|---|
after · query | string | Optional. format: "uuid" |
Request body
No request-body schema is declared in the contract for this operation. This does not imply an empty body is sufficient for every endpoint.
Documented responses
200 · Link metadata page
{
"application/json": {
"schema": {
"type": "object",
"required": [
"file_links",
"next_cursor"
],
"properties": {
"file_links": {
"type": "array",
"maxItems": 100,
"items": {
"$ref": "#/components/schemas/PublicFileLink"
}
},
"next_cursor": {
"type": [
"string",
"null"
],
"format": "uuid"
}
}
}
}
}404 · File unavailable to administrator
Request template
curl --request GET \
'https://api.example.test/v1/files/{file}/links' \
-H 'Authorization: Bearer REPLACE_WITH_OPERATION_CREDENTIAL'Add all required query/header parameters shown above. Binary bodies, authentication inputs and omitted schemas require the corresponding operation’s input; this template is not a ready-to-run credentialed request.
Request and response fields
{
"type": "object",
"required": [
"id",
"file_id",
"version_id",
"file_name",
"expires_at",
"created_at"
],
"properties": {
"id": {
"type": "string",
"format": "uuid"
},
"file_id": {
"type": "string",
"format": "uuid"
},
"version_id": {
"type": [
"string",
"null"
],
"format": "uuid"
},
"file_name": {
"type": "string"
},
"expires_at": {
"type": "string",
"format": "date-time"
},
"revoked_at": {
"type": [
"string",
"null"
],
"format": "date-time"
},
"created_at": {
"type": "string",
"format": "date-time"
}
}
}DELETE /files/{file}/links/{link}Administrator revocation denies subsequent public requests. A stream already started may finish.+
Administrator revocation denies subsequent public requests. A stream already started may finish.
Authorization
Use the authority permitted by this operation. bearer
Parameters
No parameter schema is declared here. Path identities shown in the URL must still be supplied.
Request body
No request-body schema is declared in the contract for this operation. This does not imply an empty body is sufficient for every endpoint.
Documented responses
204 · Link revoked
404 · Link unavailable to administrator
Request template
curl --request DELETE \
'https://api.example.test/v1/files/{file}/links/{link}' \
-H 'Authorization: Bearer REPLACE_WITH_OPERATION_CREDENTIAL'Add all required query/header parameters shown above. Binary bodies, authentication inputs and omitted schemas require the corresponding operation’s input; this template is not a ready-to-run credentialed request.
GET /public/file-linkMinimal immutable metadata. Unknown and expired or revoked bearers all return 404. Loss of creator administrative access also denies reads.+
Minimal immutable metadata. Unknown and expired or revoked bearers all return 404. Loss of creator administrative access also denies reads.
Authorization
Use the authority permitted by this operation. publicFileLink
Parameters
No parameter schema is declared here. Path identities shown in the URL must still be supplied.
Request body
No request-body schema is declared in the contract for this operation. This does not imply an empty body is sufficient for every endpoint.
Documented responses
200 · Public file metadata
{
"application/json": {
"schema": {
"$ref": "#/components/schemas/PublicFileRead"
}
}
}404 · Link unavailable
Request template
curl --request GET \
'https://api.example.test/v1/public/file-link' \
-H 'Authorization: Bearer REPLACE_WITH_OPERATION_CREDENTIAL'Add all required query/header parameters shown above. Binary bodies, authentication inputs and omitted schemas require the corresponding operation’s input; this template is not a ready-to-run credentialed request.
Request and response fields
{
"type": "object",
"additionalProperties": false,
"required": [
"file_name",
"version_id",
"logical_size",
"checksum_sha256",
"expires_at"
],
"properties": {
"file_name": {
"type": "string"
},
"version_id": {
"type": "string",
"format": "uuid"
},
"logical_size": {
"type": "integer",
"minimum": 0,
"maximum": 9223372036854776000
},
"checksum_sha256": {
"type": [
"string",
"null"
],
"pattern": "^[0-9a-f]{64}$",
"description": "Whole-file checksum when available; null for extent versions without a computed whole-file digest."
},
"expires_at": {
"type": "string",
"format": "date-time"
}
}
}GET /public/file-link/bytesStreams the selected immutable version using canonical range reads. The bearer never permits namespace browsing or mutations.+
Streams the selected immutable version using canonical range reads. The bearer never permits namespace browsing or mutations.
Authorization
Use the authority permitted by this operation. publicFileLink
Parameters
No parameter schema is declared here. Path identities shown in the URL must still be supplied.
Request body
No request-body schema is declared in the contract for this operation. This does not imply an empty body is sufficient for every endpoint.
Documented responses
200 · Complete immutable bytes
{
"application/octet-stream": {
"schema": {
"type": "string",
"format": "binary"
}
}
}206 · Immutable byte range
{
"application/octet-stream": {
"schema": {
"type": "string",
"format": "binary"
}
}
}404 · Link unavailable
416 · Unsatisfiable range
Request template
curl --request GET \
'https://api.example.test/v1/public/file-link/bytes' \
-H 'Authorization: Bearer REPLACE_WITH_OPERATION_CREDENTIAL'Add all required query/header parameters shown above. Binary bodies, authentication inputs and omitted schemas require the corresponding operation’s input; this template is not a ready-to-run credentialed request.
HEAD /public/file-link/bytesOperation reference+
Authorization
Use the authority permitted by this operation. publicFileLink
Parameters
No parameter schema is declared here. Path identities shown in the URL must still be supplied.
Request body
No request-body schema is declared in the contract for this operation. This does not imply an empty body is sufficient for every endpoint.
Documented responses
200 · Immutable byte headers without body
206 · Range headers without body
404 · Link unavailable
416 · Unsatisfiable range
Request template
curl --request HEAD \
'https://api.example.test/v1/public/file-link/bytes' \
-H 'Authorization: Bearer REPLACE_WITH_OPERATION_CREDENTIAL'Add all required query/header parameters shown above. Binary bodies, authentication inputs and omitted schemas require the corresponding operation’s input; this template is not a ready-to-run credentialed request.
POST /public/file-link/downloadExchanges the public bearer for a native-browser download cookie. The cookie is HttpOnly and SameSite Strict; Secure is required except explicit loopback development. It expires in at most 30 minutes and never outlives the link. Bearer material is excluded from the returned URL.+
Exchanges the public bearer for a native-browser download cookie. The cookie is HttpOnly and SameSite Strict; Secure is required except explicit loopback development. It expires in at most 30 minutes and never outlives the link. Bearer material is excluded from the returned URL.
Authorization
Use the authority permitted by this operation. publicFileLink
Parameters
No parameter schema is declared here. Path identities shown in the URL must still be supplied.
Request body
No request-body schema is declared in the contract for this operation. This does not imply an empty body is sufficient for every endpoint.
Documented responses
200 · File-scoped download path and cookie
{
"application/json": {
"schema": {
"type": "object",
"required": [
"download_path"
],
"properties": {
"download_path": {
"type": "string"
}
}
}
}
}404 · Link unavailable
Request template
curl --request POST \
'https://api.example.test/v1/public/file-link/download' \
-H 'Authorization: Bearer REPLACE_WITH_OPERATION_CREDENTIAL'Add all required query/header parameters shown above. Binary bodies, authentication inputs and omitted schemas require the corresponding operation’s input; this template is not a ready-to-run credentialed request.
GET /public/file-links/{link}/downloadNative streaming download. Every full or resumed range request rechecks the public link and its expiry/revocation and creator authority. A cookie issued for another link is denied.+
Native streaming download. Every full or resumed range request rechecks the public link and its expiry/revocation and creator authority. A cookie issued for another link is denied.
Authorization
Use the authority permitted by this operation. publicDownload
Parameters
No parameter schema is declared here. Path identities shown in the URL must still be supplied.
Request body
No request-body schema is declared in the contract for this operation. This does not imply an empty body is sufficient for every endpoint.
Documented responses
200 · Complete immutable bytes
{
"application/octet-stream": {
"schema": {
"type": "string",
"format": "binary"
}
}
}206 · Immutable byte range
{
"application/octet-stream": {
"schema": {
"type": "string",
"format": "binary"
}
}
}404 · Link unavailable or cookie missing
416 · Unsatisfiable range
Request template
curl --request GET \
'https://api.example.test/v1/public/file-links/{link}/download' \
-H 'Authorization: Bearer REPLACE_WITH_OPERATION_CREDENTIAL'Add all required query/header parameters shown above. Binary bodies, authentication inputs and omitted schemas require the corresponding operation’s input; this template is not a ready-to-run credentialed request.
HEAD /public/file-links/{link}/downloadOperation reference+
Authorization
Use the authority permitted by this operation. publicDownload
Parameters
No parameter schema is declared here. Path identities shown in the URL must still be supplied.
Request body
No request-body schema is declared in the contract for this operation. This does not imply an empty body is sufficient for every endpoint.
Documented responses
200 · Immutable byte headers without body
206 · Range headers without body
404 · Link unavailable or cookie missing
416 · Unsatisfiable range
Request template
curl --request HEAD \
'https://api.example.test/v1/public/file-links/{link}/download' \
-H 'Authorization: Bearer REPLACE_WITH_OPERATION_CREDENTIAL'Add all required query/header parameters shown above. Binary bodies, authentication inputs and omitted schemas require the corresponding operation’s input; this template is not a ready-to-run credentialed request.
POST /drives/{drive}/upload-requestsInteractive administrators create a fixed-destination request with expiry and file/byte/extension limits. Bearer is returned once. At most ten attempts per allowed file and three times the total byte budget may be reserved across failed attempts.+
Interactive administrators create a fixed-destination request with expiry and file/byte/extension limits. Bearer is returned once. At most ten attempts per allowed file and three times the total byte budget may be reserved across failed attempts.
Authorization
Use the authority permitted by this operation. bearer
Parameters
No parameter schema is declared here. Path identities shown in the URL must still be supplied.
Request body
Required · application/json
| Field | Type | Meaning and constraints |
|---|---|---|
parent_idOptional | string | null | format: "uuid" |
titleRequired | string | minLength: 1 · maxLength: 100 |
max_filesRequired | integer | minimum: 1 · maximum: 100 |
max_file_bytesRequired | integer | minimum: 1 · maximum: 104857600 |
max_total_bytesRequired | integer | minimum: 1 · maximum: 1073741824 |
allowed_extensionsOptional | array<string> | maxItems: 20 |
expires_atRequired | string | format: "date-time" |
{
"application/json": {
"schema": {
"$ref": "#/components/schemas/UploadRequestInput"
}
}
}Documented responses
201 · Request and one-time bearer
{
"application/json": {
"schema": {
"$ref": "#/components/schemas/UploadRequestResult"
}
}
}400 · Invalid limits or expiry
401 · Interactive session required
404 · Destination unavailable to administrator
Request template
curl --request POST \
'https://api.example.test/v1/drives/{drive}/upload-requests' \
-H 'Authorization: Bearer REPLACE_WITH_OPERATION_CREDENTIAL' \
-H 'Content-Type: application/json' \
--data '{"title":"REPLACE_WITH_VALID_VALUE","max_files":1,"max_file_bytes":1,"max_total_bytes":1,"expires_at":"REPLACE_WITH_VALID_VALUE"}'Add all required query/header parameters shown above. Binary bodies, authentication inputs and omitted schemas require the corresponding operation’s input; this template is not a ready-to-run credentialed request.
Request and response fields
{
"type": "object",
"additionalProperties": false,
"required": [
"title",
"max_files",
"max_file_bytes",
"max_total_bytes",
"expires_at"
],
"properties": {
"parent_id": {
"type": [
"string",
"null"
],
"format": "uuid"
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"max_files": {
"type": "integer",
"minimum": 1,
"maximum": 100
},
"max_file_bytes": {
"type": "integer",
"minimum": 1,
"maximum": 104857600
},
"max_total_bytes": {
"type": "integer",
"minimum": 1,
"maximum": 1073741824
},
"allowed_extensions": {
"type": "array",
"maxItems": 20,
"items": {
"type": "string",
"pattern": "^\\.[a-z0-9]{1,15}$"
}
},
"expires_at": {
"type": "string",
"format": "date-time"
}
}
}{
"type": "object",
"required": [
"upload_request",
"secret"
],
"properties": {
"upload_request": {
"$ref": "#/components/schemas/UploadRequest"
},
"secret": {
"type": "string"
}
}
}{
"type": "object",
"required": [
"id",
"drive_id",
"parent_id",
"title",
"max_files",
"max_file_bytes",
"max_total_bytes",
"allowed_extensions",
"expires_at",
"received_files",
"received_bytes",
"created_at"
],
"properties": {
"id": {
"type": "string",
"format": "uuid"
},
"drive_id": {
"type": "string",
"format": "uuid"
},
"parent_id": {
"type": [
"string",
"null"
],
"format": "uuid"
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"max_files": {
"type": "integer",
"minimum": 1,
"maximum": 100
},
"max_file_bytes": {
"type": "integer",
"minimum": 1,
"maximum": 104857600
},
"max_total_bytes": {
"type": "integer",
"minimum": 1,
"maximum": 1073741824
},
"allowed_extensions": {
"type": "array",
"maxItems": 20,
"items": {
"type": "string",
"pattern": "^\\.[a-z0-9]{1,15}$"
}
},
"expires_at": {
"type": "string",
"format": "date-time"
},
"received_files": {
"type": "integer",
"minimum": 0
},
"received_bytes": {
"type": "integer",
"minimum": 0
},
"revoked_at": {
"type": [
"string",
"null"
],
"format": "date-time"
},
"created_at": {
"type": "string",
"format": "date-time"
}
}
}GET /drives/{drive}/upload-requestsOperation reference+
Authorization
Use the authority permitted by this operation. bearer
Parameters
| Name / location | Type | Requirement and constraints |
|---|---|---|
after · query | string | Optional. format: "uuid" |
Request body
No request-body schema is declared in the contract for this operation. This does not imply an empty body is sufficient for every endpoint.
Documented responses
200 · Secret-free metadata page
{
"application/json": {
"schema": {
"type": "object",
"required": [
"upload_requests",
"next_cursor"
],
"properties": {
"upload_requests": {
"type": "array",
"maxItems": 100,
"items": {
"$ref": "#/components/schemas/UploadRequest"
}
},
"next_cursor": {
"type": [
"string",
"null"
],
"format": "uuid"
}
}
}
}
}404 · Destination unavailable to administrator
Request template
curl --request GET \
'https://api.example.test/v1/drives/{drive}/upload-requests' \
-H 'Authorization: Bearer REPLACE_WITH_OPERATION_CREDENTIAL'Add all required query/header parameters shown above. Binary bodies, authentication inputs and omitted schemas require the corresponding operation’s input; this template is not a ready-to-run credentialed request.
Request and response fields
{
"type": "object",
"required": [
"id",
"drive_id",
"parent_id",
"title",
"max_files",
"max_file_bytes",
"max_total_bytes",
"allowed_extensions",
"expires_at",
"received_files",
"received_bytes",
"created_at"
],
"properties": {
"id": {
"type": "string",
"format": "uuid"
},
"drive_id": {
"type": "string",
"format": "uuid"
},
"parent_id": {
"type": [
"string",
"null"
],
"format": "uuid"
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"max_files": {
"type": "integer",
"minimum": 1,
"maximum": 100
},
"max_file_bytes": {
"type": "integer",
"minimum": 1,
"maximum": 104857600
},
"max_total_bytes": {
"type": "integer",
"minimum": 1,
"maximum": 1073741824
},
"allowed_extensions": {
"type": "array",
"maxItems": 20,
"items": {
"type": "string",
"pattern": "^\\.[a-z0-9]{1,15}$"
}
},
"expires_at": {
"type": "string",
"format": "date-time"
},
"received_files": {
"type": "integer",
"minimum": 0
},
"received_bytes": {
"type": "integer",
"minimum": 0
},
"revoked_at": {
"type": [
"string",
"null"
],
"format": "date-time"
},
"created_at": {
"type": "string",
"format": "date-time"
}
}
}DELETE /drives/{drive}/upload-requests/{request}Operation reference+
Authorization
Use the authority permitted by this operation. bearer
Parameters
No parameter schema is declared here. Path identities shown in the URL must still be supplied.
Request body
No request-body schema is declared in the contract for this operation. This does not imply an empty body is sufficient for every endpoint.
Documented responses
204 · Request revoked; pending publication also denied
404 · Request unavailable to administrator
Request template
curl --request DELETE \
'https://api.example.test/v1/drives/{drive}/upload-requests/{request}' \
-H 'Authorization: Bearer REPLACE_WITH_OPERATION_CREDENTIAL'Add all required query/header parameters shown above. Binary bodies, authentication inputs and omitted schemas require the corresponding operation’s input; this template is not a ready-to-run credentialed request.
GET /public/upload-requestOperation reference+
Authorization
Use the authority permitted by this operation. uploadRequest
Parameters
No parameter schema is declared here. Path identities shown in the URL must still be supplied.
Request body
No request-body schema is declared in the contract for this operation. This does not imply an empty body is sufficient for every endpoint.
Documented responses
200 · Public limits without private destination identifiers
{
"application/json": {
"schema": {
"$ref": "#/components/schemas/PublicUploadRequest"
}
}
}404 · Request unavailable
Request template
curl --request GET \
'https://api.example.test/v1/public/upload-request' \
-H 'Authorization: Bearer REPLACE_WITH_OPERATION_CREDENTIAL'Add all required query/header parameters shown above. Binary bodies, authentication inputs and omitted schemas require the corresponding operation’s input; this template is not a ready-to-run credentialed request.
Request and response fields
{
"type": "object",
"additionalProperties": false,
"required": [
"title",
"max_files",
"max_file_bytes",
"max_total_bytes",
"allowed_extensions",
"expires_at"
],
"properties": {
"title": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"max_files": {
"type": "integer",
"minimum": 1,
"maximum": 100
},
"max_file_bytes": {
"type": "integer",
"minimum": 1,
"maximum": 104857600
},
"max_total_bytes": {
"type": "integer",
"minimum": 1,
"maximum": 1073741824
},
"allowed_extensions": {
"type": "array",
"maxItems": 20,
"items": {
"type": "string",
"pattern": "^\\.[a-z0-9]{1,15}$"
}
},
"expires_at": {
"type": "string",
"format": "date-time"
}
}
}POST /public/upload-request/filesBinary upload to the configured destination only. A stable identity binds encoded single filename, size and SHA-256. Active ten-minute reservations count toward limits. Publication rechecks expiry/revocation/authority/quota and atomically creates one new file/version. A committed retry returns the same receipt without ingesting another body.+
Binary upload to the configured destination only. A stable identity binds encoded single filename, size and SHA-256. Active ten-minute reservations count toward limits. Publication rechecks expiry/revocation/authority/quota and atomically creates one new file/version. A committed retry returns the same receipt without ingesting another body.
Authorization
Use the authority permitted by this operation. uploadRequest
Parameters
| Name / location | Type | Requirement and constraints |
|---|---|---|
Idempotency-Key · header | string | Required. minLength: 1 · maxLength: 200 |
X-File-Name · header | string | Required. Percent-encoded single filename |
X-Content-SHA256 · header | string | Required. pattern: "^[0-9a-f]{64}$" |
Request body
Required · application/octet-stream
{
"application/octet-stream": {
"schema": {
"type": "string",
"format": "binary",
"maxLength": 104857600
}
}
}Documented responses
200 · Original committed receipt
{
"application/json": {
"schema": {
"$ref": "#/components/schemas/UploadReceipt"
}
}
}201 · New file committed
{
"application/json": {
"schema": {
"$ref": "#/components/schemas/UploadReceipt"
}
}
}400 · Invalid filename/length or incomplete/incorrect content
404 · Request unavailable
409 · Identity or filename conflict
413 · Request budget exceeded
429 · Active lease or request pacing; Retry-After is one second
503 · Storage unavailable; retry same identity
507 · Destination quota exceeded
Request template
curl --request POST \
'https://api.example.test/v1/public/upload-request/files' \
-H 'Authorization: Bearer REPLACE_WITH_OPERATION_CREDENTIAL'Add all required query/header parameters shown above. Binary bodies, authentication inputs and omitted schemas require the corresponding operation’s input; this template is not a ready-to-run credentialed request.
Request and response fields
{
"type": "object",
"additionalProperties": false,
"required": [
"receipt_id",
"file_name",
"size_bytes",
"sha256",
"idempotent_replay"
],
"properties": {
"receipt_id": {
"type": "string",
"format": "uuid"
},
"file_name": {
"type": "string"
},
"size_bytes": {
"type": "integer",
"minimum": 0,
"maximum": 104857600
},
"sha256": {
"type": "string",
"pattern": "^[0-9a-f]{64}$"
},
"idempotent_replay": {
"type": "boolean"
}
}
}GET /drives/{drive}/searchSearch live names and bounded UTF-8 file text within one accessible drive+
All query words must match. Results use file-ID order and live pagination. Names update transactionally; content extraction is asynchronous and restricted to 256 KiB UTF-8 text without binary control characters. Current drive permissions and live ancestors are checked on every page. Old content is hidden immediately after a version change. Unsupported content remains searchable by name. No external model or service receives queries or content.
Authorization
Use the authority permitted by this operation. bearer
Parameters
| Name / location | Type | Requirement and constraints |
|---|---|---|
drive · path | string | Required. format: "uuid" |
q · query | string | Required. Query is limited to 256 UTF-8 bytes minLength: 1 · maxLength: 256 |
limit · query | integer | Optional. minimum: 1 · maximum: 100 |
cursor · query | string | Optional. Continuation bound to this drive and query maxLength: 512 |
Request body
No request-body schema is declared in the contract for this operation. This does not imply an empty body is sufficient for every endpoint.
Documented responses
200 · Permission-filtered live results
{
"application/json": {
"schema": {
"$ref": "#/components/schemas/SearchPage"
}
}
}400 · Invalid query or cursor
401 · Authentication required
403 · Credential scope denied
404 · Drive unavailable
500 · Search unavailable
Request template
curl --request GET \
'https://api.example.test/v1/drives/{drive}/search' \
-H 'Authorization: Bearer REPLACE_WITH_OPERATION_CREDENTIAL'Add all required query/header parameters shown above. Binary bodies, authentication inputs and omitted schemas require the corresponding operation’s input; this template is not a ready-to-run credentialed request.
Request and response fields
{
"type": "object",
"required": [
"results",
"next_cursor"
],
"properties": {
"results": {
"type": "array",
"maxItems": 100,
"items": {
"$ref": "#/components/schemas/SearchHit"
}
},
"next_cursor": {
"type": [
"string",
"null"
]
}
}
}{
"type": "object",
"required": [
"file_id",
"drive_id",
"version_id",
"name",
"path",
"kind",
"logical_size",
"excerpt",
"content_state"
],
"properties": {
"file_id": {
"type": "string",
"format": "uuid"
},
"drive_id": {
"type": "string",
"format": "uuid"
},
"version_id": {
"type": [
"string",
"null"
],
"format": "uuid"
},
"name": {
"type": "string"
},
"path": {
"type": "string"
},
"kind": {
"type": "string",
"enum": [
"file",
"folder"
]
},
"logical_size": {
"type": "integer",
"format": "int64",
"minimum": 0,
"description": "Byte length of the matched current version in the same search snapshot"
},
"excerpt": {
"type": "string",
"description": "Plain text prefix of indexed UTF-8 content"
},
"content_state": {
"type": "string",
"enum": [
"pending",
"processing",
"indexed",
"unsupported"
]
}
}
}GET /plansPublished monthly plans and add-on terms+
Authorization
No bearer security requirement is declared for this operation.
Parameters
No parameter schema is declared here. Path identities shown in the URL must still be supplied.
Request body
No request-body schema is declared in the contract for this operation. This does not imply an empty body is sufficient for every endpoint.
Documented responses
200 · Checkout mode, USD monthly prices, included seats and per-tier addon rules
{
"application/json": {
"schema": {
"$ref": "#/components/schemas/PlanCatalog"
}
}
}Request template
curl --request GET \
'https://api.example.test/v1/plans'Add all required query/header parameters shown above. Binary bodies, authentication inputs and omitted schemas require the corresponding operation’s input; this template is not a ready-to-run credentialed request.
Request and response fields
{
"type": "object",
"required": [
"plans",
"currency",
"billing_interval",
"checkout_mode"
],
"properties": {
"revision": {
"type": "string"
},
"plans": {
"type": "array",
"items": {
"$ref": "#/components/schemas/PlanOption"
}
},
"currency": {
"type": "string",
"const": "USD"
},
"billing_interval": {
"type": "string",
"const": "month"
},
"checkout_mode": {
"type": "string",
"enum": [
"disabled",
"development"
]
}
}
}{
"type": "object",
"required": [
"id",
"name",
"storage_bytes",
"seats",
"monthly_total_minor",
"extra_seat_monthly_minor",
"storage_addon_bytes",
"storage_addon_monthly_minor",
"max_seats"
],
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"availability": {
"type": "string"
},
"version_id": {
"type": "string"
},
"storage_bytes": {
"type": "integer",
"minimum": 0
},
"seats": {
"type": "integer",
"minimum": 0
},
"monthly_total_minor": {
"type": "integer",
"minimum": 0
},
"storage_addon_bytes": {
"type": "integer",
"minimum": 0
},
"storage_addon_monthly_minor": {
"type": "integer",
"minimum": 0
},
"max_seats": {
"type": "integer",
"minimum": 0
},
"max_storage_bytes": {
"type": "integer",
"minimum": 0
},
"display_order": {
"type": "integer",
"minimum": 0
},
"extra_seat_monthly_minor": {
"type": [
"integer",
"null"
],
"minimum": 0
},
"featured": {
"type": "boolean"
}
}
}GET /drives/{drive}/subscriptionOwner-only subscription and storage/seat usage+
Authorization
Use the authority permitted by this operation. bearer
Parameters
No parameter schema is declared here. Path identities shown in the URL must still be supplied.
Request body
No request-body schema is declared in the contract for this operation. This does not imply an empty body is sufficient for every endpoint.
Documented responses
200 · Drive subscription
{
"application/json": {
"schema": {
"$ref": "#/components/schemas/DriveSubscription"
}
}
}Request template
curl --request GET \
'https://api.example.test/v1/drives/{drive}/subscription' \
-H 'Authorization: Bearer REPLACE_WITH_OPERATION_CREDENTIAL'Add all required query/header parameters shown above. Binary bodies, authentication inputs and omitted schemas require the corresponding operation’s input; this template is not a ready-to-run credentialed request.
Request and response fields
{
"type": "object",
"additionalProperties": false,
"required": [
"drive_id",
"billing_user_id",
"status",
"storage_bytes",
"seats",
"members",
"reserved_invitations",
"used_bytes",
"currency",
"monthly_total_minor",
"revision",
"current_period_end",
"current_period_start",
"billing_anchor",
"cycle_number",
"access_until",
"pending_monthly_total_minor",
"cancel_at_period_end",
"pending_storage_bytes",
"pending_seats"
],
"properties": {
"drive_id": {
"type": "string"
},
"billing_user_id": {
"type": "string"
},
"status": {
"type": "string"
},
"currency": {
"type": "string"
},
"revision": {
"type": "string"
},
"current_period_start": {
"type": "string",
"format": "date-time",
"description": "Start of the current monthly cycle in UTC."
},
"billing_anchor": {
"type": "string",
"format": "date-time",
"description": "UTC day and time used to calculate calendar-month boundaries. Reset to the new date when an administrator adjusts validity."
},
"cycle_number": {
"type": "integer",
"minimum": 1
},
"access_until": {
"type": "string",
"format": "date-time",
"description": "Authoritative validity date and next renewal boundary. Free subscriptions renew when automatic renewal is enabled."
},
"pending_monthly_total_minor": {
"type": [
"integer",
"null"
],
"minimum": 0
},
"current_period_end": {
"type": "string"
},
"storage_bytes": {
"type": "integer",
"minimum": 0
},
"seats": {
"type": "integer",
"minimum": 0
},
"members": {
"type": "integer",
"minimum": 0
},
"reserved_invitations": {
"type": "integer",
"minimum": 0
},
"used_bytes": {
"type": "integer",
"minimum": 0
},
"monthly_total_minor": {
"type": "integer",
"minimum": 0
},
"cancel_at_period_end": {
"type": "boolean"
},
"pending_storage_bytes": {
"type": [
"integer",
"null"
],
"minimum": 1
},
"pending_seats": {
"type": [
"integer",
"null"
],
"minimum": 1
},
"plan_version_id": {
"type": [
"string",
"null"
],
"format": "uuid"
},
"pending_plan_version_id": {
"type": [
"string",
"null"
],
"format": "uuid"
}
}
}PUT /drives/{drive}/subscriptionDevelopment checkout for subscription changes; production requires billing configuration+
Authorization
Use the authority permitted by this operation. bearer
Parameters
No parameter schema is declared here. Path identities shown in the URL must still be supplied.
Request body
Required · application/json
| Field | Type | Meaning and constraints |
|---|---|---|
storage_bytesRequired | integer | minimum: 1 · maximum: 1000000000000000 |
seatsRequired | integer | minimum: 1 · maximum: 100000 |
expected_revisionRequired | string | pattern: "^[1-9][0-9]*$" |
cancel_at_period_endRequired | boolean | |
plan_version_idOptional | string | Version returned by GET /plans. Rejects stale terms with 409; omit when cancelling an existing subscription. format: "uuid" |
{
"application/json": {
"schema": {
"$ref": "#/components/schemas/SubscriptionChange"
}
}
}Documented responses
200 · Updated subscription; decreases take effect at renewal
{
"application/json": {
"schema": {
"$ref": "#/components/schemas/DriveSubscription"
}
}
}503 · Real billing is not configured; no charge or entitlement change
Request template
curl --request PUT \
'https://api.example.test/v1/drives/{drive}/subscription' \
-H 'Authorization: Bearer REPLACE_WITH_OPERATION_CREDENTIAL' \
-H 'Content-Type: application/json' \
--data '{"storage_bytes":1,"seats":1,"expected_revision":"REPLACE_WITH_VALID_VALUE","cancel_at_period_end":false}'Add all required query/header parameters shown above. Binary bodies, authentication inputs and omitted schemas require the corresponding operation’s input; this template is not a ready-to-run credentialed request.
Request and response fields
{
"type": "object",
"additionalProperties": false,
"required": [
"storage_bytes",
"seats",
"expected_revision",
"cancel_at_period_end"
],
"properties": {
"storage_bytes": {
"type": "integer",
"minimum": 1,
"maximum": 1000000000000000
},
"seats": {
"type": "integer",
"minimum": 1,
"maximum": 100000
},
"expected_revision": {
"type": "string",
"pattern": "^[1-9][0-9]*$"
},
"cancel_at_period_end": {
"type": "boolean"
},
"plan_version_id": {
"type": "string",
"format": "uuid",
"description": "Version returned by GET /plans. Rejects stale terms with 409; omit when cancelling an existing subscription."
}
},
"description": "Storage and member allowances are validated against the published plan catalog. Retrieve /plans before selecting a plan; prices and add-on increments can change."
}{
"type": "object",
"additionalProperties": false,
"required": [
"drive_id",
"billing_user_id",
"status",
"storage_bytes",
"seats",
"members",
"reserved_invitations",
"used_bytes",
"currency",
"monthly_total_minor",
"revision",
"current_period_end",
"current_period_start",
"billing_anchor",
"cycle_number",
"access_until",
"pending_monthly_total_minor",
"cancel_at_period_end",
"pending_storage_bytes",
"pending_seats"
],
"properties": {
"drive_id": {
"type": "string"
},
"billing_user_id": {
"type": "string"
},
"status": {
"type": "string"
},
"currency": {
"type": "string"
},
"revision": {
"type": "string"
},
"current_period_start": {
"type": "string",
"format": "date-time",
"description": "Start of the current monthly cycle in UTC."
},
"billing_anchor": {
"type": "string",
"format": "date-time",
"description": "UTC day and time used to calculate calendar-month boundaries. Reset to the new date when an administrator adjusts validity."
},
"cycle_number": {
"type": "integer",
"minimum": 1
},
"access_until": {
"type": "string",
"format": "date-time",
"description": "Authoritative validity date and next renewal boundary. Free subscriptions renew when automatic renewal is enabled."
},
"pending_monthly_total_minor": {
"type": [
"integer",
"null"
],
"minimum": 0
},
"current_period_end": {
"type": "string"
},
"storage_bytes": {
"type": "integer",
"minimum": 0
},
"seats": {
"type": "integer",
"minimum": 0
},
"members": {
"type": "integer",
"minimum": 0
},
"reserved_invitations": {
"type": "integer",
"minimum": 0
},
"used_bytes": {
"type": "integer",
"minimum": 0
},
"monthly_total_minor": {
"type": "integer",
"minimum": 0
},
"cancel_at_period_end": {
"type": "boolean"
},
"pending_storage_bytes": {
"type": [
"integer",
"null"
],
"minimum": 1
},
"pending_seats": {
"type": [
"integer",
"null"
],
"minimum": 1
},
"plan_version_id": {
"type": [
"string",
"null"
],
"format": "uuid"
},
"pending_plan_version_id": {
"type": [
"string",
"null"
],
"format": "uuid"
}
}
}DELETE /drives/{drive}/membershipLeave a shared drive; the owner cannot leave+
Authorization
Use the authority permitted by this operation. bearer
Parameters
| Name / location | Type | Requirement and constraints |
|---|---|---|
drive · path | string | Required. format: "uuid" |
Request body
No request-body schema is declared in the contract for this operation. This does not imply an empty body is sufficient for every endpoint.
Documented responses
204 · Access revoked; purchased seat quantity is unchanged
Request template
curl --request DELETE \
'https://api.example.test/v1/drives/{drive}/membership' \
-H 'Authorization: Bearer REPLACE_WITH_OPERATION_CREDENTIAL'Add all required query/header parameters shown above. Binary bodies, authentication inputs and omitted schemas require the corresponding operation’s input; this template is not a ready-to-run credentialed request.
GET /public/configPublished plans, installer links and product availability+
Authorization
No bearer security requirement is declared for this operation.
Parameters
No parameter schema is declared here. Path identities shown in the URL must still be supplied.
Request body
No request-body schema is declared in the contract for this operation. This does not imply an empty body is sufficient for every endpoint.
Documented responses
200 · Published plans, installer links and product availability
{
"application/json": {
"schema": {
"$ref": "#/components/schemas/PublicConfiguration"
}
}
}503 · Configuration unavailable
Request template
curl --request GET \
'https://api.example.test/v1/public/config'Add all required query/header parameters shown above. Binary bodies, authentication inputs and omitted schemas require the corresponding operation’s input; this template is not a ready-to-run credentialed request.
Request and response fields
{
"type": "object",
"required": [
"revision",
"catalog",
"settings"
],
"properties": {
"revision": {
"type": "string"
},
"catalog": {
"$ref": "#/components/schemas/PlanCatalog"
},
"settings": {
"$ref": "#/components/schemas/PlatformSettings"
}
}
}{
"type": "object",
"required": [
"plans",
"currency",
"billing_interval",
"checkout_mode"
],
"properties": {
"revision": {
"type": "string"
},
"plans": {
"type": "array",
"items": {
"$ref": "#/components/schemas/PlanOption"
}
},
"currency": {
"type": "string",
"const": "USD"
},
"billing_interval": {
"type": "string",
"const": "month"
},
"checkout_mode": {
"type": "string",
"enum": [
"disabled",
"development"
]
}
}
}{
"type": "object",
"required": [
"id",
"name",
"storage_bytes",
"seats",
"monthly_total_minor",
"extra_seat_monthly_minor",
"storage_addon_bytes",
"storage_addon_monthly_minor",
"max_seats"
],
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"availability": {
"type": "string"
},
"version_id": {
"type": "string"
},
"storage_bytes": {
"type": "integer",
"minimum": 0
},
"seats": {
"type": "integer",
"minimum": 0
},
"monthly_total_minor": {
"type": "integer",
"minimum": 0
},
"storage_addon_bytes": {
"type": "integer",
"minimum": 0
},
"storage_addon_monthly_minor": {
"type": "integer",
"minimum": 0
},
"max_seats": {
"type": "integer",
"minimum": 0
},
"max_storage_bytes": {
"type": "integer",
"minimum": 0
},
"display_order": {
"type": "integer",
"minimum": 0
},
"extra_seat_monthly_minor": {
"type": [
"integer",
"null"
],
"minimum": 0
},
"featured": {
"type": "boolean"
}
}
}{
"type": "object",
"required": [
"signup_enabled",
"checkout_enabled",
"web_enabled",
"linux_enabled",
"macos_enabled",
"windows_enabled",
"announcement",
"support_url",
"support_email",
"releases"
],
"properties": {
"signup_enabled": {
"type": "boolean"
},
"checkout_enabled": {
"type": "boolean"
},
"web_enabled": {
"type": "boolean"
},
"linux_enabled": {
"type": "boolean"
},
"macos_enabled": {
"type": "boolean"
},
"windows_enabled": {
"type": "boolean"
},
"announcement": {
"type": "string"
},
"support_url": {
"type": "string"
},
"support_email": {
"type": "string"
},
"releases": {
"type": "array",
"items": {
"$ref": "#/components/schemas/PlatformRelease"
}
},
"announcement_starts_at": {
"type": "string"
},
"announcement_ends_at": {
"type": "string"
}
}
}{
"type": "object",
"required": [
"platform",
"architecture",
"format",
"version",
"url",
"sha256",
"notes",
"published"
],
"properties": {
"platform": {
"type": "string"
},
"architecture": {
"type": "string"
},
"format": {
"type": "string"
},
"version": {
"type": "string"
},
"url": {
"type": "string"
},
"sha256": {
"type": "string"
},
"sha512": {
"type": "string",
"description": "Base64 SHA-512 for desktop updater verification."
},
"minimum_supported_version": {
"type": "string",
"description": "Older matching desktop clients must update after pending saves finish."
},
"update_reason": {
"type": "string"
},
"notes": {
"type": "string"
},
"published": {
"type": "boolean"
},
"channel": {
"type": "string",
"enum": [
"stable",
"preview",
"beta"
]
},
"file_size": {
"type": "integer",
"minimum": 0
},
"signing": {
"type": "string",
"enum": [
"unsigned",
"authenticode",
"notarized",
"not_applicable"
]
},
"verification": {
"type": "string",
"enum": [
"not_checked",
"passed",
"failed"
]
}
}
}GET /platform/configPlatform administrator draft and published configuration+
Authorization
Use the authority permitted by this operation. bearer
Parameters
No parameter schema is declared here. Path identities shown in the URL must still be supplied.
Request body
No request-body schema is declared in the contract for this operation. This does not imply an empty body is sufficient for every endpoint.
Documented responses
200 · Platform administrator draft and published configuration
{
"application/json": {
"schema": {
"$ref": "#/components/schemas/PlatformConfiguration"
}
}
}401 · Session required
403 · Platform administrator access required
503 · Configuration unavailable
Request template
curl --request GET \
'https://api.example.test/v1/platform/config' \
-H 'Authorization: Bearer REPLACE_WITH_OPERATION_CREDENTIAL'Add all required query/header parameters shown above. Binary bodies, authentication inputs and omitted schemas require the corresponding operation’s input; this template is not a ready-to-run credentialed request.
Request and response fields
{
"type": "object",
"required": [
"revision",
"published",
"draft"
],
"properties": {
"revision": {
"type": "string"
},
"published": {
"$ref": "#/components/schemas/PlatformDocument"
},
"draft": {
"$ref": "#/components/schemas/PlatformDocument"
}
}
}{
"type": "object",
"required": [
"plans",
"settings"
],
"properties": {
"plans": {
"type": "array",
"items": {
"$ref": "#/components/schemas/PlanOption"
}
},
"settings": {
"$ref": "#/components/schemas/PlatformSettings"
}
}
}{
"type": "object",
"required": [
"id",
"name",
"storage_bytes",
"seats",
"monthly_total_minor",
"extra_seat_monthly_minor",
"storage_addon_bytes",
"storage_addon_monthly_minor",
"max_seats"
],
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"availability": {
"type": "string"
},
"version_id": {
"type": "string"
},
"storage_bytes": {
"type": "integer",
"minimum": 0
},
"seats": {
"type": "integer",
"minimum": 0
},
"monthly_total_minor": {
"type": "integer",
"minimum": 0
},
"storage_addon_bytes": {
"type": "integer",
"minimum": 0
},
"storage_addon_monthly_minor": {
"type": "integer",
"minimum": 0
},
"max_seats": {
"type": "integer",
"minimum": 0
},
"max_storage_bytes": {
"type": "integer",
"minimum": 0
},
"display_order": {
"type": "integer",
"minimum": 0
},
"extra_seat_monthly_minor": {
"type": [
"integer",
"null"
],
"minimum": 0
},
"featured": {
"type": "boolean"
}
}
}{
"type": "object",
"required": [
"signup_enabled",
"checkout_enabled",
"web_enabled",
"linux_enabled",
"macos_enabled",
"windows_enabled",
"announcement",
"support_url",
"support_email",
"releases"
],
"properties": {
"signup_enabled": {
"type": "boolean"
},
"checkout_enabled": {
"type": "boolean"
},
"web_enabled": {
"type": "boolean"
},
"linux_enabled": {
"type": "boolean"
},
"macos_enabled": {
"type": "boolean"
},
"windows_enabled": {
"type": "boolean"
},
"announcement": {
"type": "string"
},
"support_url": {
"type": "string"
},
"support_email": {
"type": "string"
},
"releases": {
"type": "array",
"items": {
"$ref": "#/components/schemas/PlatformRelease"
}
},
"announcement_starts_at": {
"type": "string"
},
"announcement_ends_at": {
"type": "string"
}
}
}{
"type": "object",
"required": [
"platform",
"architecture",
"format",
"version",
"url",
"sha256",
"notes",
"published"
],
"properties": {
"platform": {
"type": "string"
},
"architecture": {
"type": "string"
},
"format": {
"type": "string"
},
"version": {
"type": "string"
},
"url": {
"type": "string"
},
"sha256": {
"type": "string"
},
"sha512": {
"type": "string",
"description": "Base64 SHA-512 for desktop updater verification."
},
"minimum_supported_version": {
"type": "string",
"description": "Older matching desktop clients must update after pending saves finish."
},
"update_reason": {
"type": "string"
},
"notes": {
"type": "string"
},
"published": {
"type": "boolean"
},
"channel": {
"type": "string",
"enum": [
"stable",
"preview",
"beta"
]
},
"file_size": {
"type": "integer",
"minimum": 0
},
"signing": {
"type": "string",
"enum": [
"unsigned",
"authenticode",
"notarized",
"not_applicable"
]
},
"verification": {
"type": "string",
"enum": [
"not_checked",
"passed",
"failed"
]
}
}
}PUT /platform/configSave a draft or publish product settings; platform administrator only+
Authorization
Use the authority permitted by this operation. bearer
Parameters
No parameter schema is declared here. Path identities shown in the URL must still be supplied.
Request body
Required · application/json
| Field | Type | Meaning and constraints |
|---|---|---|
expected_revisionRequired | string | pattern: "^[1-9][0-9]*$" |
documentRequired | PlatformDocument | |
publishRequired | boolean |
{
"application/json": {
"schema": {
"type": "object",
"required": [
"expected_revision",
"document",
"publish"
],
"properties": {
"expected_revision": {
"type": "string",
"pattern": "^[1-9][0-9]*$"
},
"document": {
"$ref": "#/components/schemas/PlatformDocument"
},
"publish": {
"type": "boolean"
}
}
}
}
}Documented responses
200 · Updated configuration
{
"application/json": {
"schema": {
"$ref": "#/components/schemas/PlatformConfiguration"
}
}
}400 · Invalid settings
401 · Session required
403 · Platform administrator access required
409 · Revision changed; reload before editing
Request template
curl --request PUT \
'https://api.example.test/v1/platform/config' \
-H 'Authorization: Bearer REPLACE_WITH_OPERATION_CREDENTIAL' \
-H 'Content-Type: application/json' \
--data '{"expected_revision":"REPLACE_WITH_VALID_VALUE","document":{"plans":[],"settings":{"signup_enabled":false,"checkout_enabled":false,"web_enabled":false,"linux_enabled":false,"macos_enabled":false,"windows_enabled":false,"announcement":"REPLACE_WITH_VALID_VALUE","support_url":"REPLACE_WITH_VALID_VALUE","support_email":"REPLACE_WITH_VALID_VALUE","releases":[]}},"publish":false}'Add all required query/header parameters shown above. Binary bodies, authentication inputs and omitted schemas require the corresponding operation’s input; this template is not a ready-to-run credentialed request.
Request and response fields
{
"type": "object",
"required": [
"plans",
"settings"
],
"properties": {
"plans": {
"type": "array",
"items": {
"$ref": "#/components/schemas/PlanOption"
}
},
"settings": {
"$ref": "#/components/schemas/PlatformSettings"
}
}
}{
"type": "object",
"required": [
"id",
"name",
"storage_bytes",
"seats",
"monthly_total_minor",
"extra_seat_monthly_minor",
"storage_addon_bytes",
"storage_addon_monthly_minor",
"max_seats"
],
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"availability": {
"type": "string"
},
"version_id": {
"type": "string"
},
"storage_bytes": {
"type": "integer",
"minimum": 0
},
"seats": {
"type": "integer",
"minimum": 0
},
"monthly_total_minor": {
"type": "integer",
"minimum": 0
},
"storage_addon_bytes": {
"type": "integer",
"minimum": 0
},
"storage_addon_monthly_minor": {
"type": "integer",
"minimum": 0
},
"max_seats": {
"type": "integer",
"minimum": 0
},
"max_storage_bytes": {
"type": "integer",
"minimum": 0
},
"display_order": {
"type": "integer",
"minimum": 0
},
"extra_seat_monthly_minor": {
"type": [
"integer",
"null"
],
"minimum": 0
},
"featured": {
"type": "boolean"
}
}
}{
"type": "object",
"required": [
"signup_enabled",
"checkout_enabled",
"web_enabled",
"linux_enabled",
"macos_enabled",
"windows_enabled",
"announcement",
"support_url",
"support_email",
"releases"
],
"properties": {
"signup_enabled": {
"type": "boolean"
},
"checkout_enabled": {
"type": "boolean"
},
"web_enabled": {
"type": "boolean"
},
"linux_enabled": {
"type": "boolean"
},
"macos_enabled": {
"type": "boolean"
},
"windows_enabled": {
"type": "boolean"
},
"announcement": {
"type": "string"
},
"support_url": {
"type": "string"
},
"support_email": {
"type": "string"
},
"releases": {
"type": "array",
"items": {
"$ref": "#/components/schemas/PlatformRelease"
}
},
"announcement_starts_at": {
"type": "string"
},
"announcement_ends_at": {
"type": "string"
}
}
}{
"type": "object",
"required": [
"platform",
"architecture",
"format",
"version",
"url",
"sha256",
"notes",
"published"
],
"properties": {
"platform": {
"type": "string"
},
"architecture": {
"type": "string"
},
"format": {
"type": "string"
},
"version": {
"type": "string"
},
"url": {
"type": "string"
},
"sha256": {
"type": "string"
},
"sha512": {
"type": "string",
"description": "Base64 SHA-512 for desktop updater verification."
},
"minimum_supported_version": {
"type": "string",
"description": "Older matching desktop clients must update after pending saves finish."
},
"update_reason": {
"type": "string"
},
"notes": {
"type": "string"
},
"published": {
"type": "boolean"
},
"channel": {
"type": "string",
"enum": [
"stable",
"preview",
"beta"
]
},
"file_size": {
"type": "integer",
"minimum": 0
},
"signing": {
"type": "string",
"enum": [
"unsigned",
"authenticode",
"notarized",
"not_applicable"
]
},
"verification": {
"type": "string",
"enum": [
"not_checked",
"passed",
"failed"
]
}
}
}{
"type": "object",
"required": [
"revision",
"published",
"draft"
],
"properties": {
"revision": {
"type": "string"
},
"published": {
"$ref": "#/components/schemas/PlatformDocument"
},
"draft": {
"$ref": "#/components/schemas/PlatformDocument"
}
}
}GET /platform/auditLatest 100 product configuration changes; platform administrator only+
Authorization
Use the authority permitted by this operation. bearer
Parameters
No parameter schema is declared here. Path identities shown in the URL must still be supplied.
Request body
No request-body schema is declared in the contract for this operation. This does not imply an empty body is sufficient for every endpoint.
Documented responses
200 · Audit records, newest first
{
"application/json": {
"schema": {
"type": "object",
"properties": {
"items": {
"type": "array",
"items": {
"$ref": "#/components/schemas/PlatformAuditEntry"
}
}
}
}
}
}401 · Session required
403 · Platform administrator access required
Request template
curl --request GET \
'https://api.example.test/v1/platform/audit' \
-H 'Authorization: Bearer REPLACE_WITH_OPERATION_CREDENTIAL'Add all required query/header parameters shown above. Binary bodies, authentication inputs and omitted schemas require the corresponding operation’s input; this template is not a ready-to-run credentialed request.
Request and response fields
{
"type": "object",
"required": [
"id",
"user_id",
"action",
"revision",
"before",
"after",
"created_at"
],
"properties": {
"id": {
"type": "string"
},
"user_id": {
"type": "string",
"format": "uuid"
},
"action": {
"type": "string"
},
"revision": {
"type": "string"
},
"before": {},
"after": {},
"created_at": {
"type": "string",
"format": "date-time"
},
"resource_type": {
"type": "string"
},
"resource_id": {
"type": "string"
},
"reason": {
"type": "string"
}
}
}GET /platform/resourcesRead independently versioned plans, releases and settings+
Authorization
Use the authority permitted by this operation. bearer
Parameters
No parameter schema is declared here. Path identities shown in the URL must still be supplied.
Request body
No request-body schema is declared in the contract for this operation. This does not imply an empty body is sufficient for every endpoint.
Documented responses
200 · Administrator result
{
"application/json": {
"schema": {
"type": "object"
}
}
}400 · Invalid fields or date range
401 · Session required
403 · Insufficient platform role
409 · Record changed; reload
503 · Administration temporarily unavailable
Request template
curl --request GET \
'https://api.example.test/v1/platform/resources' \
-H 'Authorization: Bearer REPLACE_WITH_OPERATION_CREDENTIAL'Add all required query/header parameters shown above. Binary bodies, authentication inputs and omitted schemas require the corresponding operation’s input; this template is not a ready-to-run credentialed request.
PUT /platform/resources/{kind}/{id}Save only this resource; preserve unrelated edits and existing subscription terms+
Authorization
Use the authority permitted by this operation. bearer
Parameters
| Name / location | Type | Requirement and constraints |
|---|---|---|
kind · path | string | Required. |
id · path | string | Required. |
Request body
Required · application/json
| Field | Type | Meaning and constraints |
|---|---|---|
expected_revisionRequired | string | |
valueRequired | schema | |
activateOptional | boolean | |
removeOptional | boolean | |
reasonOptional | string | maxLength: 500 |
{
"application/json": {
"schema": {
"type": "object",
"required": [
"expected_revision",
"value"
],
"properties": {
"expected_revision": {
"type": "string"
},
"value": {},
"activate": {
"type": "boolean"
},
"remove": {
"type": "boolean"
},
"reason": {
"type": "string",
"maxLength": 500
}
}
}
}
}Documented responses
200 · Administrator result
{
"application/json": {
"schema": {
"type": "object"
}
}
}400 · Invalid fields or date range
401 · Session required
403 · Insufficient platform role
409 · Record changed; reload
503 · Administration temporarily unavailable
Request template
curl --request PUT \
'https://api.example.test/v1/platform/resources/{kind}/{id}' \
-H 'Authorization: Bearer REPLACE_WITH_OPERATION_CREDENTIAL' \
-H 'Content-Type: application/json' \
--data '{"expected_revision":"REPLACE_WITH_VALID_VALUE","value":"REPLACE_WITH_VALID_VALUE"}'Add all required query/header parameters shown above. Binary bodies, authentication inputs and omitted schemas require the corresponding operation’s input; this template is not a ready-to-run credentialed request.
GET /platform/overviewCustomer, storage and request totals+
Authorization
Use the authority permitted by this operation. bearer
Parameters
| Name / location | Type | Requirement and constraints |
|---|---|---|
start · query | string | Optional. |
end · query | string | Optional. |
Request body
No request-body schema is declared in the contract for this operation. This does not imply an empty body is sufficient for every endpoint.
Documented responses
200 · Administrator result
{
"application/json": {
"schema": {
"type": "object"
}
}
}400 · Invalid fields or date range
401 · Session required
403 · Insufficient platform role
409 · Record changed; reload
503 · Administration temporarily unavailable
Request template
curl --request GET \
'https://api.example.test/v1/platform/overview' \
-H 'Authorization: Bearer REPLACE_WITH_OPERATION_CREDENTIAL'Add all required query/header parameters shown above. Binary bodies, authentication inputs and omitted schemas require the corresponding operation’s input; this template is not a ready-to-run credentialed request.
GET /platform/growthDaily registrations and observed activity+
Authorization
Use the authority permitted by this operation. bearer
Parameters
| Name / location | Type | Requirement and constraints |
|---|---|---|
start · query | string | Optional. |
end · query | string | Optional. |
Request body
No request-body schema is declared in the contract for this operation. This does not imply an empty body is sufficient for every endpoint.
Documented responses
200 · Administrator result
{
"application/json": {
"schema": {
"type": "object"
}
}
}400 · Invalid fields or date range
401 · Session required
403 · Insufficient platform role
409 · Record changed; reload
503 · Administration temporarily unavailable
Request template
curl --request GET \
'https://api.example.test/v1/platform/growth' \
-H 'Authorization: Bearer REPLACE_WITH_OPERATION_CREDENTIAL'Add all required query/header parameters shown above. Binary bodies, authentication inputs and omitted schemas require the corresponding operation’s input; this template is not a ready-to-run credentialed request.
GET /platform/healthDependency health, database pool and recorded operator checks+
Authorization
Use the authority permitted by this operation. bearer
Parameters
| Name / location | Type | Requirement and constraints |
|---|---|---|
start · query | string | Optional. |
end · query | string | Optional. |
Request body
No request-body schema is declared in the contract for this operation. This does not imply an empty body is sufficient for every endpoint.
Documented responses
200 · Administrator result
{
"application/json": {
"schema": {
"type": "object"
}
}
}400 · Invalid fields or date range
401 · Session required
403 · Insufficient platform role
409 · Record changed; reload
503 · Administration temporarily unavailable
Request template
curl --request GET \
'https://api.example.test/v1/platform/health' \
-H 'Authorization: Bearer REPLACE_WITH_OPERATION_CREDENTIAL'Add all required query/header parameters shown above. Binary bodies, authentication inputs and omitted schemas require the corresponding operation’s input; this template is not a ready-to-run credentialed request.
GET /platform/lists/{kind}Search and paginate safe administration records+
Authorization
Use the authority permitted by this operation. bearer
Parameters
| Name / location | Type | Requirement and constraints |
|---|---|---|
kind · path | string | Required. |
q · query | string | Optional. |
status · query | string | Optional. |
id · query | string | Optional. |
page · query | string | Optional. |
page_size · query | string | Optional. |
start · query | string | Optional. |
end · query | string | Optional. |
Request body
No request-body schema is declared in the contract for this operation. This does not imply an empty body is sufficient for every endpoint.
Documented responses
200 · Administrator result
{
"application/json": {
"schema": {
"type": "object"
}
}
}400 · Invalid fields or date range
401 · Session required
403 · Insufficient platform role
409 · Record changed; reload
503 · Administration temporarily unavailable
Request template
curl --request GET \
'https://api.example.test/v1/platform/lists/{kind}' \
-H 'Authorization: Bearer REPLACE_WITH_OPERATION_CREDENTIAL'Add all required query/header parameters shown above. Binary bodies, authentication inputs and omitted schemas require the corresponding operation’s input; this template is not a ready-to-run credentialed request.
GET /platform/details/{kind}/{id}Read customer or drive details without credentials or file bytes+
Authorization
Use the authority permitted by this operation. bearer
Parameters
| Name / location | Type | Requirement and constraints |
|---|---|---|
kind · path | string | Required. |
id · path | string | Required. |
start · query | string | Optional. |
end · query | string | Optional. |
Request body
No request-body schema is declared in the contract for this operation. This does not imply an empty body is sufficient for every endpoint.
Documented responses
200 · Administrator result
{
"application/json": {
"schema": {
"type": "object"
}
}
}400 · Invalid fields or date range
401 · Session required
403 · Insufficient platform role
409 · Record changed; reload
503 · Administration temporarily unavailable
Request template
curl --request GET \
'https://api.example.test/v1/platform/details/{kind}/{id}' \
-H 'Authorization: Bearer REPLACE_WITH_OPERATION_CREDENTIAL'Add all required query/header parameters shown above. Binary bodies, authentication inputs and omitted schemas require the corresponding operation’s input; this template is not a ready-to-run credentialed request.
POST /platform/actions/{kind}/{id}Apply a role-authorized support action with a mandatory audit reason+
Subscription changes require full or billing administrator access. No action records a payment or sends email.
Authorization
Use the authority permitted by this operation. bearer
Parameters
| Name / location | Type | Requirement and constraints |
|---|---|---|
kind · path | string | Required. |
id · path | string | Required. |
Request body
Required · application/json
| Field | Type | Meaning and constraints |
|---|---|---|
actionRequired | string | |
reasonRequired | string | minLength: 1 · maxLength: 500 |
roleOptional | "full" | "support" | "billing" | "analyst" | |
expected_revisionOptional | string | Required for subscription actions; obtain from the subscription detail record. |
valueOptional | AdminSubscriptionTerms |
{
"application/json": {
"schema": {
"type": "object",
"required": [
"action",
"reason"
],
"properties": {
"action": {
"type": "string"
},
"reason": {
"type": "string",
"minLength": 1,
"maxLength": 500
},
"role": {
"type": "string",
"enum": [
"full",
"support",
"billing",
"analyst"
]
},
"expected_revision": {
"type": "string",
"description": "Required for subscription actions; obtain from the subscription detail record."
},
"value": {
"$ref": "#/components/schemas/AdminSubscriptionTerms"
}
}
}
}
}Documented responses
200 · Administrator result
{
"application/json": {
"schema": {
"type": "object"
}
}
}400 · Invalid fields or date range
401 · Session required
403 · Insufficient platform role
409 · Record changed; reload
503 · Administration temporarily unavailable
Request template
curl --request POST \
'https://api.example.test/v1/platform/actions/{kind}/{id}' \
-H 'Authorization: Bearer REPLACE_WITH_OPERATION_CREDENTIAL' \
-H 'Content-Type: application/json' \
--data '{"action":"REPLACE_WITH_VALID_VALUE","reason":"REPLACE_WITH_VALID_VALUE"}'Add all required query/header parameters shown above. Binary bodies, authentication inputs and omitted schemas require the corresponding operation’s input; this template is not a ready-to-run credentialed request.
Request and response fields
{
"type": "object",
"description": "Values for subscriptions administration. edit-allowances sets storage_bytes and seats while keeping price and plan. change-plan selects a published immutable plan_version_id (or plan_id with plan_revision). custom-subscription sets storage_bytes, seats and monthly_total_minor, including zero. These use timing now or next-cycle. adjust-validity uses access_until (an RFC 3339 future timestamp) to move validity earlier or later without changing billing terms. Automatic renewal is controlled separately by cancel-renewal and resume-renewal; changing validity does not enable renewal.",
"properties": {
"storage_bytes": {
"type": "integer",
"minimum": 1000000000,
"maximum": 1000000000000000
},
"seats": {
"type": "integer",
"minimum": 1,
"maximum": 100000
},
"monthly_total_minor": {
"type": "integer",
"minimum": 0,
"maximum": 1000000000000,
"description": "Recurring monthly USD price in cents, independent of allowances."
},
"plan_version_id": {
"type": "string"
},
"plan_id": {
"type": "string"
},
"plan_revision": {
"type": "string"
},
"timing": {
"type": "string",
"enum": [
"now",
"next-cycle"
]
},
"cycles": {
"type": "integer",
"minimum": 1,
"maximum": 120
}
}
}POST /platform/reports/{kind}Record an operator backup or recovery result+
Authorization
Use the authority permitted by this operation. bearer
Parameters
| Name / location | Type | Requirement and constraints |
|---|---|---|
kind · path | string | Required. |
Request body
Required · application/json
| Field | Type | Meaning and constraints |
|---|---|---|
statusRequired | "passed" | "failed" | |
reasonRequired | string | |
detailsRequired | object | additionalProperties: false |
{
"application/json": {
"schema": {
"type": "object",
"required": [
"status",
"reason",
"details"
],
"properties": {
"status": {
"type": "string",
"enum": [
"passed",
"failed"
]
},
"reason": {
"type": "string"
},
"details": {
"type": "object",
"properties": {
"summary": {
"type": "string"
},
"reference": {
"type": "string"
}
},
"additionalProperties": false
}
}
}
}
}Documented responses
200 · Administrator result
{
"application/json": {
"schema": {
"type": "object"
}
}
}400 · Invalid fields or date range
401 · Session required
403 · Insufficient platform role
409 · Record changed; reload
503 · Administration temporarily unavailable
Request template
curl --request POST \
'https://api.example.test/v1/platform/reports/{kind}' \
-H 'Authorization: Bearer REPLACE_WITH_OPERATION_CREDENTIAL' \
-H 'Content-Type: application/json' \
--data '{"status":"passed","reason":"REPLACE_WITH_VALID_VALUE","details":{}}'Add all required query/header parameters shown above. Binary bodies, authentication inputs and omitted schemas require the corresponding operation’s input; this template is not a ready-to-run credentialed request.
POST /auth/otp/requestEmail a sign-in code+
Codes expire after 10 minutes, are single use, and allow five attempts. Resending invalidates the previous code. Requests have a 60-second cooldown and a per-email and per-IP rate limit. Storage is activated separately.
Authorization
No bearer security requirement is declared for this operation.
Parameters
No parameter schema is declared here. Path identities shown in the URL must still be supplied.
Request body
Required · application/json
| Field | Type | Meaning and constraints |
|---|---|---|
emailRequired | string | format: "email" · maxLength: 254 |
{
"application/json": {
"schema": {
"type": "object",
"required": [
"email"
],
"properties": {
"email": {
"type": "string",
"format": "email",
"maxLength": 254
}
}
}
}
}Documented responses
202 · Challenge accepted
{
"application/json": {
"schema": {
"$ref": "#/components/schemas/OTPChallenge"
}
}
}400 · Invalid input
401 · Invalid, expired, consumed or exhausted code
429 · Rate limited; wait before trying again
503 · Email delivery unavailable
Request template
curl --request POST \
'https://api.example.test/v1/auth/otp/request' \
-H 'Content-Type: application/json' \
--data '{"email":"REPLACE_WITH_VALID_VALUE"}'Add all required query/header parameters shown above. Binary bodies, authentication inputs and omitted schemas require the corresponding operation’s input; this template is not a ready-to-run credentialed request.
Request and response fields
{
"type": "object",
"required": [
"challenge_id",
"expires_at",
"resend_after"
],
"properties": {
"challenge_id": {
"type": "string",
"format": "uuid"
},
"expires_at": {
"type": "string",
"format": "date-time"
},
"resend_after": {
"type": "integer",
"minimum": 0
},
"code": {
"type": "string",
"description": "Only exposed by explicitly configured local integration fixtures. Never returned in production."
}
}
}POST /auth/otp/verifySign in with an email code; create an account if needed+
Codes expire after 10 minutes, are single use, and allow five attempts. Resending invalidates the previous code. Requests have a 60-second cooldown and a per-email and per-IP rate limit. Storage is activated separately.
Authorization
No bearer security requirement is declared for this operation.
Parameters
No parameter schema is declared here. Path identities shown in the URL must still be supplied.
Request body
Required · application/json
| Field | Type | Meaning and constraints |
|---|---|---|
challenge_idRequired | string | format: "uuid" |
codeRequired | string | pattern: "^[0-9]{6}$" |
{
"application/json": {
"schema": {
"type": "object",
"required": [
"challenge_id",
"code"
],
"properties": {
"challenge_id": {
"type": "string",
"format": "uuid"
},
"code": {
"type": "string",
"pattern": "^[0-9]{6}$"
}
}
}
}
}Documented responses
200 · Session created
{
"application/json": {
"schema": {
"$ref": "#/components/schemas/AuthSession"
}
}
}400 · Invalid input
401 · Invalid, expired, consumed or exhausted code
429 · Rate limited; wait before trying again
503 · Email delivery unavailable
Request template
curl --request POST \
'https://api.example.test/v1/auth/otp/verify' \
-H 'Content-Type: application/json' \
--data '{"challenge_id":"00000000-0000-0000-0000-000000000000","code":"REPLACE_WITH_VALID_VALUE"}'Add all required query/header parameters shown above. Binary bodies, authentication inputs and omitted schemas require the corresponding operation’s input; this template is not a ready-to-run credentialed request.
Request and response fields
{
"type": "object",
"required": [
"user",
"access_token",
"access_expires_at",
"refresh_token",
"refresh_expires_at"
],
"properties": {
"user": {
"$ref": "#/components/schemas/User"
},
"access_token": {
"type": "string",
"minLength": 1
},
"access_expires_at": {
"type": "string",
"format": "date-time"
},
"refresh_token": {
"type": "string",
"minLength": 1
},
"refresh_expires_at": {
"type": "string",
"format": "date-time"
}
}
}{
"type": "object",
"required": [
"id",
"email"
],
"properties": {
"id": {
"type": "string",
"format": "uuid"
},
"email": {
"type": "string",
"format": "email"
}
}
}GET /drives/{drive}/historyRead history settings and storage breakdown+
Authorization
Use the authority permitted by this operation. bearer
Parameters
| Name / location | Type | Requirement and constraints |
|---|---|---|
drive · path | string | Required. format: "uuid" |
Request body
No request-body schema is declared in the contract for this operation. This does not imply an empty body is sufficient for every endpoint.
Documented responses
200 · Success
{
"application/json": {
"schema": {
"$ref": "#/components/schemas/FileHistoryPolicy"
}
}
}400 · Invalid input
403 · Drive owner authority is required
404 · Drive or history not found
409 · Revision changed or selected content is protected
Request template
curl --request GET \
'https://api.example.test/v1/drives/{drive}/history' \
-H 'Authorization: Bearer REPLACE_WITH_OPERATION_CREDENTIAL'Add all required query/header parameters shown above. Binary bodies, authentication inputs and omitted schemas require the corresponding operation’s input; this template is not a ready-to-run credentialed request.
Request and response fields
{
"type": "object",
"description": "Drive-wide history is off by default. Used storage counts current and retained historical contents with content deduplication.",
"required": [
"drive_id",
"enabled",
"revision",
"current_bytes",
"history_bytes",
"used_bytes",
"historical_versions"
],
"properties": {
"drive_id": {
"type": "string",
"format": "uuid"
},
"enabled": {
"type": "boolean"
},
"revision": {
"type": "string"
},
"current_bytes": {
"type": "integer",
"format": "int64",
"minimum": 0
},
"history_bytes": {
"type": "integer",
"format": "int64",
"minimum": 0
},
"used_bytes": {
"type": "integer",
"format": "int64",
"minimum": 0
},
"historical_versions": {
"type": "integer",
"format": "int64",
"minimum": 0
}
}
}PUT /drives/{drive}/historyEnable or disable history for future edits+
Authorization
Use the authority permitted by this operation. bearer
Parameters
| Name / location | Type | Requirement and constraints |
|---|---|---|
drive · path | string | Required. format: "uuid" |
Request body
Required · application/json
| Field | Type | Meaning and constraints |
|---|---|---|
enabledRequired | boolean | |
expected_revisionRequired | string | pattern: "^[1-9][0-9]*$" |
{
"application/json": {
"schema": {
"$ref": "#/components/schemas/FileHistoryUpdate"
}
}
}Documented responses
200 · Success
{
"application/json": {
"schema": {
"$ref": "#/components/schemas/FileHistoryPolicy"
}
}
}400 · Invalid input
403 · Drive owner authority is required
404 · Drive or history not found
409 · Revision changed or selected content is protected
Request template
curl --request PUT \
'https://api.example.test/v1/drives/{drive}/history' \
-H 'Authorization: Bearer REPLACE_WITH_OPERATION_CREDENTIAL' \
-H 'Content-Type: application/json' \
--data '{"enabled":false,"expected_revision":"REPLACE_WITH_VALID_VALUE"}'Add all required query/header parameters shown above. Binary bodies, authentication inputs and omitted schemas require the corresponding operation’s input; this template is not a ready-to-run credentialed request.
Request and response fields
{
"type": "object",
"description": "Drive-wide history is off by default. Used storage counts current and retained historical contents with content deduplication.",
"required": [
"drive_id",
"enabled",
"revision",
"current_bytes",
"history_bytes",
"used_bytes",
"historical_versions"
],
"properties": {
"drive_id": {
"type": "string",
"format": "uuid"
},
"enabled": {
"type": "boolean"
},
"revision": {
"type": "string"
},
"current_bytes": {
"type": "integer",
"format": "int64",
"minimum": 0
},
"history_bytes": {
"type": "integer",
"format": "int64",
"minimum": 0
},
"used_bytes": {
"type": "integer",
"format": "int64",
"minimum": 0
},
"historical_versions": {
"type": "integer",
"format": "int64",
"minimum": 0
}
}
}{
"type": "object",
"description": "Owner-only setting. Disabling retains existing history; only future superseded revisions stop counting toward history.",
"required": [
"enabled",
"expected_revision"
],
"properties": {
"enabled": {
"type": "boolean"
},
"expected_revision": {
"type": "string",
"pattern": "^[1-9][0-9]*$"
}
}
}DELETE /drives/{drive}/historyClear all earlier versions in this drive+
Authorization
Use the authority permitted by this operation. bearer
Parameters
| Name / location | Type | Requirement and constraints |
|---|---|---|
drive · path | string | Required. format: "uuid" |
Request body
No request-body schema is declared in the contract for this operation. This does not imply an empty body is sufficient for every endpoint.
Documented responses
200 · Success
{
"application/json": {
"schema": {
"$ref": "#/components/schemas/HistoryCleanupResult"
}
}
}400 · Invalid input
403 · Drive owner authority is required
404 · Drive or history not found
409 · Revision changed or selected content is protected
Request template
curl --request DELETE \
'https://api.example.test/v1/drives/{drive}/history' \
-H 'Authorization: Bearer REPLACE_WITH_OPERATION_CREDENTIAL'Add all required query/header parameters shown above. Binary bodies, authentication inputs and omitted schemas require the corresponding operation’s input; this template is not a ready-to-run credentialed request.
Request and response fields
{
"type": "object",
"description": "Clears earlier versions, keeps current files, and releases allowance immediately. Protected snapshots, forks and live links are skipped. Physical reclamation is asynchronous and preserves replay and active-save pins.",
"required": [
"versions_cleared",
"versions_skipped",
"bytes_freed",
"used_bytes"
],
"properties": {
"versions_cleared": {
"type": "integer",
"format": "int64",
"minimum": 0
},
"versions_skipped": {
"type": "integer",
"format": "int64",
"minimum": 0
},
"bytes_freed": {
"type": "integer",
"format": "int64",
"minimum": 0
},
"used_bytes": {
"type": "integer",
"format": "int64",
"minimum": 0
}
}
}