Files
2026-11-14 09:56:45 +00:00

20432 lines
635 KiB
JSON

{
"openapi": "3.1.0",
"info": {
"title": "Example App API",
"version": "0.1.0"
},
"servers": [
{
"url": "/",
"description": "This deployment."
}
],
"paths": {
"/api/v1/account.analytics.export": {
"post": {
"operationId": "account.analytics.export",
"tags": [
"account"
],
"summary": "effect procedure on the user scope",
"description": "Kind: effect. Scope: user. Permission: none.",
"security": [
{
"session": []
},
{
"bearer": []
},
{
"apiKey": []
}
],
"parameters": [
{
"name": "X-CSRF-Token",
"in": "header",
"required": false,
"schema": {
"type": "string"
},
"description": "Required when the credential is the session cookie; not used by bearer or API-key callers."
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"ticket": {
"type": "string",
"minLength": 1,
"maxLength": 512
}
},
"required": [
"ticket"
],
"additionalProperties": false
}
}
}
},
"responses": {
"200": {
"description": "The procedure's output.",
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"exportedAt": {
"type": "string"
},
"document": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
},
"required": [
"exportedAt",
"document"
],
"additionalProperties": false
}
}
}
},
"400": {
"description": "The request could not be read.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"401": {
"description": "No credential, or one that is no longer valid.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"404": {
"description": "No such procedure in this scope: another tenant's ids answer the same way as a missing permission.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"409": {
"description": "A conflict, such as a taken slug or a stale version.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"413": {
"description": "The request body is larger than 1048576 bytes.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"422": {
"description": "The input does not match the procedure's schema.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"429": {
"description": "Rate limited; Retry-After says when.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
}
}
}
},
"/api/v1/account.analytics.request": {
"post": {
"operationId": "account.analytics.request",
"tags": [
"account"
],
"summary": "effect procedure on the user scope",
"description": "Kind: effect. Scope: user. Permission: none.",
"security": [
{
"session": []
},
{
"bearer": []
},
{
"apiKey": []
}
],
"parameters": [
{
"name": "X-CSRF-Token",
"in": "header",
"required": false,
"schema": {
"type": "string"
},
"description": "Required when the credential is the session cookie; not used by bearer or API-key callers."
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"kind": {
"type": "string",
"enum": [
"erase",
"export"
]
}
},
"required": [
"kind"
],
"additionalProperties": false
}
}
}
},
"responses": {
"200": {
"description": "The procedure's output.",
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"ticket": {
"type": "string"
},
"kind": {
"type": "string",
"enum": [
"erase",
"export"
]
},
"status": {
"type": "string",
"enum": [
"pending",
"running",
"completed",
"failed",
"expired"
]
},
"created": {
"type": "boolean"
},
"stores": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": [
"completed",
"not_keyed",
"failed"
]
},
"deleted": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"anonymized": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"exported": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"status",
"deleted",
"anonymized",
"exported"
],
"additionalProperties": false
}
},
"requestedAt": {
"type": "string"
},
"finishedAt": {
"type": [
"string",
"null"
]
},
"expiresAt": {
"type": [
"string",
"null"
]
}
},
"required": [
"ticket",
"kind",
"status",
"created",
"stores",
"requestedAt",
"finishedAt",
"expiresAt"
],
"additionalProperties": false
}
}
}
},
"400": {
"description": "The request could not be read.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"401": {
"description": "No credential, or one that is no longer valid.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"404": {
"description": "No such procedure in this scope: another tenant's ids answer the same way as a missing permission.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"409": {
"description": "A conflict, such as a taken slug or a stale version.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"413": {
"description": "The request body is larger than 1048576 bytes.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"422": {
"description": "The input does not match the procedure's schema.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"429": {
"description": "Rate limited; Retry-After says when.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
}
}
}
},
"/api/v1/account.analytics.status": {
"post": {
"operationId": "account.analytics.status",
"tags": [
"account"
],
"summary": "effect procedure on the user scope",
"description": "Kind: effect. Scope: user. Permission: none.",
"security": [
{
"session": []
},
{
"bearer": []
},
{
"apiKey": []
}
],
"parameters": [
{
"name": "X-CSRF-Token",
"in": "header",
"required": false,
"schema": {
"type": "string"
},
"description": "Required when the credential is the session cookie; not used by bearer or API-key callers."
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"ticket": {
"type": "string",
"minLength": 1,
"maxLength": 512
}
},
"required": [
"ticket"
],
"additionalProperties": false
}
}
}
},
"responses": {
"200": {
"description": "The procedure's output.",
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"ticket": {
"type": "string"
},
"kind": {
"type": "string",
"enum": [
"erase",
"export"
]
},
"status": {
"type": "string",
"enum": [
"pending",
"running",
"completed",
"failed",
"expired"
]
},
"created": {
"type": "boolean"
},
"stores": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": [
"completed",
"not_keyed",
"failed"
]
},
"deleted": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"anonymized": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"exported": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"status",
"deleted",
"anonymized",
"exported"
],
"additionalProperties": false
}
},
"requestedAt": {
"type": "string"
},
"finishedAt": {
"type": [
"string",
"null"
]
},
"expiresAt": {
"type": [
"string",
"null"
]
}
},
"required": [
"ticket",
"kind",
"status",
"created",
"stores",
"requestedAt",
"finishedAt",
"expiresAt"
],
"additionalProperties": false
}
}
}
},
"400": {
"description": "The request could not be read.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"401": {
"description": "No credential, or one that is no longer valid.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"404": {
"description": "No such procedure in this scope: another tenant's ids answer the same way as a missing permission.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"409": {
"description": "A conflict, such as a taken slug or a stale version.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"413": {
"description": "The request body is larger than 1048576 bytes.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"422": {
"description": "The input does not match the procedure's schema.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"429": {
"description": "Rate limited; Retry-After says when.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
}
}
}
},
"/api/v1/account.data.export": {
"post": {
"operationId": "account.data.export",
"tags": [
"account"
],
"summary": "effect procedure on the user scope",
"description": "Kind: effect. Scope: user. Permission: none.",
"security": [
{
"session": []
},
{
"bearer": []
},
{
"apiKey": []
}
],
"parameters": [
{
"name": "X-CSRF-Token",
"in": "header",
"required": false,
"schema": {
"type": "string"
},
"description": "Required when the credential is the session cookie; not used by bearer or API-key callers."
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"responses": {
"200": {
"description": "The procedure's output.",
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"format": {
"type": "string",
"const": "conusai.account-export.v1"
},
"exportedAt": {
"type": "string"
},
"subject": {
"type": "string"
},
"complete": {
"type": "boolean"
},
"failed": {
"type": "array",
"items": {
"type": "string"
}
},
"sections": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"oneOf": [
{
"type": "object",
"properties": {
"status": {
"type": "string",
"const": "ok"
},
"data": {
"anyOf": [
{
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
{
"type": "null"
}
]
}
},
"required": [
"status",
"data"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"status": {
"type": "string",
"const": "failed"
},
"code": {
"type": "string"
},
"retryable": {
"type": "boolean"
}
},
"required": [
"status",
"code",
"retryable"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"status": {
"type": "string",
"const": "not_exported"
}
},
"required": [
"status"
],
"additionalProperties": false
}
]
}
}
},
"required": [
"format",
"exportedAt",
"subject",
"complete",
"failed",
"sections"
],
"additionalProperties": false
}
}
}
},
"400": {
"description": "The request could not be read.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"401": {
"description": "No credential, or one that is no longer valid.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"404": {
"description": "No such procedure in this scope: another tenant's ids answer the same way as a missing permission.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"409": {
"description": "A conflict, such as a taken slug or a stale version.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"413": {
"description": "The request body is larger than 1048576 bytes.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"422": {
"description": "The input does not match the procedure's schema.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"429": {
"description": "Rate limited; Retry-After says when.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
}
}
}
},
"/api/v1/account.deletion.request": {
"post": {
"operationId": "account.deletion.request",
"tags": [
"account"
],
"summary": "effect procedure on the user scope",
"description": "Kind: effect. Scope: user. Permission: none.",
"security": [
{
"session": []
},
{
"bearer": []
},
{
"apiKey": []
}
],
"parameters": [
{
"name": "X-CSRF-Token",
"in": "header",
"required": false,
"schema": {
"type": "string"
},
"description": "Required when the credential is the session cookie; not used by bearer or API-key callers."
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"confirm": {
"type": "string",
"minLength": 1,
"maxLength": 320
}
},
"required": [
"confirm"
]
}
}
}
},
"responses": {
"200": {
"description": "The procedure's output.",
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"state": {
"type": "string",
"enum": [
"erasing",
"held",
"completed"
]
},
"erased": {
"type": "array",
"items": {
"type": "string"
}
},
"pending": {
"type": "array",
"items": {
"type": "string"
}
},
"abandoned": {
"type": "array",
"items": {
"type": "string"
}
},
"requestedAt": {
"type": "string"
},
"completedAt": {
"type": [
"string",
"null"
]
}
},
"required": [
"state",
"erased",
"pending",
"abandoned",
"requestedAt",
"completedAt"
],
"additionalProperties": false
}
}
}
},
"400": {
"description": "The request could not be read.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"401": {
"description": "No credential, or one that is no longer valid.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"404": {
"description": "No such procedure in this scope: another tenant's ids answer the same way as a missing permission.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"409": {
"description": "A conflict, such as a taken slug or a stale version.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"413": {
"description": "The request body is larger than 1048576 bytes.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"422": {
"description": "The input does not match the procedure's schema.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"429": {
"description": "Rate limited; Retry-After says when.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
}
}
}
},
"/api/v1/account.deletion.status": {
"post": {
"operationId": "account.deletion.status",
"tags": [
"account"
],
"summary": "read procedure on the user scope",
"description": "Kind: read. Scope: user. Permission: none.",
"security": [
{
"session": []
},
{
"bearer": []
},
{
"apiKey": []
}
],
"parameters": [
{
"name": "X-CSRF-Token",
"in": "header",
"required": false,
"schema": {
"type": "string"
},
"description": "Required when the credential is the session cookie; not used by bearer or API-key callers."
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema"
}
}
}
},
"responses": {
"200": {
"description": "The procedure's output.",
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"deletion": {
"anyOf": [
{
"type": "object",
"properties": {
"state": {
"type": "string",
"enum": [
"erasing",
"held",
"completed"
]
},
"erased": {
"type": "array",
"items": {
"type": "string"
}
},
"pending": {
"type": "array",
"items": {
"type": "string"
}
},
"abandoned": {
"type": "array",
"items": {
"type": "string"
}
},
"requestedAt": {
"type": "string"
},
"completedAt": {
"type": [
"string",
"null"
]
}
},
"required": [
"state",
"erased",
"pending",
"abandoned",
"requestedAt",
"completedAt"
],
"additionalProperties": false
},
{
"type": "null"
}
]
},
"interactive": {
"type": "boolean"
},
"recentSignIn": {
"type": "boolean"
},
"signedInAt": {
"type": [
"string",
"null"
]
},
"recentSignInSeconds": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"lastOwnerOf": {
"type": "array",
"items": {
"type": "object",
"properties": {
"slug": {
"type": "string"
},
"name": {
"type": "string"
}
},
"required": [
"slug",
"name"
],
"additionalProperties": false
}
},
"onlyMemberOf": {
"type": "array",
"items": {
"type": "object",
"properties": {
"slug": {
"type": "string"
},
"name": {
"type": "string"
}
},
"required": [
"slug",
"name"
],
"additionalProperties": false
}
},
"modules": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"deletion",
"interactive",
"recentSignIn",
"signedInAt",
"recentSignInSeconds",
"lastOwnerOf",
"onlyMemberOf",
"modules"
],
"additionalProperties": false
}
}
}
},
"400": {
"description": "The request could not be read.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"401": {
"description": "No credential, or one that is no longer valid.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"404": {
"description": "No such procedure in this scope: another tenant's ids answer the same way as a missing permission.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"409": {
"description": "A conflict, such as a taken slug or a stale version.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"413": {
"description": "The request body is larger than 1048576 bytes.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"422": {
"description": "The input does not match the procedure's schema.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"429": {
"description": "Rate limited; Retry-After says when.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
}
}
}
},
"/api/v1/agent.approval.list": {
"post": {
"operationId": "agent.approval.list",
"tags": [
"agent"
],
"summary": "read procedure on the project scope",
"description": "Kind: read. Scope: project. Permission: agent.approval.review.",
"security": [
{
"session": []
},
{
"bearer": []
},
{
"apiKey": []
}
],
"parameters": [
{
"name": "X-CSRF-Token",
"in": "header",
"required": false,
"schema": {
"type": "string"
},
"description": "Required when the credential is the session cookie; not used by bearer or API-key callers."
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"org": {
"type": "string"
},
"workspace": {
"type": "string"
},
"project": {
"type": "string"
}
},
"required": [
"org",
"workspace",
"project"
]
}
}
}
},
"responses": {
"200": {
"description": "The procedure's output.",
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"approvals": {
"type": "array",
"items": {
"type": "object",
"properties": {
"runId": {
"type": "string"
},
"stepKey": {
"type": "string"
},
"goal": {
"type": "string"
},
"tool": {
"type": "string"
},
"arguments": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"reviewUrl": {
"type": [
"string",
"null"
]
},
"createdAt": {
"type": "string"
}
},
"required": [
"runId",
"stepKey",
"goal",
"tool",
"arguments",
"reviewUrl",
"createdAt"
],
"additionalProperties": false
}
}
},
"required": [
"approvals"
],
"additionalProperties": false
}
}
}
},
"400": {
"description": "The request could not be read.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"401": {
"description": "No credential, or one that is no longer valid.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"404": {
"description": "No such procedure in this scope: another tenant's ids answer the same way as a missing permission.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"409": {
"description": "A conflict, such as a taken slug or a stale version.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"413": {
"description": "The request body is larger than 1048576 bytes.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"422": {
"description": "The input does not match the procedure's schema.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"429": {
"description": "Rate limited; Retry-After says when.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
}
}
}
},
"/api/v1/agent.approval.review": {
"post": {
"operationId": "agent.approval.review",
"tags": [
"agent"
],
"summary": "write procedure on the project scope",
"description": "Kind: write. Scope: project. Permission: agent.approval.review. Audit event: agent.approval.reviewed.",
"security": [
{
"session": []
},
{
"bearer": []
},
{
"apiKey": []
}
],
"parameters": [
{
"name": "X-CSRF-Token",
"in": "header",
"required": false,
"schema": {
"type": "string"
},
"description": "Required when the credential is the session cookie; not used by bearer or API-key callers."
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"org": {
"type": "string"
},
"workspace": {
"type": "string"
},
"project": {
"type": "string"
},
"runId": {
"type": "string"
},
"stepKey": {
"type": "string"
},
"decision": {
"type": "string",
"enum": [
"approve",
"reject"
]
},
"reason": {
"type": "string",
"maxLength": 500
}
},
"required": [
"org",
"workspace",
"project",
"runId",
"stepKey",
"decision"
]
}
}
}
},
"responses": {
"200": {
"description": "The procedure's output.",
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"runId": {
"type": "string"
},
"status": {
"type": "string",
"enum": [
"queued",
"running",
"awaiting_approval",
"completed",
"failed",
"cancelled",
"uncertain"
]
}
},
"required": [
"runId",
"status"
],
"additionalProperties": false
}
}
}
},
"400": {
"description": "The request could not be read.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"401": {
"description": "No credential, or one that is no longer valid.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"404": {
"description": "No such procedure in this scope: another tenant's ids answer the same way as a missing permission.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"409": {
"description": "A conflict, such as a taken slug or a stale version.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"413": {
"description": "The request body is larger than 1048576 bytes.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"422": {
"description": "The input does not match the procedure's schema.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"429": {
"description": "Rate limited; Retry-After says when.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
}
}
}
},
"/api/v1/agent.run.cancel": {
"post": {
"operationId": "agent.run.cancel",
"tags": [
"agent"
],
"summary": "write procedure on the project scope",
"description": "Kind: write. Scope: project. Permission: agent.run.cancel. Audit event: agent.run.cancelled.",
"security": [
{
"session": []
},
{
"bearer": []
},
{
"apiKey": []
}
],
"parameters": [
{
"name": "X-CSRF-Token",
"in": "header",
"required": false,
"schema": {
"type": "string"
},
"description": "Required when the credential is the session cookie; not used by bearer or API-key callers."
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"org": {
"type": "string"
},
"workspace": {
"type": "string"
},
"project": {
"type": "string"
},
"runId": {
"type": "string"
}
},
"required": [
"org",
"workspace",
"project",
"runId"
]
}
}
}
},
"responses": {
"200": {
"description": "The procedure's output.",
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"runId": {
"type": "string"
},
"cancelled": {
"type": "boolean"
}
},
"required": [
"runId",
"cancelled"
],
"additionalProperties": false
}
}
}
},
"400": {
"description": "The request could not be read.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"401": {
"description": "No credential, or one that is no longer valid.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"404": {
"description": "No such procedure in this scope: another tenant's ids answer the same way as a missing permission.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"409": {
"description": "A conflict, such as a taken slug or a stale version.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"413": {
"description": "The request body is larger than 1048576 bytes.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"422": {
"description": "The input does not match the procedure's schema.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"429": {
"description": "Rate limited; Retry-After says when.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
}
}
}
},
"/api/v1/agent.run.events": {
"get": {
"operationId": "agent.run.events",
"tags": [
"agent"
],
"summary": "effect procedure on the project scope",
"description": "Kind: effect. Scope: project. Permission: agent.run.read.",
"security": [
{
"session": []
},
{
"bearer": []
},
{
"apiKey": []
}
],
"parameters": [
{
"name": "org",
"in": "query",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "workspace",
"in": "query",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "project",
"in": "query",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "runId",
"in": "query",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "after",
"in": "query",
"required": false,
"schema": {
"type": "string",
"pattern": "^(?:-1|\\d{1,9}|agk1:[A-Za-z0-9_-]{1,128}:\\d{1,9})$"
}
}
],
"responses": {
"200": {
"description": "The file bytes, streamed with the stored filename.",
"content": {
"application/octet-stream": {
"schema": {
"type": "string",
"format": "binary"
}
}
}
},
"400": {
"description": "The request could not be read.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"401": {
"description": "No credential, or one that is no longer valid.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"404": {
"description": "No such procedure in this scope: another tenant's ids answer the same way as a missing permission.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"409": {
"description": "A conflict, such as a taken slug or a stale version.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"422": {
"description": "The input does not match the procedure's schema.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"429": {
"description": "Rate limited; Retry-After says when.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
}
}
}
},
"/api/v1/agent.run.getMany": {
"post": {
"operationId": "agent.run.getMany",
"tags": [
"agent"
],
"summary": "read procedure on the project scope",
"description": "Kind: read. Scope: project. Permission: agent.run.read.",
"security": [
{
"session": []
},
{
"bearer": []
},
{
"apiKey": []
}
],
"parameters": [
{
"name": "X-CSRF-Token",
"in": "header",
"required": false,
"schema": {
"type": "string"
},
"description": "Required when the credential is the session cookie; not used by bearer or API-key callers."
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"org": {
"type": "string"
},
"workspace": {
"type": "string"
},
"project": {
"type": "string"
},
"ids": {
"minItems": 1,
"maxItems": 100,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 64
}
}
},
"required": [
"org",
"workspace",
"project",
"ids"
]
}
}
}
},
"responses": {
"200": {
"description": "The procedure's output.",
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"runId": {
"type": "string"
},
"goal": {
"type": "string"
},
"status": {
"type": "string",
"enum": [
"queued",
"running",
"awaiting_approval",
"completed",
"failed",
"cancelled",
"uncertain"
]
},
"failureCode": {
"anyOf": [
{
"type": "string",
"enum": [
"tool_error",
"budget_exhausted",
"plan_refused",
"approval_unavailable",
"internal"
]
},
{
"type": "null"
}
]
},
"failureDetail": {
"type": [
"string",
"null"
]
},
"plan": {
"type": "array",
"items": {
"type": "object",
"properties": {
"key": {
"type": "string"
},
"label": {
"type": "string"
},
"tool": {
"type": "string"
},
"args": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"needsApproval": {
"type": "boolean"
},
"status": {
"type": "string",
"enum": [
"pending",
"committed",
"failed",
"cancelled",
"uncertain"
]
},
"attempts": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"error": {
"type": [
"string",
"null"
]
}
},
"required": [
"key",
"label",
"tool",
"args",
"needsApproval",
"status",
"attempts",
"error"
],
"additionalProperties": false
}
},
"usageCostMicrocents": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"usageSteps": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"percent": {
"type": "number"
},
"cancelRequested": {
"type": "boolean"
},
"answer": {
"type": [
"string",
"null"
]
},
"answerProvenance": {
"anyOf": [
{
"type": "object",
"properties": {
"ai_generated": {
"type": "boolean",
"const": true
},
"mode": {
"type": "string",
"enum": [
"machine-generated",
"ai-originated"
]
},
"digital_source_type": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"generator": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"provider": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"model": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"generated_at": {
"type": "string",
"minLength": 1,
"maxLength": 40
}
},
"required": [
"ai_generated",
"mode",
"digital_source_type",
"generator",
"model",
"generated_at"
],
"additionalProperties": false
},
{
"type": "null"
}
]
},
"actorId": {
"type": "string"
},
"createdAt": {
"type": "string"
},
"startedAt": {
"type": [
"string",
"null"
]
},
"finishedAt": {
"type": [
"string",
"null"
]
}
},
"required": [
"runId",
"goal",
"status",
"failureCode",
"failureDetail",
"plan",
"usageCostMicrocents",
"usageSteps",
"percent",
"cancelRequested",
"answer",
"answerProvenance",
"actorId",
"createdAt",
"startedAt",
"finishedAt"
],
"additionalProperties": false
}
}
},
"required": [
"items"
],
"additionalProperties": false
}
}
}
},
"400": {
"description": "The request could not be read.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"401": {
"description": "No credential, or one that is no longer valid.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"404": {
"description": "No such procedure in this scope: another tenant's ids answer the same way as a missing permission.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"409": {
"description": "A conflict, such as a taken slug or a stale version.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"413": {
"description": "The request body is larger than 1048576 bytes.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"422": {
"description": "The input does not match the procedure's schema.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"429": {
"description": "Rate limited; Retry-After says when.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
}
}
}
},
"/api/v1/agent.run.list": {
"post": {
"operationId": "agent.run.list",
"tags": [
"agent"
],
"summary": "read procedure on the project scope",
"description": "Kind: read. Scope: project. Permission: agent.run.read.",
"security": [
{
"session": []
},
{
"bearer": []
},
{
"apiKey": []
}
],
"parameters": [
{
"name": "X-CSRF-Token",
"in": "header",
"required": false,
"schema": {
"type": "string"
},
"description": "Required when the credential is the session cookie; not used by bearer or API-key callers."
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"org": {
"type": "string"
},
"workspace": {
"type": "string"
},
"project": {
"type": "string"
},
"cursor": {
"type": "string"
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100
}
},
"required": [
"org",
"workspace",
"project"
]
}
}
}
},
"responses": {
"200": {
"description": "The procedure's output.",
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"runs": {
"type": "array",
"items": {
"type": "object",
"properties": {
"runId": {
"type": "string"
},
"goal": {
"type": "string"
},
"status": {
"type": "string",
"enum": [
"queued",
"running",
"awaiting_approval",
"completed",
"failed",
"cancelled",
"uncertain"
]
},
"failureCode": {
"anyOf": [
{
"type": "string",
"enum": [
"tool_error",
"budget_exhausted",
"plan_refused",
"approval_unavailable",
"internal"
]
},
{
"type": "null"
}
]
},
"failureDetail": {
"type": [
"string",
"null"
]
},
"plan": {
"type": "array",
"items": {
"type": "object",
"properties": {
"key": {
"type": "string"
},
"label": {
"type": "string"
},
"tool": {
"type": "string"
},
"args": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"needsApproval": {
"type": "boolean"
},
"status": {
"type": "string",
"enum": [
"pending",
"committed",
"failed",
"cancelled",
"uncertain"
]
},
"attempts": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"error": {
"type": [
"string",
"null"
]
}
},
"required": [
"key",
"label",
"tool",
"args",
"needsApproval",
"status",
"attempts",
"error"
],
"additionalProperties": false
}
},
"usageCostMicrocents": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"usageSteps": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"percent": {
"type": "number"
},
"cancelRequested": {
"type": "boolean"
},
"answer": {
"type": [
"string",
"null"
]
},
"answerProvenance": {
"anyOf": [
{
"type": "object",
"properties": {
"ai_generated": {
"type": "boolean",
"const": true
},
"mode": {
"type": "string",
"enum": [
"machine-generated",
"ai-originated"
]
},
"digital_source_type": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"generator": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"provider": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"model": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"generated_at": {
"type": "string",
"minLength": 1,
"maxLength": 40
}
},
"required": [
"ai_generated",
"mode",
"digital_source_type",
"generator",
"model",
"generated_at"
],
"additionalProperties": false
},
{
"type": "null"
}
]
},
"actorId": {
"type": "string"
},
"createdAt": {
"type": "string"
},
"startedAt": {
"type": [
"string",
"null"
]
},
"finishedAt": {
"type": [
"string",
"null"
]
}
},
"required": [
"runId",
"goal",
"status",
"failureCode",
"failureDetail",
"plan",
"usageCostMicrocents",
"usageSteps",
"percent",
"cancelRequested",
"answer",
"answerProvenance",
"actorId",
"createdAt",
"startedAt",
"finishedAt"
],
"additionalProperties": false
}
},
"cursor": {
"type": "string"
},
"hasMore": {
"type": "boolean"
}
},
"required": [
"runs",
"hasMore"
],
"additionalProperties": false
}
}
}
},
"400": {
"description": "The request could not be read.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"401": {
"description": "No credential, or one that is no longer valid.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"404": {
"description": "No such procedure in this scope: another tenant's ids answer the same way as a missing permission.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"409": {
"description": "A conflict, such as a taken slug or a stale version.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"413": {
"description": "The request body is larger than 1048576 bytes.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"422": {
"description": "The input does not match the procedure's schema.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"429": {
"description": "Rate limited; Retry-After says when.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
}
}
}
},
"/api/v1/agent.run.start": {
"post": {
"operationId": "agent.run.start",
"tags": [
"agent"
],
"summary": "write procedure on the project scope",
"description": "Kind: write. Scope: project. Permission: agent.run.start.",
"security": [
{
"session": []
},
{
"bearer": []
},
{
"apiKey": []
}
],
"parameters": [
{
"name": "X-CSRF-Token",
"in": "header",
"required": false,
"schema": {
"type": "string"
},
"description": "Required when the credential is the session cookie; not used by bearer or API-key callers."
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"org": {
"type": "string"
},
"workspace": {
"type": "string"
},
"project": {
"type": "string"
},
"goal": {
"type": "string",
"minLength": 1,
"maxLength": 2000
},
"plan": {
"minItems": 1,
"maxItems": 25,
"type": "array",
"items": {
"type": "object",
"properties": {
"key": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"pattern": "^[a-z][a-z0-9-]*$"
},
"label": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"tool": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"args": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"needsApproval": {
"type": "boolean"
}
},
"required": [
"key",
"label",
"tool",
"args"
],
"additionalProperties": false
}
},
"budget": {
"type": "object",
"properties": {
"maxCostMicrocents": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"maxSteps": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"maxDurationSeconds": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
},
"additionalProperties": false
}
},
"required": [
"org",
"workspace",
"project",
"goal",
"plan"
]
}
}
}
},
"responses": {
"200": {
"description": "The procedure's output.",
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"runId": {
"type": "string"
},
"goal": {
"type": "string"
},
"status": {
"type": "string",
"enum": [
"queued",
"running",
"awaiting_approval",
"completed",
"failed",
"cancelled",
"uncertain"
]
},
"failureCode": {
"anyOf": [
{
"type": "string",
"enum": [
"tool_error",
"budget_exhausted",
"plan_refused",
"approval_unavailable",
"internal"
]
},
{
"type": "null"
}
]
},
"failureDetail": {
"type": [
"string",
"null"
]
},
"plan": {
"type": "array",
"items": {
"type": "object",
"properties": {
"key": {
"type": "string"
},
"label": {
"type": "string"
},
"tool": {
"type": "string"
},
"args": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"needsApproval": {
"type": "boolean"
},
"status": {
"type": "string",
"enum": [
"pending",
"committed",
"failed",
"cancelled",
"uncertain"
]
},
"attempts": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"error": {
"type": [
"string",
"null"
]
}
},
"required": [
"key",
"label",
"tool",
"args",
"needsApproval",
"status",
"attempts",
"error"
],
"additionalProperties": false
}
},
"usageCostMicrocents": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"usageSteps": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"percent": {
"type": "number"
},
"cancelRequested": {
"type": "boolean"
},
"answer": {
"type": [
"string",
"null"
]
},
"answerProvenance": {
"anyOf": [
{
"type": "object",
"properties": {
"ai_generated": {
"type": "boolean",
"const": true
},
"mode": {
"type": "string",
"enum": [
"machine-generated",
"ai-originated"
]
},
"digital_source_type": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"generator": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"provider": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"model": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"generated_at": {
"type": "string",
"minLength": 1,
"maxLength": 40
}
},
"required": [
"ai_generated",
"mode",
"digital_source_type",
"generator",
"model",
"generated_at"
],
"additionalProperties": false
},
{
"type": "null"
}
]
},
"actorId": {
"type": "string"
},
"createdAt": {
"type": "string"
},
"startedAt": {
"type": [
"string",
"null"
]
},
"finishedAt": {
"type": [
"string",
"null"
]
}
},
"required": [
"runId",
"goal",
"status",
"failureCode",
"failureDetail",
"plan",
"usageCostMicrocents",
"usageSteps",
"percent",
"cancelRequested",
"answer",
"answerProvenance",
"actorId",
"createdAt",
"startedAt",
"finishedAt"
],
"additionalProperties": false
}
}
}
},
"400": {
"description": "The request could not be read.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"401": {
"description": "No credential, or one that is no longer valid.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"404": {
"description": "No such procedure in this scope: another tenant's ids answer the same way as a missing permission.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"409": {
"description": "A conflict, such as a taken slug or a stale version.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"413": {
"description": "The request body is larger than 1048576 bytes.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"422": {
"description": "The input does not match the procedure's schema.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"429": {
"description": "Rate limited; Retry-After says when.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
}
}
}
},
"/api/v1/agent.run.status": {
"post": {
"operationId": "agent.run.status",
"tags": [
"agent"
],
"summary": "read procedure on the project scope",
"description": "Kind: read. Scope: project. Permission: agent.run.read. Exposed as an MCP tool.",
"security": [
{
"session": []
},
{
"bearer": []
},
{
"apiKey": []
}
],
"parameters": [
{
"name": "X-CSRF-Token",
"in": "header",
"required": false,
"schema": {
"type": "string"
},
"description": "Required when the credential is the session cookie; not used by bearer or API-key callers."
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"org": {
"type": "string"
},
"workspace": {
"type": "string"
},
"project": {
"type": "string"
},
"runId": {
"type": "string"
}
},
"required": [
"org",
"workspace",
"project",
"runId"
]
}
}
}
},
"responses": {
"200": {
"description": "The procedure's output.",
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"runId": {
"type": "string"
},
"goal": {
"type": "string"
},
"status": {
"type": "string",
"enum": [
"queued",
"running",
"awaiting_approval",
"completed",
"failed",
"cancelled",
"uncertain"
]
},
"failureCode": {
"anyOf": [
{
"type": "string",
"enum": [
"tool_error",
"budget_exhausted",
"plan_refused",
"approval_unavailable",
"internal"
]
},
{
"type": "null"
}
]
},
"failureDetail": {
"type": [
"string",
"null"
]
},
"plan": {
"type": "array",
"items": {
"type": "object",
"properties": {
"key": {
"type": "string"
},
"label": {
"type": "string"
},
"tool": {
"type": "string"
},
"args": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"needsApproval": {
"type": "boolean"
},
"status": {
"type": "string",
"enum": [
"pending",
"committed",
"failed",
"cancelled",
"uncertain"
]
},
"attempts": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"error": {
"type": [
"string",
"null"
]
}
},
"required": [
"key",
"label",
"tool",
"args",
"needsApproval",
"status",
"attempts",
"error"
],
"additionalProperties": false
}
},
"usageCostMicrocents": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"usageSteps": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"percent": {
"type": "number"
},
"cancelRequested": {
"type": "boolean"
},
"answer": {
"type": [
"string",
"null"
]
},
"answerProvenance": {
"anyOf": [
{
"type": "object",
"properties": {
"ai_generated": {
"type": "boolean",
"const": true
},
"mode": {
"type": "string",
"enum": [
"machine-generated",
"ai-originated"
]
},
"digital_source_type": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"generator": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"provider": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"model": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"generated_at": {
"type": "string",
"minLength": 1,
"maxLength": 40
}
},
"required": [
"ai_generated",
"mode",
"digital_source_type",
"generator",
"model",
"generated_at"
],
"additionalProperties": false
},
{
"type": "null"
}
]
},
"actorId": {
"type": "string"
},
"createdAt": {
"type": "string"
},
"startedAt": {
"type": [
"string",
"null"
]
},
"finishedAt": {
"type": [
"string",
"null"
]
}
},
"required": [
"runId",
"goal",
"status",
"failureCode",
"failureDetail",
"plan",
"usageCostMicrocents",
"usageSteps",
"percent",
"cancelRequested",
"answer",
"answerProvenance",
"actorId",
"createdAt",
"startedAt",
"finishedAt"
],
"additionalProperties": false
}
}
}
},
"400": {
"description": "The request could not be read.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"401": {
"description": "No credential, or one that is no longer valid.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"404": {
"description": "No such procedure in this scope: another tenant's ids answer the same way as a missing permission.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"409": {
"description": "A conflict, such as a taken slug or a stale version.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"413": {
"description": "The request body is larger than 1048576 bytes.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"422": {
"description": "The input does not match the procedure's schema.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"429": {
"description": "Rate limited; Retry-After says when.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
}
}
}
},
"/api/v1/assistant.conversation.get": {
"post": {
"operationId": "assistant.conversation.get",
"tags": [
"assistant"
],
"summary": "read procedure on the workspace scope",
"description": "Kind: read. Scope: workspace. Permission: assistant.conversation.read.",
"security": [
{
"session": []
},
{
"bearer": []
},
{
"apiKey": []
}
],
"parameters": [
{
"name": "X-CSRF-Token",
"in": "header",
"required": false,
"schema": {
"type": "string"
},
"description": "Required when the credential is the session cookie; not used by bearer or API-key callers."
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"org": {
"type": "string",
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"
},
"workspace": {
"type": "string",
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"
},
"project": {
"type": "string",
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"
},
"conversationId": {
"type": "string",
"minLength": 1,
"maxLength": 64
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 200
}
},
"required": [
"org",
"workspace",
"conversationId"
]
}
}
}
},
"responses": {
"200": {
"description": "The procedure's output.",
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"conversationId": {
"type": "string"
},
"title": {
"type": "string"
},
"createdAt": {
"type": "string"
},
"lastTurnAt": {
"type": "string"
},
"turns": {
"type": "array",
"items": {
"type": "object",
"properties": {
"turnId": {
"type": "string"
},
"status": {
"type": "string",
"enum": [
"running",
"complete",
"approval-required",
"step-limit",
"tool-limit",
"time-limit",
"cancelled",
"error",
"interrupted"
]
},
"steps": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"toolCalls": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"degraded": {
"type": "boolean"
},
"answerProvenance": {
"anyOf": [
{
"type": "object",
"properties": {
"ai_generated": {
"type": "boolean",
"const": true
},
"mode": {
"type": "string",
"enum": [
"machine-generated",
"ai-originated"
]
},
"digital_source_type": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"generator": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"provider": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"model": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"generated_at": {
"type": "string",
"minLength": 1,
"maxLength": 40
}
},
"required": [
"ai_generated",
"mode",
"digital_source_type",
"generator",
"model",
"generated_at"
],
"additionalProperties": false
},
{
"type": "null"
}
]
},
"startedAt": {
"type": "string"
},
"finishedAt": {
"type": [
"string",
"null"
]
}
},
"required": [
"turnId",
"status",
"steps",
"toolCalls",
"degraded",
"answerProvenance",
"startedAt",
"finishedAt"
],
"additionalProperties": false
}
},
"messages": {
"type": "array",
"items": {
"type": "object",
"properties": {
"messageId": {
"type": [
"string",
"null"
]
},
"role": {
"type": "string",
"enum": [
"user",
"assistant",
"tool"
]
},
"text": {
"type": "string"
},
"toolCalls": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"arguments": {
"type": "string"
}
},
"required": [
"id",
"name",
"arguments"
],
"additionalProperties": false
}
},
"toolCallId": {
"type": [
"string",
"null"
]
},
"rootActions": {
"type": "array",
"items": {
"type": "object",
"properties": {
"toolCallId": {
"type": "string",
"minLength": 1,
"maxLength": 300
},
"receipt": {
"type": "object",
"properties": {
"version": {
"type": "number",
"const": 1
},
"owner": {
"type": "string",
"const": "platform-app-action-v1"
},
"action_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"procedure": {
"type": "string",
"pattern": "^[a-z][a-z0-9-]*(?:\\.[a-z][a-z0-9-]*){1,5}$"
},
"expires_at_micros": {
"type": "string",
"pattern": "^[1-9][0-9]{0,18}$"
},
"status": {
"type": "string",
"const": "proposed"
}
},
"required": [
"version",
"owner",
"action_id",
"procedure",
"expires_at_micros",
"status"
],
"additionalProperties": false
}
},
"required": [
"toolCallId",
"receipt"
],
"additionalProperties": false
}
},
"aiGenerated": {
"type": "boolean"
},
"provenance": {
"anyOf": [
{
"type": "object",
"properties": {
"ai_generated": {
"type": "boolean",
"const": true
},
"mode": {
"type": "string",
"enum": [
"machine-generated",
"ai-originated"
]
},
"digital_source_type": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"generator": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"provider": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"model": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"generated_at": {
"type": "string",
"minLength": 1,
"maxLength": 40
}
},
"required": [
"ai_generated",
"mode",
"digital_source_type",
"generator",
"model",
"generated_at"
],
"additionalProperties": false
},
{
"type": "null"
}
]
}
},
"required": [
"messageId",
"role",
"text",
"toolCalls",
"toolCallId",
"aiGenerated",
"provenance"
],
"additionalProperties": false
}
},
"truncated": {
"type": "boolean"
}
},
"required": [
"conversationId",
"title",
"createdAt",
"lastTurnAt",
"turns",
"messages",
"truncated"
],
"additionalProperties": false
}
}
}
},
"400": {
"description": "The request could not be read.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"401": {
"description": "No credential, or one that is no longer valid.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"404": {
"description": "No such procedure in this scope: another tenant's ids answer the same way as a missing permission.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"409": {
"description": "A conflict, such as a taken slug or a stale version.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"413": {
"description": "The request body is larger than 1048576 bytes.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"422": {
"description": "The input does not match the procedure's schema.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"429": {
"description": "Rate limited; Retry-After says when.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
}
}
}
},
"/api/v1/assistant.conversation.list": {
"post": {
"operationId": "assistant.conversation.list",
"tags": [
"assistant"
],
"summary": "read procedure on the workspace scope",
"description": "Kind: read. Scope: workspace. Permission: assistant.conversation.read.",
"security": [
{
"session": []
},
{
"bearer": []
},
{
"apiKey": []
}
],
"parameters": [
{
"name": "X-CSRF-Token",
"in": "header",
"required": false,
"schema": {
"type": "string"
},
"description": "Required when the credential is the session cookie; not used by bearer or API-key callers."
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"org": {
"type": "string",
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"
},
"workspace": {
"type": "string",
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"
},
"project": {
"type": "string",
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"
},
"cursor": {
"type": "string"
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100
}
},
"required": [
"org",
"workspace"
]
}
}
}
},
"responses": {
"200": {
"description": "The procedure's output.",
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"conversations": {
"type": "array",
"items": {
"type": "object",
"properties": {
"conversationId": {
"type": "string"
},
"title": {
"type": "string"
},
"createdAt": {
"type": "string"
},
"lastTurnAt": {
"type": "string"
}
},
"required": [
"conversationId",
"title",
"createdAt",
"lastTurnAt"
],
"additionalProperties": false
}
},
"cursor": {
"type": "string"
},
"hasMore": {
"type": "boolean"
}
},
"required": [
"conversations",
"hasMore"
],
"additionalProperties": false
}
}
}
},
"400": {
"description": "The request could not be read.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"401": {
"description": "No credential, or one that is no longer valid.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"404": {
"description": "No such procedure in this scope: another tenant's ids answer the same way as a missing permission.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"409": {
"description": "A conflict, such as a taken slug or a stale version.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"413": {
"description": "The request body is larger than 1048576 bytes.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"422": {
"description": "The input does not match the procedure's schema.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"429": {
"description": "Rate limited; Retry-After says when.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
}
}
}
},
"/api/v1/assistant.receipt.list": {
"post": {
"operationId": "assistant.receipt.list",
"tags": [
"assistant"
],
"summary": "read procedure on the workspace scope",
"description": "Kind: read. Scope: workspace. Permission: assistant.conversation.read.",
"security": [
{
"session": []
},
{
"bearer": []
},
{
"apiKey": []
}
],
"parameters": [
{
"name": "X-CSRF-Token",
"in": "header",
"required": false,
"schema": {
"type": "string"
},
"description": "Required when the credential is the session cookie; not used by bearer or API-key callers."
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"org": {
"type": "string",
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"
},
"workspace": {
"type": "string",
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"
},
"project": {
"type": "string",
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"
},
"conversationId": {
"type": "string",
"minLength": 1,
"maxLength": 64
},
"cursor": {
"type": "string"
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100
}
},
"required": [
"org",
"workspace"
]
}
}
}
},
"responses": {
"200": {
"description": "The procedure's output.",
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"receipts": {
"type": "array",
"items": {
"type": "object",
"properties": {
"receiptId": {
"type": "string"
},
"conversationId": {
"type": "string"
},
"turnId": {
"type": "string"
},
"step": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"toolCallId": {
"type": "string"
},
"tool": {
"type": "string"
},
"kind": {
"type": "string",
"enum": [
"read",
"effect",
"proposal"
]
},
"outcome": {
"type": "string",
"enum": [
"succeeded",
"refused",
"failed"
]
},
"proposalId": {
"type": [
"string",
"null"
]
},
"argumentsHash": {
"type": "string"
},
"createdAt": {
"type": "string"
},
"proposal": {
"anyOf": [
{
"type": "object",
"properties": {
"status": {
"type": "string"
},
"decidedBy": {
"type": [
"string",
"null"
]
},
"decidedAt": {
"type": [
"string",
"null"
]
},
"writtenRecordId": {
"type": [
"string",
"null"
]
}
},
"required": [
"status",
"decidedBy",
"decidedAt",
"writtenRecordId"
],
"additionalProperties": false
},
{
"type": "null"
}
]
}
},
"required": [
"receiptId",
"conversationId",
"turnId",
"step",
"toolCallId",
"tool",
"kind",
"outcome",
"proposalId",
"argumentsHash",
"createdAt",
"proposal"
],
"additionalProperties": false
}
},
"cursor": {
"type": "string"
},
"hasMore": {
"type": "boolean"
}
},
"required": [
"receipts",
"hasMore"
],
"additionalProperties": false
}
}
}
},
"400": {
"description": "The request could not be read.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"401": {
"description": "No credential, or one that is no longer valid.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"404": {
"description": "No such procedure in this scope: another tenant's ids answer the same way as a missing permission.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"409": {
"description": "A conflict, such as a taken slug or a stale version.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"413": {
"description": "The request body is larger than 1048576 bytes.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"422": {
"description": "The input does not match the procedure's schema.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"429": {
"description": "Rate limited; Retry-After says when.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
}
}
}
},
"/api/v1/assistant.rootAction.reconcile": {
"post": {
"operationId": "assistant.rootAction.reconcile",
"tags": [
"assistant"
],
"summary": "effect procedure on the workspace scope",
"description": "Kind: effect. Scope: workspace. Permission: assistant.conversation.read.",
"security": [
{
"session": []
},
{
"bearer": []
},
{
"apiKey": []
}
],
"parameters": [
{
"name": "X-CSRF-Token",
"in": "header",
"required": false,
"schema": {
"type": "string"
},
"description": "Required when the credential is the session cookie; not used by bearer or API-key callers."
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"org": {
"type": "string",
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"
},
"workspace": {
"type": "string",
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"
},
"project": {
"type": "string",
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"
},
"conversationId": {
"type": "string",
"minLength": 1,
"maxLength": 64
}
},
"required": [
"org",
"workspace",
"conversationId"
],
"additionalProperties": false
}
}
}
},
"responses": {
"200": {
"description": "The procedure's output.",
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"observed": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"unresolved": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"settled": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
}
},
"required": [
"observed",
"unresolved",
"settled"
],
"additionalProperties": false
}
}
}
},
"400": {
"description": "The request could not be read.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"401": {
"description": "No credential, or one that is no longer valid.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"404": {
"description": "No such procedure in this scope: another tenant's ids answer the same way as a missing permission.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"409": {
"description": "A conflict, such as a taken slug or a stale version.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"413": {
"description": "The request body is larger than 1048576 bytes.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"422": {
"description": "The input does not match the procedure's schema.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"429": {
"description": "Rate limited; Retry-After says when.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
}
}
}
},
"/api/v1/assistant.turn.send": {
"post": {
"operationId": "assistant.turn.send",
"tags": [
"assistant"
],
"summary": "effect procedure on the workspace scope",
"description": "Kind: effect. Scope: workspace. Permission: assistant.turn.send. Answers with a stream, written as it is made.",
"security": [
{
"session": []
},
{
"bearer": []
},
{
"apiKey": []
}
],
"parameters": [
{
"name": "X-CSRF-Token",
"in": "header",
"required": false,
"schema": {
"type": "string"
},
"description": "Required when the credential is the session cookie; not used by bearer or API-key callers."
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"org": {
"type": "string",
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"
},
"workspace": {
"type": "string",
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"
},
"project": {
"type": "string",
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"
},
"turnId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"conversationId": {
"type": "string",
"minLength": 1,
"maxLength": 64
},
"message": {
"type": "string",
"minLength": 1,
"maxLength": 8000
},
"after": {
"type": "string",
"pattern": "^(?:-1|\\d{1,9}|agk1:[A-Za-z0-9_-]{1,128}:\\d{1,9})$"
},
"locale": {
"type": "string",
"pattern": "^[a-z]{2,3}(?:-[A-Z]{2})?$"
},
"pageContext": {
"type": "object",
"properties": {
"scope": {
"type": "object",
"properties": {
"organization": {
"type": "string",
"maxLength": 200
},
"workspace": {
"type": "string",
"maxLength": 200
},
"project": {
"type": "string",
"maxLength": 200
}
},
"required": [
"organization"
]
},
"resource": {
"type": "string",
"maxLength": 200
},
"recordId": {
"type": "string",
"maxLength": 200
},
"record": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
},
"required": [
"scope"
]
}
},
"required": [
"org",
"workspace",
"turnId",
"message"
]
}
}
}
},
"responses": {
"200": {
"description": "The answer, streamed as the handler writes it; its media type is the handler's.",
"content": {
"application/octet-stream": {
"schema": {
"type": "string",
"format": "binary"
}
}
}
},
"400": {
"description": "The request could not be read.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"401": {
"description": "No credential, or one that is no longer valid.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"404": {
"description": "No such procedure in this scope: another tenant's ids answer the same way as a missing permission.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"409": {
"description": "A conflict, such as a taken slug or a stale version.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"413": {
"description": "The request body is larger than 1048576 bytes.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"422": {
"description": "The input does not match the procedure's schema.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"429": {
"description": "Rate limited; Retry-After says when.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
}
}
}
},
"/api/v1/assistant.workspace.openProject": {
"post": {
"operationId": "assistant.workspace.openProject",
"tags": [
"assistant"
],
"summary": "read procedure on the workspace scope",
"description": "Kind: read. Scope: workspace. Permission: tenancy.project.read. Exposed as an MCP tool.",
"security": [
{
"session": []
},
{
"bearer": []
},
{
"apiKey": []
}
],
"parameters": [
{
"name": "X-CSRF-Token",
"in": "header",
"required": false,
"schema": {
"type": "string"
},
"description": "Required when the credential is the session cookie; not used by bearer or API-key callers."
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"org": {
"type": "string",
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"
},
"workspace": {
"type": "string",
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"
},
"slug": {
"type": "string",
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$",
"description": "The project's slug, as the list of projects gives it."
}
},
"required": [
"org",
"workspace",
"slug"
]
}
}
}
},
"responses": {
"200": {
"description": "The procedure's output.",
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"slug": {
"type": "string"
},
"name": {
"type": "string"
},
"path": {
"type": "string"
}
},
"required": [
"slug",
"name",
"path"
],
"additionalProperties": false
}
}
}
},
"400": {
"description": "The request could not be read.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"401": {
"description": "No credential, or one that is no longer valid.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"404": {
"description": "No such procedure in this scope: another tenant's ids answer the same way as a missing permission.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"409": {
"description": "A conflict, such as a taken slug or a stale version.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"413": {
"description": "The request body is larger than 1048576 bytes.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"422": {
"description": "The input does not match the procedure's schema.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"429": {
"description": "Rate limited; Retry-After says when.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
}
}
}
},
"/api/v1/assistant.workspace.projects": {
"post": {
"operationId": "assistant.workspace.projects",
"tags": [
"assistant"
],
"summary": "read procedure on the workspace scope",
"description": "Kind: read. Scope: workspace. Permission: tenancy.project.read. Exposed as an MCP tool.",
"security": [
{
"session": []
},
{
"bearer": []
},
{
"apiKey": []
}
],
"parameters": [
{
"name": "X-CSRF-Token",
"in": "header",
"required": false,
"schema": {
"type": "string"
},
"description": "Required when the credential is the session cookie; not used by bearer or API-key callers."
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"org": {
"type": "string",
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"
},
"workspace": {
"type": "string",
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"
}
},
"required": [
"org",
"workspace"
]
}
}
}
},
"responses": {
"200": {
"description": "The procedure's output.",
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"projects": {
"type": "array",
"items": {
"type": "object",
"properties": {
"slug": {
"type": "string"
},
"name": {
"type": "string"
},
"archived": {
"type": "boolean"
},
"updatedAt": {
"type": "string"
}
},
"required": [
"slug",
"name",
"archived",
"updatedAt"
],
"additionalProperties": false
}
}
},
"required": [
"projects"
],
"additionalProperties": false
}
}
}
},
"400": {
"description": "The request could not be read.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"401": {
"description": "No credential, or one that is no longer valid.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"404": {
"description": "No such procedure in this scope: another tenant's ids answer the same way as a missing permission.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"409": {
"description": "A conflict, such as a taken slug or a stale version.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"413": {
"description": "The request body is larger than 1048576 bytes.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"422": {
"description": "The input does not match the procedure's schema.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"429": {
"description": "Rate limited; Retry-After says when.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
}
}
}
},
"/api/v1/auth.apiKey.create": {
"post": {
"operationId": "auth.apiKey.create",
"tags": [
"auth"
],
"summary": "write procedure on the org scope",
"description": "Kind: write. Scope: org. Permission: auth.api-key.manage. Audit event: auth.api_key_created.",
"security": [
{
"session": []
},
{
"bearer": []
},
{
"apiKey": []
}
],
"parameters": [
{
"name": "X-CSRF-Token",
"in": "header",
"required": false,
"schema": {
"type": "string"
},
"description": "Required when the credential is the session cookie; not used by bearer or API-key callers."
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"org": {
"type": "string",
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 120
},
"expiresAt": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$"
}
},
"required": [
"org",
"name"
]
}
}
}
},
"responses": {
"200": {
"description": "The procedure's output.",
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"key": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"prefix": {
"type": "string"
},
"userId": {
"type": "string"
},
"createdAt": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$"
},
"expiresAt": {
"anyOf": [
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$"
},
{
"type": "null"
}
]
},
"revokedAt": {
"anyOf": [
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$"
},
{
"type": "null"
}
]
}
},
"required": [
"id",
"name",
"prefix",
"userId",
"createdAt",
"expiresAt",
"revokedAt"
],
"additionalProperties": false
},
"secret": {
"type": "string"
}
},
"required": [
"key",
"secret"
],
"additionalProperties": false
}
}
}
},
"400": {
"description": "The request could not be read.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"401": {
"description": "No credential, or one that is no longer valid.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"404": {
"description": "No such procedure in this scope: another tenant's ids answer the same way as a missing permission.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"409": {
"description": "A conflict, such as a taken slug or a stale version.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"413": {
"description": "The request body is larger than 1048576 bytes.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"422": {
"description": "The input does not match the procedure's schema.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"429": {
"description": "Rate limited; Retry-After says when.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
}
}
}
},
"/api/v1/auth.apiKey.list": {
"post": {
"operationId": "auth.apiKey.list",
"tags": [
"auth"
],
"summary": "read procedure on the org scope",
"description": "Kind: read. Scope: org. Permission: auth.api-key.read.",
"security": [
{
"session": []
},
{
"bearer": []
},
{
"apiKey": []
}
],
"parameters": [
{
"name": "X-CSRF-Token",
"in": "header",
"required": false,
"schema": {
"type": "string"
},
"description": "Required when the credential is the session cookie; not used by bearer or API-key callers."
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"org": {
"type": "string",
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"
}
},
"required": [
"org"
]
}
}
}
},
"responses": {
"200": {
"description": "The procedure's output.",
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"keys": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"prefix": {
"type": "string"
},
"userId": {
"type": "string"
},
"createdAt": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$"
},
"expiresAt": {
"anyOf": [
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$"
},
{
"type": "null"
}
]
},
"revokedAt": {
"anyOf": [
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$"
},
{
"type": "null"
}
]
}
},
"required": [
"id",
"name",
"prefix",
"userId",
"createdAt",
"expiresAt",
"revokedAt"
],
"additionalProperties": false
}
}
},
"required": [
"keys"
],
"additionalProperties": false
}
}
}
},
"400": {
"description": "The request could not be read.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"401": {
"description": "No credential, or one that is no longer valid.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"404": {
"description": "No such procedure in this scope: another tenant's ids answer the same way as a missing permission.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"409": {
"description": "A conflict, such as a taken slug or a stale version.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"413": {
"description": "The request body is larger than 1048576 bytes.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"422": {
"description": "The input does not match the procedure's schema.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"429": {
"description": "Rate limited; Retry-After says when.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
}
}
}
},
"/api/v1/auth.apiKey.revoke": {
"post": {
"operationId": "auth.apiKey.revoke",
"tags": [
"auth"
],
"summary": "write procedure on the org scope",
"description": "Kind: write. Scope: org. Permission: auth.api-key.manage. Audit event: auth.api_key_revoked.",
"security": [
{
"session": []
},
{
"bearer": []
},
{
"apiKey": []
}
],
"parameters": [
{
"name": "X-CSRF-Token",
"in": "header",
"required": false,
"schema": {
"type": "string"
},
"description": "Required when the credential is the session cookie; not used by bearer or API-key callers."
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"org": {
"type": "string",
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"
},
"id": {
"type": "string"
}
},
"required": [
"org",
"id"
]
}
}
}
},
"responses": {
"200": {
"description": "The procedure's output.",
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"key": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"prefix": {
"type": "string"
},
"userId": {
"type": "string"
},
"createdAt": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$"
},
"expiresAt": {
"anyOf": [
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$"
},
{
"type": "null"
}
]
},
"revokedAt": {
"anyOf": [
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$"
},
{
"type": "null"
}
]
}
},
"required": [
"id",
"name",
"prefix",
"userId",
"createdAt",
"expiresAt",
"revokedAt"
],
"additionalProperties": false
}
},
"required": [
"key"
],
"additionalProperties": false
}
}
}
},
"400": {
"description": "The request could not be read.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"401": {
"description": "No credential, or one that is no longer valid.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"404": {
"description": "No such procedure in this scope: another tenant's ids answer the same way as a missing permission.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"409": {
"description": "A conflict, such as a taken slug or a stale version.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"413": {
"description": "The request body is larger than 1048576 bytes.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"422": {
"description": "The input does not match the procedure's schema.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"429": {
"description": "Rate limited; Retry-After says when.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
}
}
}
},
"/api/v1/auth.session.current": {
"post": {
"operationId": "auth.session.current",
"tags": [
"auth"
],
"summary": "read procedure on the user scope",
"description": "Kind: read. Scope: user. Permission: none.",
"security": [
{
"session": []
},
{
"bearer": []
},
{
"apiKey": []
}
],
"parameters": [
{
"name": "X-CSRF-Token",
"in": "header",
"required": false,
"schema": {
"type": "string"
},
"description": "Required when the credential is the session cookie; not used by bearer or API-key callers."
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema"
}
}
}
},
"responses": {
"200": {
"description": "The procedure's output.",
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"userId": {
"type": "string"
},
"email": {
"type": "string"
},
"displayName": {
"type": "string"
},
"locale": {
"type": "string"
}
},
"required": [
"userId",
"email",
"displayName",
"locale"
],
"additionalProperties": false
}
}
}
},
"400": {
"description": "The request could not be read.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"401": {
"description": "No credential, or one that is no longer valid.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"404": {
"description": "No such procedure in this scope: another tenant's ids answer the same way as a missing permission.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"409": {
"description": "A conflict, such as a taken slug or a stale version.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"413": {
"description": "The request body is larger than 1048576 bytes.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"422": {
"description": "The input does not match the procedure's schema.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"429": {
"description": "Rate limited; Retry-After says when.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
}
}
}
},
"/api/v1/branding.brand.get": {
"post": {
"operationId": "branding.brand.get",
"tags": [
"branding"
],
"summary": "read procedure on the org scope",
"description": "Kind: read. Scope: org. Permission: branding.brand.read.",
"security": [
{
"session": []
},
{
"bearer": []
},
{
"apiKey": []
}
],
"parameters": [
{
"name": "X-CSRF-Token",
"in": "header",
"required": false,
"schema": {
"type": "string"
},
"description": "Required when the credential is the session cookie; not used by bearer or API-key callers."
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"org": {
"type": "string"
}
},
"required": [
"org"
]
}
}
}
},
"responses": {
"200": {
"description": "The procedure's output.",
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"displayName": {
"type": [
"string",
"null"
]
},
"primary": {
"type": [
"string",
"null"
]
},
"accent": {
"type": [
"string",
"null"
]
},
"logoLight": {
"type": [
"string",
"null"
]
},
"logoDark": {
"type": [
"string",
"null"
]
}
},
"required": [
"displayName",
"primary",
"accent",
"logoLight",
"logoDark"
],
"additionalProperties": false
}
}
}
},
"400": {
"description": "The request could not be read.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"401": {
"description": "No credential, or one that is no longer valid.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"404": {
"description": "No such procedure in this scope: another tenant's ids answer the same way as a missing permission.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"409": {
"description": "A conflict, such as a taken slug or a stale version.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"413": {
"description": "The request body is larger than 1048576 bytes.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"422": {
"description": "The input does not match the procedure's schema.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"429": {
"description": "Rate limited; Retry-After says when.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
}
}
}
},
"/api/v1/branding.brand.set": {
"post": {
"operationId": "branding.brand.set",
"tags": [
"branding"
],
"summary": "write procedure on the org scope",
"description": "Kind: write. Scope: org. Permission: branding.brand.write. Audit event: branding.brand_changed.",
"security": [
{
"session": []
},
{
"bearer": []
},
{
"apiKey": []
}
],
"parameters": [
{
"name": "X-CSRF-Token",
"in": "header",
"required": false,
"schema": {
"type": "string"
},
"description": "Required when the credential is the session cookie; not used by bearer or API-key callers."
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"org": {
"type": "string"
},
"displayName": {
"anyOf": [
{
"type": "string",
"maxLength": 60
},
{
"type": "null"
}
]
},
"primary": {
"anyOf": [
{
"type": "string",
"maxLength": 32
},
{
"type": "null"
}
]
},
"accent": {
"anyOf": [
{
"type": "string",
"maxLength": 32
},
{
"type": "null"
}
]
}
},
"required": [
"org"
]
}
}
}
},
"responses": {
"200": {
"description": "The procedure's output.",
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"displayName": {
"type": [
"string",
"null"
]
},
"primary": {
"type": [
"string",
"null"
]
},
"accent": {
"type": [
"string",
"null"
]
},
"logoLight": {
"type": [
"string",
"null"
]
},
"logoDark": {
"type": [
"string",
"null"
]
}
},
"required": [
"displayName",
"primary",
"accent",
"logoLight",
"logoDark"
],
"additionalProperties": false
}
}
}
},
"400": {
"description": "The request could not be read.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"401": {
"description": "No credential, or one that is no longer valid.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"404": {
"description": "No such procedure in this scope: another tenant's ids answer the same way as a missing permission.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"409": {
"description": "A conflict, such as a taken slug or a stale version.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"413": {
"description": "The request body is larger than 1048576 bytes.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"422": {
"description": "The input does not match the procedure's schema.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"429": {
"description": "Rate limited; Retry-After says when.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
}
}
}
},
"/api/v1/branding.logo.clear": {
"post": {
"operationId": "branding.logo.clear",
"tags": [
"branding"
],
"summary": "effect procedure on the org scope",
"description": "Kind: effect. Scope: org. Permission: branding.brand.write. Audit event: branding.brand_changed.",
"security": [
{
"session": []
},
{
"bearer": []
},
{
"apiKey": []
}
],
"parameters": [
{
"name": "X-CSRF-Token",
"in": "header",
"required": false,
"schema": {
"type": "string"
},
"description": "Required when the credential is the session cookie; not used by bearer or API-key callers."
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"org": {
"type": "string"
},
"variant": {
"type": "string",
"enum": [
"light",
"dark"
]
}
},
"required": [
"org",
"variant"
]
}
}
}
},
"responses": {
"200": {
"description": "The procedure's output.",
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"displayName": {
"type": [
"string",
"null"
]
},
"primary": {
"type": [
"string",
"null"
]
},
"accent": {
"type": [
"string",
"null"
]
},
"logoLight": {
"type": [
"string",
"null"
]
},
"logoDark": {
"type": [
"string",
"null"
]
}
},
"required": [
"displayName",
"primary",
"accent",
"logoLight",
"logoDark"
],
"additionalProperties": false
}
}
}
},
"400": {
"description": "The request could not be read.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"401": {
"description": "No credential, or one that is no longer valid.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"404": {
"description": "No such procedure in this scope: another tenant's ids answer the same way as a missing permission.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"409": {
"description": "A conflict, such as a taken slug or a stale version.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"413": {
"description": "The request body is larger than 1048576 bytes.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"422": {
"description": "The input does not match the procedure's schema.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"429": {
"description": "Rate limited; Retry-After says when.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
}
}
}
},
"/api/v1/branding.logo.get": {
"post": {
"operationId": "branding.logo.get",
"tags": [
"branding"
],
"summary": "effect procedure on the org scope",
"description": "Kind: effect. Scope: org. Permission: branding.brand.read.",
"security": [
{
"session": []
},
{
"bearer": []
},
{
"apiKey": []
}
],
"parameters": [
{
"name": "X-CSRF-Token",
"in": "header",
"required": false,
"schema": {
"type": "string"
},
"description": "Required when the credential is the session cookie; not used by bearer or API-key callers."
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"org": {
"type": "string"
},
"variant": {
"type": "string",
"enum": [
"light",
"dark"
]
},
"size": {
"type": "string",
"enum": [
"1x",
"2x"
]
}
},
"required": [
"org",
"variant"
]
}
}
}
},
"responses": {
"200": {
"description": "The procedure's output.",
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"contentType": {
"type": "string"
},
"body": {
"type": "string"
}
},
"required": [
"contentType",
"body"
],
"additionalProperties": false
}
}
}
},
"400": {
"description": "The request could not be read.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"401": {
"description": "No credential, or one that is no longer valid.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"404": {
"description": "No such procedure in this scope: another tenant's ids answer the same way as a missing permission.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"409": {
"description": "A conflict, such as a taken slug or a stale version.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"413": {
"description": "The request body is larger than 1048576 bytes.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"422": {
"description": "The input does not match the procedure's schema.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"429": {
"description": "Rate limited; Retry-After says when.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
}
}
}
},
"/api/v1/branding.logo.set": {
"post": {
"operationId": "branding.logo.set",
"tags": [
"branding"
],
"summary": "effect procedure on the org scope",
"description": "Kind: effect. Scope: org. Permission: branding.brand.write. Audit event: branding.brand_changed.",
"security": [
{
"session": []
},
{
"bearer": []
},
{
"apiKey": []
}
],
"parameters": [
{
"name": "X-CSRF-Token",
"in": "header",
"required": false,
"schema": {
"type": "string"
},
"description": "Required when the credential is the session cookie; not used by bearer or API-key callers."
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"org": {
"type": "string"
},
"variant": {
"type": "string",
"enum": [
"light",
"dark"
]
},
"contentType": {
"type": "string",
"maxLength": 64
},
"body": {
"type": "string",
"maxLength": 2796207
}
},
"required": [
"org",
"variant",
"contentType",
"body"
]
}
}
}
},
"responses": {
"200": {
"description": "The procedure's output.",
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"displayName": {
"type": [
"string",
"null"
]
},
"primary": {
"type": [
"string",
"null"
]
},
"accent": {
"type": [
"string",
"null"
]
},
"logoLight": {
"type": [
"string",
"null"
]
},
"logoDark": {
"type": [
"string",
"null"
]
}
},
"required": [
"displayName",
"primary",
"accent",
"logoLight",
"logoDark"
],
"additionalProperties": false
}
}
}
},
"400": {
"description": "The request could not be read.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"401": {
"description": "No credential, or one that is no longer valid.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"404": {
"description": "No such procedure in this scope: another tenant's ids answer the same way as a missing permission.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"409": {
"description": "A conflict, such as a taken slug or a stale version.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"413": {
"description": "The request body is larger than 1048576 bytes.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"422": {
"description": "The input does not match the procedure's schema.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"429": {
"description": "Rate limited; Retry-After says when.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
}
}
}
},
"/api/v1/files.file.beginUpload": {
"post": {
"operationId": "files.file.beginUpload",
"tags": [
"files"
],
"summary": "effect procedure on the project scope",
"description": "Kind: effect. Scope: project. Permission: files.file.write.",
"security": [
{
"session": []
},
{
"bearer": []
},
{
"apiKey": []
}
],
"parameters": [
{
"name": "X-CSRF-Token",
"in": "header",
"required": false,
"schema": {
"type": "string"
},
"description": "Required when the credential is the session cookie; not used by bearer or API-key callers."
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"org": {
"type": "string"
},
"workspace": {
"type": "string"
},
"project": {
"type": "string"
},
"filename": {
"type": "string",
"minLength": 1,
"maxLength": 255,
"pattern": "^[^/\\\\\\u0000-\\u001f\\u007f]+$"
},
"contentType": {
"type": "string",
"minLength": 3,
"maxLength": 127,
"pattern": "^[a-z0-9][a-z0-9!#$&^_.+-]*\\/[a-z0-9][a-z0-9!#$&^_.+-]*$"
},
"size": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"org",
"workspace",
"project",
"filename",
"contentType",
"size"
]
}
}
}
},
"responses": {
"200": {
"description": "The procedure's output.",
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"fileId": {
"type": "string"
},
"parts": {
"minItems": 1,
"type": "array",
"items": {
"type": "object",
"properties": {
"number": {
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"size": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"number",
"size"
],
"additionalProperties": false
}
},
"expiresAt": {
"type": "string"
}
},
"required": [
"fileId",
"parts",
"expiresAt"
],
"additionalProperties": false
}
}
}
},
"400": {
"description": "The request could not be read.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"401": {
"description": "No credential, or one that is no longer valid.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"404": {
"description": "No such procedure in this scope: another tenant's ids answer the same way as a missing permission.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"409": {
"description": "A conflict, such as a taken slug or a stale version.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"413": {
"description": "The request body is larger than 1048576 bytes.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"422": {
"description": "The input does not match the procedure's schema.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"429": {
"description": "Rate limited; Retry-After says when.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
}
}
}
},
"/api/v1/files.file.completeUpload": {
"post": {
"operationId": "files.file.completeUpload",
"tags": [
"files"
],
"summary": "effect procedure on the project scope",
"description": "Kind: effect. Scope: project. Permission: files.file.write.",
"security": [
{
"session": []
},
{
"bearer": []
},
{
"apiKey": []
}
],
"parameters": [
{
"name": "X-CSRF-Token",
"in": "header",
"required": false,
"schema": {
"type": "string"
},
"description": "Required when the credential is the session cookie; not used by bearer or API-key callers."
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"org": {
"type": "string"
},
"workspace": {
"type": "string"
},
"project": {
"type": "string"
},
"fileId": {
"type": "string"
},
"parts": {
"minItems": 1,
"maxItems": 10000,
"type": "array",
"items": {
"type": "object",
"properties": {
"number": {
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"etag": {
"type": "string",
"minLength": 1,
"maxLength": 200
}
},
"required": [
"number",
"etag"
]
}
}
},
"required": [
"org",
"workspace",
"project",
"fileId",
"parts"
]
}
}
}
},
"responses": {
"200": {
"description": "The procedure's output.",
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"fileId": {
"type": "string"
},
"filename": {
"type": "string",
"minLength": 1,
"maxLength": 255,
"pattern": "^[^/\\\\\\u0000-\\u001f\\u007f]+$"
},
"contentType": {
"type": "string",
"minLength": 3,
"maxLength": 127,
"pattern": "^[a-z0-9][a-z0-9!#$&^_.+-]*\\/[a-z0-9][a-z0-9!#$&^_.+-]*$"
},
"size": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"sha256": {
"type": "string",
"pattern": "^[0-9a-f]{64}$"
},
"uploadedBy": {
"type": "string"
},
"createdAt": {
"type": "string"
},
"storedAt": {
"type": "string"
}
},
"required": [
"fileId",
"filename",
"contentType",
"size",
"sha256",
"uploadedBy",
"createdAt",
"storedAt"
],
"additionalProperties": false
}
}
}
},
"400": {
"description": "The request could not be read.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"401": {
"description": "No credential, or one that is no longer valid.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"404": {
"description": "No such procedure in this scope: another tenant's ids answer the same way as a missing permission.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"409": {
"description": "A conflict, such as a taken slug or a stale version.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"413": {
"description": "The request body is larger than 1048576 bytes.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"422": {
"description": "The input does not match the procedure's schema.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"429": {
"description": "Rate limited; Retry-After says when.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
}
}
}
},
"/api/v1/files.file.delete": {
"post": {
"operationId": "files.file.delete",
"tags": [
"files"
],
"summary": "write procedure on the project scope",
"description": "Kind: write. Scope: project. Permission: files.file.delete.",
"security": [
{
"session": []
},
{
"bearer": []
},
{
"apiKey": []
}
],
"parameters": [
{
"name": "X-CSRF-Token",
"in": "header",
"required": false,
"schema": {
"type": "string"
},
"description": "Required when the credential is the session cookie; not used by bearer or API-key callers."
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"org": {
"type": "string"
},
"workspace": {
"type": "string"
},
"project": {
"type": "string"
},
"fileId": {
"type": "string"
}
},
"required": [
"org",
"workspace",
"project",
"fileId"
]
}
}
}
},
"responses": {
"200": {
"description": "The procedure's output.",
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema"
}
}
}
},
"400": {
"description": "The request could not be read.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"401": {
"description": "No credential, or one that is no longer valid.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"404": {
"description": "No such procedure in this scope: another tenant's ids answer the same way as a missing permission.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"409": {
"description": "A conflict, such as a taken slug or a stale version.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"413": {
"description": "The request body is larger than 1048576 bytes.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"422": {
"description": "The input does not match the procedure's schema.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"429": {
"description": "Rate limited; Retry-After says when.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
}
}
}
},
"/api/v1/files.file.download": {
"get": {
"operationId": "files.file.download",
"tags": [
"files"
],
"summary": "effect procedure on the project scope",
"description": "Kind: effect. Scope: project. Permission: files.file.read.",
"security": [
{
"session": []
},
{
"bearer": []
},
{
"apiKey": []
}
],
"parameters": [
{
"name": "org",
"in": "query",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "workspace",
"in": "query",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "project",
"in": "query",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "fileId",
"in": "query",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "offset",
"in": "query",
"required": false,
"schema": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
{
"name": "length",
"in": "query",
"required": false,
"schema": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
},
{
"name": "disposition",
"in": "query",
"required": false,
"schema": {
"type": "string",
"enum": [
"inline",
"attachment"
]
}
}
],
"responses": {
"200": {
"description": "The file bytes, streamed with the stored filename.",
"content": {
"application/octet-stream": {
"schema": {
"type": "string",
"format": "binary"
}
}
}
},
"400": {
"description": "The request could not be read.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"401": {
"description": "No credential, or one that is no longer valid.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"404": {
"description": "No such procedure in this scope: another tenant's ids answer the same way as a missing permission.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"409": {
"description": "A conflict, such as a taken slug or a stale version.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"422": {
"description": "The input does not match the procedure's schema.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"429": {
"description": "Rate limited; Retry-After says when.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
}
}
}
},
"/api/v1/files.file.get": {
"post": {
"operationId": "files.file.get",
"tags": [
"files"
],
"summary": "read procedure on the project scope",
"description": "Kind: read. Scope: project. Permission: files.file.read.",
"security": [
{
"session": []
},
{
"bearer": []
},
{
"apiKey": []
}
],
"parameters": [
{
"name": "X-CSRF-Token",
"in": "header",
"required": false,
"schema": {
"type": "string"
},
"description": "Required when the credential is the session cookie; not used by bearer or API-key callers."
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"org": {
"type": "string"
},
"workspace": {
"type": "string"
},
"project": {
"type": "string"
},
"fileId": {
"type": "string"
}
},
"required": [
"org",
"workspace",
"project",
"fileId"
]
}
}
}
},
"responses": {
"200": {
"description": "The procedure's output.",
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"fileId": {
"type": "string"
},
"filename": {
"type": "string",
"minLength": 1,
"maxLength": 255,
"pattern": "^[^/\\\\\\u0000-\\u001f\\u007f]+$"
},
"contentType": {
"type": "string",
"minLength": 3,
"maxLength": 127,
"pattern": "^[a-z0-9][a-z0-9!#$&^_.+-]*\\/[a-z0-9][a-z0-9!#$&^_.+-]*$"
},
"size": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"sha256": {
"type": "string",
"pattern": "^[0-9a-f]{64}$"
},
"uploadedBy": {
"type": "string"
},
"createdAt": {
"type": "string"
},
"storedAt": {
"type": "string"
}
},
"required": [
"fileId",
"filename",
"contentType",
"size",
"sha256",
"uploadedBy",
"createdAt",
"storedAt"
],
"additionalProperties": false
}
}
}
},
"400": {
"description": "The request could not be read.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"401": {
"description": "No credential, or one that is no longer valid.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"404": {
"description": "No such procedure in this scope: another tenant's ids answer the same way as a missing permission.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"409": {
"description": "A conflict, such as a taken slug or a stale version.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"413": {
"description": "The request body is larger than 1048576 bytes.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"422": {
"description": "The input does not match the procedure's schema.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"429": {
"description": "Rate limited; Retry-After says when.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
}
}
}
},
"/api/v1/files.file.list": {
"post": {
"operationId": "files.file.list",
"tags": [
"files"
],
"summary": "read procedure on the project scope",
"description": "Kind: read. Scope: project. Permission: files.file.read.",
"security": [
{
"session": []
},
{
"bearer": []
},
{
"apiKey": []
}
],
"parameters": [
{
"name": "X-CSRF-Token",
"in": "header",
"required": false,
"schema": {
"type": "string"
},
"description": "Required when the credential is the session cookie; not used by bearer or API-key callers."
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"org": {
"type": "string"
},
"workspace": {
"type": "string"
},
"project": {
"type": "string"
},
"cursor": {
"type": "string"
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 200
}
},
"required": [
"org",
"workspace",
"project"
]
}
}
}
},
"responses": {
"200": {
"description": "The procedure's output.",
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"files": {
"type": "array",
"items": {
"type": "object",
"properties": {
"fileId": {
"type": "string"
},
"filename": {
"type": "string",
"minLength": 1,
"maxLength": 255,
"pattern": "^[^/\\\\\\u0000-\\u001f\\u007f]+$"
},
"contentType": {
"type": "string",
"minLength": 3,
"maxLength": 127,
"pattern": "^[a-z0-9][a-z0-9!#$&^_.+-]*\\/[a-z0-9][a-z0-9!#$&^_.+-]*$"
},
"size": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"sha256": {
"type": "string",
"pattern": "^[0-9a-f]{64}$"
},
"uploadedBy": {
"type": "string"
},
"createdAt": {
"type": "string"
},
"storedAt": {
"type": "string"
}
},
"required": [
"fileId",
"filename",
"contentType",
"size",
"sha256",
"uploadedBy",
"createdAt",
"storedAt"
],
"additionalProperties": false
}
},
"cursor": {
"type": "string"
},
"hasMore": {
"type": "boolean"
}
},
"required": [
"files",
"hasMore"
],
"additionalProperties": false
}
}
}
},
"400": {
"description": "The request could not be read.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"401": {
"description": "No credential, or one that is no longer valid.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"404": {
"description": "No such procedure in this scope: another tenant's ids answer the same way as a missing permission.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"409": {
"description": "A conflict, such as a taken slug or a stale version.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"413": {
"description": "The request body is larger than 1048576 bytes.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"422": {
"description": "The input does not match the procedure's schema.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"429": {
"description": "Rate limited; Retry-After says when.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
}
}
}
},
"/api/v1/files.file.putPart": {
"put": {
"operationId": "files.file.putPart",
"tags": [
"files"
],
"summary": "effect procedure on the project scope",
"description": "Kind: effect. Scope: project. Permission: files.file.write.",
"security": [
{
"session": []
},
{
"bearer": []
},
{
"apiKey": []
}
],
"parameters": [
{
"name": "X-CSRF-Token",
"in": "header",
"required": false,
"schema": {
"type": "string"
},
"description": "Required when the credential is the session cookie; not used by bearer or API-key callers."
},
{
"name": "org",
"in": "query",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "workspace",
"in": "query",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "project",
"in": "query",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "fileId",
"in": "query",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "part",
"in": "query",
"required": true,
"schema": {
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
}
}
],
"requestBody": {
"required": true,
"content": {
"application/octet-stream": {
"schema": {
"type": "string",
"format": "binary"
}
}
},
"description": "The bytes, sent as they are. Their length must be the one the upload declared."
},
"responses": {
"200": {
"description": "The procedure's output.",
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"part": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"etag": {
"type": "string"
}
},
"required": [
"part",
"etag"
],
"additionalProperties": false
}
}
}
},
"400": {
"description": "The request could not be read.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"401": {
"description": "No credential, or one that is no longer valid.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"404": {
"description": "No such procedure in this scope: another tenant's ids answer the same way as a missing permission.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"409": {
"description": "A conflict, such as a taken slug or a stale version.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"413": {
"description": "The request body is larger than 104857600 bytes.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"422": {
"description": "The input does not match the procedure's schema.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"429": {
"description": "Rate limited; Retry-After says when.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
}
}
}
},
"/api/v1/guides.builder.open": {
"post": {
"operationId": "guides.builder.open",
"tags": [
"guides"
],
"summary": "effect procedure on the org scope",
"description": "Kind: effect. Scope: org. Permission: guides.runtime.use.",
"security": [
{
"session": []
},
{
"bearer": []
},
{
"apiKey": []
}
],
"parameters": [
{
"name": "X-CSRF-Token",
"in": "header",
"required": false,
"schema": {
"type": "string"
},
"description": "Required when the credential is the session cookie; not used by bearer or API-key callers."
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"org": {
"type": "string",
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"
},
"code": {
"type": "string",
"minLength": 1,
"maxLength": 200
}
},
"required": [
"org",
"code"
]
}
}
}
},
"responses": {
"200": {
"description": "The procedure's output.",
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"anyOf": [
{
"type": "object",
"properties": {
"console_origin": {
"type": "string"
},
"guide": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"key": {
"type": "string"
},
"kind": {
"type": "string"
}
},
"required": [
"id",
"key",
"kind"
],
"additionalProperties": false
},
"preview": {
"anyOf": [
{},
{
"type": "null"
}
]
},
"expires_at": {
"type": "string"
}
},
"required": [
"console_origin",
"guide",
"preview",
"expires_at"
],
"additionalProperties": false
},
{
"type": "null"
}
]
}
}
}
},
"400": {
"description": "The request could not be read.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"401": {
"description": "No credential, or one that is no longer valid.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"404": {
"description": "No such procedure in this scope: another tenant's ids answer the same way as a missing permission.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"409": {
"description": "A conflict, such as a taken slug or a stale version.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"413": {
"description": "The request body is larger than 1048576 bytes.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"422": {
"description": "The input does not match the procedure's schema.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"429": {
"description": "Rate limited; Retry-After says when.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
}
}
}
},
"/api/v1/guides.runtime.bootstrap": {
"post": {
"operationId": "guides.runtime.bootstrap",
"tags": [
"guides"
],
"summary": "effect procedure on the org scope",
"description": "Kind: effect. Scope: org. Permission: guides.runtime.use.",
"security": [
{
"session": []
},
{
"bearer": []
},
{
"apiKey": []
}
],
"parameters": [
{
"name": "X-CSRF-Token",
"in": "header",
"required": false,
"schema": {
"type": "string"
},
"description": "Required when the credential is the session cookie; not used by bearer or API-key callers."
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"org": {
"type": "string",
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"
},
"path": {
"type": "string",
"minLength": 1,
"maxLength": 1000,
"format": "starts_with",
"pattern": "^\\/.*"
},
"locale": {
"type": "string",
"minLength": 2,
"maxLength": 35
}
},
"required": [
"org",
"path"
]
}
}
}
},
"responses": {
"200": {
"description": "The procedure's output.",
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"oneOf": [
{
"type": "object",
"properties": {
"mode": {
"type": "string",
"const": "platform"
},
"etag": {
"type": "string"
},
"guides": {
"type": "array",
"items": {
"type": "object",
"properties": {
"key": {
"type": "string"
},
"kind": {
"type": "string"
},
"version": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"content": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"progress": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
},
"required": [
"key",
"kind",
"version",
"content",
"progress"
],
"additionalProperties": {}
}
},
"throttle": {
"type": "object",
"properties": {
"cooldown_seconds": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"one_at_a_time": {
"type": "boolean"
}
},
"required": [
"cooldown_seconds",
"one_at_a_time"
],
"additionalProperties": false
},
"traits": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": [
"string",
"number",
"boolean",
"null"
]
}
}
},
"required": [
"mode",
"etag",
"guides"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"mode": {
"type": "string",
"const": "offline"
},
"guides": {
"type": "array",
"items": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
},
"traits": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": [
"string",
"number",
"boolean",
"null"
]
}
}
},
"required": [
"mode",
"guides"
],
"additionalProperties": false
}
]
}
}
}
},
"400": {
"description": "The request could not be read.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"401": {
"description": "No credential, or one that is no longer valid.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"404": {
"description": "No such procedure in this scope: another tenant's ids answer the same way as a missing permission.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"409": {
"description": "A conflict, such as a taken slug or a stale version.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"413": {
"description": "The request body is larger than 1048576 bytes.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"422": {
"description": "The input does not match the procedure's schema.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"429": {
"description": "Rate limited; Retry-After says when.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
}
}
}
},
"/api/v1/guides.runtime.deleteFile": {
"post": {
"operationId": "guides.runtime.deleteFile",
"tags": [
"guides"
],
"summary": "effect procedure on the org scope",
"description": "Kind: effect. Scope: org. Permission: guides.runtime.use.",
"security": [
{
"session": []
},
{
"bearer": []
},
{
"apiKey": []
}
],
"parameters": [
{
"name": "X-CSRF-Token",
"in": "header",
"required": false,
"schema": {
"type": "string"
},
"description": "Required when the credential is the session cookie; not used by bearer or API-key callers."
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"org": {
"type": "string",
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"
},
"fileId": {
"type": "string",
"pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"
}
},
"required": [
"org",
"fileId"
]
}
}
}
},
"responses": {
"200": {
"description": "The procedure's output.",
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema"
}
}
}
},
"400": {
"description": "The request could not be read.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"401": {
"description": "No credential, or one that is no longer valid.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"404": {
"description": "No such procedure in this scope: another tenant's ids answer the same way as a missing permission.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"409": {
"description": "A conflict, such as a taken slug or a stale version.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"413": {
"description": "The request body is larger than 1048576 bytes.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"422": {
"description": "The input does not match the procedure's schema.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"429": {
"description": "Rate limited; Retry-After says when.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
}
}
}
},
"/api/v1/guides.runtime.record": {
"post": {
"operationId": "guides.runtime.record",
"tags": [
"guides"
],
"summary": "effect procedure on the org scope",
"description": "Kind: effect. Scope: org. Permission: guides.runtime.use.",
"security": [
{
"session": []
},
{
"bearer": []
},
{
"apiKey": []
}
],
"parameters": [
{
"name": "X-CSRF-Token",
"in": "header",
"required": false,
"schema": {
"type": "string"
},
"description": "Required when the credential is the session cookie; not used by bearer or API-key callers."
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"org": {
"type": "string",
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"
},
"idempotencyKey": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"events": {
"minItems": 1,
"maxItems": 100,
"type": "array",
"items": {
"type": "object",
"properties": {
"schema_version": {
"type": "number",
"const": 1
},
"event_id": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"type": {
"type": "string",
"minLength": 1,
"maxLength": 100
}
},
"required": [
"schema_version",
"event_id",
"type"
],
"additionalProperties": {}
}
}
},
"required": [
"org",
"idempotencyKey",
"events"
]
}
}
}
},
"responses": {
"200": {
"description": "The procedure's output.",
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"outcomes": {
"type": "array",
"items": {
"type": "object",
"properties": {
"event_id": {
"type": "string"
},
"status": {
"type": "string",
"enum": [
"applied",
"duplicate"
]
},
"guide_key": {
"type": [
"string",
"null"
]
},
"progress_revision": {
"anyOf": [
{
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
{
"type": "null"
}
]
},
"progress_epoch": {
"anyOf": [
{
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
{
"type": "null"
}
]
}
},
"required": [
"event_id",
"status",
"guide_key",
"progress_revision",
"progress_epoch"
],
"additionalProperties": false
}
}
},
"required": [
"outcomes"
],
"additionalProperties": false
}
}
}
},
"400": {
"description": "The request could not be read.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"401": {
"description": "No credential, or one that is no longer valid.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"404": {
"description": "No such procedure in this scope: another tenant's ids answer the same way as a missing permission.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"409": {
"description": "A conflict, such as a taken slug or a stale version.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"413": {
"description": "The request body is larger than 1048576 bytes.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"422": {
"description": "The input does not match the procedure's schema.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"429": {
"description": "Rate limited; Retry-After says when.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
}
}
}
},
"/api/v1/guides.runtime.uploadFile": {
"put": {
"operationId": "guides.runtime.uploadFile",
"tags": [
"guides"
],
"summary": "effect procedure on the org scope",
"description": "Kind: effect. Scope: org. Permission: guides.runtime.use.",
"security": [
{
"session": []
},
{
"bearer": []
},
{
"apiKey": []
}
],
"parameters": [
{
"name": "X-CSRF-Token",
"in": "header",
"required": false,
"schema": {
"type": "string"
},
"description": "Required when the credential is the session cookie; not used by bearer or API-key callers."
},
{
"name": "org",
"in": "query",
"required": true,
"schema": {
"type": "string",
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"
}
},
{
"name": "guideKey",
"in": "query",
"required": true,
"schema": {
"type": "string",
"minLength": 1,
"maxLength": 200
}
},
{
"name": "guideVersion",
"in": "query",
"required": true,
"schema": {
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
}
},
{
"name": "questionId",
"in": "query",
"required": true,
"schema": {
"type": "string",
"minLength": 1,
"maxLength": 40
}
},
{
"name": "name",
"in": "query",
"required": true,
"schema": {
"type": "string",
"minLength": 1,
"maxLength": 255
}
},
{
"name": "contentType",
"in": "query",
"required": true,
"schema": {
"type": "string",
"minLength": 1,
"maxLength": 255
}
},
{
"name": "size",
"in": "query",
"required": true,
"schema": {
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
}
}
],
"requestBody": {
"required": true,
"content": {
"application/octet-stream": {
"schema": {
"type": "string",
"format": "binary"
}
}
},
"description": "The bytes, sent as they are. Their length must be the one the upload declared."
},
"responses": {
"200": {
"description": "The procedure's output.",
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"file_id": {
"type": "string"
},
"name": {
"type": "string"
},
"content_type": {
"type": "string"
},
"size_bytes": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"file_id",
"name",
"content_type",
"size_bytes"
],
"additionalProperties": false
}
}
}
},
"400": {
"description": "The request could not be read.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"401": {
"description": "No credential, or one that is no longer valid.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"404": {
"description": "No such procedure in this scope: another tenant's ids answer the same way as a missing permission.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"409": {
"description": "A conflict, such as a taken slug or a stale version.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"413": {
"description": "The request body is larger than 104857600 bytes.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"422": {
"description": "The input does not match the procedure's schema.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"429": {
"description": "Rate limited; Retry-After says when.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
}
}
}
},
"/api/v1/notes.attachment.add": {
"post": {
"operationId": "notes.attachment.add",
"tags": [
"notes"
],
"summary": "write procedure on the project scope",
"description": "Kind: write. Scope: project. Permission: notes.attachment.write.",
"security": [
{
"session": []
},
{
"bearer": []
},
{
"apiKey": []
}
],
"parameters": [
{
"name": "X-CSRF-Token",
"in": "header",
"required": false,
"schema": {
"type": "string"
},
"description": "Required when the credential is the session cookie; not used by bearer or API-key callers."
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"org": {
"type": "string"
},
"workspace": {
"type": "string"
},
"project": {
"type": "string"
},
"noteId": {
"type": "string"
},
"fileId": {
"type": "string"
}
},
"required": [
"org",
"workspace",
"project",
"noteId",
"fileId"
]
}
}
}
},
"responses": {
"200": {
"description": "The procedure's output.",
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"attachmentId": {
"type": "string"
},
"fileId": {
"type": "string"
},
"filename": {
"type": "string"
},
"contentType": {
"type": "string"
},
"size": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"attachedAt": {
"type": "string"
}
},
"required": [
"attachmentId",
"fileId",
"filename",
"contentType",
"size",
"attachedAt"
],
"additionalProperties": false
}
}
}
},
"400": {
"description": "The request could not be read.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"401": {
"description": "No credential, or one that is no longer valid.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"404": {
"description": "No such procedure in this scope: another tenant's ids answer the same way as a missing permission.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"409": {
"description": "A conflict, such as a taken slug or a stale version.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"413": {
"description": "The request body is larger than 1048576 bytes.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"422": {
"description": "The input does not match the procedure's schema.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"429": {
"description": "Rate limited; Retry-After says when.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
}
}
}
},
"/api/v1/notes.attachment.remove": {
"post": {
"operationId": "notes.attachment.remove",
"tags": [
"notes"
],
"summary": "write procedure on the project scope",
"description": "Kind: write. Scope: project. Permission: notes.attachment.write.",
"security": [
{
"session": []
},
{
"bearer": []
},
{
"apiKey": []
}
],
"parameters": [
{
"name": "X-CSRF-Token",
"in": "header",
"required": false,
"schema": {
"type": "string"
},
"description": "Required when the credential is the session cookie; not used by bearer or API-key callers."
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"org": {
"type": "string"
},
"workspace": {
"type": "string"
},
"project": {
"type": "string"
},
"noteId": {
"type": "string"
},
"attachmentId": {
"type": "string"
}
},
"required": [
"org",
"workspace",
"project",
"noteId",
"attachmentId"
]
}
}
}
},
"responses": {
"200": {
"description": "The procedure's output.",
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema"
}
}
}
},
"400": {
"description": "The request could not be read.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"401": {
"description": "No credential, or one that is no longer valid.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"404": {
"description": "No such procedure in this scope: another tenant's ids answer the same way as a missing permission.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"409": {
"description": "A conflict, such as a taken slug or a stale version.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"413": {
"description": "The request body is larger than 1048576 bytes.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"422": {
"description": "The input does not match the procedure's schema.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"429": {
"description": "Rate limited; Retry-After says when.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
}
}
}
},
"/api/v1/notes.note.create": {
"post": {
"operationId": "notes.note.create",
"tags": [
"notes"
],
"summary": "write procedure on the project scope",
"description": "Kind: write. Scope: project. Permission: notes.note.write.",
"security": [
{
"session": []
},
{
"bearer": []
},
{
"apiKey": []
}
],
"parameters": [
{
"name": "X-CSRF-Token",
"in": "header",
"required": false,
"schema": {
"type": "string"
},
"description": "Required when the credential is the session cookie; not used by bearer or API-key callers."
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"org": {
"type": "string"
},
"workspace": {
"type": "string"
},
"project": {
"type": "string"
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"body": {
"type": "string",
"maxLength": 20000
}
},
"required": [
"org",
"workspace",
"project",
"title",
"body"
]
}
}
}
},
"responses": {
"200": {
"description": "The procedure's output.",
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"noteId": {
"type": "string"
},
"title": {
"type": "string"
},
"body": {
"type": "string"
},
"version": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"createdBy": {
"type": "string"
},
"createdAt": {
"type": "string"
},
"updatedAt": {
"type": "string"
},
"attachmentCount": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
}
},
"required": [
"noteId",
"title",
"body",
"version",
"createdBy",
"createdAt",
"updatedAt",
"attachmentCount"
],
"additionalProperties": false
}
}
}
},
"400": {
"description": "The request could not be read.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"401": {
"description": "No credential, or one that is no longer valid.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"404": {
"description": "No such procedure in this scope: another tenant's ids answer the same way as a missing permission.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"409": {
"description": "A conflict, such as a taken slug or a stale version.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"413": {
"description": "The request body is larger than 1048576 bytes.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"422": {
"description": "The input does not match the procedure's schema.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"429": {
"description": "Rate limited; Retry-After says when.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
}
}
}
},
"/api/v1/notes.note.delete": {
"post": {
"operationId": "notes.note.delete",
"tags": [
"notes"
],
"summary": "write procedure on the project scope",
"description": "Kind: write. Scope: project. Permission: notes.note.delete.",
"security": [
{
"session": []
},
{
"bearer": []
},
{
"apiKey": []
}
],
"parameters": [
{
"name": "X-CSRF-Token",
"in": "header",
"required": false,
"schema": {
"type": "string"
},
"description": "Required when the credential is the session cookie; not used by bearer or API-key callers."
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"org": {
"type": "string"
},
"workspace": {
"type": "string"
},
"project": {
"type": "string"
},
"noteId": {
"type": "string"
}
},
"required": [
"org",
"workspace",
"project",
"noteId"
]
}
}
}
},
"responses": {
"200": {
"description": "The procedure's output.",
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema"
}
}
}
},
"400": {
"description": "The request could not be read.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"401": {
"description": "No credential, or one that is no longer valid.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"404": {
"description": "No such procedure in this scope: another tenant's ids answer the same way as a missing permission.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"409": {
"description": "A conflict, such as a taken slug or a stale version.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"413": {
"description": "The request body is larger than 1048576 bytes.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"422": {
"description": "The input does not match the procedure's schema.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"429": {
"description": "Rate limited; Retry-After says when.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
}
}
}
},
"/api/v1/notes.note.get": {
"post": {
"operationId": "notes.note.get",
"tags": [
"notes"
],
"summary": "read procedure on the project scope",
"description": "Kind: read. Scope: project. Permission: notes.note.read.",
"security": [
{
"session": []
},
{
"bearer": []
},
{
"apiKey": []
}
],
"parameters": [
{
"name": "X-CSRF-Token",
"in": "header",
"required": false,
"schema": {
"type": "string"
},
"description": "Required when the credential is the session cookie; not used by bearer or API-key callers."
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"org": {
"type": "string"
},
"workspace": {
"type": "string"
},
"project": {
"type": "string"
},
"noteId": {
"type": "string"
}
},
"required": [
"org",
"workspace",
"project",
"noteId"
]
}
}
}
},
"responses": {
"200": {
"description": "The procedure's output.",
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"note": {
"type": "object",
"properties": {
"noteId": {
"type": "string"
},
"title": {
"type": "string"
},
"body": {
"type": "string"
},
"version": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"createdBy": {
"type": "string"
},
"createdAt": {
"type": "string"
},
"updatedAt": {
"type": "string"
},
"attachmentCount": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
}
},
"required": [
"noteId",
"title",
"body",
"version",
"createdBy",
"createdAt",
"updatedAt",
"attachmentCount"
],
"additionalProperties": false
},
"attachments": {
"type": "array",
"items": {
"type": "object",
"properties": {
"attachmentId": {
"type": "string"
},
"fileId": {
"type": "string"
},
"filename": {
"type": "string"
},
"contentType": {
"type": "string"
},
"size": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"attachedAt": {
"type": "string"
}
},
"required": [
"attachmentId",
"fileId",
"filename",
"contentType",
"size",
"attachedAt"
],
"additionalProperties": false
}
},
"attachmentsEnabled": {
"type": "boolean"
}
},
"required": [
"note",
"attachments",
"attachmentsEnabled"
],
"additionalProperties": false
}
}
}
},
"400": {
"description": "The request could not be read.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"401": {
"description": "No credential, or one that is no longer valid.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"404": {
"description": "No such procedure in this scope: another tenant's ids answer the same way as a missing permission.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"409": {
"description": "A conflict, such as a taken slug or a stale version.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"413": {
"description": "The request body is larger than 1048576 bytes.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"422": {
"description": "The input does not match the procedure's schema.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"429": {
"description": "Rate limited; Retry-After says when.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
}
}
}
},
"/api/v1/notes.note.getMany": {
"post": {
"operationId": "notes.note.getMany",
"tags": [
"notes"
],
"summary": "read procedure on the project scope",
"description": "Kind: read. Scope: project. Permission: notes.note.read.",
"security": [
{
"session": []
},
{
"bearer": []
},
{
"apiKey": []
}
],
"parameters": [
{
"name": "X-CSRF-Token",
"in": "header",
"required": false,
"schema": {
"type": "string"
},
"description": "Required when the credential is the session cookie; not used by bearer or API-key callers."
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"org": {
"type": "string"
},
"workspace": {
"type": "string"
},
"project": {
"type": "string"
},
"ids": {
"minItems": 1,
"maxItems": 100,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 64
}
}
},
"required": [
"org",
"workspace",
"project",
"ids"
]
}
}
}
},
"responses": {
"200": {
"description": "The procedure's output.",
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"noteId": {
"type": "string"
},
"title": {
"type": "string"
},
"body": {
"type": "string"
},
"version": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"createdBy": {
"type": "string"
},
"createdAt": {
"type": "string"
},
"updatedAt": {
"type": "string"
},
"attachmentCount": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
}
},
"required": [
"noteId",
"title",
"body",
"version",
"createdBy",
"createdAt",
"updatedAt",
"attachmentCount"
],
"additionalProperties": false
}
}
},
"required": [
"items"
],
"additionalProperties": false
}
}
}
},
"400": {
"description": "The request could not be read.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"401": {
"description": "No credential, or one that is no longer valid.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"404": {
"description": "No such procedure in this scope: another tenant's ids answer the same way as a missing permission.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"409": {
"description": "A conflict, such as a taken slug or a stale version.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"413": {
"description": "The request body is larger than 1048576 bytes.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"422": {
"description": "The input does not match the procedure's schema.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"429": {
"description": "Rate limited; Retry-After says when.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
}
}
}
},
"/api/v1/notes.note.list": {
"post": {
"operationId": "notes.note.list",
"tags": [
"notes"
],
"summary": "read procedure on the project scope",
"description": "Kind: read. Scope: project. Permission: notes.note.read. Exposed as an MCP tool.",
"security": [
{
"session": []
},
{
"bearer": []
},
{
"apiKey": []
}
],
"parameters": [
{
"name": "X-CSRF-Token",
"in": "header",
"required": false,
"schema": {
"type": "string"
},
"description": "Required when the credential is the session cookie; not used by bearer or API-key callers."
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"org": {
"type": "string"
},
"workspace": {
"type": "string"
},
"project": {
"type": "string"
},
"cursor": {
"type": "string"
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 200
}
},
"required": [
"org",
"workspace",
"project"
]
}
}
}
},
"responses": {
"200": {
"description": "The procedure's output.",
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"notes": {
"type": "array",
"items": {
"type": "object",
"properties": {
"noteId": {
"type": "string"
},
"title": {
"type": "string"
},
"body": {
"type": "string"
},
"version": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"createdBy": {
"type": "string"
},
"createdAt": {
"type": "string"
},
"updatedAt": {
"type": "string"
},
"attachmentCount": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
}
},
"required": [
"noteId",
"title",
"body",
"version",
"createdBy",
"createdAt",
"updatedAt",
"attachmentCount"
],
"additionalProperties": false
}
},
"cursor": {
"type": "string"
},
"hasMore": {
"type": "boolean"
}
},
"required": [
"notes",
"hasMore"
],
"additionalProperties": false
}
}
}
},
"400": {
"description": "The request could not be read.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"401": {
"description": "No credential, or one that is no longer valid.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"404": {
"description": "No such procedure in this scope: another tenant's ids answer the same way as a missing permission.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"409": {
"description": "A conflict, such as a taken slug or a stale version.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"413": {
"description": "The request body is larger than 1048576 bytes.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"422": {
"description": "The input does not match the procedure's schema.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"429": {
"description": "Rate limited; Retry-After says when.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
}
}
}
},
"/api/v1/notes.note.update": {
"post": {
"operationId": "notes.note.update",
"tags": [
"notes"
],
"summary": "write procedure on the project scope",
"description": "Kind: write. Scope: project. Permission: notes.note.write.",
"security": [
{
"session": []
},
{
"bearer": []
},
{
"apiKey": []
}
],
"parameters": [
{
"name": "X-CSRF-Token",
"in": "header",
"required": false,
"schema": {
"type": "string"
},
"description": "Required when the credential is the session cookie; not used by bearer or API-key callers."
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"org": {
"type": "string"
},
"workspace": {
"type": "string"
},
"project": {
"type": "string"
},
"noteId": {
"type": "string"
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"body": {
"type": "string",
"maxLength": 20000
},
"expectedVersion": {
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
}
},
"required": [
"org",
"workspace",
"project",
"noteId",
"title",
"body",
"expectedVersion"
]
}
}
}
},
"responses": {
"200": {
"description": "The procedure's output.",
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"noteId": {
"type": "string"
},
"title": {
"type": "string"
},
"body": {
"type": "string"
},
"version": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"createdBy": {
"type": "string"
},
"createdAt": {
"type": "string"
},
"updatedAt": {
"type": "string"
},
"attachmentCount": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
}
},
"required": [
"noteId",
"title",
"body",
"version",
"createdBy",
"createdAt",
"updatedAt",
"attachmentCount"
],
"additionalProperties": false
}
}
}
},
"400": {
"description": "The request could not be read.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"401": {
"description": "No credential, or one that is no longer valid.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"404": {
"description": "No such procedure in this scope: another tenant's ids answer the same way as a missing permission.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"409": {
"description": "A conflict, such as a taken slug or a stale version.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"413": {
"description": "The request body is larger than 1048576 bytes.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"422": {
"description": "The input does not match the procedure's schema.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"429": {
"description": "Rate limited; Retry-After says when.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
}
}
}
},
"/api/v1/notifications.inbox.list": {
"post": {
"operationId": "notifications.inbox.list",
"tags": [
"notifications"
],
"summary": "read procedure on the org scope",
"description": "Kind: read. Scope: org. Permission: notifications.inbox.read.",
"security": [
{
"session": []
},
{
"bearer": []
},
{
"apiKey": []
}
],
"parameters": [
{
"name": "X-CSRF-Token",
"in": "header",
"required": false,
"schema": {
"type": "string"
},
"description": "Required when the credential is the session cookie; not used by bearer or API-key callers."
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"org": {
"type": "string",
"minLength": 1
},
"unread": {
"default": false,
"type": "boolean"
},
"cursor": {
"type": "string",
"maxLength": 16384
},
"limit": {
"default": 25,
"type": "integer",
"minimum": 1,
"maximum": 50
}
},
"required": [
"org"
],
"additionalProperties": false
}
}
}
},
"responses": {
"200": {
"description": "The procedure's output.",
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"version": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"createdAt": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$"
},
"updatedAt": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$"
},
"orgId": {
"type": "string"
},
"recipientId": {
"type": "string"
},
"key": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"category": {
"type": "string",
"enum": [
"invitation",
"job",
"notice"
]
},
"code": {
"type": "string",
"enum": [
"organization_ready",
"member_joined",
"access_changed",
"invitation_accepted",
"job_completed",
"job_failed",
"custom"
]
},
"title": {
"type": [
"string",
"null"
]
},
"description": {
"type": [
"string",
"null"
]
},
"href": {
"anyOf": [
{
"type": "string",
"maxLength": 1024
},
{
"type": "null"
}
]
},
"readAt": {
"anyOf": [
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$"
},
{
"type": "null"
}
]
},
"expiresAt": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$"
}
},
"required": [
"id",
"version",
"createdAt",
"updatedAt",
"orgId",
"recipientId",
"key",
"category",
"code",
"title",
"description",
"href",
"readAt",
"expiresAt"
],
"additionalProperties": false
}
},
"cursor": {
"type": "string"
},
"hasMore": {
"type": "boolean"
},
"unreadCount": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"items",
"hasMore",
"unreadCount"
],
"additionalProperties": false
}
}
}
},
"400": {
"description": "The request could not be read.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"401": {
"description": "No credential, or one that is no longer valid.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"404": {
"description": "No such procedure in this scope: another tenant's ids answer the same way as a missing permission.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"409": {
"description": "A conflict, such as a taken slug or a stale version.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"413": {
"description": "The request body is larger than 1048576 bytes.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"422": {
"description": "The input does not match the procedure's schema.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"429": {
"description": "Rate limited; Retry-After says when.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
}
}
}
},
"/api/v1/notifications.inbox.markAllRead": {
"post": {
"operationId": "notifications.inbox.markAllRead",
"tags": [
"notifications"
],
"summary": "write procedure on the org scope",
"description": "Kind: write. Scope: org. Permission: notifications.inbox.write.",
"security": [
{
"session": []
},
{
"bearer": []
},
{
"apiKey": []
}
],
"parameters": [
{
"name": "X-CSRF-Token",
"in": "header",
"required": false,
"schema": {
"type": "string"
},
"description": "Required when the credential is the session cookie; not used by bearer or API-key callers."
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"org": {
"type": "string",
"minLength": 1
}
},
"required": [
"org"
],
"additionalProperties": false
}
}
}
},
"responses": {
"200": {
"description": "The procedure's output.",
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"unreadCount": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"unreadCount"
],
"additionalProperties": false
}
}
}
},
"400": {
"description": "The request could not be read.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"401": {
"description": "No credential, or one that is no longer valid.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"404": {
"description": "No such procedure in this scope: another tenant's ids answer the same way as a missing permission.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"409": {
"description": "A conflict, such as a taken slug or a stale version.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"413": {
"description": "The request body is larger than 1048576 bytes.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"422": {
"description": "The input does not match the procedure's schema.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"429": {
"description": "Rate limited; Retry-After says when.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
}
}
}
},
"/api/v1/notifications.inbox.markRead": {
"post": {
"operationId": "notifications.inbox.markRead",
"tags": [
"notifications"
],
"summary": "write procedure on the org scope",
"description": "Kind: write. Scope: org. Permission: notifications.inbox.write.",
"security": [
{
"session": []
},
{
"bearer": []
},
{
"apiKey": []
}
],
"parameters": [
{
"name": "X-CSRF-Token",
"in": "header",
"required": false,
"schema": {
"type": "string"
},
"description": "Required when the credential is the session cookie; not used by bearer or API-key callers."
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"org": {
"type": "string",
"minLength": 1
},
"id": {
"type": "string"
}
},
"required": [
"org",
"id"
],
"additionalProperties": false
}
}
}
},
"responses": {
"200": {
"description": "The procedure's output.",
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"unreadCount": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"unreadCount"
],
"additionalProperties": false
}
}
}
},
"400": {
"description": "The request could not be read.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"401": {
"description": "No credential, or one that is no longer valid.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"404": {
"description": "No such procedure in this scope: another tenant's ids answer the same way as a missing permission.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"409": {
"description": "A conflict, such as a taken slug or a stale version.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"413": {
"description": "The request body is larger than 1048576 bytes.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"422": {
"description": "The input does not match the procedure's schema.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"429": {
"description": "Rate limited; Retry-After says when.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
}
}
}
},
"/api/v1/notifications.inbox.summary": {
"post": {
"operationId": "notifications.inbox.summary",
"tags": [
"notifications"
],
"summary": "read procedure on the org scope",
"description": "Kind: read. Scope: org. Permission: notifications.inbox.read.",
"security": [
{
"session": []
},
{
"bearer": []
},
{
"apiKey": []
}
],
"parameters": [
{
"name": "X-CSRF-Token",
"in": "header",
"required": false,
"schema": {
"type": "string"
},
"description": "Required when the credential is the session cookie; not used by bearer or API-key callers."
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"org": {
"type": "string",
"minLength": 1
}
},
"required": [
"org"
],
"additionalProperties": false
}
}
}
},
"responses": {
"200": {
"description": "The procedure's output.",
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"unreadCount": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"unreadCount"
],
"additionalProperties": false
}
}
}
},
"400": {
"description": "The request could not be read.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"401": {
"description": "No credential, or one that is no longer valid.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"404": {
"description": "No such procedure in this scope: another tenant's ids answer the same way as a missing permission.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"409": {
"description": "A conflict, such as a taken slug or a stale version.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"413": {
"description": "The request body is larger than 1048576 bytes.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"422": {
"description": "The input does not match the procedure's schema.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"429": {
"description": "Rate limited; Retry-After says when.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
}
}
}
},
"/api/v1/proposals.proposal.approve": {
"post": {
"operationId": "proposals.proposal.approve",
"tags": [
"proposals"
],
"summary": "write procedure on the project scope",
"description": "Kind: write. Scope: project. Permission: proposals.proposal.approve.",
"security": [
{
"session": []
},
{
"bearer": []
},
{
"apiKey": []
}
],
"parameters": [
{
"name": "X-CSRF-Token",
"in": "header",
"required": false,
"schema": {
"type": "string"
},
"description": "Required when the credential is the session cookie; not used by bearer or API-key callers."
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"org": {
"type": "string",
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"
},
"workspace": {
"type": "string",
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"
},
"project": {
"type": "string",
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"
},
"proposalId": {
"type": "string",
"minLength": 1,
"maxLength": 64
},
"expectedVersion": {
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"changeHash": {
"type": "string",
"minLength": 1
}
},
"required": [
"org",
"workspace",
"project",
"proposalId"
]
}
}
}
},
"responses": {
"200": {
"description": "The procedure's output.",
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"proposalId": {
"type": "string"
},
"version": {
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"status": {
"type": "string",
"enum": [
"pending",
"approved",
"rejected"
]
},
"targetKey": {
"type": "string",
"maxLength": 128,
"pattern": "^[a-z][a-z0-9-]*(\\.[a-z][a-z0-9-]*)+$"
},
"targetRecordId": {
"type": [
"string",
"null"
]
},
"writtenRecordId": {
"type": [
"string",
"null"
]
},
"change": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"evidence": {
"minItems": 1,
"maxItems": 50,
"type": "array",
"items": {
"type": "object",
"properties": {
"fileId": {
"type": "string",
"minLength": 1,
"maxLength": 64
},
"page": {
"type": "integer",
"minimum": 1,
"maximum": 100000
},
"blockId": {
"type": "string",
"minLength": 1,
"maxLength": 64
},
"box": {
"type": "object",
"properties": {
"x": {
"type": "number",
"minimum": 0,
"maximum": 1
},
"y": {
"type": "number",
"minimum": 0,
"maximum": 1
},
"width": {
"type": "number",
"exclusiveMinimum": 0,
"maximum": 1
},
"height": {
"type": "number",
"exclusiveMinimum": 0,
"maximum": 1
}
},
"required": [
"x",
"y",
"width",
"height"
],
"additionalProperties": false
},
"quote": {
"type": "string",
"minLength": 1,
"maxLength": 2000
}
},
"required": [
"fileId"
],
"additionalProperties": false
}
},
"model": {
"type": "string"
},
"promptVersion": {
"type": "string"
},
"createdBy": {
"type": "string"
},
"createdAt": {
"type": "string"
},
"editedBy": {
"type": [
"string",
"null"
]
},
"editedAt": {
"type": [
"string",
"null"
]
},
"decidedBy": {
"type": [
"string",
"null"
]
},
"decidedAt": {
"type": [
"string",
"null"
]
},
"reason": {
"type": [
"string",
"null"
]
}
},
"required": [
"proposalId",
"version",
"status",
"targetKey",
"targetRecordId",
"writtenRecordId",
"change",
"evidence",
"model",
"promptVersion",
"createdBy",
"createdAt",
"editedBy",
"editedAt",
"decidedBy",
"decidedAt",
"reason"
],
"additionalProperties": false
}
}
}
},
"400": {
"description": "The request could not be read.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"401": {
"description": "No credential, or one that is no longer valid.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"404": {
"description": "No such procedure in this scope: another tenant's ids answer the same way as a missing permission.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"409": {
"description": "A conflict, such as a taken slug or a stale version.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"413": {
"description": "The request body is larger than 1048576 bytes.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"422": {
"description": "The input does not match the procedure's schema.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"429": {
"description": "Rate limited; Retry-After says when.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
}
}
}
},
"/api/v1/proposals.proposal.approveMany": {
"post": {
"operationId": "proposals.proposal.approveMany",
"tags": [
"proposals"
],
"summary": "write procedure on the project scope",
"description": "Kind: write. Scope: project. Permission: proposals.proposal.approve.",
"security": [
{
"session": []
},
{
"bearer": []
},
{
"apiKey": []
}
],
"parameters": [
{
"name": "X-CSRF-Token",
"in": "header",
"required": false,
"schema": {
"type": "string"
},
"description": "Required when the credential is the session cookie; not used by bearer or API-key callers."
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"org": {
"type": "string",
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"
},
"workspace": {
"type": "string",
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"
},
"project": {
"type": "string",
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"
},
"proposalIds": {
"minItems": 1,
"maxItems": 500,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 64
}
},
"expectations": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "object",
"properties": {
"expectedVersion": {
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"changeHash": {
"type": "string",
"minLength": 1
}
}
}
}
},
"required": [
"org",
"workspace",
"project",
"proposalIds",
"expectations"
]
}
}
}
},
"responses": {
"200": {
"description": "The procedure's output.",
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"proposals": {
"type": "array",
"items": {
"type": "object",
"properties": {
"proposalId": {
"type": "string"
},
"version": {
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"status": {
"type": "string",
"enum": [
"pending",
"approved",
"rejected"
]
},
"targetKey": {
"type": "string",
"maxLength": 128,
"pattern": "^[a-z][a-z0-9-]*(\\.[a-z][a-z0-9-]*)+$"
},
"targetRecordId": {
"type": [
"string",
"null"
]
},
"writtenRecordId": {
"type": [
"string",
"null"
]
},
"change": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"evidence": {
"minItems": 1,
"maxItems": 50,
"type": "array",
"items": {
"type": "object",
"properties": {
"fileId": {
"type": "string",
"minLength": 1,
"maxLength": 64
},
"page": {
"type": "integer",
"minimum": 1,
"maximum": 100000
},
"blockId": {
"type": "string",
"minLength": 1,
"maxLength": 64
},
"box": {
"type": "object",
"properties": {
"x": {
"type": "number",
"minimum": 0,
"maximum": 1
},
"y": {
"type": "number",
"minimum": 0,
"maximum": 1
},
"width": {
"type": "number",
"exclusiveMinimum": 0,
"maximum": 1
},
"height": {
"type": "number",
"exclusiveMinimum": 0,
"maximum": 1
}
},
"required": [
"x",
"y",
"width",
"height"
],
"additionalProperties": false
},
"quote": {
"type": "string",
"minLength": 1,
"maxLength": 2000
}
},
"required": [
"fileId"
],
"additionalProperties": false
}
},
"model": {
"type": "string"
},
"promptVersion": {
"type": "string"
},
"createdBy": {
"type": "string"
},
"createdAt": {
"type": "string"
},
"editedBy": {
"type": [
"string",
"null"
]
},
"editedAt": {
"type": [
"string",
"null"
]
},
"decidedBy": {
"type": [
"string",
"null"
]
},
"decidedAt": {
"type": [
"string",
"null"
]
},
"reason": {
"type": [
"string",
"null"
]
}
},
"required": [
"proposalId",
"version",
"status",
"targetKey",
"targetRecordId",
"writtenRecordId",
"change",
"evidence",
"model",
"promptVersion",
"createdBy",
"createdAt",
"editedBy",
"editedAt",
"decidedBy",
"decidedAt",
"reason"
],
"additionalProperties": false
}
}
},
"required": [
"proposals"
],
"additionalProperties": false
}
}
}
},
"400": {
"description": "The request could not be read.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"401": {
"description": "No credential, or one that is no longer valid.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"404": {
"description": "No such procedure in this scope: another tenant's ids answer the same way as a missing permission.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"409": {
"description": "A conflict, such as a taken slug or a stale version.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"413": {
"description": "The request body is larger than 1048576 bytes.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"422": {
"description": "The input does not match the procedure's schema.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"429": {
"description": "Rate limited; Retry-After says when.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
}
}
}
},
"/api/v1/proposals.proposal.create": {
"post": {
"operationId": "proposals.proposal.create",
"tags": [
"proposals"
],
"summary": "write procedure on the project scope",
"description": "Kind: write. Scope: project. Permission: proposals.proposal.create. Takes an Idempotency-Key header.",
"security": [
{
"session": []
},
{
"bearer": []
},
{
"apiKey": []
}
],
"parameters": [
{
"name": "Idempotency-Key",
"in": "header",
"required": true,
"schema": {
"type": "string",
"minLength": 8,
"maxLength": 200
},
"description": "The first answer for this key is replayed, so a retry is a retry and not a second write."
},
{
"name": "X-CSRF-Token",
"in": "header",
"required": false,
"schema": {
"type": "string"
},
"description": "Required when the credential is the session cookie; not used by bearer or API-key callers."
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"org": {
"type": "string",
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"
},
"workspace": {
"type": "string",
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"
},
"project": {
"type": "string",
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"
},
"targetKey": {
"type": "string",
"maxLength": 128,
"pattern": "^[a-z][a-z0-9-]*(\\.[a-z][a-z0-9-]*)+$"
},
"targetRecordId": {
"type": "string",
"minLength": 1,
"maxLength": 64
},
"change": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"evidence": {
"minItems": 1,
"maxItems": 50,
"type": "array",
"items": {
"type": "object",
"properties": {
"fileId": {
"type": "string",
"minLength": 1,
"maxLength": 64
},
"page": {
"type": "integer",
"minimum": 1,
"maximum": 100000
},
"blockId": {
"type": "string",
"minLength": 1,
"maxLength": 64
},
"box": {
"type": "object",
"properties": {
"x": {
"type": "number",
"minimum": 0,
"maximum": 1
},
"y": {
"type": "number",
"minimum": 0,
"maximum": 1
},
"width": {
"type": "number",
"exclusiveMinimum": 0,
"maximum": 1
},
"height": {
"type": "number",
"exclusiveMinimum": 0,
"maximum": 1
}
},
"required": [
"x",
"y",
"width",
"height"
],
"additionalProperties": false
},
"quote": {
"type": "string",
"minLength": 1,
"maxLength": 2000
}
},
"required": [
"fileId"
],
"additionalProperties": false
}
},
"model": {
"type": "string",
"minLength": 1,
"maxLength": 128
},
"promptVersion": {
"type": "string",
"minLength": 1,
"maxLength": 64
}
},
"required": [
"org",
"workspace",
"project",
"targetKey",
"change",
"evidence",
"model",
"promptVersion"
]
}
}
}
},
"responses": {
"200": {
"description": "The procedure's output.",
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"proposalId": {
"type": "string"
},
"version": {
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"status": {
"type": "string",
"enum": [
"pending",
"approved",
"rejected"
]
},
"targetKey": {
"type": "string",
"maxLength": 128,
"pattern": "^[a-z][a-z0-9-]*(\\.[a-z][a-z0-9-]*)+$"
},
"targetRecordId": {
"type": [
"string",
"null"
]
},
"writtenRecordId": {
"type": [
"string",
"null"
]
},
"change": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"evidence": {
"minItems": 1,
"maxItems": 50,
"type": "array",
"items": {
"type": "object",
"properties": {
"fileId": {
"type": "string",
"minLength": 1,
"maxLength": 64
},
"page": {
"type": "integer",
"minimum": 1,
"maximum": 100000
},
"blockId": {
"type": "string",
"minLength": 1,
"maxLength": 64
},
"box": {
"type": "object",
"properties": {
"x": {
"type": "number",
"minimum": 0,
"maximum": 1
},
"y": {
"type": "number",
"minimum": 0,
"maximum": 1
},
"width": {
"type": "number",
"exclusiveMinimum": 0,
"maximum": 1
},
"height": {
"type": "number",
"exclusiveMinimum": 0,
"maximum": 1
}
},
"required": [
"x",
"y",
"width",
"height"
],
"additionalProperties": false
},
"quote": {
"type": "string",
"minLength": 1,
"maxLength": 2000
}
},
"required": [
"fileId"
],
"additionalProperties": false
}
},
"model": {
"type": "string"
},
"promptVersion": {
"type": "string"
},
"createdBy": {
"type": "string"
},
"createdAt": {
"type": "string"
},
"editedBy": {
"type": [
"string",
"null"
]
},
"editedAt": {
"type": [
"string",
"null"
]
},
"decidedBy": {
"type": [
"string",
"null"
]
},
"decidedAt": {
"type": [
"string",
"null"
]
},
"reason": {
"type": [
"string",
"null"
]
}
},
"required": [
"proposalId",
"version",
"status",
"targetKey",
"targetRecordId",
"writtenRecordId",
"change",
"evidence",
"model",
"promptVersion",
"createdBy",
"createdAt",
"editedBy",
"editedAt",
"decidedBy",
"decidedAt",
"reason"
],
"additionalProperties": false
}
}
}
},
"400": {
"description": "The request could not be read.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"401": {
"description": "No credential, or one that is no longer valid.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"404": {
"description": "No such procedure in this scope: another tenant's ids answer the same way as a missing permission.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"409": {
"description": "A conflict, such as a taken slug or a stale version.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"413": {
"description": "The request body is larger than 1048576 bytes.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"422": {
"description": "The input does not match the procedure's schema.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"429": {
"description": "Rate limited; Retry-After says when.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
}
}
}
},
"/api/v1/proposals.proposal.edit": {
"post": {
"operationId": "proposals.proposal.edit",
"tags": [
"proposals"
],
"summary": "write procedure on the project scope",
"description": "Kind: write. Scope: project. Permission: proposals.proposal.edit.",
"security": [
{
"session": []
},
{
"bearer": []
},
{
"apiKey": []
}
],
"parameters": [
{
"name": "X-CSRF-Token",
"in": "header",
"required": false,
"schema": {
"type": "string"
},
"description": "Required when the credential is the session cookie; not used by bearer or API-key callers."
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"org": {
"type": "string",
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"
},
"workspace": {
"type": "string",
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"
},
"project": {
"type": "string",
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"
},
"proposalId": {
"type": "string",
"minLength": 1,
"maxLength": 64
},
"change": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"expectedVersion": {
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
}
},
"required": [
"org",
"workspace",
"project",
"proposalId",
"change",
"expectedVersion"
]
}
}
}
},
"responses": {
"200": {
"description": "The procedure's output.",
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"proposalId": {
"type": "string"
},
"version": {
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"status": {
"type": "string",
"enum": [
"pending",
"approved",
"rejected"
]
},
"targetKey": {
"type": "string",
"maxLength": 128,
"pattern": "^[a-z][a-z0-9-]*(\\.[a-z][a-z0-9-]*)+$"
},
"targetRecordId": {
"type": [
"string",
"null"
]
},
"writtenRecordId": {
"type": [
"string",
"null"
]
},
"change": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"evidence": {
"minItems": 1,
"maxItems": 50,
"type": "array",
"items": {
"type": "object",
"properties": {
"fileId": {
"type": "string",
"minLength": 1,
"maxLength": 64
},
"page": {
"type": "integer",
"minimum": 1,
"maximum": 100000
},
"blockId": {
"type": "string",
"minLength": 1,
"maxLength": 64
},
"box": {
"type": "object",
"properties": {
"x": {
"type": "number",
"minimum": 0,
"maximum": 1
},
"y": {
"type": "number",
"minimum": 0,
"maximum": 1
},
"width": {
"type": "number",
"exclusiveMinimum": 0,
"maximum": 1
},
"height": {
"type": "number",
"exclusiveMinimum": 0,
"maximum": 1
}
},
"required": [
"x",
"y",
"width",
"height"
],
"additionalProperties": false
},
"quote": {
"type": "string",
"minLength": 1,
"maxLength": 2000
}
},
"required": [
"fileId"
],
"additionalProperties": false
}
},
"model": {
"type": "string"
},
"promptVersion": {
"type": "string"
},
"createdBy": {
"type": "string"
},
"createdAt": {
"type": "string"
},
"editedBy": {
"type": [
"string",
"null"
]
},
"editedAt": {
"type": [
"string",
"null"
]
},
"decidedBy": {
"type": [
"string",
"null"
]
},
"decidedAt": {
"type": [
"string",
"null"
]
},
"reason": {
"type": [
"string",
"null"
]
}
},
"required": [
"proposalId",
"version",
"status",
"targetKey",
"targetRecordId",
"writtenRecordId",
"change",
"evidence",
"model",
"promptVersion",
"createdBy",
"createdAt",
"editedBy",
"editedAt",
"decidedBy",
"decidedAt",
"reason"
],
"additionalProperties": false
}
}
}
},
"400": {
"description": "The request could not be read.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"401": {
"description": "No credential, or one that is no longer valid.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"404": {
"description": "No such procedure in this scope: another tenant's ids answer the same way as a missing permission.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"409": {
"description": "A conflict, such as a taken slug or a stale version.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"413": {
"description": "The request body is larger than 1048576 bytes.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"422": {
"description": "The input does not match the procedure's schema.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"429": {
"description": "Rate limited; Retry-After says when.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
}
}
}
},
"/api/v1/proposals.proposal.get": {
"post": {
"operationId": "proposals.proposal.get",
"tags": [
"proposals"
],
"summary": "read procedure on the project scope",
"description": "Kind: read. Scope: project. Permission: proposals.proposal.read.",
"security": [
{
"session": []
},
{
"bearer": []
},
{
"apiKey": []
}
],
"parameters": [
{
"name": "X-CSRF-Token",
"in": "header",
"required": false,
"schema": {
"type": "string"
},
"description": "Required when the credential is the session cookie; not used by bearer or API-key callers."
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"org": {
"type": "string",
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"
},
"workspace": {
"type": "string",
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"
},
"project": {
"type": "string",
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"
},
"proposalId": {
"type": "string",
"minLength": 1,
"maxLength": 64
}
},
"required": [
"org",
"workspace",
"project",
"proposalId"
]
}
}
}
},
"responses": {
"200": {
"description": "The procedure's output.",
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"proposalId": {
"type": "string"
},
"version": {
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"status": {
"type": "string",
"enum": [
"pending",
"approved",
"rejected"
]
},
"targetKey": {
"type": "string",
"maxLength": 128,
"pattern": "^[a-z][a-z0-9-]*(\\.[a-z][a-z0-9-]*)+$"
},
"targetRecordId": {
"type": [
"string",
"null"
]
},
"writtenRecordId": {
"type": [
"string",
"null"
]
},
"change": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"evidence": {
"minItems": 1,
"maxItems": 50,
"type": "array",
"items": {
"type": "object",
"properties": {
"fileId": {
"type": "string",
"minLength": 1,
"maxLength": 64
},
"page": {
"type": "integer",
"minimum": 1,
"maximum": 100000
},
"blockId": {
"type": "string",
"minLength": 1,
"maxLength": 64
},
"box": {
"type": "object",
"properties": {
"x": {
"type": "number",
"minimum": 0,
"maximum": 1
},
"y": {
"type": "number",
"minimum": 0,
"maximum": 1
},
"width": {
"type": "number",
"exclusiveMinimum": 0,
"maximum": 1
},
"height": {
"type": "number",
"exclusiveMinimum": 0,
"maximum": 1
}
},
"required": [
"x",
"y",
"width",
"height"
],
"additionalProperties": false
},
"quote": {
"type": "string",
"minLength": 1,
"maxLength": 2000
}
},
"required": [
"fileId"
],
"additionalProperties": false
}
},
"model": {
"type": "string"
},
"promptVersion": {
"type": "string"
},
"createdBy": {
"type": "string"
},
"createdAt": {
"type": "string"
},
"editedBy": {
"type": [
"string",
"null"
]
},
"editedAt": {
"type": [
"string",
"null"
]
},
"decidedBy": {
"type": [
"string",
"null"
]
},
"decidedAt": {
"type": [
"string",
"null"
]
},
"reason": {
"type": [
"string",
"null"
]
}
},
"required": [
"proposalId",
"version",
"status",
"targetKey",
"targetRecordId",
"writtenRecordId",
"change",
"evidence",
"model",
"promptVersion",
"createdBy",
"createdAt",
"editedBy",
"editedAt",
"decidedBy",
"decidedAt",
"reason"
],
"additionalProperties": false
}
}
}
},
"400": {
"description": "The request could not be read.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"401": {
"description": "No credential, or one that is no longer valid.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"404": {
"description": "No such procedure in this scope: another tenant's ids answer the same way as a missing permission.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"409": {
"description": "A conflict, such as a taken slug or a stale version.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"413": {
"description": "The request body is larger than 1048576 bytes.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"422": {
"description": "The input does not match the procedure's schema.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"429": {
"description": "Rate limited; Retry-After says when.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
}
}
}
},
"/api/v1/proposals.proposal.list": {
"post": {
"operationId": "proposals.proposal.list",
"tags": [
"proposals"
],
"summary": "read procedure on the project scope",
"description": "Kind: read. Scope: project. Permission: proposals.proposal.read.",
"security": [
{
"session": []
},
{
"bearer": []
},
{
"apiKey": []
}
],
"parameters": [
{
"name": "X-CSRF-Token",
"in": "header",
"required": false,
"schema": {
"type": "string"
},
"description": "Required when the credential is the session cookie; not used by bearer or API-key callers."
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"org": {
"type": "string",
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"
},
"workspace": {
"type": "string",
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"
},
"project": {
"type": "string",
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"
},
"status": {
"type": "string",
"enum": [
"pending",
"approved",
"rejected"
]
},
"cursor": {
"type": "string"
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 200
}
},
"required": [
"org",
"workspace",
"project"
]
}
}
}
},
"responses": {
"200": {
"description": "The procedure's output.",
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"proposals": {
"type": "array",
"items": {
"type": "object",
"properties": {
"proposalId": {
"type": "string"
},
"version": {
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"status": {
"type": "string",
"enum": [
"pending",
"approved",
"rejected"
]
},
"targetKey": {
"type": "string",
"maxLength": 128,
"pattern": "^[a-z][a-z0-9-]*(\\.[a-z][a-z0-9-]*)+$"
},
"targetRecordId": {
"type": [
"string",
"null"
]
},
"writtenRecordId": {
"type": [
"string",
"null"
]
},
"change": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"evidence": {
"minItems": 1,
"maxItems": 50,
"type": "array",
"items": {
"type": "object",
"properties": {
"fileId": {
"type": "string",
"minLength": 1,
"maxLength": 64
},
"page": {
"type": "integer",
"minimum": 1,
"maximum": 100000
},
"blockId": {
"type": "string",
"minLength": 1,
"maxLength": 64
},
"box": {
"type": "object",
"properties": {
"x": {
"type": "number",
"minimum": 0,
"maximum": 1
},
"y": {
"type": "number",
"minimum": 0,
"maximum": 1
},
"width": {
"type": "number",
"exclusiveMinimum": 0,
"maximum": 1
},
"height": {
"type": "number",
"exclusiveMinimum": 0,
"maximum": 1
}
},
"required": [
"x",
"y",
"width",
"height"
],
"additionalProperties": false
},
"quote": {
"type": "string",
"minLength": 1,
"maxLength": 2000
}
},
"required": [
"fileId"
],
"additionalProperties": false
}
},
"model": {
"type": "string"
},
"promptVersion": {
"type": "string"
},
"createdBy": {
"type": "string"
},
"createdAt": {
"type": "string"
},
"editedBy": {
"type": [
"string",
"null"
]
},
"editedAt": {
"type": [
"string",
"null"
]
},
"decidedBy": {
"type": [
"string",
"null"
]
},
"decidedAt": {
"type": [
"string",
"null"
]
},
"reason": {
"type": [
"string",
"null"
]
}
},
"required": [
"proposalId",
"version",
"status",
"targetKey",
"targetRecordId",
"writtenRecordId",
"change",
"evidence",
"model",
"promptVersion",
"createdBy",
"createdAt",
"editedBy",
"editedAt",
"decidedBy",
"decidedAt",
"reason"
],
"additionalProperties": false
}
},
"cursor": {
"type": "string"
},
"hasMore": {
"type": "boolean"
}
},
"required": [
"proposals",
"hasMore"
],
"additionalProperties": false
}
}
}
},
"400": {
"description": "The request could not be read.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"401": {
"description": "No credential, or one that is no longer valid.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"404": {
"description": "No such procedure in this scope: another tenant's ids answer the same way as a missing permission.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"409": {
"description": "A conflict, such as a taken slug or a stale version.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"413": {
"description": "The request body is larger than 1048576 bytes.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"422": {
"description": "The input does not match the procedure's schema.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"429": {
"description": "Rate limited; Retry-After says when.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
}
}
}
},
"/api/v1/proposals.proposal.reject": {
"post": {
"operationId": "proposals.proposal.reject",
"tags": [
"proposals"
],
"summary": "write procedure on the project scope",
"description": "Kind: write. Scope: project. Permission: proposals.proposal.reject.",
"security": [
{
"session": []
},
{
"bearer": []
},
{
"apiKey": []
}
],
"parameters": [
{
"name": "X-CSRF-Token",
"in": "header",
"required": false,
"schema": {
"type": "string"
},
"description": "Required when the credential is the session cookie; not used by bearer or API-key callers."
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"org": {
"type": "string",
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"
},
"workspace": {
"type": "string",
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"
},
"project": {
"type": "string",
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"
},
"proposalId": {
"type": "string",
"minLength": 1,
"maxLength": 64
},
"reason": {
"type": "string",
"minLength": 1,
"maxLength": 1000
}
},
"required": [
"org",
"workspace",
"project",
"proposalId"
]
}
}
}
},
"responses": {
"200": {
"description": "The procedure's output.",
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"proposalId": {
"type": "string"
},
"version": {
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"status": {
"type": "string",
"enum": [
"pending",
"approved",
"rejected"
]
},
"targetKey": {
"type": "string",
"maxLength": 128,
"pattern": "^[a-z][a-z0-9-]*(\\.[a-z][a-z0-9-]*)+$"
},
"targetRecordId": {
"type": [
"string",
"null"
]
},
"writtenRecordId": {
"type": [
"string",
"null"
]
},
"change": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"evidence": {
"minItems": 1,
"maxItems": 50,
"type": "array",
"items": {
"type": "object",
"properties": {
"fileId": {
"type": "string",
"minLength": 1,
"maxLength": 64
},
"page": {
"type": "integer",
"minimum": 1,
"maximum": 100000
},
"blockId": {
"type": "string",
"minLength": 1,
"maxLength": 64
},
"box": {
"type": "object",
"properties": {
"x": {
"type": "number",
"minimum": 0,
"maximum": 1
},
"y": {
"type": "number",
"minimum": 0,
"maximum": 1
},
"width": {
"type": "number",
"exclusiveMinimum": 0,
"maximum": 1
},
"height": {
"type": "number",
"exclusiveMinimum": 0,
"maximum": 1
}
},
"required": [
"x",
"y",
"width",
"height"
],
"additionalProperties": false
},
"quote": {
"type": "string",
"minLength": 1,
"maxLength": 2000
}
},
"required": [
"fileId"
],
"additionalProperties": false
}
},
"model": {
"type": "string"
},
"promptVersion": {
"type": "string"
},
"createdBy": {
"type": "string"
},
"createdAt": {
"type": "string"
},
"editedBy": {
"type": [
"string",
"null"
]
},
"editedAt": {
"type": [
"string",
"null"
]
},
"decidedBy": {
"type": [
"string",
"null"
]
},
"decidedAt": {
"type": [
"string",
"null"
]
},
"reason": {
"type": [
"string",
"null"
]
}
},
"required": [
"proposalId",
"version",
"status",
"targetKey",
"targetRecordId",
"writtenRecordId",
"change",
"evidence",
"model",
"promptVersion",
"createdBy",
"createdAt",
"editedBy",
"editedAt",
"decidedBy",
"decidedAt",
"reason"
],
"additionalProperties": false
}
}
}
},
"400": {
"description": "The request could not be read.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"401": {
"description": "No credential, or one that is no longer valid.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"404": {
"description": "No such procedure in this scope: another tenant's ids answer the same way as a missing permission.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"409": {
"description": "A conflict, such as a taken slug or a stale version.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"413": {
"description": "The request body is larger than 1048576 bytes.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"422": {
"description": "The input does not match the procedure's schema.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"429": {
"description": "Rate limited; Retry-After says when.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
}
}
}
},
"/api/v1/support.projectProcessingStatus.get": {
"post": {
"operationId": "support.projectProcessingStatus.get",
"tags": [
"support"
],
"summary": "read procedure on the project scope",
"description": "Kind: read. Scope: project. Permission: support.chat.use. Exposed as an MCP tool.",
"security": [
{
"session": []
},
{
"bearer": []
},
{
"apiKey": []
}
],
"parameters": [
{
"name": "X-CSRF-Token",
"in": "header",
"required": false,
"schema": {
"type": "string"
},
"description": "Required when the credential is the session cookie; not used by bearer or API-key callers."
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"org": {
"type": "string",
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"
},
"workspace": {
"type": "string",
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"
},
"project": {
"type": "string",
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"
}
},
"required": [
"org",
"workspace",
"project"
]
}
}
}
},
"responses": {
"200": {
"description": "The procedure's output.",
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"state": {
"type": "string",
"enum": [
"empty",
"processing",
"ready",
"failed"
]
},
"processing": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"extracted": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"failed": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"state",
"processing",
"extracted",
"failed"
],
"additionalProperties": false
}
}
}
},
"400": {
"description": "The request could not be read.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"401": {
"description": "No credential, or one that is no longer valid.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"404": {
"description": "No such procedure in this scope: another tenant's ids answer the same way as a missing permission.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"409": {
"description": "A conflict, such as a taken slug or a stale version.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"413": {
"description": "The request body is larger than 1048576 bytes.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"422": {
"description": "The input does not match the procedure's schema.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"429": {
"description": "Rate limited; Retry-After says when.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
}
}
}
},
"/api/v1/support.widget.config": {
"post": {
"operationId": "support.widget.config",
"tags": [
"support"
],
"summary": "effect procedure on the org scope",
"description": "Kind: effect. Scope: org. Permission: support.chat.use.",
"security": [
{
"session": []
},
{
"bearer": []
},
{
"apiKey": []
}
],
"parameters": [
{
"name": "X-CSRF-Token",
"in": "header",
"required": false,
"schema": {
"type": "string"
},
"description": "Required when the credential is the session cookie; not used by bearer or API-key callers."
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"org": {
"type": "string",
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"
}
},
"required": [
"org"
]
}
}
}
},
"responses": {
"200": {
"description": "The procedure's output.",
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"oneOf": [
{
"type": "object",
"properties": {
"mode": {
"type": "string",
"const": "platform"
},
"channel": {
"type": "string",
"minLength": 1
}
},
"required": [
"mode",
"channel"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"mode": {
"type": "string",
"const": "unavailable"
},
"reason": {
"type": "string",
"enum": [
"offline",
"unconfigured"
]
}
},
"required": [
"mode",
"reason"
],
"additionalProperties": false
}
]
}
}
}
},
"400": {
"description": "The request could not be read.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"401": {
"description": "No credential, or one that is no longer valid.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"404": {
"description": "No such procedure in this scope: another tenant's ids answer the same way as a missing permission.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"409": {
"description": "A conflict, such as a taken slug or a stale version.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"413": {
"description": "The request body is larger than 1048576 bytes.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"422": {
"description": "The input does not match the procedure's schema.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"429": {
"description": "Rate limited; Retry-After says when.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
}
}
}
},
"/api/v1/support.widgetSession.mint": {
"post": {
"operationId": "support.widgetSession.mint",
"tags": [
"support"
],
"summary": "effect procedure on the org scope",
"description": "Kind: effect. Scope: org. Permission: support.chat.use.",
"security": [
{
"session": []
},
{
"bearer": []
},
{
"apiKey": []
}
],
"parameters": [
{
"name": "X-CSRF-Token",
"in": "header",
"required": false,
"schema": {
"type": "string"
},
"description": "Required when the credential is the session cookie; not used by bearer or API-key callers."
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"org": {
"type": "string",
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"
}
},
"required": [
"org"
]
}
}
}
},
"responses": {
"200": {
"description": "The procedure's output.",
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"token": {
"type": "string",
"format": "starts_with",
"pattern": "^sws_.*"
},
"expires_at": {
"type": "string"
}
},
"required": [
"token",
"expires_at"
],
"additionalProperties": {}
}
}
}
},
"400": {
"description": "The request could not be read.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"401": {
"description": "No credential, or one that is no longer valid.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"404": {
"description": "No such procedure in this scope: another tenant's ids answer the same way as a missing permission.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"409": {
"description": "A conflict, such as a taken slug or a stale version.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"413": {
"description": "The request body is larger than 1048576 bytes.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"422": {
"description": "The input does not match the procedure's schema.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"429": {
"description": "Rate limited; Retry-After says when.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
}
}
}
},
"/api/v1/tenancy.invitation.accept": {
"post": {
"operationId": "tenancy.invitation.accept",
"tags": [
"tenancy"
],
"summary": "write procedure on the user scope",
"description": "Kind: write. Scope: user. Permission: none. Audit event: tenancy.member_joined.",
"security": [
{
"session": []
},
{
"bearer": []
},
{
"apiKey": []
}
],
"parameters": [
{
"name": "X-CSRF-Token",
"in": "header",
"required": false,
"schema": {
"type": "string"
},
"description": "Required when the credential is the session cookie; not used by bearer or API-key callers."
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"org": {
"type": "string",
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"
},
"token": {
"type": "string",
"minLength": 16,
"maxLength": 128
}
},
"required": [
"org",
"token"
]
}
}
}
},
"responses": {
"200": {
"description": "The procedure's output.",
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"orgId": {
"type": "string"
},
"role": {
"type": "string",
"enum": [
"viewer",
"member",
"admin",
"owner"
]
},
"workspace": {
"type": "string"
}
},
"required": [
"orgId",
"role",
"workspace"
],
"additionalProperties": false
}
}
}
},
"400": {
"description": "The request could not be read.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"401": {
"description": "No credential, or one that is no longer valid.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"404": {
"description": "No such procedure in this scope: another tenant's ids answer the same way as a missing permission.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"409": {
"description": "A conflict, such as a taken slug or a stale version.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"413": {
"description": "The request body is larger than 1048576 bytes.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"422": {
"description": "The input does not match the procedure's schema.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"429": {
"description": "Rate limited; Retry-After says when.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
}
}
}
},
"/api/v1/tenancy.invitation.list": {
"post": {
"operationId": "tenancy.invitation.list",
"tags": [
"tenancy"
],
"summary": "read procedure on the org scope",
"description": "Kind: read. Scope: org. Permission: tenancy.invitation.list.",
"security": [
{
"session": []
},
{
"bearer": []
},
{
"apiKey": []
}
],
"parameters": [
{
"name": "X-CSRF-Token",
"in": "header",
"required": false,
"schema": {
"type": "string"
},
"description": "Required when the credential is the session cookie; not used by bearer or API-key callers."
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"org": {
"type": "string",
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"
}
},
"required": [
"org"
]
}
}
}
},
"responses": {
"200": {
"description": "The procedure's output.",
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"invitations": {
"type": "array",
"items": {
"type": "object",
"properties": {
"invitationId": {
"type": "string"
},
"email": {
"type": "string"
},
"role": {
"type": "string",
"enum": [
"viewer",
"member",
"admin",
"owner"
]
},
"roleKey": {
"type": "string"
},
"workspaceId": {
"type": [
"string",
"null"
]
},
"workspaceRole": {
"anyOf": [
{
"type": "string",
"enum": [
"viewer",
"editor",
"admin"
]
},
{
"type": "null"
}
]
},
"expiresAt": {
"type": "string"
},
"expiry": {
"type": "string"
},
"invitedBy": {
"type": "string"
},
"inviter": {
"type": "object",
"properties": {
"userId": {
"type": "string"
},
"email": {
"type": "string"
},
"displayName": {
"type": "string"
}
},
"required": [
"userId",
"email",
"displayName"
],
"additionalProperties": false
}
},
"required": [
"invitationId",
"email",
"role",
"roleKey",
"expiresAt",
"expiry",
"invitedBy",
"inviter"
],
"additionalProperties": false
}
}
},
"required": [
"invitations"
],
"additionalProperties": false
}
}
}
},
"400": {
"description": "The request could not be read.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"401": {
"description": "No credential, or one that is no longer valid.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"404": {
"description": "No such procedure in this scope: another tenant's ids answer the same way as a missing permission.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"409": {
"description": "A conflict, such as a taken slug or a stale version.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"413": {
"description": "The request body is larger than 1048576 bytes.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"422": {
"description": "The input does not match the procedure's schema.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"429": {
"description": "Rate limited; Retry-After says when.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
}
}
}
},
"/api/v1/tenancy.invitation.read": {
"post": {
"operationId": "tenancy.invitation.read",
"tags": [
"tenancy"
],
"summary": "read procedure on the public scope",
"description": "Kind: read. Scope: public. Permission: none.",
"security": [
{}
],
"parameters": [
{
"name": "X-CSRF-Token",
"in": "header",
"required": false,
"schema": {
"type": "string"
},
"description": "Required when the credential is the session cookie; not used by bearer or API-key callers."
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"org": {
"type": "string",
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"
},
"token": {
"type": "string",
"minLength": 16,
"maxLength": 128
}
},
"required": [
"org",
"token"
]
}
}
}
},
"responses": {
"200": {
"description": "The procedure's output.",
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"invitationId": {
"type": "string"
},
"state": {
"type": "string",
"enum": [
"open",
"used",
"revoked",
"expired"
]
},
"email": {
"type": "string"
},
"organization": {
"type": "object",
"properties": {
"slug": {
"type": "string"
},
"name": {
"type": "string"
}
},
"required": [
"slug",
"name"
],
"additionalProperties": false
},
"role": {
"type": "string",
"enum": [
"viewer",
"member",
"admin",
"owner"
]
},
"roleKey": {
"type": "string"
},
"expiresAt": {
"type": "string"
}
},
"required": [
"invitationId",
"state",
"email",
"organization",
"role",
"roleKey",
"expiresAt"
],
"additionalProperties": false
}
}
}
},
"400": {
"description": "The request could not be read.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"401": {
"description": "No credential, or one that is no longer valid.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"404": {
"description": "No such procedure in this scope: another tenant's ids answer the same way as a missing permission.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"409": {
"description": "A conflict, such as a taken slug or a stale version.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"413": {
"description": "The request body is larger than 1048576 bytes.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"422": {
"description": "The input does not match the procedure's schema.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"429": {
"description": "Rate limited; Retry-After says when.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
}
}
}
},
"/api/v1/tenancy.invitation.resend": {
"post": {
"operationId": "tenancy.invitation.resend",
"tags": [
"tenancy"
],
"summary": "write procedure on the org scope",
"description": "Kind: write. Scope: org. Permission: tenancy.member.invite. Audit event: tenancy.member_invited.",
"security": [
{
"session": []
},
{
"bearer": []
},
{
"apiKey": []
}
],
"parameters": [
{
"name": "X-CSRF-Token",
"in": "header",
"required": false,
"schema": {
"type": "string"
},
"description": "Required when the credential is the session cookie; not used by bearer or API-key callers."
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"org": {
"type": "string",
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"
},
"invitationId": {
"type": "string"
}
},
"required": [
"org",
"invitationId"
]
}
}
}
},
"responses": {
"200": {
"description": "The procedure's output.",
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"invitationId": {
"type": "string"
},
"email": {
"type": "string"
},
"token": {
"type": "string"
},
"expiresAt": {
"type": "string"
}
},
"required": [
"invitationId",
"email",
"token",
"expiresAt"
],
"additionalProperties": false
}
}
}
},
"400": {
"description": "The request could not be read.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"401": {
"description": "No credential, or one that is no longer valid.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"404": {
"description": "No such procedure in this scope: another tenant's ids answer the same way as a missing permission.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"409": {
"description": "A conflict, such as a taken slug or a stale version.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"413": {
"description": "The request body is larger than 1048576 bytes.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"422": {
"description": "The input does not match the procedure's schema.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"429": {
"description": "Rate limited; Retry-After says when.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
}
}
}
},
"/api/v1/tenancy.invitation.revoke": {
"post": {
"operationId": "tenancy.invitation.revoke",
"tags": [
"tenancy"
],
"summary": "write procedure on the org scope",
"description": "Kind: write. Scope: org. Permission: tenancy.member.manage. Audit event: tenancy.invitation_revoked.",
"security": [
{
"session": []
},
{
"bearer": []
},
{
"apiKey": []
}
],
"parameters": [
{
"name": "X-CSRF-Token",
"in": "header",
"required": false,
"schema": {
"type": "string"
},
"description": "Required when the credential is the session cookie; not used by bearer or API-key callers."
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"org": {
"type": "string",
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"
},
"invitationId": {
"type": "string"
}
},
"required": [
"org",
"invitationId"
]
}
}
}
},
"responses": {
"200": {
"description": "The procedure's output.",
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "The request could not be read.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"401": {
"description": "No credential, or one that is no longer valid.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"404": {
"description": "No such procedure in this scope: another tenant's ids answer the same way as a missing permission.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"409": {
"description": "A conflict, such as a taken slug or a stale version.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"413": {
"description": "The request body is larger than 1048576 bytes.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"422": {
"description": "The input does not match the procedure's schema.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"429": {
"description": "Rate limited; Retry-After says when.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
}
}
}
},
"/api/v1/tenancy.me.get": {
"post": {
"operationId": "tenancy.me.get",
"tags": [
"tenancy"
],
"summary": "read procedure on the user scope",
"description": "Kind: read. Scope: user. Permission: none.",
"security": [
{
"session": []
},
{
"bearer": []
},
{
"apiKey": []
}
],
"parameters": [
{
"name": "X-CSRF-Token",
"in": "header",
"required": false,
"schema": {
"type": "string"
},
"description": "Required when the credential is the session cookie; not used by bearer or API-key callers."
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema"
}
}
}
},
"responses": {
"200": {
"description": "The procedure's output.",
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"userId": {
"type": "string"
},
"email": {
"type": "string"
},
"displayName": {
"type": "string"
},
"locale": {
"type": "string"
},
"organizations": {
"type": "array",
"items": {
"type": "object",
"properties": {
"slug": {
"type": "string"
},
"name": {
"type": "string"
},
"role": {
"type": "string",
"enum": [
"viewer",
"member",
"admin",
"owner"
]
}
},
"required": [
"slug",
"name",
"role"
],
"additionalProperties": false
}
}
},
"required": [
"userId",
"email",
"displayName",
"locale",
"organizations"
],
"additionalProperties": false
}
}
}
},
"400": {
"description": "The request could not be read.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"401": {
"description": "No credential, or one that is no longer valid.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"404": {
"description": "No such procedure in this scope: another tenant's ids answer the same way as a missing permission.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"409": {
"description": "A conflict, such as a taken slug or a stale version.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"413": {
"description": "The request body is larger than 1048576 bytes.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"422": {
"description": "The input does not match the procedure's schema.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"429": {
"description": "Rate limited; Retry-After says when.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
}
}
}
},
"/api/v1/tenancy.me.permissions": {
"post": {
"operationId": "tenancy.me.permissions",
"tags": [
"tenancy"
],
"summary": "read procedure on the user scope",
"description": "Kind: read. Scope: user. Permission: none.",
"security": [
{
"session": []
},
{
"bearer": []
},
{
"apiKey": []
}
],
"parameters": [
{
"name": "X-CSRF-Token",
"in": "header",
"required": false,
"schema": {
"type": "string"
},
"description": "Required when the credential is the session cookie; not used by bearer or API-key callers."
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"org": {
"type": "string",
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"
},
"workspace": {
"type": "string",
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"
},
"project": {
"type": "string",
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"
}
},
"required": [
"org"
]
}
}
}
},
"responses": {
"200": {
"description": "The procedure's output.",
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"permissions": {
"type": "array",
"items": {
"type": "string"
}
},
"revision": {
"type": "string"
}
},
"required": [
"permissions",
"revision"
],
"additionalProperties": false
}
}
}
},
"400": {
"description": "The request could not be read.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"401": {
"description": "No credential, or one that is no longer valid.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"404": {
"description": "No such procedure in this scope: another tenant's ids answer the same way as a missing permission.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"409": {
"description": "A conflict, such as a taken slug or a stale version.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"413": {
"description": "The request body is larger than 1048576 bytes.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"422": {
"description": "The input does not match the procedure's schema.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"429": {
"description": "Rate limited; Retry-After says when.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
}
}
}
},
"/api/v1/tenancy.me.update": {
"post": {
"operationId": "tenancy.me.update",
"tags": [
"tenancy"
],
"summary": "write procedure on the user scope",
"description": "Kind: write. Scope: user. Permission: none.",
"security": [
{
"session": []
},
{
"bearer": []
},
{
"apiKey": []
}
],
"parameters": [
{
"name": "X-CSRF-Token",
"in": "header",
"required": false,
"schema": {
"type": "string"
},
"description": "Required when the credential is the session cookie; not used by bearer or API-key callers."
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"locale": {
"type": "string",
"minLength": 2,
"maxLength": 35,
"pattern": "^[A-Za-z]{2,3}(-[A-Za-z0-9]{1,8})*$"
}
},
"required": [
"locale"
]
}
}
}
},
"responses": {
"200": {
"description": "The procedure's output.",
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"locale": {
"type": "string"
}
},
"required": [
"locale"
],
"additionalProperties": false
}
}
}
},
"400": {
"description": "The request could not be read.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"401": {
"description": "No credential, or one that is no longer valid.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"404": {
"description": "No such procedure in this scope: another tenant's ids answer the same way as a missing permission.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"409": {
"description": "A conflict, such as a taken slug or a stale version.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"413": {
"description": "The request body is larger than 1048576 bytes.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"422": {
"description": "The input does not match the procedure's schema.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"429": {
"description": "Rate limited; Retry-After says when.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
}
}
}
},
"/api/v1/tenancy.member.assign": {
"post": {
"operationId": "tenancy.member.assign",
"tags": [
"tenancy"
],
"summary": "write procedure on the org scope",
"description": "Kind: write. Scope: org. Permission: tenancy.member.manage. Audit event: tenancy.member_role_changed.",
"security": [
{
"session": []
},
{
"bearer": []
},
{
"apiKey": []
}
],
"parameters": [
{
"name": "X-CSRF-Token",
"in": "header",
"required": false,
"schema": {
"type": "string"
},
"description": "Required when the credential is the session cookie; not used by bearer or API-key callers."
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"org": {
"type": "string",
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"
},
"userId": {
"type": "string"
},
"level": {
"type": "string",
"enum": [
"org",
"workspace",
"project"
]
},
"workspace": {
"type": "string",
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"
},
"project": {
"type": "string",
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"
},
"roleKey": {
"type": "string",
"pattern": "^(?:viewer|editor|admin|owner|custom:[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})$"
}
},
"required": [
"org",
"userId",
"level",
"roleKey"
]
}
}
}
},
"responses": {
"200": {
"description": "The procedure's output.",
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"userId": {
"type": "string"
},
"level": {
"type": "string",
"enum": [
"org",
"workspace",
"project"
]
},
"workspace": {
"type": "string"
},
"project": {
"type": "string"
},
"roleKey": {
"type": "string"
}
},
"required": [
"userId",
"level",
"roleKey"
],
"additionalProperties": false
}
}
}
},
"400": {
"description": "The request could not be read.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"401": {
"description": "No credential, or one that is no longer valid.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"404": {
"description": "No such procedure in this scope: another tenant's ids answer the same way as a missing permission.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"409": {
"description": "A conflict, such as a taken slug or a stale version.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"413": {
"description": "The request body is larger than 1048576 bytes.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"422": {
"description": "The input does not match the procedure's schema.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"429": {
"description": "Rate limited; Retry-After says when.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
}
}
}
},
"/api/v1/tenancy.member.change-role": {
"post": {
"operationId": "tenancy.member.change-role",
"tags": [
"tenancy"
],
"summary": "write procedure on the org scope",
"description": "Kind: write. Scope: org. Permission: tenancy.member.manage. Audit event: tenancy.member_role_changed.",
"security": [
{
"session": []
},
{
"bearer": []
},
{
"apiKey": []
}
],
"parameters": [
{
"name": "X-CSRF-Token",
"in": "header",
"required": false,
"schema": {
"type": "string"
},
"description": "Required when the credential is the session cookie; not used by bearer or API-key callers."
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"org": {
"type": "string",
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"
},
"userId": {
"type": "string"
},
"role": {
"type": "string",
"enum": [
"viewer",
"member",
"admin",
"owner"
]
}
},
"required": [
"org",
"userId",
"role"
]
}
}
}
},
"responses": {
"200": {
"description": "The procedure's output.",
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"userId": {
"type": "string"
},
"role": {
"type": "string",
"enum": [
"viewer",
"member",
"admin",
"owner"
]
}
},
"required": [
"userId",
"role"
],
"additionalProperties": false
}
}
}
},
"400": {
"description": "The request could not be read.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"401": {
"description": "No credential, or one that is no longer valid.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"404": {
"description": "No such procedure in this scope: another tenant's ids answer the same way as a missing permission.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"409": {
"description": "A conflict, such as a taken slug or a stale version.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"413": {
"description": "The request body is larger than 1048576 bytes.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"422": {
"description": "The input does not match the procedure's schema.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"429": {
"description": "Rate limited; Retry-After says when.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
}
}
}
},
"/api/v1/tenancy.member.invite": {
"post": {
"operationId": "tenancy.member.invite",
"tags": [
"tenancy"
],
"summary": "write procedure on the org scope",
"description": "Kind: write. Scope: org. Permission: tenancy.member.invite. Audit event: tenancy.member_invited.",
"security": [
{
"session": []
},
{
"bearer": []
},
{
"apiKey": []
}
],
"parameters": [
{
"name": "X-CSRF-Token",
"in": "header",
"required": false,
"schema": {
"type": "string"
},
"description": "Required when the credential is the session cookie; not used by bearer or API-key callers."
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"org": {
"type": "string",
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"
},
"email": {
"type": "string",
"minLength": 3,
"maxLength": 320
},
"role": {
"type": "string",
"enum": [
"viewer",
"member",
"admin",
"owner"
]
},
"roleKey": {
"type": "string",
"pattern": "^custom:[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
},
"workspace": {
"type": "string",
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"
},
"workspaceRole": {
"type": "string",
"enum": [
"viewer",
"editor",
"admin"
]
}
},
"required": [
"org",
"email",
"role"
]
}
}
}
},
"responses": {
"200": {
"description": "The procedure's output.",
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"invitationId": {
"type": "string"
},
"token": {
"type": "string"
},
"expiresAt": {
"type": "string"
}
},
"required": [
"invitationId",
"token",
"expiresAt"
],
"additionalProperties": false
}
}
}
},
"400": {
"description": "The request could not be read.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"401": {
"description": "No credential, or one that is no longer valid.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"404": {
"description": "No such procedure in this scope: another tenant's ids answer the same way as a missing permission.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"409": {
"description": "A conflict, such as a taken slug or a stale version.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"413": {
"description": "The request body is larger than 1048576 bytes.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"422": {
"description": "The input does not match the procedure's schema.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"429": {
"description": "Rate limited; Retry-After says when.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
}
}
}
},
"/api/v1/tenancy.member.leave": {
"post": {
"operationId": "tenancy.member.leave",
"tags": [
"tenancy"
],
"summary": "write procedure on the org scope",
"description": "Kind: write. Scope: org. Permission: tenancy.member.leave. Audit event: tenancy.member_removed.",
"security": [
{
"session": []
},
{
"bearer": []
},
{
"apiKey": []
}
],
"parameters": [
{
"name": "X-CSRF-Token",
"in": "header",
"required": false,
"schema": {
"type": "string"
},
"description": "Required when the credential is the session cookie; not used by bearer or API-key callers."
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"org": {
"type": "string",
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"
}
},
"required": [
"org"
]
}
}
}
},
"responses": {
"200": {
"description": "The procedure's output.",
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema"
}
}
}
},
"400": {
"description": "The request could not be read.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"401": {
"description": "No credential, or one that is no longer valid.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"404": {
"description": "No such procedure in this scope: another tenant's ids answer the same way as a missing permission.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"409": {
"description": "A conflict, such as a taken slug or a stale version.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"413": {
"description": "The request body is larger than 1048576 bytes.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"422": {
"description": "The input does not match the procedure's schema.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"429": {
"description": "Rate limited; Retry-After says when.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
}
}
}
},
"/api/v1/tenancy.member.list": {
"post": {
"operationId": "tenancy.member.list",
"tags": [
"tenancy"
],
"summary": "read procedure on the org scope",
"description": "Kind: read. Scope: org. Permission: tenancy.member.read.",
"security": [
{
"session": []
},
{
"bearer": []
},
{
"apiKey": []
}
],
"parameters": [
{
"name": "X-CSRF-Token",
"in": "header",
"required": false,
"schema": {
"type": "string"
},
"description": "Required when the credential is the session cookie; not used by bearer or API-key callers."
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"org": {
"type": "string",
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"
},
"workspace": {
"type": "string",
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"
},
"project": {
"type": "string",
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"
}
},
"required": [
"org"
]
}
}
}
},
"responses": {
"200": {
"description": "The procedure's output.",
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"members": {
"type": "array",
"items": {
"type": "object",
"properties": {
"userId": {
"type": "string"
},
"email": {
"type": "string"
},
"displayName": {
"type": "string"
},
"role": {
"type": "string",
"enum": [
"viewer",
"member",
"admin",
"owner"
]
},
"roleKey": {
"type": [
"string",
"null"
]
}
},
"required": [
"userId",
"email",
"displayName",
"role",
"roleKey"
],
"additionalProperties": false
}
}
},
"required": [
"members"
],
"additionalProperties": false
}
}
}
},
"400": {
"description": "The request could not be read.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"401": {
"description": "No credential, or one that is no longer valid.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"404": {
"description": "No such procedure in this scope: another tenant's ids answer the same way as a missing permission.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"409": {
"description": "A conflict, such as a taken slug or a stale version.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"413": {
"description": "The request body is larger than 1048576 bytes.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"422": {
"description": "The input does not match the procedure's schema.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"429": {
"description": "Rate limited; Retry-After says when.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
}
}
}
},
"/api/v1/tenancy.member.remove": {
"post": {
"operationId": "tenancy.member.remove",
"tags": [
"tenancy"
],
"summary": "write procedure on the org scope",
"description": "Kind: write. Scope: org. Permission: tenancy.member.manage. Audit event: tenancy.member_removed.",
"security": [
{
"session": []
},
{
"bearer": []
},
{
"apiKey": []
}
],
"parameters": [
{
"name": "X-CSRF-Token",
"in": "header",
"required": false,
"schema": {
"type": "string"
},
"description": "Required when the credential is the session cookie; not used by bearer or API-key callers."
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"org": {
"type": "string",
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"
},
"userId": {
"type": "string"
}
},
"required": [
"org",
"userId"
]
}
}
}
},
"responses": {
"200": {
"description": "The procedure's output.",
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema"
}
}
}
},
"400": {
"description": "The request could not be read.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"401": {
"description": "No credential, or one that is no longer valid.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"404": {
"description": "No such procedure in this scope: another tenant's ids answer the same way as a missing permission.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"409": {
"description": "A conflict, such as a taken slug or a stale version.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"413": {
"description": "The request body is larger than 1048576 bytes.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"422": {
"description": "The input does not match the procedure's schema.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"429": {
"description": "Rate limited; Retry-After says when.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
}
}
}
},
"/api/v1/tenancy.org.create": {
"post": {
"operationId": "tenancy.org.create",
"tags": [
"tenancy"
],
"summary": "write procedure on the user scope",
"description": "Kind: write. Scope: user. Permission: none. Audit event: tenancy.organization_created.",
"security": [
{
"session": []
},
{
"bearer": []
},
{
"apiKey": []
}
],
"parameters": [
{
"name": "X-CSRF-Token",
"in": "header",
"required": false,
"schema": {
"type": "string"
},
"description": "Required when the credential is the session cookie; not used by bearer or API-key callers."
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"slug": {
"type": "string",
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 120
},
"workspace": {
"type": "object",
"properties": {
"slug": {
"type": "string",
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 120
}
},
"required": [
"slug",
"name"
]
}
},
"required": [
"slug",
"name"
]
}
}
}
},
"responses": {
"200": {
"description": "The procedure's output.",
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"orgId": {
"type": "string"
},
"slug": {
"type": "string"
},
"workspaceSlug": {
"type": "string"
}
},
"required": [
"orgId",
"slug",
"workspaceSlug"
],
"additionalProperties": false
}
}
}
},
"400": {
"description": "The request could not be read.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"401": {
"description": "No credential, or one that is no longer valid.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"404": {
"description": "No such procedure in this scope: another tenant's ids answer the same way as a missing permission.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"409": {
"description": "A conflict, such as a taken slug or a stale version.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"413": {
"description": "The request body is larger than 1048576 bytes.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"422": {
"description": "The input does not match the procedure's schema.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"429": {
"description": "Rate limited; Retry-After says when.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
}
}
}
},
"/api/v1/tenancy.org.get": {
"post": {
"operationId": "tenancy.org.get",
"tags": [
"tenancy"
],
"summary": "read procedure on the org scope",
"description": "Kind: read. Scope: org. Permission: tenancy.org.read.",
"security": [
{
"session": []
},
{
"bearer": []
},
{
"apiKey": []
}
],
"parameters": [
{
"name": "X-CSRF-Token",
"in": "header",
"required": false,
"schema": {
"type": "string"
},
"description": "Required when the credential is the session cookie; not used by bearer or API-key callers."
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"org": {
"type": "string",
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"
}
},
"required": [
"org"
]
}
}
}
},
"responses": {
"200": {
"description": "The procedure's output.",
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"orgId": {
"type": "string"
},
"slug": {
"type": "string"
},
"name": {
"type": "string"
},
"status": {
"type": "string"
},
"branding": {
"anyOf": [
{},
{
"type": "null"
}
]
},
"settings": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"version": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"orgId",
"slug",
"name",
"status",
"branding",
"settings",
"version"
],
"additionalProperties": false
}
}
}
},
"400": {
"description": "The request could not be read.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"401": {
"description": "No credential, or one that is no longer valid.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"404": {
"description": "No such procedure in this scope: another tenant's ids answer the same way as a missing permission.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"409": {
"description": "A conflict, such as a taken slug or a stale version.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"413": {
"description": "The request body is larger than 1048576 bytes.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"422": {
"description": "The input does not match the procedure's schema.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"429": {
"description": "Rate limited; Retry-After says when.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
}
}
}
},
"/api/v1/tenancy.org.update": {
"post": {
"operationId": "tenancy.org.update",
"tags": [
"tenancy"
],
"summary": "write procedure on the org scope",
"description": "Kind: write. Scope: org. Permission: tenancy.org.update. Audit event: tenancy.organization_updated.",
"security": [
{
"session": []
},
{
"bearer": []
},
{
"apiKey": []
}
],
"parameters": [
{
"name": "X-CSRF-Token",
"in": "header",
"required": false,
"schema": {
"type": "string"
},
"description": "Required when the credential is the session cookie; not used by bearer or API-key callers."
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"org": {
"type": "string",
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 120
},
"settings": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"expectedVersion": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"slug": {
"type": "string"
}
},
"required": [
"org",
"expectedVersion"
]
}
}
}
},
"responses": {
"200": {
"description": "The procedure's output.",
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"orgId": {
"type": "string"
},
"slug": {
"type": "string"
},
"name": {
"type": "string"
},
"settings": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"version": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"orgId",
"slug",
"name",
"settings",
"version"
],
"additionalProperties": false
}
}
}
},
"400": {
"description": "The request could not be read.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"401": {
"description": "No credential, or one that is no longer valid.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"404": {
"description": "No such procedure in this scope: another tenant's ids answer the same way as a missing permission.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"409": {
"description": "A conflict, such as a taken slug or a stale version.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"413": {
"description": "The request body is larger than 1048576 bytes.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"422": {
"description": "The input does not match the procedure's schema.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"429": {
"description": "Rate limited; Retry-After says when.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
}
}
}
},
"/api/v1/tenancy.project.archive": {
"post": {
"operationId": "tenancy.project.archive",
"tags": [
"tenancy"
],
"summary": "write procedure on the project scope",
"description": "Kind: write. Scope: project. Permission: tenancy.project.manage. Audit event: tenancy.project_archived.",
"security": [
{
"session": []
},
{
"bearer": []
},
{
"apiKey": []
}
],
"parameters": [
{
"name": "X-CSRF-Token",
"in": "header",
"required": false,
"schema": {
"type": "string"
},
"description": "Required when the credential is the session cookie; not used by bearer or API-key callers."
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"org": {
"type": "string",
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"
},
"workspace": {
"type": "string",
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"
},
"project": {
"type": "string",
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"
},
"expectedVersion": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"org",
"workspace",
"project",
"expectedVersion"
]
}
}
}
},
"responses": {
"200": {
"description": "The procedure's output.",
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"projectId": {
"type": "string"
},
"slug": {
"type": "string"
},
"name": {
"type": "string"
},
"description": {
"type": [
"string",
"null"
]
},
"moduleKey": {
"type": "string"
},
"archived": {
"type": "boolean"
},
"visibility": {
"type": "string",
"enum": [
"workspace",
"restricted"
]
},
"version": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"updatedAt": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$"
},
"topic": {
"type": "object",
"properties": {
"ws": {
"type": "string"
},
"project": {
"type": "string"
}
},
"required": [
"ws",
"project"
],
"additionalProperties": false
}
},
"required": [
"projectId",
"slug",
"name",
"description",
"moduleKey",
"archived",
"visibility",
"version",
"updatedAt",
"topic"
],
"additionalProperties": false
}
}
}
},
"400": {
"description": "The request could not be read.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"401": {
"description": "No credential, or one that is no longer valid.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"404": {
"description": "No such procedure in this scope: another tenant's ids answer the same way as a missing permission.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"409": {
"description": "A conflict, such as a taken slug or a stale version.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"413": {
"description": "The request body is larger than 1048576 bytes.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"422": {
"description": "The input does not match the procedure's schema.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"429": {
"description": "Rate limited; Retry-After says when.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
}
}
}
},
"/api/v1/tenancy.project.create": {
"post": {
"operationId": "tenancy.project.create",
"tags": [
"tenancy"
],
"summary": "write procedure on the workspace scope",
"description": "Kind: write. Scope: workspace. Permission: tenancy.project.manage. Audit event: tenancy.project_created.",
"security": [
{
"session": []
},
{
"bearer": []
},
{
"apiKey": []
}
],
"parameters": [
{
"name": "X-CSRF-Token",
"in": "header",
"required": false,
"schema": {
"type": "string"
},
"description": "Required when the credential is the session cookie; not used by bearer or API-key callers."
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"org": {
"type": "string",
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"
},
"workspace": {
"type": "string",
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"
},
"slug": {
"type": "string",
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 120
},
"moduleKey": {
"type": "string",
"minLength": 1,
"maxLength": 64
},
"visibility": {
"type": "string",
"enum": [
"workspace",
"restricted"
]
},
"description": {
"type": "string",
"maxLength": 4000
}
},
"required": [
"org",
"workspace",
"slug",
"name",
"moduleKey"
]
}
}
}
},
"responses": {
"200": {
"description": "The procedure's output.",
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"projectId": {
"type": "string"
},
"slug": {
"type": "string"
},
"topic": {
"type": "object",
"properties": {
"ws": {
"type": "string"
},
"project": {
"type": "string"
}
},
"required": [
"ws",
"project"
],
"additionalProperties": false
}
},
"required": [
"projectId",
"slug",
"topic"
],
"additionalProperties": false
}
}
}
},
"400": {
"description": "The request could not be read.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"401": {
"description": "No credential, or one that is no longer valid.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"404": {
"description": "No such procedure in this scope: another tenant's ids answer the same way as a missing permission.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"409": {
"description": "A conflict, such as a taken slug or a stale version.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"413": {
"description": "The request body is larger than 1048576 bytes.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"422": {
"description": "The input does not match the procedure's schema.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"429": {
"description": "Rate limited; Retry-After says when.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
}
}
}
},
"/api/v1/tenancy.project.get": {
"post": {
"operationId": "tenancy.project.get",
"tags": [
"tenancy"
],
"summary": "read procedure on the project scope",
"description": "Kind: read. Scope: project. Permission: tenancy.project.read.",
"security": [
{
"session": []
},
{
"bearer": []
},
{
"apiKey": []
}
],
"parameters": [
{
"name": "X-CSRF-Token",
"in": "header",
"required": false,
"schema": {
"type": "string"
},
"description": "Required when the credential is the session cookie; not used by bearer or API-key callers."
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"org": {
"type": "string",
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"
},
"workspace": {
"type": "string",
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"
},
"project": {
"type": "string",
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"
}
},
"required": [
"org",
"workspace",
"project"
]
}
}
}
},
"responses": {
"200": {
"description": "The procedure's output.",
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"projectId": {
"type": "string"
},
"slug": {
"type": "string"
},
"name": {
"type": "string"
},
"description": {
"type": [
"string",
"null"
]
},
"moduleKey": {
"type": "string"
},
"archived": {
"type": "boolean"
},
"visibility": {
"type": "string",
"enum": [
"workspace",
"restricted"
]
},
"version": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"updatedAt": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$"
},
"topic": {
"type": "object",
"properties": {
"ws": {
"type": "string"
},
"project": {
"type": "string"
}
},
"required": [
"ws",
"project"
],
"additionalProperties": false
}
},
"required": [
"projectId",
"slug",
"name",
"description",
"moduleKey",
"archived",
"visibility",
"version",
"updatedAt",
"topic"
],
"additionalProperties": false
}
}
}
},
"400": {
"description": "The request could not be read.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"401": {
"description": "No credential, or one that is no longer valid.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"404": {
"description": "No such procedure in this scope: another tenant's ids answer the same way as a missing permission.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"409": {
"description": "A conflict, such as a taken slug or a stale version.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"413": {
"description": "The request body is larger than 1048576 bytes.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"422": {
"description": "The input does not match the procedure's schema.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"429": {
"description": "Rate limited; Retry-After says when.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
}
}
}
},
"/api/v1/tenancy.project.list": {
"post": {
"operationId": "tenancy.project.list",
"tags": [
"tenancy"
],
"summary": "read procedure on the workspace scope",
"description": "Kind: read. Scope: workspace. Permission: tenancy.project.read.",
"security": [
{
"session": []
},
{
"bearer": []
},
{
"apiKey": []
}
],
"parameters": [
{
"name": "X-CSRF-Token",
"in": "header",
"required": false,
"schema": {
"type": "string"
},
"description": "Required when the credential is the session cookie; not used by bearer or API-key callers."
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"org": {
"type": "string",
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"
},
"workspace": {
"type": "string",
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"
},
"sort": {
"type": "string",
"enum": [
"updatedAt",
"name",
"slug"
]
},
"direction": {
"type": "string",
"enum": [
"asc",
"desc"
]
}
},
"required": [
"org",
"workspace"
]
}
}
}
},
"responses": {
"200": {
"description": "The procedure's output.",
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"projects": {
"type": "array",
"items": {
"type": "object",
"properties": {
"projectId": {
"type": "string"
},
"slug": {
"type": "string"
},
"name": {
"type": "string"
},
"description": {
"type": [
"string",
"null"
]
},
"moduleKey": {
"type": "string"
},
"archived": {
"type": "boolean"
},
"visibility": {
"type": "string",
"enum": [
"workspace",
"restricted"
]
},
"version": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"updatedAt": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$"
},
"topic": {
"type": "object",
"properties": {
"ws": {
"type": "string"
},
"project": {
"type": "string"
}
},
"required": [
"ws",
"project"
],
"additionalProperties": false
}
},
"required": [
"projectId",
"slug",
"name",
"description",
"moduleKey",
"archived",
"visibility",
"version",
"updatedAt",
"topic"
],
"additionalProperties": false
}
}
},
"required": [
"projects"
],
"additionalProperties": false
}
}
}
},
"400": {
"description": "The request could not be read.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"401": {
"description": "No credential, or one that is no longer valid.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"404": {
"description": "No such procedure in this scope: another tenant's ids answer the same way as a missing permission.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"409": {
"description": "A conflict, such as a taken slug or a stale version.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"413": {
"description": "The request body is larger than 1048576 bytes.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"422": {
"description": "The input does not match the procedure's schema.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"429": {
"description": "Rate limited; Retry-After says when.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
}
}
}
},
"/api/v1/tenancy.project.set-member": {
"post": {
"operationId": "tenancy.project.set-member",
"tags": [
"tenancy"
],
"summary": "write procedure on the project scope",
"description": "Kind: write. Scope: project. Permission: tenancy.project-member.manage. Audit event: tenancy.project_member_set.",
"security": [
{
"session": []
},
{
"bearer": []
},
{
"apiKey": []
}
],
"parameters": [
{
"name": "X-CSRF-Token",
"in": "header",
"required": false,
"schema": {
"type": "string"
},
"description": "Required when the credential is the session cookie; not used by bearer or API-key callers."
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"org": {
"type": "string",
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"
},
"workspace": {
"type": "string",
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"
},
"project": {
"type": "string",
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"
},
"userId": {
"type": "string"
},
"roleKey": {
"anyOf": [
{
"type": "string",
"pattern": "^(?:viewer|editor|admin|owner|custom:[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})$"
},
{
"type": "null"
}
]
}
},
"required": [
"org",
"workspace",
"project",
"userId",
"roleKey"
]
}
}
}
},
"responses": {
"200": {
"description": "The procedure's output.",
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "The request could not be read.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"401": {
"description": "No credential, or one that is no longer valid.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"404": {
"description": "No such procedure in this scope: another tenant's ids answer the same way as a missing permission.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"409": {
"description": "A conflict, such as a taken slug or a stale version.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"413": {
"description": "The request body is larger than 1048576 bytes.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"422": {
"description": "The input does not match the procedure's schema.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"429": {
"description": "Rate limited; Retry-After says when.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
}
}
}
},
"/api/v1/tenancy.project.unarchive": {
"post": {
"operationId": "tenancy.project.unarchive",
"tags": [
"tenancy"
],
"summary": "write procedure on the project scope",
"description": "Kind: write. Scope: project. Permission: tenancy.project.manage. Audit event: tenancy.project_unarchived.",
"security": [
{
"session": []
},
{
"bearer": []
},
{
"apiKey": []
}
],
"parameters": [
{
"name": "X-CSRF-Token",
"in": "header",
"required": false,
"schema": {
"type": "string"
},
"description": "Required when the credential is the session cookie; not used by bearer or API-key callers."
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"org": {
"type": "string",
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"
},
"workspace": {
"type": "string",
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"
},
"project": {
"type": "string",
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"
},
"expectedVersion": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"org",
"workspace",
"project",
"expectedVersion"
]
}
}
}
},
"responses": {
"200": {
"description": "The procedure's output.",
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"projectId": {
"type": "string"
},
"slug": {
"type": "string"
},
"name": {
"type": "string"
},
"description": {
"type": [
"string",
"null"
]
},
"moduleKey": {
"type": "string"
},
"archived": {
"type": "boolean"
},
"visibility": {
"type": "string",
"enum": [
"workspace",
"restricted"
]
},
"version": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"updatedAt": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$"
},
"topic": {
"type": "object",
"properties": {
"ws": {
"type": "string"
},
"project": {
"type": "string"
}
},
"required": [
"ws",
"project"
],
"additionalProperties": false
}
},
"required": [
"projectId",
"slug",
"name",
"description",
"moduleKey",
"archived",
"visibility",
"version",
"updatedAt",
"topic"
],
"additionalProperties": false
}
}
}
},
"400": {
"description": "The request could not be read.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"401": {
"description": "No credential, or one that is no longer valid.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"404": {
"description": "No such procedure in this scope: another tenant's ids answer the same way as a missing permission.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"409": {
"description": "A conflict, such as a taken slug or a stale version.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"413": {
"description": "The request body is larger than 1048576 bytes.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"422": {
"description": "The input does not match the procedure's schema.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"429": {
"description": "Rate limited; Retry-After says when.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
}
}
}
},
"/api/v1/tenancy.project.update": {
"post": {
"operationId": "tenancy.project.update",
"tags": [
"tenancy"
],
"summary": "write procedure on the project scope",
"description": "Kind: write. Scope: project. Permission: tenancy.project.manage. Audit event: tenancy.project_updated.",
"security": [
{
"session": []
},
{
"bearer": []
},
{
"apiKey": []
}
],
"parameters": [
{
"name": "X-CSRF-Token",
"in": "header",
"required": false,
"schema": {
"type": "string"
},
"description": "Required when the credential is the session cookie; not used by bearer or API-key callers."
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"org": {
"type": "string",
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"
},
"workspace": {
"type": "string",
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"
},
"project": {
"type": "string",
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"
},
"expectedVersion": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 120
},
"description": {
"anyOf": [
{
"type": "string",
"maxLength": 4000
},
{
"type": "null"
}
]
},
"slug": {
"type": "string"
}
},
"required": [
"org",
"workspace",
"project",
"expectedVersion"
]
}
}
}
},
"responses": {
"200": {
"description": "The procedure's output.",
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"projectId": {
"type": "string"
},
"slug": {
"type": "string"
},
"name": {
"type": "string"
},
"description": {
"type": [
"string",
"null"
]
},
"moduleKey": {
"type": "string"
},
"archived": {
"type": "boolean"
},
"visibility": {
"type": "string",
"enum": [
"workspace",
"restricted"
]
},
"version": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"updatedAt": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$"
},
"topic": {
"type": "object",
"properties": {
"ws": {
"type": "string"
},
"project": {
"type": "string"
}
},
"required": [
"ws",
"project"
],
"additionalProperties": false
}
},
"required": [
"projectId",
"slug",
"name",
"description",
"moduleKey",
"archived",
"visibility",
"version",
"updatedAt",
"topic"
],
"additionalProperties": false
}
}
}
},
"400": {
"description": "The request could not be read.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"401": {
"description": "No credential, or one that is no longer valid.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"404": {
"description": "No such procedure in this scope: another tenant's ids answer the same way as a missing permission.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"409": {
"description": "A conflict, such as a taken slug or a stale version.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"413": {
"description": "The request body is larger than 1048576 bytes.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"422": {
"description": "The input does not match the procedure's schema.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"429": {
"description": "Rate limited; Retry-After says when.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
}
}
}
},
"/api/v1/tenancy.role.create": {
"post": {
"operationId": "tenancy.role.create",
"tags": [
"tenancy"
],
"summary": "write procedure on the org scope",
"description": "Kind: write. Scope: org. Permission: tenancy.role.manage. Audit event: tenancy.role_created.",
"security": [
{
"session": []
},
{
"bearer": []
},
{
"apiKey": []
}
],
"parameters": [
{
"name": "X-CSRF-Token",
"in": "header",
"required": false,
"schema": {
"type": "string"
},
"description": "Required when the credential is the session cookie; not used by bearer or API-key callers."
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"org": {
"type": "string",
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 80
},
"level": {
"type": "string",
"enum": [
"org",
"workspace",
"project"
]
},
"permissions": {
"maxItems": 1000,
"type": "array",
"items": {
"type": "string",
"pattern": "^[a-z][a-z0-9-]*\\.[a-z][a-z0-9-]*\\.[a-z][a-z0-9-]*$"
}
}
},
"required": [
"org",
"name",
"level",
"permissions"
]
}
}
}
},
"responses": {
"200": {
"description": "The procedure's output.",
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"key": {
"type": "string"
},
"name": {
"type": "string"
},
"level": {
"type": "string",
"enum": [
"org",
"workspace",
"project"
]
},
"builtIn": {
"type": "boolean"
},
"permissions": {
"type": "array",
"items": {
"type": "string"
}
},
"revision": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"newPermissions": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"key",
"name",
"level",
"builtIn",
"permissions",
"revision",
"newPermissions"
],
"additionalProperties": false
}
}
}
},
"400": {
"description": "The request could not be read.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"401": {
"description": "No credential, or one that is no longer valid.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"404": {
"description": "No such procedure in this scope: another tenant's ids answer the same way as a missing permission.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"409": {
"description": "A conflict, such as a taken slug or a stale version.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"413": {
"description": "The request body is larger than 1048576 bytes.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"422": {
"description": "The input does not match the procedure's schema.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"429": {
"description": "Rate limited; Retry-After says when.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
}
}
}
},
"/api/v1/tenancy.role.delete": {
"post": {
"operationId": "tenancy.role.delete",
"tags": [
"tenancy"
],
"summary": "write procedure on the org scope",
"description": "Kind: write. Scope: org. Permission: tenancy.role.manage. Audit event: tenancy.role_deleted.",
"security": [
{
"session": []
},
{
"bearer": []
},
{
"apiKey": []
}
],
"parameters": [
{
"name": "X-CSRF-Token",
"in": "header",
"required": false,
"schema": {
"type": "string"
},
"description": "Required when the credential is the session cookie; not used by bearer or API-key callers."
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"org": {
"type": "string",
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"
},
"key": {
"type": "string",
"pattern": "^custom:[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
},
"reassignTo": {
"type": "string",
"pattern": "^(?:viewer|editor|admin|owner|custom:[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})$"
}
},
"required": [
"org",
"key",
"reassignTo"
]
}
}
}
},
"responses": {
"200": {
"description": "The procedure's output.",
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "The request could not be read.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"401": {
"description": "No credential, or one that is no longer valid.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"404": {
"description": "No such procedure in this scope: another tenant's ids answer the same way as a missing permission.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"409": {
"description": "A conflict, such as a taken slug or a stale version.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"413": {
"description": "The request body is larger than 1048576 bytes.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"422": {
"description": "The input does not match the procedure's schema.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"429": {
"description": "Rate limited; Retry-After says when.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
}
}
}
},
"/api/v1/tenancy.role.get": {
"post": {
"operationId": "tenancy.role.get",
"tags": [
"tenancy"
],
"summary": "read procedure on the org scope",
"description": "Kind: read. Scope: org. Permission: tenancy.role.read.",
"security": [
{
"session": []
},
{
"bearer": []
},
{
"apiKey": []
}
],
"parameters": [
{
"name": "X-CSRF-Token",
"in": "header",
"required": false,
"schema": {
"type": "string"
},
"description": "Required when the credential is the session cookie; not used by bearer or API-key callers."
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"org": {
"type": "string",
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"
},
"key": {
"type": "string",
"pattern": "^(?:viewer|editor|admin|owner|custom:[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})$"
}
},
"required": [
"org",
"key"
]
}
}
}
},
"responses": {
"200": {
"description": "The procedure's output.",
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"key": {
"type": "string"
},
"name": {
"type": "string"
},
"level": {
"type": "string",
"enum": [
"org",
"workspace",
"project"
]
},
"builtIn": {
"type": "boolean"
},
"permissions": {
"type": "array",
"items": {
"type": "string"
}
},
"revision": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"newPermissions": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"key",
"name",
"level",
"builtIn",
"permissions",
"revision",
"newPermissions"
],
"additionalProperties": false
}
}
}
},
"400": {
"description": "The request could not be read.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"401": {
"description": "No credential, or one that is no longer valid.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"404": {
"description": "No such procedure in this scope: another tenant's ids answer the same way as a missing permission.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"409": {
"description": "A conflict, such as a taken slug or a stale version.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"413": {
"description": "The request body is larger than 1048576 bytes.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"422": {
"description": "The input does not match the procedure's schema.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"429": {
"description": "Rate limited; Retry-After says when.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
}
}
}
},
"/api/v1/tenancy.role.list": {
"post": {
"operationId": "tenancy.role.list",
"tags": [
"tenancy"
],
"summary": "read procedure on the org scope",
"description": "Kind: read. Scope: org. Permission: tenancy.role.read.",
"security": [
{
"session": []
},
{
"bearer": []
},
{
"apiKey": []
}
],
"parameters": [
{
"name": "X-CSRF-Token",
"in": "header",
"required": false,
"schema": {
"type": "string"
},
"description": "Required when the credential is the session cookie; not used by bearer or API-key callers."
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"org": {
"type": "string",
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"
}
},
"required": [
"org"
]
}
}
}
},
"responses": {
"200": {
"description": "The procedure's output.",
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"builtIn": {
"type": "array",
"items": {
"type": "object",
"properties": {
"key": {
"type": "string"
},
"name": {
"type": "string"
},
"level": {
"type": "string",
"enum": [
"org",
"workspace",
"project"
]
},
"builtIn": {
"type": "boolean"
},
"permissions": {
"type": "array",
"items": {
"type": "string"
}
},
"revision": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"newPermissions": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"key",
"name",
"level",
"builtIn",
"permissions",
"revision",
"newPermissions"
],
"additionalProperties": false
}
},
"custom": {
"type": "array",
"items": {
"type": "object",
"properties": {
"key": {
"type": "string"
},
"name": {
"type": "string"
},
"level": {
"type": "string",
"enum": [
"org",
"workspace",
"project"
]
},
"builtIn": {
"type": "boolean"
},
"permissions": {
"type": "array",
"items": {
"type": "string"
}
},
"revision": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"newPermissions": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"key",
"name",
"level",
"builtIn",
"permissions",
"revision",
"newPermissions"
],
"additionalProperties": false
}
},
"declarations": {
"type": "array",
"items": {
"type": "object",
"properties": {
"key": {
"type": "string"
},
"role": {
"type": "string",
"enum": [
"viewer",
"editor",
"admin",
"owner"
]
},
"label": {
"type": "string"
},
"sensitive": {
"type": "boolean"
},
"reserved": {
"type": "boolean"
},
"agent": {
"type": "boolean"
}
},
"required": [
"key",
"role"
],
"additionalProperties": false
}
}
},
"required": [
"builtIn",
"custom",
"declarations"
],
"additionalProperties": false
}
}
}
},
"400": {
"description": "The request could not be read.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"401": {
"description": "No credential, or one that is no longer valid.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"404": {
"description": "No such procedure in this scope: another tenant's ids answer the same way as a missing permission.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"409": {
"description": "A conflict, such as a taken slug or a stale version.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"413": {
"description": "The request body is larger than 1048576 bytes.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"422": {
"description": "The input does not match the procedure's schema.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"429": {
"description": "Rate limited; Retry-After says when.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
}
}
}
},
"/api/v1/tenancy.role.update": {
"post": {
"operationId": "tenancy.role.update",
"tags": [
"tenancy"
],
"summary": "write procedure on the org scope",
"description": "Kind: write. Scope: org. Permission: tenancy.role.manage. Audit event: tenancy.role_updated.",
"security": [
{
"session": []
},
{
"bearer": []
},
{
"apiKey": []
}
],
"parameters": [
{
"name": "X-CSRF-Token",
"in": "header",
"required": false,
"schema": {
"type": "string"
},
"description": "Required when the credential is the session cookie; not used by bearer or API-key callers."
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"org": {
"type": "string",
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"
},
"key": {
"type": "string",
"pattern": "^custom:[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 80
},
"permissions": {
"maxItems": 1000,
"type": "array",
"items": {
"type": "string",
"pattern": "^[a-z][a-z0-9-]*\\.[a-z][a-z0-9-]*\\.[a-z][a-z0-9-]*$"
}
},
"revision": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"org",
"key",
"revision"
]
}
}
}
},
"responses": {
"200": {
"description": "The procedure's output.",
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"key": {
"type": "string"
},
"name": {
"type": "string"
},
"level": {
"type": "string",
"enum": [
"org",
"workspace",
"project"
]
},
"builtIn": {
"type": "boolean"
},
"permissions": {
"type": "array",
"items": {
"type": "string"
}
},
"revision": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"newPermissions": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"key",
"name",
"level",
"builtIn",
"permissions",
"revision",
"newPermissions"
],
"additionalProperties": false
}
}
}
},
"400": {
"description": "The request could not be read.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"401": {
"description": "No credential, or one that is no longer valid.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"404": {
"description": "No such procedure in this scope: another tenant's ids answer the same way as a missing permission.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"409": {
"description": "A conflict, such as a taken slug or a stale version.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"413": {
"description": "The request body is larger than 1048576 bytes.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"422": {
"description": "The input does not match the procedure's schema.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"429": {
"description": "Rate limited; Retry-After says when.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
}
}
}
},
"/api/v1/tenancy.workspace.create": {
"post": {
"operationId": "tenancy.workspace.create",
"tags": [
"tenancy"
],
"summary": "write procedure on the org scope",
"description": "Kind: write. Scope: org. Permission: tenancy.workspace.manage. Audit event: tenancy.workspace_created.",
"security": [
{
"session": []
},
{
"bearer": []
},
{
"apiKey": []
}
],
"parameters": [
{
"name": "X-CSRF-Token",
"in": "header",
"required": false,
"schema": {
"type": "string"
},
"description": "Required when the credential is the session cookie; not used by bearer or API-key callers."
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"org": {
"type": "string",
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"
},
"slug": {
"type": "string",
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 120
},
"visibility": {
"type": "string",
"enum": [
"org",
"restricted"
]
}
},
"required": [
"org",
"slug",
"name",
"visibility"
]
}
}
}
},
"responses": {
"200": {
"description": "The procedure's output.",
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"workspaceId": {
"type": "string"
},
"slug": {
"type": "string"
}
},
"required": [
"workspaceId",
"slug"
],
"additionalProperties": false
}
}
}
},
"400": {
"description": "The request could not be read.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"401": {
"description": "No credential, or one that is no longer valid.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"404": {
"description": "No such procedure in this scope: another tenant's ids answer the same way as a missing permission.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"409": {
"description": "A conflict, such as a taken slug or a stale version.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"413": {
"description": "The request body is larger than 1048576 bytes.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"422": {
"description": "The input does not match the procedure's schema.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"429": {
"description": "Rate limited; Retry-After says when.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
}
}
}
},
"/api/v1/tenancy.workspace.list": {
"post": {
"operationId": "tenancy.workspace.list",
"tags": [
"tenancy"
],
"summary": "read procedure on the org scope",
"description": "Kind: read. Scope: org. Permission: tenancy.workspace.read.",
"security": [
{
"session": []
},
{
"bearer": []
},
{
"apiKey": []
}
],
"parameters": [
{
"name": "X-CSRF-Token",
"in": "header",
"required": false,
"schema": {
"type": "string"
},
"description": "Required when the credential is the session cookie; not used by bearer or API-key callers."
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"org": {
"type": "string",
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"
}
},
"required": [
"org"
]
}
}
}
},
"responses": {
"200": {
"description": "The procedure's output.",
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"workspaces": {
"type": "array",
"items": {
"type": "object",
"properties": {
"slug": {
"type": "string"
},
"name": {
"type": "string"
},
"isDefault": {
"type": "boolean"
},
"visibility": {
"type": "string",
"enum": [
"org",
"restricted"
]
}
},
"required": [
"slug",
"name",
"isDefault",
"visibility"
],
"additionalProperties": false
}
}
},
"required": [
"workspaces"
],
"additionalProperties": false
}
}
}
},
"400": {
"description": "The request could not be read.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"401": {
"description": "No credential, or one that is no longer valid.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"404": {
"description": "No such procedure in this scope: another tenant's ids answer the same way as a missing permission.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"409": {
"description": "A conflict, such as a taken slug or a stale version.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"413": {
"description": "The request body is larger than 1048576 bytes.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"422": {
"description": "The input does not match the procedure's schema.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"429": {
"description": "Rate limited; Retry-After says when.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
}
}
}
},
"/api/v1/tenancy.workspace.set-member": {
"post": {
"operationId": "tenancy.workspace.set-member",
"tags": [
"tenancy"
],
"summary": "write procedure on the org scope",
"description": "Kind: write. Scope: org. Permission: tenancy.workspace.manage. Audit event: tenancy.workspace_member_set.",
"security": [
{
"session": []
},
{
"bearer": []
},
{
"apiKey": []
}
],
"parameters": [
{
"name": "X-CSRF-Token",
"in": "header",
"required": false,
"schema": {
"type": "string"
},
"description": "Required when the credential is the session cookie; not used by bearer or API-key callers."
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"org": {
"type": "string",
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"
},
"workspace": {
"type": "string",
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$"
},
"userId": {
"type": "string"
},
"role": {
"type": "string",
"enum": [
"viewer",
"editor",
"admin"
]
}
},
"required": [
"org",
"workspace",
"userId",
"role"
]
}
}
}
},
"responses": {
"200": {
"description": "The procedure's output.",
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema"
}
}
}
},
"400": {
"description": "The request could not be read.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"401": {
"description": "No credential, or one that is no longer valid.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"404": {
"description": "No such procedure in this scope: another tenant's ids answer the same way as a missing permission.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"409": {
"description": "A conflict, such as a taken slug or a stale version.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"413": {
"description": "The request body is larger than 1048576 bytes.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"422": {
"description": "The input does not match the procedure's schema.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"429": {
"description": "Rate limited; Retry-After says when.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
}
}
}
}
},
"components": {
"schemas": {
"Problem": {
"type": "object",
"required": [
"type",
"title",
"status",
"code"
],
"properties": {
"type": {
"type": "string",
"description": "An app-relative URI reference, /problems/<code>."
},
"title": {
"type": "string"
},
"status": {
"type": "integer"
},
"code": {
"type": "string"
},
"detail": {
"type": "string"
},
"errors": {
"type": "array",
"items": {
"type": "object",
"required": [
"path",
"message"
],
"properties": {
"path": {
"type": "string"
},
"message": {
"type": "string"
}
}
}
},
"retryAfter": {
"type": "integer",
"description": "Seconds, for 429 and 503."
}
}
}
},
"securitySchemes": {
"session": {
"type": "apiKey",
"in": "cookie",
"name": "conusai_session",
"description": "The sealed session cookie a browser holds."
},
"bearer": {
"type": "http",
"scheme": "bearer",
"bearerFormat": "JWT",
"description": "An OIDC access token for this app's audience."
},
"apiKey": {
"type": "http",
"scheme": "bearer",
"description": "An organization API key, cak_<prefix>_<secret>."
}
}
}
}