Files
docqube_backend/openapi.json
T
2026-09-08 11:00:05 +05:30

21312 lines
527 KiB
JSON

{
"components": {
"schemas": {
"AccessAttributionOut": {
"description": "Which role conferred one access code, and at what scope.",
"properties": {
"expires_at": {
"anyOf": [
{
"format": "date-time",
"type": "string"
},
{
"type": "null"
}
],
"title": "Expires At"
},
"org_unit_id": {
"anyOf": [
{
"format": "uuid",
"type": "string"
},
{
"type": "null"
}
],
"title": "Org Unit Id"
},
"org_unit_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Org Unit Name"
},
"role_id": {
"anyOf": [
{
"format": "uuid",
"type": "string"
},
{
"type": "null"
}
],
"title": "Role Id"
},
"role_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Role Name"
},
"source": {
"title": "Source",
"type": "string"
}
},
"required": [
"source"
],
"title": "AccessAttributionOut",
"type": "object"
},
"AccessEventOut": {
"description": "One entry in the access-control timeline.\n\nShaped from `activity_logs`, which is generic and shared with every other\nmodule — so this exposes the subset that means something for access, rather\nthan the whole row. `metadata` is the JSONB payload, aliased because the\ncolumn is named `metadata` in the database and `event_metadata` on the\nmodel, and neither is the name a caller should have to know.",
"properties": {
"action": {
"title": "Action",
"type": "string"
},
"actor_email": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Actor Email"
},
"actor_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Actor Name"
},
"actor_user_id": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Actor User Id"
},
"created_at": {
"format": "date-time",
"title": "Created At",
"type": "string"
},
"id": {
"title": "Id",
"type": "integer"
},
"metadata": {
"additionalProperties": true,
"title": "Metadata",
"type": "object"
},
"target_id": {
"title": "Target Id",
"type": "string"
},
"target_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Target Name"
},
"target_type": {
"title": "Target Type",
"type": "string"
}
},
"required": [
"id",
"created_at",
"action",
"target_id",
"target_type",
"metadata"
],
"title": "AccessEventOut",
"type": "object"
},
"AccessGroupOut": {
"properties": {
"created_at": {
"format": "date-time",
"title": "Created At",
"type": "string"
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Description"
},
"id": {
"format": "uuid",
"title": "Id",
"type": "string"
},
"name": {
"title": "Name",
"type": "string"
},
"tenant_id": {
"format": "uuid",
"title": "Tenant Id",
"type": "string"
}
},
"required": [
"id",
"tenant_id",
"name",
"created_at"
],
"title": "AccessGroupOut",
"type": "object"
},
"AccessOut": {
"description": "One row of the access catalogue. 66 exist.",
"properties": {
"access_code": {
"title": "Access Code",
"type": "string"
},
"category": {
"title": "Category",
"type": "string"
},
"id": {
"format": "uuid",
"title": "Id",
"type": "string"
},
"name": {
"title": "Name",
"type": "string"
},
"parent_id": {
"anyOf": [
{
"format": "uuid",
"type": "string"
},
{
"type": "null"
}
],
"title": "Parent Id"
}
},
"required": [
"id",
"name",
"access_code",
"category"
],
"title": "AccessOut",
"type": "object"
},
"ActivityLogOut": {
"properties": {
"action": {
"title": "Action",
"type": "string"
},
"created_at": {
"format": "date-time",
"title": "Created At",
"type": "string"
},
"description": {
"title": "Description",
"type": "string"
},
"id": {
"title": "Id",
"type": "integer"
},
"ip_address": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Ip Address"
},
"metadata": {
"additionalProperties": true,
"title": "Metadata",
"type": "object"
},
"module": {
"title": "Module",
"type": "string"
},
"request_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Request Id"
},
"status": {
"title": "Status",
"type": "string"
},
"target_id": {
"title": "Target Id",
"type": "string"
},
"target_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Target Name"
},
"target_type": {
"title": "Target Type",
"type": "string"
},
"tenant_id": {
"title": "Tenant Id",
"type": "string"
},
"user_email": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "User Email"
},
"user_id": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "User Id"
},
"user_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "User Name"
}
},
"required": [
"id",
"tenant_id",
"module",
"action",
"target_id",
"target_type",
"metadata",
"created_at",
"status",
"description"
],
"title": "ActivityLogOut",
"type": "object"
},
"ActivityLogUserOption": {
"properties": {
"user_email": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "User Email"
},
"user_id": {
"title": "User Id",
"type": "integer"
},
"user_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "User Name"
}
},
"required": [
"user_id"
],
"title": "ActivityLogUserOption",
"type": "object"
},
"AddGroupMemberIn": {
"properties": {
"user_id": {
"title": "User Id",
"type": "integer"
}
},
"required": [
"user_id"
],
"title": "AddGroupMemberIn",
"type": "object"
},
"AddMemberIn": {
"properties": {
"is_primary": {
"default": false,
"title": "Is Primary",
"type": "boolean"
},
"user_id": {
"title": "User Id",
"type": "integer"
}
},
"required": [
"user_id"
],
"title": "AddMemberIn",
"type": "object"
},
"AddUserRoleIn": {
"description": "Add one role to one user.\n\n`org_unit_id` omitted or null means **tenant-wide** — the authority every\nuser already has through their primary role. That default is the point of\nthis endpoint: the organisation tree could only ever grant *scoped to a\nunit*, so \"Alice is an Editor and an Approver, everywhere\" was not\nexpressible anywhere in the product.",
"properties": {
"expires_at": {
"anyOf": [
{
"format": "date-time",
"type": "string"
},
{
"type": "null"
}
],
"title": "Expires At"
},
"org_unit_id": {
"anyOf": [
{
"format": "uuid",
"type": "string"
},
{
"type": "null"
}
],
"title": "Org Unit Id"
},
"role_id": {
"format": "uuid",
"title": "Role Id",
"type": "string"
}
},
"required": [
"role_id"
],
"title": "AddUserRoleIn",
"type": "object"
},
"AdminDashboardMetricsOut": {
"properties": {
"conversions": {
"anyOf": [
{
"$ref": "#/components/schemas/ConversionMetricOut"
},
{
"type": "null"
}
]
},
"edits": {
"$ref": "#/components/schemas/SimpleMetricOut"
},
"shares": {
"$ref": "#/components/schemas/ShareMetricOut"
},
"signatures": {
"anyOf": [
{
"$ref": "#/components/schemas/MetricCountOut"
},
{
"type": "null"
}
]
},
"storage": {
"$ref": "#/components/schemas/StorageMetricOut"
},
"uploads": {
"$ref": "#/components/schemas/MetricCountOut"
},
"users": {
"$ref": "#/components/schemas/TotalMetricOut"
}
},
"required": [
"uploads",
"users",
"shares",
"storage",
"edits"
],
"title": "AdminDashboardMetricsOut",
"type": "object"
},
"ApiKeyStatusOut": {
"properties": {
"has_key": {
"title": "Has Key",
"type": "boolean"
}
},
"required": [
"has_key"
],
"title": "ApiKeyStatusOut",
"type": "object"
},
"AssignUserRoleIn": {
"properties": {
"role_id": {
"format": "uuid",
"title": "Role Id",
"type": "string"
},
"user_id": {
"title": "User Id",
"type": "integer"
}
},
"required": [
"user_id",
"role_id"
],
"title": "AssignUserRoleIn",
"type": "object"
},
"AuthorityOut": {
"description": "Where a user holds one access code.\n\n`tenant_wide` and `org_unit_ids` are deliberately separate rather than one\nnullable list: \"everywhere\" and \"nowhere\" must not be representable by the\nsame empty value. That confusion is the whole failure mode of scoped access.",
"properties": {
"access_code": {
"title": "Access Code",
"type": "string"
},
"org_unit_ids": {
"items": {
"format": "uuid",
"type": "string"
},
"title": "Org Unit Ids",
"type": "array"
},
"tenant_wide": {
"title": "Tenant Wide",
"type": "boolean"
}
},
"required": [
"access_code",
"tenant_wide",
"org_unit_ids"
],
"title": "AuthorityOut",
"type": "object"
},
"BlockEdit": {
"properties": {
"align": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": 0,
"title": "Align"
},
"bbox": {
"anyOf": [
{
"items": {
"type": "number"
},
"type": "array"
},
{
"type": "null"
}
],
"title": "Bbox"
},
"block_id": {
"title": "Block Id",
"type": "string"
},
"bold": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Bold"
},
"color": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Color"
},
"font": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Font"
},
"italic": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Italic"
},
"new_text": {
"title": "New Text",
"type": "string"
},
"size": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Size"
},
"underline": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Underline"
}
},
"required": [
"block_id",
"new_text"
],
"title": "BlockEdit",
"type": "object"
},
"Body_convert_direct_api_celery_convert_direct_post": {
"properties": {
"file": {
"format": "binary",
"title": "File",
"type": "string"
},
"output_format": {
"title": "Output Format",
"type": "string"
}
},
"required": [
"file",
"output_format"
],
"title": "Body_convert_direct_api_celery_convert_direct_post",
"type": "object"
},
"Body_convert_pdf2docx_api_celery_convert_pdf2docx_post": {
"properties": {
"file": {
"format": "binary",
"title": "File",
"type": "string"
}
},
"required": [
"file"
],
"title": "Body_convert_pdf2docx_api_celery_convert_pdf2docx_post",
"type": "object"
},
"Body_copy_file_api_drive_files__file_id__copy_post": {
"properties": {
"dest_folder_id": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Dest Folder Id"
},
"new_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "New Name"
}
},
"title": "Body_copy_file_api_drive_files__file_id__copy_post",
"type": "object"
},
"Body_create_file_api_drive_files_create_post": {
"properties": {
"content": {
"default": "",
"title": "Content",
"type": "string"
},
"folder_id": {
"title": "Folder Id",
"type": "integer"
},
"mime_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Mime Type"
},
"name": {
"title": "Name",
"type": "string"
}
},
"required": [
"folder_id",
"name"
],
"title": "Body_create_file_api_drive_files_create_post",
"type": "object"
},
"Body_create_file_share_api_drive_files__file_id__shares_post": {
"properties": {
"invited_email": {
"title": "Invited Email",
"type": "string"
},
"role": {
"title": "Role",
"type": "string"
}
},
"required": [
"role"
],
"title": "Body_create_file_share_api_drive_files__file_id__shares_post",
"type": "object"
},
"Body_create_folder_api_drive_folders_post": {
"properties": {
"name": {
"maxLength": 255,
"title": "Name",
"type": "string"
},
"parent_id": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Parent Id"
}
},
"required": [
"name"
],
"title": "Body_create_folder_api_drive_folders_post",
"type": "object"
},
"Body_create_folder_share_api_drive_folders__folder_id__shares_post": {
"properties": {
"invited_email": {
"title": "Invited Email",
"type": "string"
},
"role": {
"title": "Role",
"type": "string"
}
},
"required": [
"role"
],
"title": "Body_create_folder_share_api_drive_folders__folder_id__shares_post",
"type": "object"
},
"Body_create_project_comment_api_projects__project_id__comments_post": {
"properties": {
"anchor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Anchor"
},
"body": {
"title": "Body",
"type": "string"
},
"color": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Color"
}
},
"required": [
"body"
],
"title": "Body_create_project_comment_api_projects__project_id__comments_post",
"type": "object"
},
"Body_create_share_link_api_drive_share_link_post": {
"properties": {
"expires_in_days": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Expires In Days"
},
"resource_id": {
"title": "Resource Id",
"type": "integer"
},
"resource_type": {
"title": "Resource Type",
"type": "string"
},
"role": {
"title": "Role",
"type": "string"
}
},
"required": [
"resource_id",
"resource_type",
"role"
],
"title": "Body_create_share_link_api_drive_share_link_post",
"type": "object"
},
"Body_email_resource_api_drive_email_resource_post": {
"properties": {
"cc_emails": {
"default": [],
"items": {
"type": "string"
},
"title": "Cc Emails",
"type": "array"
},
"message": {
"default": "",
"title": "Message",
"type": "string"
},
"resource_id": {
"title": "Resource Id",
"type": "integer"
},
"resource_type": {
"title": "Resource Type",
"type": "string"
},
"subject": {
"title": "Subject",
"type": "string"
},
"to_emails": {
"items": {
"type": "string"
},
"title": "To Emails",
"type": "array"
}
},
"required": [
"resource_id",
"resource_type",
"to_emails",
"subject"
],
"title": "Body_email_resource_api_drive_email_resource_post",
"type": "object"
},
"Body_extract_api_extract_post": {
"properties": {
"file": {
"format": "binary",
"title": "File",
"type": "string"
}
},
"required": [
"file"
],
"title": "Body_extract_api_extract_post",
"type": "object"
},
"Body_generate_upload_url_api_drive_upload_presigned_post": {
"properties": {
"content_type": {
"default": "application/octet-stream",
"title": "Content Type",
"type": "string"
},
"file_size": {
"title": "File Size",
"type": "integer"
},
"filename": {
"title": "Filename",
"type": "string"
}
},
"required": [
"filename",
"file_size"
],
"title": "Body_generate_upload_url_api_drive_upload_presigned_post",
"type": "object"
},
"Body_login_api_auth_login_post": {
"properties": {
"client_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Client Id"
},
"client_secret": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"format": "password",
"title": "Client Secret"
},
"grant_type": {
"anyOf": [
{
"pattern": "^password$",
"type": "string"
},
{
"type": "null"
}
],
"title": "Grant Type"
},
"password": {
"format": "password",
"title": "Password",
"type": "string"
},
"scope": {
"default": "",
"title": "Scope",
"type": "string"
},
"username": {
"title": "Username",
"type": "string"
}
},
"required": [
"username",
"password"
],
"title": "Body_login_api_auth_login_post",
"type": "object"
},
"Body_ocr_endpoint_api_signing_ocr_post": {
"properties": {
"file": {
"format": "binary",
"title": "File",
"type": "string"
}
},
"required": [
"file"
],
"title": "Body_ocr_endpoint_api_signing_ocr_post",
"type": "object"
},
"Body_pre_scan_file_api_drive_scan_check_post": {
"properties": {
"upload": {
"format": "binary",
"title": "Upload",
"type": "string"
}
},
"required": [
"upload"
],
"title": "Body_pre_scan_file_api_drive_scan_check_post",
"type": "object"
},
"Body_restore_file_api_drive_files__file_id__restore_post": {
"properties": {
"mode": {
"default": "original",
"title": "Mode",
"type": "string"
}
},
"title": "Body_restore_file_api_drive_files__file_id__restore_post",
"type": "object"
},
"Body_restore_folder_api_drive_folders__folder_id__restore_post": {
"properties": {
"mode": {
"default": "original",
"title": "Mode",
"type": "string"
}
},
"title": "Body_restore_folder_api_drive_folders__folder_id__restore_post",
"type": "object"
},
"Body_restore_resource_generic_api_drive_restore__resource_id__post": {
"properties": {
"mode": {
"default": "original",
"title": "Mode",
"type": "string"
}
},
"title": "Body_restore_resource_generic_api_drive_restore__resource_id__post",
"type": "object"
},
"Body_share_resource_generic_api_drive_share_post": {
"properties": {
"email": {
"title": "Email",
"type": "string"
},
"resource_id": {
"title": "Resource Id",
"type": "integer"
},
"resource_type": {
"title": "Resource Type",
"type": "string"
},
"role": {
"title": "Role",
"type": "string"
}
},
"required": [
"resource_id",
"resource_type",
"email",
"role"
],
"title": "Body_share_resource_generic_api_drive_share_post",
"type": "object"
},
"Body_star_file_api_drive_files__file_id__star_patch": {
"properties": {
"star": {
"title": "Star",
"type": "boolean"
}
},
"required": [
"star"
],
"title": "Body_star_file_api_drive_files__file_id__star_patch",
"type": "object"
},
"Body_star_folder_api_drive_folders__folder_id__star_patch": {
"properties": {
"star": {
"title": "Star",
"type": "boolean"
}
},
"required": [
"star"
],
"title": "Body_star_folder_api_drive_folders__folder_id__star_patch",
"type": "object"
},
"Body_star_resource_generic_api_drive_star_post": {
"properties": {
"resource_id": {
"title": "Resource Id",
"type": "integer"
},
"resource_type": {
"title": "Resource Type",
"type": "string"
}
},
"required": [
"resource_id",
"resource_type"
],
"title": "Body_star_resource_generic_api_drive_star_post",
"type": "object"
},
"Body_transcribe_audio_api_speech_transcribe_post": {
"properties": {
"file": {
"format": "binary",
"title": "File",
"type": "string"
},
"language": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Language"
}
},
"required": [
"file"
],
"title": "Body_transcribe_audio_api_speech_transcribe_post",
"type": "object"
},
"Body_unstar_resource_generic_api_drive_star__resource_id__delete": {
"properties": {
"resource_type": {
"title": "Resource Type",
"type": "string"
}
},
"required": [
"resource_type"
],
"title": "Body_unstar_resource_generic_api_drive_star__resource_id__delete",
"type": "object"
},
"Body_update_file_api_drive_files__file_id__patch": {
"properties": {
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Name"
},
"new_folder_id": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "New Folder Id"
}
},
"title": "Body_update_file_api_drive_files__file_id__patch",
"type": "object"
},
"Body_update_folder_api_drive_folders__folder_id__patch": {
"properties": {
"name": {
"anyOf": [
{
"maxLength": 255,
"type": "string"
},
{
"type": "null"
}
],
"title": "Name"
},
"new_parent_id": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "New Parent Id"
}
},
"title": "Body_update_folder_api_drive_folders__folder_id__patch",
"type": "object"
},
"Body_update_my_tenant_compression_api_tenants_me_compression_patch": {
"properties": {
"disable_pdf_compression": {
"title": "Disable Pdf Compression",
"type": "boolean"
}
},
"required": [
"disable_pdf_compression"
],
"title": "Body_update_my_tenant_compression_api_tenants_me_compression_patch",
"type": "object"
},
"Body_update_share_api_drive_shares__share_id__patch": {
"properties": {
"role": {
"title": "Role",
"type": "string"
}
},
"required": [
"role"
],
"title": "Body_update_share_api_drive_shares__share_id__patch",
"type": "object"
},
"Body_upload_api_1_process_document__post": {
"properties": {
"file": {
"format": "binary",
"title": "File",
"type": "string"
},
"output_format": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Output Format"
},
"session_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Session Id"
}
},
"required": [
"file"
],
"title": "Body_upload_api_1_process_document__post",
"type": "object"
},
"Body_upload_api_celery_upload_post": {
"properties": {
"file": {
"format": "binary",
"title": "File",
"type": "string"
},
"output_format": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Output Format"
},
"session_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Session Id"
}
},
"required": [
"file"
],
"title": "Body_upload_api_celery_upload_post",
"type": "object"
},
"Body_upload_callback_api_drive_upload_callback_post": {
"properties": {
"content_type": {
"default": "application/octet-stream",
"title": "Content Type",
"type": "string"
},
"file_size": {
"title": "File Size",
"type": "integer"
},
"filename": {
"title": "Filename",
"type": "string"
},
"folder_id": {
"title": "Folder Id",
"type": "integer"
},
"storage_key": {
"title": "Storage Key",
"type": "string"
}
},
"required": [
"storage_key",
"filename",
"folder_id",
"file_size"
],
"title": "Body_upload_callback_api_drive_upload_callback_post",
"type": "object"
},
"Body_upload_document_api_chatbot_upload_post": {
"properties": {
"file": {
"format": "binary",
"title": "File",
"type": "string"
}
},
"required": [
"file"
],
"title": "Body_upload_document_api_chatbot_upload_post",
"type": "object"
},
"Body_upload_file_api_drive_upload_post": {
"properties": {
"file_id": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "File Id"
},
"folder_id": {
"title": "Folder Id",
"type": "integer"
},
"upload": {
"format": "binary",
"title": "Upload",
"type": "string"
}
},
"required": [
"folder_id",
"upload"
],
"title": "Body_upload_file_api_drive_upload_post",
"type": "object"
},
"Body_upload_file_api_storage_upload_post": {
"properties": {
"file": {
"format": "binary",
"title": "File",
"type": "string"
},
"folder": {
"default": "",
"title": "Folder",
"type": "string"
}
},
"required": [
"file"
],
"title": "Body_upload_file_api_storage_upload_post",
"type": "object"
},
"Body_upload_file_legacy_api_drive_files_upload_post": {
"properties": {
"folder_id": {
"title": "Folder Id",
"type": "integer"
},
"upload": {
"format": "binary",
"title": "Upload",
"type": "string"
}
},
"required": [
"folder_id",
"upload"
],
"title": "Body_upload_file_legacy_api_drive_files_upload_post",
"type": "object"
},
"Body_verify_signature_api_signing_verify_post": {
"properties": {
"file": {
"format": "binary",
"title": "File",
"type": "string"
},
"signature_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Signature Id"
}
},
"title": "Body_verify_signature_api_signing_verify_post",
"type": "object"
},
"CeleryHealthOut": {
"properties": {
"status": {
"title": "Status",
"type": "string"
}
},
"required": [
"status"
],
"title": "CeleryHealthOut",
"type": "object"
},
"ChangePasswordIn": {
"properties": {
"current_password": {
"title": "Current Password",
"type": "string"
},
"new_password": {
"minLength": 12,
"title": "New Password",
"type": "string"
}
},
"required": [
"current_password",
"new_password"
],
"title": "ChangePasswordIn",
"type": "object"
},
"ChatDocumentOut": {
"description": "One row of `GET /api/chatbot/documents`.",
"properties": {
"created_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Created At"
},
"document_id": {
"title": "Document Id",
"type": "string"
},
"filename": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Filename"
}
},
"required": [
"document_id"
],
"title": "ChatDocumentOut",
"type": "object"
},
"ChatRequest": {
"properties": {
"bypass_cache": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": false,
"title": "Bypass Cache"
},
"document_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Document Id"
},
"question": {
"maxLength": 1000,
"minLength": 1,
"title": "Question",
"type": "string"
}
},
"required": [
"question"
],
"title": "ChatRequest",
"type": "object"
},
"ChatUsageOut": {
"description": "`GET /api/chatbot/usage`. Credits, not tokens — the service divides by 1000.",
"properties": {
"last_reset": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Last Reset"
},
"limit": {
"default": 0.0,
"title": "Limit",
"type": "number"
},
"percent": {
"default": 0.0,
"title": "Percent",
"type": "number"
},
"tenant_limit": {
"default": 0.0,
"title": "Tenant Limit",
"type": "number"
},
"tenant_percent": {
"default": 0.0,
"title": "Tenant Percent",
"type": "number"
},
"tenant_used": {
"default": 0.0,
"title": "Tenant Used",
"type": "number"
},
"total_ever": {
"default": 0.0,
"title": "Total Ever",
"type": "number"
},
"used": {
"default": 0.0,
"title": "Used",
"type": "number"
}
},
"title": "ChatUsageOut",
"type": "object"
},
"ConversionMetricOut": {
"properties": {
"completed": {
"title": "Completed",
"type": "integer"
},
"completion_rate": {
"title": "Completion Rate",
"type": "number"
},
"failed": {
"title": "Failed",
"type": "integer"
},
"processing": {
"title": "Processing",
"type": "integer"
},
"total": {
"title": "Total",
"type": "integer"
}
},
"required": [
"total",
"completed",
"processing",
"failed",
"completion_rate"
],
"title": "ConversionMetricOut",
"type": "object"
},
"CreateAccessGroupIn": {
"properties": {
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Description"
},
"name": {
"maxLength": 255,
"minLength": 1,
"title": "Name",
"type": "string"
}
},
"required": [
"name"
],
"title": "CreateAccessGroupIn",
"type": "object"
},
"CreateCommentRequest": {
"properties": {
"anchor": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"title": "Anchor"
},
"body": {
"description": "The comment text body",
"maxLength": 10000,
"minLength": 1,
"title": "Body",
"type": "string"
},
"color": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Color"
}
},
"required": [
"body"
],
"title": "CreateCommentRequest",
"type": "object"
},
"CreateOrgUnitIn": {
"properties": {
"code": {
"anyOf": [
{
"maxLength": 50,
"type": "string"
},
{
"type": "null"
}
],
"title": "Code"
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Description"
},
"name": {
"maxLength": 255,
"minLength": 1,
"title": "Name",
"type": "string"
},
"parent_id": {
"anyOf": [
{
"format": "uuid",
"type": "string"
},
{
"type": "null"
}
],
"title": "Parent Id"
},
"sort_order": {
"default": 0,
"title": "Sort Order",
"type": "integer"
},
"unit_type": {
"anyOf": [
{
"maxLength": 50,
"type": "string"
},
{
"type": "null"
}
],
"title": "Unit Type"
}
},
"required": [
"name"
],
"title": "CreateOrgUnitIn",
"type": "object"
},
"CreateProjectIn": {
"properties": {
"fileType": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": "PDF",
"title": "Filetype"
},
"name": {
"maxLength": 255,
"minLength": 1,
"title": "Name",
"type": "string"
},
"outputFormat": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": "EPUB",
"title": "Outputformat"
},
"sessionId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Sessionid"
}
},
"required": [
"name"
],
"title": "CreateProjectIn",
"type": "object"
},
"CreateTenantIn": {
"properties": {
"chat_token_daily_limit": {
"default": 1000000,
"title": "Chat Token Daily Limit",
"type": "integer"
},
"disable_pdf_compression": {
"default": false,
"title": "Disable Pdf Compression",
"type": "boolean"
},
"envelope_limit": {
"default": -1,
"title": "Envelope Limit",
"type": "integer"
},
"envelope_reset_days": {
"anyOf": [
{
"minimum": 0.0,
"type": "integer"
},
{
"type": "null"
}
],
"title": "Envelope Reset Days"
},
"is_active": {
"default": true,
"title": "Is Active",
"type": "boolean"
},
"max_users_allowed": {
"anyOf": [
{
"minimum": 0.0,
"type": "integer"
},
{
"type": "null"
}
],
"title": "Max Users Allowed"
},
"name": {
"maxLength": 255,
"title": "Name",
"type": "string"
},
"slug": {
"maxLength": 100,
"title": "Slug",
"type": "string"
},
"storage_quota_bytes": {
"default": 1073741824,
"title": "Storage Quota Bytes",
"type": "integer"
}
},
"required": [
"name",
"slug"
],
"title": "CreateTenantIn",
"type": "object"
},
"DeletedCountOut": {
"description": "`{\"deleted\": n}` — bulk delete.",
"properties": {
"deleted": {
"title": "Deleted",
"type": "integer"
}
},
"required": [
"deleted"
],
"title": "DeletedCountOut",
"type": "object"
},
"DeviceOut": {
"properties": {
"browser": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Browser"
},
"city": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "City"
},
"country": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Country"
},
"device_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Device Type"
},
"id": {
"title": "Id",
"type": "integer"
},
"is_current_device": {
"default": false,
"title": "Is Current Device",
"type": "boolean"
},
"last_login": {
"anyOf": [
{
"format": "date-time",
"type": "string"
},
{
"type": "null"
}
],
"title": "Last Login"
},
"os": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Os"
},
"state": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "State"
}
},
"required": [
"id"
],
"title": "DeviceOut",
"type": "object"
},
"DocusealBuilderTokenRequest": {
"properties": {
"drive_file_id": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Drive File Id"
},
"drive_file_ids": {
"anyOf": [
{
"items": {
"type": "integer"
},
"type": "array"
},
{
"type": "null"
}
],
"title": "Drive File Ids"
},
"is_sequential": {
"default": false,
"title": "Is Sequential",
"type": "boolean"
},
"submitters": {
"anyOf": [
{
"items": {
"additionalProperties": true,
"type": "object"
},
"type": "array"
},
{
"type": "null"
}
],
"default": [],
"title": "Submitters"
},
"template_id": {
"title": "Template Id"
}
},
"required": [
"template_id"
],
"title": "DocusealBuilderTokenRequest",
"type": "object"
},
"DocusealSubmissionRequest": {
"properties": {
"drive_file_id": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Drive File Id"
},
"drive_file_ids": {
"anyOf": [
{
"items": {
"type": "integer"
},
"type": "array"
},
{
"type": "null"
}
],
"title": "Drive File Ids"
},
"is_sequential": {
"default": false,
"title": "Is Sequential",
"type": "boolean"
},
"log_only": {
"default": false,
"title": "Log Only",
"type": "boolean"
},
"submitters": {
"items": {
"$ref": "#/components/schemas/DocusealSubmitter"
},
"title": "Submitters",
"type": "array"
},
"template_id": {
"title": "Template Id"
}
},
"required": [
"template_id",
"submitters"
],
"title": "DocusealSubmissionRequest",
"type": "object"
},
"DocusealSubmissionResponse": {
"properties": {
"id": {
"title": "Id"
},
"status": {
"title": "Status",
"type": "string"
},
"submitters": {
"anyOf": [
{
"items": {
"additionalProperties": true,
"type": "object"
},
"type": "array"
},
{
"type": "null"
}
],
"title": "Submitters"
}
},
"required": [
"id",
"status"
],
"title": "DocusealSubmissionResponse",
"type": "object"
},
"DocusealSubmitter": {
"properties": {
"email": {
"title": "Email",
"type": "string"
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Name"
},
"role": {
"default": "Signer",
"title": "Role",
"type": "string"
}
},
"required": [
"email"
],
"title": "DocusealSubmitter",
"type": "object"
},
"DocusealTemplateRequest": {
"properties": {
"drive_file_id": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Drive File Id"
},
"drive_file_ids": {
"anyOf": [
{
"items": {
"type": "integer"
},
"type": "array"
},
{
"type": "null"
}
],
"title": "Drive File Ids"
}
},
"title": "DocusealTemplateRequest",
"type": "object"
},
"DocusealTemplateResponse": {
"properties": {
"id": {
"title": "Id"
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": "Envelope",
"title": "Name"
}
},
"required": [
"id"
],
"title": "DocusealTemplateResponse",
"type": "object"
},
"DocxExportOut": {
"description": "`POST /api/export-docx/` — the document returned inline, base64 encoded.",
"properties": {
"docx_content": {
"title": "Docx Content",
"type": "string"
},
"success": {
"title": "Success",
"type": "boolean"
}
},
"required": [
"success",
"docx_content"
],
"title": "DocxExportOut",
"type": "object"
},
"DriveActivityListOut": {
"properties": {
"activities": {
"default": [],
"items": {
"additionalProperties": true,
"type": "object"
},
"title": "Activities",
"type": "array"
}
},
"title": "DriveActivityListOut",
"type": "object"
},
"DriveBreadcrumb": {
"properties": {
"id": {
"title": "Id",
"type": "integer"
},
"name": {
"title": "Name",
"type": "string"
}
},
"required": [
"id",
"name"
],
"title": "DriveBreadcrumb",
"type": "object"
},
"DriveCommentListOut": {
"properties": {
"comments": {
"default": [],
"items": {
"additionalProperties": true,
"type": "object"
},
"title": "Comments",
"type": "array"
}
},
"title": "DriveCommentListOut",
"type": "object"
},
"DriveDraftListOut": {
"properties": {
"drafts": {
"default": [],
"items": {
"additionalProperties": true,
"type": "object"
},
"title": "Drafts",
"type": "array"
}
},
"title": "DriveDraftListOut",
"type": "object"
},
"DriveFileDetailOut": {
"description": "`GET /api/drive/files/{file_id}` and `/info`.\n\nExtends the *list item*, not `DriveFileOut` — the detail endpoints return\nthree extra signing and versioning fields but no `versions` array, and\ninheriting one would have added `versions: null` to every response.",
"properties": {
"created_at": {
"format": "date-time",
"title": "Created At",
"type": "string"
},
"display_version": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Display Version"
},
"effective_role": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Effective Role"
},
"folder_id": {
"title": "Folder Id",
"type": "integer"
},
"hash": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Hash"
},
"id": {
"title": "Id",
"type": "integer"
},
"is_signed": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Is Signed"
},
"is_starred": {
"title": "Is Starred",
"type": "boolean"
},
"is_trashed": {
"title": "Is Trashed",
"type": "boolean"
},
"latest_version_id": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Latest Version Id"
},
"mime_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Mime Type"
},
"minor_version": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Minor Version"
},
"name": {
"title": "Name",
"type": "string"
},
"owner_email": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Owner Email"
},
"owner_id": {
"title": "Owner Id",
"type": "integer"
},
"owner_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Owner Name"
},
"size": {
"title": "Size",
"type": "integer"
},
"tenant_id": {
"anyOf": [
{
"format": "uuid",
"type": "string"
},
{
"type": "null"
}
],
"title": "Tenant Id"
},
"trashed_at": {
"anyOf": [
{
"format": "date-time",
"type": "string"
},
{
"type": "null"
}
],
"title": "Trashed At"
},
"updated_at": {
"anyOf": [
{
"format": "date-time",
"type": "string"
},
{
"type": "null"
}
],
"title": "Updated At"
}
},
"required": [
"id",
"folder_id",
"owner_id",
"name",
"mime_type",
"size",
"latest_version_id",
"is_starred",
"is_trashed",
"created_at",
"updated_at"
],
"title": "DriveFileDetailOut",
"type": "object"
},
"DriveFileListItemOut": {
"description": "A file as it appears inside a collection response.\n\nDeliberately without `versions`. The collection endpoints do not return that\nkey, and a declared field is *added* as null rather than omitted — so\nincluding it here would change every list payload the frontend already\nconsumes. `DriveFileOut` adds it back for the endpoints that do return it.",
"properties": {
"created_at": {
"format": "date-time",
"title": "Created At",
"type": "string"
},
"effective_role": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Effective Role"
},
"folder_id": {
"title": "Folder Id",
"type": "integer"
},
"hash": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Hash"
},
"id": {
"title": "Id",
"type": "integer"
},
"is_starred": {
"title": "Is Starred",
"type": "boolean"
},
"is_trashed": {
"title": "Is Trashed",
"type": "boolean"
},
"latest_version_id": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Latest Version Id"
},
"mime_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Mime Type"
},
"name": {
"title": "Name",
"type": "string"
},
"owner_email": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Owner Email"
},
"owner_id": {
"title": "Owner Id",
"type": "integer"
},
"owner_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Owner Name"
},
"size": {
"title": "Size",
"type": "integer"
},
"tenant_id": {
"anyOf": [
{
"format": "uuid",
"type": "string"
},
{
"type": "null"
}
],
"title": "Tenant Id"
},
"trashed_at": {
"anyOf": [
{
"format": "date-time",
"type": "string"
},
{
"type": "null"
}
],
"title": "Trashed At"
},
"updated_at": {
"anyOf": [
{
"format": "date-time",
"type": "string"
},
{
"type": "null"
}
],
"title": "Updated At"
}
},
"required": [
"id",
"folder_id",
"owner_id",
"name",
"mime_type",
"size",
"latest_version_id",
"is_starred",
"is_trashed",
"created_at",
"updated_at"
],
"title": "DriveFileListItemOut",
"type": "object"
},
"DriveFileListOut": {
"description": "`/me/recent` — files only.",
"properties": {
"files": {
"default": [],
"items": {
"$ref": "#/components/schemas/DriveFileListItemOut"
},
"title": "Files",
"type": "array"
}
},
"title": "DriveFileListOut",
"type": "object"
},
"DriveFileVersionOut": {
"properties": {
"created_at": {
"format": "date-time",
"title": "Created At",
"type": "string"
},
"display_version": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Display Version"
},
"id": {
"title": "Id",
"type": "integer"
},
"is_signed": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": false,
"title": "Is Signed"
},
"mime_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Mime Type"
},
"minor_version": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Minor Version"
},
"size": {
"title": "Size",
"type": "integer"
},
"version_number": {
"title": "Version Number",
"type": "integer"
}
},
"required": [
"id",
"version_number",
"mime_type",
"size",
"created_at"
],
"title": "DriveFileVersionOut",
"type": "object"
},
"DriveFolderContentsOut": {
"description": "`GET /api/drive/folder/{folder_id}`.",
"properties": {
"breadcrumbs": {
"default": [],
"items": {
"$ref": "#/components/schemas/DriveBreadcrumb"
},
"title": "Breadcrumbs",
"type": "array"
},
"files": {
"default": [],
"items": {
"$ref": "#/components/schemas/DriveFileListItemOut"
},
"title": "Files",
"type": "array"
},
"folder": {
"anyOf": [
{
"$ref": "#/components/schemas/DriveFolderDetailOut"
},
{
"type": "null"
}
]
},
"folders": {
"default": [],
"items": {
"$ref": "#/components/schemas/DriveFolderDetailOut"
},
"title": "Folders",
"type": "array"
}
},
"title": "DriveFolderContentsOut",
"type": "object"
},
"DriveFolderDetailOut": {
"description": "The `folder` object of a folder listing.\n\nCarries five fields `DriveFolderOut` never declared — `is_root` in\nparticular is what the frontend uses to decide whether to show a \"back\"\ncontrol, so dropping it would have been a visible regression.",
"properties": {
"color": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Color"
},
"created_at": {
"format": "date-time",
"title": "Created At",
"type": "string"
},
"effective_role": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Effective Role"
},
"id": {
"title": "Id",
"type": "integer"
},
"is_root": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Is Root"
},
"is_starred": {
"title": "Is Starred",
"type": "boolean"
},
"is_trashed": {
"title": "Is Trashed",
"type": "boolean"
},
"name": {
"title": "Name",
"type": "string"
},
"owner_email": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Owner Email"
},
"owner_id": {
"title": "Owner Id",
"type": "integer"
},
"owner_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Owner Name"
},
"parent_id": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Parent Id"
},
"tenant_id": {
"anyOf": [
{
"format": "uuid",
"type": "string"
},
{
"type": "null"
}
],
"title": "Tenant Id"
},
"trashed_at": {
"anyOf": [
{
"format": "date-time",
"type": "string"
},
{
"type": "null"
}
],
"title": "Trashed At"
},
"updated_at": {
"anyOf": [
{
"format": "date-time",
"type": "string"
},
{
"type": "null"
}
],
"title": "Updated At"
}
},
"required": [
"id",
"owner_id",
"parent_id",
"name",
"color",
"is_starred",
"is_trashed",
"created_at",
"updated_at"
],
"title": "DriveFolderDetailOut",
"type": "object"
},
"DriveFolderOut": {
"properties": {
"color": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Color"
},
"created_at": {
"format": "date-time",
"title": "Created At",
"type": "string"
},
"effective_role": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Effective Role"
},
"id": {
"title": "Id",
"type": "integer"
},
"is_starred": {
"title": "Is Starred",
"type": "boolean"
},
"is_trashed": {
"title": "Is Trashed",
"type": "boolean"
},
"name": {
"title": "Name",
"type": "string"
},
"owner_id": {
"title": "Owner Id",
"type": "integer"
},
"parent_id": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Parent Id"
},
"updated_at": {
"anyOf": [
{
"format": "date-time",
"type": "string"
},
{
"type": "null"
}
],
"title": "Updated At"
}
},
"required": [
"id",
"owner_id",
"parent_id",
"name",
"color",
"is_starred",
"is_trashed",
"created_at",
"updated_at"
],
"title": "DriveFolderOut",
"type": "object"
},
"DriveResourceListOut": {
"description": "`/me/starred` and `/me/trash` — files and folders.",
"properties": {
"files": {
"default": [],
"items": {
"$ref": "#/components/schemas/DriveFileListItemOut"
},
"title": "Files",
"type": "array"
},
"folders": {
"default": [],
"items": {
"$ref": "#/components/schemas/DriveFolderOut"
},
"title": "Folders",
"type": "array"
}
},
"title": "DriveResourceListOut",
"type": "object"
},
"DriveRootOut": {
"properties": {
"id": {
"title": "Id",
"type": "integer"
},
"name": {
"title": "Name",
"type": "string"
}
},
"required": [
"id",
"name"
],
"title": "DriveRootOut",
"type": "object"
},
"DriveScanStatusOut": {
"properties": {
"message": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Message"
},
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Status"
}
},
"title": "DriveScanStatusOut",
"type": "object"
},
"DriveShareOut": {
"properties": {
"created_at": {
"format": "date-time",
"title": "Created At",
"type": "string"
},
"expires_at": {
"anyOf": [
{
"format": "date-time",
"type": "string"
},
{
"type": "null"
}
],
"title": "Expires At"
},
"id": {
"title": "Id",
"type": "integer"
},
"invited_email": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Invited Email"
},
"resource_id": {
"title": "Resource Id",
"type": "integer"
},
"resource_type": {
"title": "Resource Type",
"type": "string"
},
"role": {
"title": "Role",
"type": "string"
}
},
"required": [
"id",
"resource_type",
"resource_id",
"role",
"invited_email",
"expires_at",
"created_at"
],
"title": "DriveShareOut",
"type": "object"
},
"DriveSharedListOut": {
"description": "`/me/shared` and `/me/shared-by-me` — adds breadcrumbs.",
"properties": {
"breadcrumbs": {
"default": [],
"items": {
"$ref": "#/components/schemas/DriveBreadcrumb"
},
"title": "Breadcrumbs",
"type": "array"
},
"files": {
"default": [],
"items": {
"$ref": "#/components/schemas/DriveFileListItemOut"
},
"title": "Files",
"type": "array"
},
"folders": {
"default": [],
"items": {
"$ref": "#/components/schemas/DriveFolderOut"
},
"title": "Folders",
"type": "array"
}
},
"title": "DriveSharedListOut",
"type": "object"
},
"DriveVersionListOut": {
"properties": {
"versions": {
"default": [],
"items": {
"$ref": "#/components/schemas/DriveFileVersionOut"
},
"title": "Versions",
"type": "array"
}
},
"title": "DriveVersionListOut",
"type": "object"
},
"EditorTokenOut": {
"properties": {
"token": {
"title": "Token",
"type": "string"
}
},
"required": [
"token"
],
"title": "EditorTokenOut",
"type": "object"
},
"EffectiveAccessOut": {
"description": "One access code the user holds, with every reason they hold it.\n\nAnswers \"why can this person do that\". With one role per user the question\nanswered itself. With several it does not, and support cannot read the\ndatabase.",
"properties": {
"access_code": {
"title": "Access Code",
"type": "string"
},
"granted_by": {
"items": {
"$ref": "#/components/schemas/AccessAttributionOut"
},
"title": "Granted By",
"type": "array"
}
},
"required": [
"access_code",
"granted_by"
],
"title": "EffectiveAccessOut",
"type": "object"
},
"EntitlementOut": {
"description": "What a workspace is entitled to, resolved.",
"properties": {
"access_level": {
"title": "Access Level",
"type": "string"
},
"cancel_at_period_end": {
"default": false,
"title": "Cancel At Period End",
"type": "boolean"
},
"current_period_end": {
"anyOf": [
{
"format": "date-time",
"type": "string"
},
{
"type": "null"
}
],
"title": "Current Period End"
},
"limits": {
"additionalProperties": {
"type": "integer"
},
"title": "Limits",
"type": "object"
},
"plan": {
"anyOf": [
{
"$ref": "#/components/schemas/PlanOut"
},
{
"type": "null"
}
]
},
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Status"
},
"subscription_active": {
"title": "Subscription Active",
"type": "boolean"
}
},
"required": [
"subscription_active",
"access_level",
"limits"
],
"title": "EntitlementOut",
"type": "object"
},
"ExportDocxRequest": {
"properties": {
"filename": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": "document",
"description": "The name of the exported file",
"title": "Filename"
},
"markdown_content": {
"description": "The markdown content to convert to DOCX",
"title": "Markdown Content",
"type": "string"
}
},
"required": [
"markdown_content"
],
"title": "ExportDocxRequest",
"type": "object"
},
"ExportHTMLRequest": {
"properties": {
"filename": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": "document",
"description": "The name of the exported file",
"title": "Filename"
},
"project_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "The ID of the project for activity logging",
"title": "Project Id"
},
"xml_content": {
"description": "The XML content to convert to HTML",
"title": "Xml Content",
"type": "string"
}
},
"required": [
"xml_content"
],
"title": "ExportHTMLRequest",
"type": "object"
},
"ExportPdfRequest": {
"properties": {
"filename": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": "document",
"description": "The name of the exported file",
"title": "Filename"
},
"markdown_content": {
"description": "The markdown content to convert to PDF",
"title": "Markdown Content",
"type": "string"
}
},
"required": [
"markdown_content"
],
"title": "ExportPdfRequest",
"type": "object"
},
"ExportSimpleHTMLRequest": {
"properties": {
"markdown_content": {
"description": "The markdown content to convert to simple HTML",
"title": "Markdown Content",
"type": "string"
}
},
"required": [
"markdown_content"
],
"title": "ExportSimpleHTMLRequest",
"type": "object"
},
"ExportXMLRequest": {
"properties": {
"markdown_content": {
"description": "The markdown content to convert to XML/JATS",
"title": "Markdown Content",
"type": "string"
}
},
"required": [
"markdown_content"
],
"title": "ExportXMLRequest",
"type": "object"
},
"ExtractionRequest": {
"properties": {
"document_id": {
"title": "Document Id",
"type": "integer"
}
},
"required": [
"document_id"
],
"title": "ExtractionRequest",
"type": "object"
},
"ExtractionResponse": {
"properties": {
"cleaned_text": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Cleaned Text"
},
"confidence_score": {
"title": "Confidence Score",
"type": "number"
},
"created_at": {
"format": "date-time",
"title": "Created At",
"type": "string"
},
"document_id": {
"title": "Document Id",
"type": "integer"
},
"document_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Document Type"
},
"extracted_json": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"title": "Extracted Json"
},
"extraction_status": {
"title": "Extraction Status",
"type": "string"
},
"id": {
"title": "Id",
"type": "integer"
},
"raw_text": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Raw Text"
},
"updated_at": {
"format": "date-time",
"title": "Updated At",
"type": "string"
}
},
"required": [
"document_id",
"id",
"confidence_score",
"extraction_status",
"created_at",
"updated_at"
],
"title": "ExtractionResponse",
"type": "object"
},
"ForgotPasswordIn": {
"properties": {
"email": {
"format": "email",
"title": "Email",
"type": "string"
}
},
"required": [
"email"
],
"title": "ForgotPasswordIn",
"type": "object"
},
"GlobalConfigUpdate": {
"properties": {
"active_provider": {
"title": "Active Provider",
"type": "string"
},
"enabled_providers": {
"anyOf": [
{
"items": {},
"type": "array"
},
{
"type": "null"
}
],
"title": "Enabled Providers"
},
"global_credentials_json": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"title": "Global Credentials Json"
}
},
"required": [
"active_provider"
],
"title": "GlobalConfigUpdate",
"type": "object"
},
"GlobalConfigUpdatedOut": {
"description": "`PUT /api/signing/config/global`.",
"properties": {
"active_provider": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Active Provider"
},
"status": {
"title": "Status",
"type": "string"
}
},
"required": [
"status"
],
"title": "GlobalConfigUpdatedOut",
"type": "object"
},
"GoogleLoginIn": {
"properties": {
"credential": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Credential"
},
"tenant_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Tenant Id"
},
"token": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Token"
}
},
"title": "GoogleLoginIn",
"type": "object"
},
"GrantRoleIn": {
"properties": {
"expires_at": {
"anyOf": [
{
"format": "date-time",
"type": "string"
},
{
"type": "null"
}
],
"title": "Expires At"
},
"group_id": {
"anyOf": [
{
"format": "uuid",
"type": "string"
},
{
"type": "null"
}
],
"title": "Group Id"
},
"org_unit_id": {
"anyOf": [
{
"format": "uuid",
"type": "string"
},
{
"type": "null"
}
],
"title": "Org Unit Id"
},
"role_id": {
"format": "uuid",
"title": "Role Id",
"type": "string"
},
"user_id": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "User Id"
}
},
"required": [
"role_id"
],
"title": "GrantRoleIn",
"type": "object"
},
"GroupMemberOut": {
"properties": {
"created_at": {
"format": "date-time",
"title": "Created At",
"type": "string"
},
"group_id": {
"format": "uuid",
"title": "Group Id",
"type": "string"
},
"id": {
"format": "uuid",
"title": "Id",
"type": "string"
},
"user_id": {
"title": "User Id",
"type": "integer"
}
},
"required": [
"id",
"user_id",
"group_id",
"created_at"
],
"title": "GroupMemberOut",
"type": "object"
},
"HTTPValidationError": {
"properties": {
"detail": {
"items": {
"$ref": "#/components/schemas/ValidationError"
},
"title": "Detail",
"type": "array"
}
},
"title": "HTTPValidationError",
"type": "object"
},
"LeadOut": {
"properties": {
"created_at": {
"format": "date-time",
"title": "Created At",
"type": "string"
},
"end_date": {
"anyOf": [
{
"format": "date",
"type": "string"
},
{
"type": "null"
}
],
"title": "End Date"
},
"id": {
"format": "uuid",
"title": "Id",
"type": "string"
},
"note": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Note"
},
"org_unit_id": {
"format": "uuid",
"title": "Org Unit Id",
"type": "string"
},
"start_date": {
"format": "date",
"title": "Start Date",
"type": "string"
},
"user_id": {
"title": "User Id",
"type": "integer"
}
},
"required": [
"id",
"org_unit_id",
"user_id",
"start_date",
"created_at"
],
"title": "LeadOut",
"type": "object"
},
"MarkedCountOut": {
"description": "`{\"marked\": n}` — bulk mark-as-read.",
"properties": {
"marked": {
"title": "Marked",
"type": "integer"
}
},
"required": [
"marked"
],
"title": "MarkedCountOut",
"type": "object"
},
"MeStatsOut": {
"description": "`GET /api/me/stats`. The camelCase keys are the existing contract — the\nfrontend reads them as they are, so they are pinned rather than tidied.\nRenaming them is a frontend change, not a schema change.",
"properties": {
"joined": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Joined"
},
"subscription": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Subscription"
},
"totalFiles": {
"default": 0,
"title": "Totalfiles",
"type": "integer"
},
"totalProjects": {
"default": 0,
"title": "Totalprojects",
"type": "integer"
}
},
"title": "MeStatsOut",
"type": "object"
},
"MemberOut": {
"properties": {
"created_at": {
"format": "date-time",
"title": "Created At",
"type": "string"
},
"id": {
"format": "uuid",
"title": "Id",
"type": "string"
},
"is_primary": {
"title": "Is Primary",
"type": "boolean"
},
"org_unit_id": {
"format": "uuid",
"title": "Org Unit Id",
"type": "string"
},
"user_id": {
"title": "User Id",
"type": "integer"
}
},
"required": [
"id",
"user_id",
"org_unit_id",
"is_primary",
"created_at"
],
"title": "MemberOut",
"type": "object"
},
"MessageOut": {
"description": "`{\"message\": \"...\"}` — the most common acknowledgement in the codebase.",
"properties": {
"message": {
"title": "Message",
"type": "string"
}
},
"required": [
"message"
],
"title": "MessageOut",
"type": "object"
},
"MetricCountOut": {
"properties": {
"recent": {
"title": "Recent",
"type": "integer"
},
"total": {
"title": "Total",
"type": "integer"
},
"trend": {
"items": {
"$ref": "#/components/schemas/MetricTrendPointOut"
},
"title": "Trend",
"type": "array"
}
},
"required": [
"total",
"recent",
"trend"
],
"title": "MetricCountOut",
"type": "object"
},
"MetricTrendOnlyOut": {
"properties": {
"trend": {
"items": {
"$ref": "#/components/schemas/MetricTrendPointOut"
},
"title": "Trend",
"type": "array"
}
},
"required": [
"trend"
],
"title": "MetricTrendOnlyOut",
"type": "object"
},
"MetricTrendPointOut": {
"properties": {
"date": {
"title": "Date",
"type": "string"
},
"value": {
"title": "Value",
"type": "integer"
}
},
"required": [
"date",
"value"
],
"title": "MetricTrendPointOut",
"type": "object"
},
"NotificationOut": {
"properties": {
"created_at": {
"format": "date-time",
"title": "Created At",
"type": "string"
},
"id": {
"title": "Id",
"type": "integer"
},
"is_read": {
"default": false,
"title": "Is Read",
"type": "boolean"
},
"message": {
"title": "Message",
"type": "string"
},
"notif_type": {
"title": "Notif Type",
"type": "string"
},
"resource_id": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Resource Id"
},
"resource_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Resource Type"
},
"tenant_id": {
"format": "uuid",
"title": "Tenant Id",
"type": "string"
},
"title": {
"title": "Title",
"type": "string"
},
"user_id": {
"title": "User Id",
"type": "integer"
}
},
"required": [
"id",
"tenant_id",
"user_id",
"notif_type",
"title",
"message",
"created_at"
],
"title": "NotificationOut",
"type": "object"
},
"OrgStatusOut": {
"description": "Named `OrgStatusOut`, not `StatusOut`.\n\nAnother module already exports a `StatusOut`, and a duplicate schema name\nmakes openapi-typescript namespace **both** of them — which silently breaks\nthe alias the frontend already had for the original. The generated types are\na shared namespace; colliding in it is a breaking change to somebody else's\nimport.",
"properties": {
"status": {
"title": "Status",
"type": "string"
}
},
"required": [
"status"
],
"title": "OrgStatusOut",
"type": "object"
},
"OrgUnitOut": {
"properties": {
"code": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Code"
},
"created_at": {
"format": "date-time",
"title": "Created At",
"type": "string"
},
"depth": {
"title": "Depth",
"type": "integer"
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Description"
},
"id": {
"format": "uuid",
"title": "Id",
"type": "string"
},
"is_deleted": {
"title": "Is Deleted",
"type": "boolean"
},
"name": {
"title": "Name",
"type": "string"
},
"parent_id": {
"anyOf": [
{
"format": "uuid",
"type": "string"
},
{
"type": "null"
}
],
"title": "Parent Id"
},
"sort_order": {
"title": "Sort Order",
"type": "integer"
},
"tenant_id": {
"format": "uuid",
"title": "Tenant Id",
"type": "string"
},
"unit_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Unit Type"
},
"updated_at": {
"format": "date-time",
"title": "Updated At",
"type": "string"
}
},
"required": [
"id",
"tenant_id",
"name",
"sort_order",
"depth",
"is_deleted",
"created_at",
"updated_at"
],
"title": "OrgUnitOut",
"type": "object"
},
"PageOperation": {
"properties": {
"height": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Height"
},
"page_index": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Page Index"
},
"target_index": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Target Index"
},
"type": {
"title": "Type",
"type": "string"
},
"width": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Width"
}
},
"required": [
"type"
],
"title": "PageOperation",
"type": "object"
},
"PaginatedActivityLogsOut": {
"properties": {
"items": {
"items": {
"$ref": "#/components/schemas/ActivityLogOut"
},
"title": "Items",
"type": "array"
},
"page": {
"title": "Page",
"type": "integer"
},
"page_size": {
"title": "Page Size",
"type": "integer"
},
"total": {
"title": "Total",
"type": "integer"
},
"total_pages": {
"title": "Total Pages",
"type": "integer"
}
},
"required": [
"items",
"total",
"page",
"page_size",
"total_pages"
],
"title": "PaginatedActivityLogsOut",
"type": "object"
},
"PaginatedUsersOut": {
"properties": {
"items": {
"items": {
"$ref": "#/components/schemas/UserListOut"
},
"title": "Items",
"type": "array"
},
"page": {
"title": "Page",
"type": "integer"
},
"page_size": {
"title": "Page Size",
"type": "integer"
},
"total": {
"title": "Total",
"type": "integer"
},
"total_pages": {
"title": "Total Pages",
"type": "integer"
}
},
"required": [
"items",
"total",
"page",
"page_size",
"total_pages"
],
"title": "PaginatedUsersOut",
"type": "object"
},
"Pagination": {
"properties": {
"limit": {
"title": "Limit",
"type": "integer"
},
"offset": {
"title": "Offset",
"type": "integer"
},
"total_count": {
"title": "Total Count",
"type": "integer"
}
},
"required": [
"limit",
"offset",
"total_count"
],
"title": "Pagination",
"type": "object"
},
"PdfBlockAddition": {
"properties": {
"align": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": 0,
"title": "Align"
},
"bg_color": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Bg Color"
},
"bold": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": false,
"title": "Bold"
},
"color": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": "#000000",
"title": "Color"
},
"content": {
"title": "Content",
"type": "string"
},
"font": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Font"
},
"font_size": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": 14,
"title": "Font Size"
},
"height": {
"title": "Height",
"type": "number"
},
"italic": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": false,
"title": "Italic"
},
"page": {
"title": "Page",
"type": "integer"
},
"type": {
"title": "Type",
"type": "string"
},
"width": {
"title": "Width",
"type": "number"
},
"x": {
"title": "X",
"type": "number"
},
"y": {
"title": "Y",
"type": "number"
}
},
"required": [
"type",
"page",
"x",
"y",
"width",
"height",
"content"
],
"title": "PdfBlockAddition",
"type": "object"
},
"PlanOut": {
"properties": {
"code": {
"title": "Code",
"type": "string"
},
"currency": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Currency"
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Description"
},
"id": {
"format": "uuid",
"title": "Id",
"type": "string"
},
"is_public": {
"title": "Is Public",
"type": "boolean"
},
"limits": {
"additionalProperties": {
"type": "integer"
},
"title": "Limits",
"type": "object"
},
"name": {
"title": "Name",
"type": "string"
},
"price_display": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Price Display"
},
"sort_order": {
"title": "Sort Order",
"type": "integer"
}
},
"required": [
"id",
"code",
"name",
"is_public",
"sort_order",
"limits"
],
"title": "PlanOut",
"type": "object"
},
"PresignedUploadOut": {
"description": "`POST /api/drive/upload/presigned` — a direct-to-storage upload ticket.",
"properties": {
"content_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Content Type"
},
"filename": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Filename"
},
"storage_key": {
"title": "Storage Key",
"type": "string"
},
"upload_url": {
"title": "Upload Url",
"type": "string"
}
},
"required": [
"upload_url",
"storage_key"
],
"title": "PresignedUploadOut",
"type": "object"
},
"ProjectActivityOut": {
"properties": {
"activities": {
"default": [],
"items": {
"additionalProperties": true,
"type": "object"
},
"title": "Activities",
"type": "array"
}
},
"title": "ProjectActivityOut",
"type": "object"
},
"ProjectCommentsOut": {
"properties": {
"comments": {
"default": [],
"items": {
"additionalProperties": true,
"type": "object"
},
"title": "Comments",
"type": "array"
}
},
"title": "ProjectCommentsOut",
"type": "object"
},
"ProjectDetailOut": {
"description": "`GET /api/me/projects/{project_id}`.\n\nSix fields the endpoint returns that `ProjectOut` never declared. Applying\n`ProjectOut` directly as a `response_model` would have deleted every one of\nthem from the payload, including the document bodies the editor loads.",
"properties": {
"createdAt": {
"format": "date-time",
"title": "Createdat",
"type": "string"
},
"currentStep": {
"title": "Currentstep",
"type": "string"
},
"driveFileId": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Drivefileid"
},
"fileType": {
"title": "Filetype",
"type": "string"
},
"htmlContent": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Htmlcontent"
},
"id": {
"title": "Id",
"type": "integer"
},
"markdownContent": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Markdowncontent"
},
"name": {
"title": "Name",
"type": "string"
},
"originalFileInfo": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"title": "Originalfileinfo"
},
"outputFormat": {
"title": "Outputformat",
"type": "string"
},
"progress": {
"title": "Progress",
"type": "integer"
},
"role": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Role"
},
"sessionId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Sessionid"
},
"status": {
"title": "Status",
"type": "string"
},
"updatedAt": {
"anyOf": [
{
"format": "date-time",
"type": "string"
},
{
"type": "null"
}
],
"title": "Updatedat"
},
"xmlContent": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Xmlcontent"
}
},
"required": [
"id",
"name",
"status",
"fileType",
"outputFormat",
"progress",
"currentStep",
"sessionId",
"createdAt",
"updatedAt"
],
"title": "ProjectDetailOut",
"type": "object"
},
"ProjectDetailsOut": {
"description": "`GET /api/me/projects/{project_id}/details` — snake_case, assembled by the\ncontroller rather than serialised from the model.",
"properties": {
"created_at": {
"anyOf": [
{
"format": "date-time",
"type": "string"
},
{
"type": "null"
}
],
"title": "Created At"
},
"current_step": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Current Step"
},
"current_version_number": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Current Version Number"
},
"drive_file_id": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Drive File Id"
},
"file_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "File Type"
},
"id": {
"title": "Id",
"type": "integer"
},
"name": {
"title": "Name",
"type": "string"
},
"owner": {
"anyOf": [
{
"$ref": "#/components/schemas/ProjectOwnerOut"
},
{
"type": "null"
}
]
},
"permission": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Permission"
},
"progress": {
"default": 0,
"title": "Progress",
"type": "integer"
},
"shares_count": {
"default": 0,
"title": "Shares Count",
"type": "integer"
},
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Status"
},
"updated_at": {
"anyOf": [
{
"format": "date-time",
"type": "string"
},
{
"type": "null"
}
],
"title": "Updated At"
},
"versions_count": {
"default": 0,
"title": "Versions Count",
"type": "integer"
}
},
"required": [
"id",
"name"
],
"title": "ProjectDetailsOut",
"type": "object"
},
"ProjectOut": {
"properties": {
"createdAt": {
"format": "date-time",
"title": "Createdat",
"type": "string"
},
"currentStep": {
"title": "Currentstep",
"type": "string"
},
"fileType": {
"title": "Filetype",
"type": "string"
},
"id": {
"title": "Id",
"type": "integer"
},
"name": {
"title": "Name",
"type": "string"
},
"outputFormat": {
"title": "Outputformat",
"type": "string"
},
"progress": {
"title": "Progress",
"type": "integer"
},
"sessionId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Sessionid"
},
"status": {
"title": "Status",
"type": "string"
},
"updatedAt": {
"anyOf": [
{
"format": "date-time",
"type": "string"
},
{
"type": "null"
}
],
"title": "Updatedat"
}
},
"required": [
"id",
"name",
"status",
"fileType",
"outputFormat",
"progress",
"currentStep",
"sessionId",
"createdAt",
"updatedAt"
],
"title": "ProjectOut",
"type": "object"
},
"ProjectOwnerOut": {
"additionalProperties": true,
"description": "The `owner` object nested in a project's details.",
"properties": {},
"title": "ProjectOwnerOut",
"type": "object"
},
"RegisterIn": {
"properties": {
"designation": {
"anyOf": [
{
"maxLength": 100,
"type": "string"
},
{
"type": "null"
}
],
"title": "Designation"
},
"email": {
"format": "email",
"title": "Email",
"type": "string"
},
"name": {
"minLength": 2,
"title": "Name",
"type": "string"
},
"password": {
"minLength": 12,
"title": "Password",
"type": "string"
}
},
"required": [
"email",
"password",
"name"
],
"title": "RegisterIn",
"type": "object"
},
"RegisterOut": {
"properties": {
"email": {
"anyOf": [
{
"format": "email",
"type": "string"
},
{
"type": "null"
}
],
"title": "Email"
},
"message": {
"title": "Message",
"type": "string"
},
"tenant_id": {
"anyOf": [
{
"format": "uuid",
"type": "string"
},
{
"type": "null"
}
],
"title": "Tenant Id"
},
"user_id": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "User Id"
}
},
"required": [
"message"
],
"title": "RegisterOut",
"type": "object"
},
"ReparentIn": {
"properties": {
"parent_id": {
"anyOf": [
{
"format": "uuid",
"type": "string"
},
{
"type": "null"
}
],
"title": "Parent Id"
}
},
"title": "ReparentIn",
"type": "object"
},
"ResendReminderRequest": {
"properties": {
"email": {
"title": "Email",
"type": "string"
}
},
"required": [
"email"
],
"title": "ResendReminderRequest",
"type": "object"
},
"ResetPasswordIn": {
"properties": {
"new_password": {
"minLength": 12,
"title": "New Password",
"type": "string"
},
"token": {
"title": "Token",
"type": "string"
}
},
"required": [
"token",
"new_password"
],
"title": "ResetPasswordIn",
"type": "object"
},
"ResolveDeviceLimitIn": {
"properties": {
"logout_device_id": {
"title": "Logout Device Id",
"type": "integer"
}
},
"required": [
"logout_device_id"
],
"title": "ResolveDeviceLimitIn",
"type": "object"
},
"RoleAccessOut": {
"properties": {
"access_code": {
"title": "Access Code",
"type": "string"
},
"category": {
"title": "Category",
"type": "string"
},
"id": {
"format": "uuid",
"title": "Id",
"type": "string"
},
"name": {
"title": "Name",
"type": "string"
},
"parent_id": {
"anyOf": [
{
"format": "uuid",
"type": "string"
},
{
"type": "null"
}
],
"title": "Parent Id"
}
},
"required": [
"id",
"name",
"access_code",
"category"
],
"title": "RoleAccessOut",
"type": "object"
},
"RoleAccessesOut": {
"description": "`GET /api/access/get` — the caller's roles and the codes they carry.",
"properties": {
"accesses": {
"default": [],
"items": {
"type": "string"
},
"title": "Accesses",
"type": "array"
},
"role": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Role"
},
"roles": {
"default": [],
"items": {
"type": "string"
},
"title": "Roles",
"type": "array"
},
"tenant_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Tenant Id"
}
},
"title": "RoleAccessesOut",
"type": "object"
},
"RoleAssignedOut": {
"description": "`POST /api/roles/assign-user`.",
"properties": {
"message": {
"title": "Message",
"type": "string"
},
"role_id": {
"title": "Role Id",
"type": "string"
},
"user_id": {
"title": "User Id",
"type": "integer"
}
},
"required": [
"message",
"user_id",
"role_id"
],
"title": "RoleAssignedOut",
"type": "object"
},
"RoleAssignmentOut": {
"description": "One role a user holds, and how they hold it.\n\n`source` is the field that keeps the interface honest:\n\n \"primary\" the legacy `users.role_id`. Changed through\n `PATCH /api/admin/users/{id}`, **not** revocable as a grant,\n and while it is set it cannot be narrowed by anything (see\n `ScopeService._resolve`)\n \"grant\" a `user_roles` row naming this user. Added and revoked freely\n \"group\" a `user_roles` row naming a group this user belongs to. It\n confers codes; it is removed by editing the group\n\nRendering the three identically would imply that removing any of them is the\nsame action. It is not, and that is exactly where a permissions screen\nmisleads the person using it.",
"properties": {
"assigned_by_id": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Assigned By Id"
},
"created_at": {
"anyOf": [
{
"format": "date-time",
"type": "string"
},
{
"type": "null"
}
],
"title": "Created At"
},
"expires_at": {
"anyOf": [
{
"format": "date-time",
"type": "string"
},
{
"type": "null"
}
],
"title": "Expires At"
},
"grant_id": {
"anyOf": [
{
"format": "uuid",
"type": "string"
},
{
"type": "null"
}
],
"title": "Grant Id"
},
"group_id": {
"anyOf": [
{
"format": "uuid",
"type": "string"
},
{
"type": "null"
}
],
"title": "Group Id"
},
"group_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Group Name"
},
"is_expired": {
"default": false,
"title": "Is Expired",
"type": "boolean"
},
"org_unit_id": {
"anyOf": [
{
"format": "uuid",
"type": "string"
},
{
"type": "null"
}
],
"title": "Org Unit Id"
},
"org_unit_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Org Unit Name"
},
"role_id": {
"format": "uuid",
"title": "Role Id",
"type": "string"
},
"role_name": {
"title": "Role Name",
"type": "string"
},
"source": {
"enum": [
"primary",
"grant",
"group"
],
"title": "Source",
"type": "string"
}
},
"required": [
"role_id",
"role_name",
"source"
],
"title": "RoleAssignmentOut",
"type": "object"
},
"RoleCreate": {
"properties": {
"access_ids": {
"anyOf": [
{
"items": {
"format": "uuid",
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": [],
"title": "Access Ids"
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Description"
},
"is_default": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": false,
"title": "Is Default"
},
"role_name": {
"maxLength": 100,
"title": "Role Name",
"type": "string"
},
"tenant_id": {
"anyOf": [
{
"format": "uuid",
"type": "string"
},
{
"type": "null"
}
],
"title": "Tenant Id"
}
},
"required": [
"role_name"
],
"title": "RoleCreate",
"type": "object"
},
"RoleOut": {
"properties": {
"created_at": {
"anyOf": [
{
"format": "date-time",
"type": "string"
},
{
"type": "null"
}
],
"title": "Created At"
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Description"
},
"id": {
"format": "uuid",
"title": "Id",
"type": "string"
},
"is_default": {
"default": false,
"title": "Is Default",
"type": "boolean"
},
"name": {
"title": "Name",
"type": "string"
},
"tenant_id": {
"anyOf": [
{
"format": "uuid",
"type": "string"
},
{
"type": "null"
}
],
"title": "Tenant Id"
}
},
"required": [
"id",
"name"
],
"title": "RoleOut",
"type": "object"
},
"RolePaginatedOut": {
"properties": {
"items": {
"items": {
"$ref": "#/components/schemas/RoleOut"
},
"title": "Items",
"type": "array"
},
"page": {
"title": "Page",
"type": "integer"
},
"page_size": {
"title": "Page Size",
"type": "integer"
},
"total": {
"title": "Total",
"type": "integer"
},
"total_pages": {
"title": "Total Pages",
"type": "integer"
}
},
"required": [
"items",
"total",
"page",
"page_size",
"total_pages"
],
"title": "RolePaginatedOut",
"type": "object"
},
"RoleUpdate": {
"properties": {
"access_ids": {
"anyOf": [
{
"items": {
"format": "uuid",
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"title": "Access Ids"
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Description"
},
"is_default": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Is Default"
},
"role_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Role Name"
}
},
"title": "RoleUpdate",
"type": "object"
},
"RoleWithAccessesOut": {
"properties": {
"accesses": {
"default": [],
"items": {
"$ref": "#/components/schemas/RoleAccessOut"
},
"title": "Accesses",
"type": "array"
},
"assigned_user_count": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Assigned User Count"
},
"created_at": {
"anyOf": [
{
"format": "date-time",
"type": "string"
},
{
"type": "null"
}
],
"title": "Created At"
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Description"
},
"id": {
"format": "uuid",
"title": "Id",
"type": "string"
},
"is_default": {
"default": false,
"title": "Is Default",
"type": "boolean"
},
"name": {
"title": "Name",
"type": "string"
},
"tenant_id": {
"anyOf": [
{
"format": "uuid",
"type": "string"
},
{
"type": "null"
}
],
"title": "Tenant Id"
}
},
"required": [
"id",
"name"
],
"title": "RoleWithAccessesOut",
"type": "object"
},
"SaveDraftsRequest": {
"properties": {
"drafts": {
"items": {
"additionalProperties": true,
"type": "object"
},
"title": "Drafts",
"type": "array"
}
},
"required": [
"drafts"
],
"title": "SaveDraftsRequest",
"type": "object"
},
"SaveEditsRequest": {
"properties": {
"additions": {
"default": [],
"items": {
"$ref": "#/components/schemas/PdfBlockAddition"
},
"title": "Additions",
"type": "array"
},
"edits": {
"default": [],
"items": {
"$ref": "#/components/schemas/BlockEdit"
},
"title": "Edits",
"type": "array"
},
"page_ops": {
"default": [],
"items": {
"$ref": "#/components/schemas/PageOperation"
},
"title": "Page Ops",
"type": "array"
}
},
"title": "SaveEditsRequest",
"type": "object"
},
"ScopedRoleOut": {
"properties": {
"created_at": {
"format": "date-time",
"title": "Created At",
"type": "string"
},
"expires_at": {
"anyOf": [
{
"format": "date-time",
"type": "string"
},
{
"type": "null"
}
],
"title": "Expires At"
},
"group_id": {
"anyOf": [
{
"format": "uuid",
"type": "string"
},
{
"type": "null"
}
],
"title": "Group Id"
},
"id": {
"format": "uuid",
"title": "Id",
"type": "string"
},
"org_unit_id": {
"anyOf": [
{
"format": "uuid",
"type": "string"
},
{
"type": "null"
}
],
"title": "Org Unit Id"
},
"role_id": {
"format": "uuid",
"title": "Role Id",
"type": "string"
},
"user_id": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "User Id"
}
},
"required": [
"id",
"role_id",
"created_at"
],
"title": "ScopedRoleOut",
"type": "object"
},
"SelfSignRequest": {
"properties": {
"drive_file_id": {
"title": "Drive File Id",
"type": "integer"
},
"placements": {
"items": {
"$ref": "#/components/schemas/SignaturePlacement"
},
"title": "Placements",
"type": "array"
}
},
"required": [
"drive_file_id",
"placements"
],
"title": "SelfSignRequest",
"type": "object"
},
"SelfSignResponse": {
"properties": {
"id": {
"title": "Id",
"type": "string"
},
"signed_file_id": {
"title": "Signed File Id",
"type": "integer"
},
"signed_file_name": {
"title": "Signed File Name",
"type": "string"
},
"status": {
"title": "Status",
"type": "string"
}
},
"required": [
"id",
"status",
"signed_file_id",
"signed_file_name"
],
"title": "SelfSignResponse",
"type": "object"
},
"SendOTPRequest": {
"properties": {
"email": {
"title": "Email",
"type": "string"
},
"slug": {
"title": "Slug",
"type": "string"
}
},
"required": [
"slug",
"email"
],
"title": "SendOTPRequest",
"type": "object"
},
"SetLeadIn": {
"properties": {
"note": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Note"
},
"start_date": {
"format": "date",
"title": "Start Date",
"type": "string"
},
"user_id": {
"title": "User Id",
"type": "integer"
}
},
"required": [
"user_id",
"start_date"
],
"title": "SetLeadIn",
"type": "object"
},
"SetOverrideIn": {
"properties": {
"key": {
"title": "Key",
"type": "string"
},
"note": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Why. An exception with no reason recorded becomes folklore.",
"title": "Note"
},
"value": {
"description": "-1 means unlimited",
"title": "Value",
"type": "integer"
}
},
"required": [
"key",
"value"
],
"title": "SetOverrideIn",
"type": "object"
},
"SetPlanIn": {
"properties": {
"current_period_end": {
"anyOf": [
{
"format": "date-time",
"type": "string"
},
{
"type": "null"
}
],
"title": "Current Period End"
},
"external_ref": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "External Ref"
},
"plan_code": {
"title": "Plan Code",
"type": "string"
},
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Status"
}
},
"required": [
"plan_code"
],
"title": "SetPlanIn",
"type": "object"
},
"ShareMetricOut": {
"properties": {
"external": {
"title": "External",
"type": "integer"
},
"internal": {
"title": "Internal",
"type": "integer"
}
},
"required": [
"internal",
"external"
],
"title": "ShareMetricOut",
"type": "object"
},
"ShareProjectRequest": {
"properties": {
"permission": {
"title": "Permission",
"type": "string"
},
"project_id": {
"title": "Project Id",
"type": "integer"
},
"user_email": {
"format": "email",
"title": "User Email",
"type": "string"
}
},
"required": [
"project_id",
"user_email",
"permission"
],
"title": "ShareProjectRequest",
"type": "object"
},
"ShareProjectResponse": {
"properties": {
"created_at": {
"format": "date-time",
"title": "Created At",
"type": "string"
},
"id": {
"title": "Id",
"type": "integer"
},
"permission": {
"title": "Permission",
"type": "string"
},
"project_id": {
"title": "Project Id",
"type": "integer"
},
"shared_with_user_email": {
"format": "email",
"title": "Shared With User Email",
"type": "string"
},
"shared_with_user_id": {
"title": "Shared With User Id",
"type": "integer"
},
"shared_with_user_name": {
"title": "Shared With User Name",
"type": "string"
}
},
"required": [
"id",
"project_id",
"shared_with_user_id",
"shared_with_user_email",
"shared_with_user_name",
"permission",
"created_at"
],
"title": "ShareProjectResponse",
"type": "object"
},
"SharedProjectInfo": {
"properties": {
"created_at": {
"format": "date-time",
"title": "Created At",
"type": "string"
},
"current_step": {
"title": "Current Step",
"type": "string"
},
"file_type": {
"title": "File Type",
"type": "string"
},
"id": {
"title": "Id",
"type": "integer"
},
"name": {
"title": "Name",
"type": "string"
},
"output_format": {
"title": "Output Format",
"type": "string"
},
"owner_email": {
"format": "email",
"title": "Owner Email",
"type": "string"
},
"owner_name": {
"title": "Owner Name",
"type": "string"
},
"permission": {
"title": "Permission",
"type": "string"
},
"progress": {
"title": "Progress",
"type": "integer"
},
"session_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Session Id"
},
"shared_at": {
"format": "date-time",
"title": "Shared At",
"type": "string"
},
"status": {
"title": "Status",
"type": "string"
}
},
"required": [
"id",
"name",
"status",
"file_type",
"output_format",
"progress",
"current_step",
"session_id",
"created_at",
"owner_email",
"owner_name",
"permission",
"shared_at"
],
"title": "SharedProjectInfo",
"type": "object"
},
"SignatureImprintItem": {
"properties": {
"bbox_points": {
"items": {
"type": "number"
},
"title": "Bbox Points",
"type": "array"
},
"id": {
"title": "Id",
"type": "string"
},
"page_number": {
"title": "Page Number",
"type": "integer"
},
"signature_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Signature Id"
}
},
"required": [
"id",
"page_number",
"bbox_points",
"signature_id"
],
"title": "SignatureImprintItem",
"type": "object"
},
"SignatureImprintsResponse": {
"properties": {
"imprints": {
"items": {
"$ref": "#/components/schemas/SignatureImprintItem"
},
"title": "Imprints",
"type": "array"
}
},
"required": [
"imprints"
],
"title": "SignatureImprintsResponse",
"type": "object"
},
"SignaturePlacement": {
"properties": {
"content_base64": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Content Base64"
},
"element_type": {
"title": "Element Type",
"type": "string"
},
"font_size": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": 14,
"title": "Font Size"
},
"height": {
"title": "Height",
"type": "number"
},
"page": {
"title": "Page",
"type": "integer"
},
"page_width_px": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Page Width Px"
},
"signature_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Signature Id"
},
"signer_designation": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Signer Designation"
},
"signer_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Signer Name"
},
"text_content": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Text Content"
},
"use_template": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": true,
"title": "Use Template"
},
"width": {
"title": "Width",
"type": "number"
},
"x": {
"title": "X",
"type": "number"
},
"y": {
"title": "Y",
"type": "number"
}
},
"required": [
"page",
"x",
"y",
"width",
"height",
"element_type"
],
"title": "SignaturePlacement",
"type": "object"
},
"SigningConfigOut": {
"properties": {
"custom_credentials_json": {
"additionalProperties": true,
"default": {},
"title": "Custom Credentials Json",
"type": "object"
},
"custom_provider": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Custom Provider"
},
"enabled_providers": {
"default": [],
"items": {
"type": "string"
},
"title": "Enabled Providers",
"type": "array"
},
"global_active_provider": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Global Active Provider"
},
"is_custom_credentials": {
"default": false,
"title": "Is Custom Credentials",
"type": "boolean"
},
"provider": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Provider"
},
"use_custom_credentials": {
"default": false,
"title": "Use Custom Credentials",
"type": "boolean"
}
},
"title": "SigningConfigOut",
"type": "object"
},
"SigningHistoryItem": {
"properties": {
"completed_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Completed At"
},
"created_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Created At"
},
"drive_file_id": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Drive File Id"
},
"file_name": {
"title": "File Name",
"type": "string"
},
"id": {
"title": "Id",
"type": "string"
},
"ip_address": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Ip Address"
},
"signed_file_id": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Signed File Id"
},
"signing_metadata": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"title": "Signing Metadata"
},
"signing_type": {
"title": "Signing Type",
"type": "string"
},
"status": {
"title": "Status",
"type": "string"
},
"user_agent": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "User Agent"
}
},
"required": [
"id",
"signing_type",
"status",
"file_name"
],
"title": "SigningHistoryItem",
"type": "object"
},
"SimpleMetricOut": {
"properties": {
"total": {
"title": "Total",
"type": "integer"
}
},
"required": [
"total"
],
"title": "SimpleMetricOut",
"type": "object"
},
"StatusMessageOut": {
"description": "`{\"status\": \"...\", \"message\": \"...\"}`.",
"properties": {
"message": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Message"
},
"status": {
"title": "Status",
"type": "string"
}
},
"required": [
"status"
],
"title": "StatusMessageOut",
"type": "object"
},
"StatusOut": {
"description": "`{\"status\": \"ok\"}` / `{\"status\": \"success\"}`.",
"properties": {
"status": {
"title": "Status",
"type": "string"
}
},
"required": [
"status"
],
"title": "StatusOut",
"type": "object"
},
"StorageAlerts": {
"properties": {
"banner": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Banner"
},
"center_message": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Center Message"
},
"current_threshold": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Current Threshold"
},
"ring_color": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Ring Color"
},
"severity": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Severity"
}
},
"title": "StorageAlerts",
"type": "object"
},
"StorageBreakdown": {
"properties": {
"docx": {
"default": 0,
"title": "Docx",
"type": "integer"
},
"html": {
"default": 0,
"title": "Html",
"type": "integer"
},
"other": {
"default": 0,
"title": "Other",
"type": "integer"
},
"pdf": {
"default": 0,
"title": "Pdf",
"type": "integer"
}
},
"title": "StorageBreakdown",
"type": "object"
},
"StorageFileSummary": {
"description": "One row of `GET /api/storage/files`, as built by StorageService.",
"properties": {
"created_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Created At"
},
"id": {
"title": "Id",
"type": "integer"
},
"mime_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Mime Type"
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Name"
},
"size": {
"default": 0,
"title": "Size",
"type": "integer"
},
"size_formatted": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Size Formatted"
}
},
"required": [
"id"
],
"title": "StorageFileSummary",
"type": "object"
},
"StorageFilesResponse": {
"properties": {
"files": {
"default": [],
"items": {
"$ref": "#/components/schemas/StorageFileSummary"
},
"title": "Files",
"type": "array"
},
"pagination": {
"$ref": "#/components/schemas/Pagination"
},
"storage": {
"$ref": "#/components/schemas/StorageUsageDetail"
}
},
"required": [
"pagination",
"storage"
],
"title": "StorageFilesResponse",
"type": "object"
},
"StorageMetricOut": {
"properties": {
"quota_bytes": {
"title": "Quota Bytes",
"type": "integer"
},
"quota_formatted": {
"title": "Quota Formatted",
"type": "string"
},
"usage_percentage": {
"title": "Usage Percentage",
"type": "number"
},
"used_bytes": {
"title": "Used Bytes",
"type": "integer"
},
"used_formatted": {
"title": "Used Formatted",
"type": "string"
}
},
"required": [
"used_bytes",
"quota_bytes",
"usage_percentage",
"used_formatted",
"quota_formatted"
],
"title": "StorageMetricOut",
"type": "object"
},
"StorageNonceOut": {
"properties": {
"nonce": {
"title": "Nonce",
"type": "string"
}
},
"required": [
"nonce"
],
"title": "StorageNonceOut",
"type": "object"
},
"StorageUsageDetail": {
"description": "The `usage` / `storage` object, shared by both endpoints.",
"properties": {
"alerts": {
"$ref": "#/components/schemas/StorageAlerts",
"default": {}
},
"breakdown": {
"$ref": "#/components/schemas/StorageBreakdown",
"default": {
"docx": 0,
"html": 0,
"other": 0,
"pdf": 0
}
},
"file_count": {
"default": 0,
"title": "File Count",
"type": "integer"
},
"percent": {
"default": 0.0,
"title": "Percent",
"type": "number"
},
"quota_bytes": {
"default": 0,
"title": "Quota Bytes",
"type": "integer"
},
"quota_formatted": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Quota Formatted"
},
"remaining_bytes": {
"default": 0,
"title": "Remaining Bytes",
"type": "integer"
},
"remaining_formatted": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Remaining Formatted"
},
"scope": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Scope"
},
"tenant_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Tenant Id"
},
"total_bytes": {
"default": 0,
"title": "Total Bytes",
"type": "integer"
},
"total_formatted": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Total Formatted"
},
"usage_percentage": {
"default": 0.0,
"title": "Usage Percentage",
"type": "number"
},
"used_bytes": {
"default": 0,
"title": "Used Bytes",
"type": "integer"
},
"used_formatted": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Used Formatted"
},
"user_stats": {
"anyOf": [
{
"$ref": "#/components/schemas/UserStorageStats"
},
{
"type": "null"
}
]
}
},
"title": "StorageUsageDetail",
"type": "object"
},
"StorageUsageResponse": {
"properties": {
"tenant_id": {
"anyOf": [
{
"format": "uuid",
"type": "string"
},
{
"type": "null"
}
],
"title": "Tenant Id"
},
"usage": {
"$ref": "#/components/schemas/StorageUsageDetail"
},
"user_id": {
"title": "User Id",
"type": "integer"
}
},
"required": [
"user_id",
"usage"
],
"title": "StorageUsageResponse",
"type": "object"
},
"SubscriptionOut": {
"properties": {
"cancel_at_period_end": {
"title": "Cancel At Period End",
"type": "boolean"
},
"current_period_end": {
"anyOf": [
{
"format": "date-time",
"type": "string"
},
{
"type": "null"
}
],
"title": "Current Period End"
},
"external_ref": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "External Ref"
},
"id": {
"format": "uuid",
"title": "Id",
"type": "string"
},
"plan_id": {
"format": "uuid",
"title": "Plan Id",
"type": "string"
},
"started_at": {
"format": "date-time",
"title": "Started At",
"type": "string"
},
"status": {
"title": "Status",
"type": "string"
},
"tenant_id": {
"format": "uuid",
"title": "Tenant Id",
"type": "string"
}
},
"required": [
"id",
"tenant_id",
"plan_id",
"status",
"started_at",
"cancel_at_period_end"
],
"title": "SubscriptionOut",
"type": "object"
},
"SuccessOut": {
"description": "`{\"success\": true}`.",
"properties": {
"success": {
"title": "Success",
"type": "boolean"
}
},
"required": [
"success"
],
"title": "SuccessOut",
"type": "object"
},
"SystemConfigurationIn": {
"properties": {
"bool_value": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Bool Value"
},
"config_key": {
"maxLength": 100,
"minLength": 1,
"title": "Config Key",
"type": "string"
},
"int_value": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Int Value"
},
"text_value": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Text Value"
}
},
"required": [
"config_key"
],
"title": "SystemConfigurationIn",
"type": "object"
},
"SystemConfigurationOut": {
"properties": {
"bool_value": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Bool Value"
},
"config_key": {
"title": "Config Key",
"type": "string"
},
"created_at": {
"format": "date-time",
"title": "Created At",
"type": "string"
},
"created_by_id": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Created By Id"
},
"id": {
"format": "uuid",
"title": "Id",
"type": "string"
},
"int_value": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Int Value"
},
"text_value": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Text Value"
},
"updated_at": {
"format": "date-time",
"title": "Updated At",
"type": "string"
},
"updated_by_id": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Updated By Id"
}
},
"required": [
"id",
"config_key",
"created_at",
"updated_at"
],
"title": "SystemConfigurationOut",
"type": "object"
},
"SystemConfigurationPatchIn": {
"properties": {
"bool_value": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Bool Value"
},
"int_value": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Int Value"
},
"text_value": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Text Value"
}
},
"title": "SystemConfigurationPatchIn",
"type": "object"
},
"SystemLimitsOut": {
"properties": {
"active_tenants": {
"title": "Active Tenants",
"type": "integer"
},
"active_users": {
"title": "Active Users",
"type": "integer"
},
"allocated_tenant_user_limit": {
"title": "Allocated Tenant User Limit",
"type": "integer"
},
"available_user_slots": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Available User Slots"
},
"max_tenants": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Max Tenants"
},
"max_users": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Max Users"
}
},
"required": [
"active_tenants",
"active_users",
"allocated_tenant_user_limit"
],
"title": "SystemLimitsOut",
"type": "object"
},
"TenantConfigUpdate": {
"properties": {
"custom_credentials_json": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"title": "Custom Credentials Json"
},
"custom_provider": {
"title": "Custom Provider",
"type": "string"
},
"use_custom_credentials": {
"title": "Use Custom Credentials",
"type": "boolean"
}
},
"required": [
"use_custom_credentials",
"custom_provider"
],
"title": "TenantConfigUpdate",
"type": "object"
},
"TenantContactCreate": {
"properties": {
"email": {
"format": "email",
"title": "Email",
"type": "string"
},
"name": {
"maxLength": 255,
"title": "Name",
"type": "string"
}
},
"required": [
"name",
"email"
],
"title": "TenantContactCreate",
"type": "object"
},
"TenantContactOut": {
"properties": {
"created_at": {
"format": "date-time",
"title": "Created At",
"type": "string"
},
"email": {
"format": "email",
"title": "Email",
"type": "string"
},
"id": {
"format": "uuid",
"title": "Id",
"type": "string"
},
"name": {
"maxLength": 255,
"title": "Name",
"type": "string"
},
"tenant_id": {
"format": "uuid",
"title": "Tenant Id",
"type": "string"
},
"updated_at": {
"format": "date-time",
"title": "Updated At",
"type": "string"
}
},
"required": [
"name",
"email",
"id",
"tenant_id",
"created_at",
"updated_at"
],
"title": "TenantContactOut",
"type": "object"
},
"TenantContactUpdate": {
"properties": {
"email": {
"anyOf": [
{
"format": "email",
"type": "string"
},
{
"type": "null"
}
],
"title": "Email"
},
"name": {
"anyOf": [
{
"maxLength": 255,
"type": "string"
},
{
"type": "null"
}
],
"title": "Name"
}
},
"title": "TenantContactUpdate",
"type": "object"
},
"TenantOut": {
"properties": {
"chat_token_daily_limit": {
"default": 1000000,
"title": "Chat Token Daily Limit",
"type": "integer"
},
"chat_tokens_used_today": {
"default": 0,
"title": "Chat Tokens Used Today",
"type": "integer"
},
"created_at": {
"format": "date-time",
"title": "Created At",
"type": "string"
},
"disable_pdf_compression": {
"default": false,
"title": "Disable Pdf Compression",
"type": "boolean"
},
"envelope_last_reset_at": {
"format": "date-time",
"title": "Envelope Last Reset At",
"type": "string"
},
"envelope_limit": {
"default": -1,
"title": "Envelope Limit",
"type": "integer"
},
"envelope_reset_days": {
"anyOf": [
{
"minimum": 0.0,
"type": "integer"
},
{
"type": "null"
}
],
"title": "Envelope Reset Days"
},
"envelopes_count": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": 0,
"title": "Envelopes Count"
},
"envelopes_used": {
"default": 0,
"title": "Envelopes Used",
"type": "integer"
},
"id": {
"format": "uuid",
"title": "Id",
"type": "string"
},
"is_active": {
"default": true,
"title": "Is Active",
"type": "boolean"
},
"is_deleted": {
"default": false,
"title": "Is Deleted",
"type": "boolean"
},
"max_users_allowed": {
"anyOf": [
{
"minimum": 0.0,
"type": "integer"
},
{
"type": "null"
}
],
"title": "Max Users Allowed"
},
"name": {
"maxLength": 255,
"title": "Name",
"type": "string"
},
"slug": {
"maxLength": 100,
"title": "Slug",
"type": "string"
},
"storage_quota_bytes": {
"default": 1073741824,
"title": "Storage Quota Bytes",
"type": "integer"
},
"updated_at": {
"format": "date-time",
"title": "Updated At",
"type": "string"
},
"used_storage_bytes": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Used Storage Bytes"
},
"used_user_slots": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Used User Slots"
}
},
"required": [
"name",
"slug",
"id",
"created_at",
"updated_at",
"envelope_last_reset_at"
],
"title": "TenantOut",
"type": "object"
},
"TenantSMTPConfigUpsertIn": {
"properties": {
"mail_from": {
"format": "email",
"title": "Mail From",
"type": "string"
},
"smtp_host": {
"maxLength": 255,
"minLength": 1,
"title": "Smtp Host",
"type": "string"
},
"smtp_password": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "If omitted during update, existing password is preserved. Send empty string to clear it.",
"title": "Smtp Password"
},
"smtp_port": {
"default": 587,
"maximum": 65535.0,
"minimum": 1.0,
"title": "Smtp Port",
"type": "integer"
},
"smtp_user": {
"anyOf": [
{
"maxLength": 255,
"type": "string"
},
{
"type": "null"
}
],
"title": "Smtp User"
}
},
"required": [
"smtp_host",
"mail_from"
],
"title": "TenantSMTPConfigUpsertIn",
"type": "object"
},
"TenantSMTPConfigViewOut": {
"properties": {
"configured": {
"title": "Configured",
"type": "boolean"
},
"created_at": {
"anyOf": [
{
"format": "date-time",
"type": "string"
},
{
"type": "null"
}
],
"title": "Created At"
},
"created_by_id": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Created By Id"
},
"has_password": {
"default": false,
"title": "Has Password",
"type": "boolean"
},
"is_active": {
"default": true,
"title": "Is Active",
"type": "boolean"
},
"mail_from": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Mail From"
},
"smtp_host": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Smtp Host"
},
"smtp_port": {
"default": 587,
"title": "Smtp Port",
"type": "integer"
},
"smtp_secure": {
"default": false,
"title": "Smtp Secure",
"type": "boolean"
},
"smtp_user": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Smtp User"
},
"source": {
"enum": [
"tenant",
"fallback"
],
"title": "Source",
"type": "string"
},
"tenant_id": {
"anyOf": [
{
"format": "uuid",
"type": "string"
},
{
"type": "null"
}
],
"title": "Tenant Id"
},
"updated_at": {
"anyOf": [
{
"format": "date-time",
"type": "string"
},
{
"type": "null"
}
],
"title": "Updated At"
},
"updated_by_id": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Updated By Id"
}
},
"required": [
"configured",
"source"
],
"title": "TenantSMTPConfigViewOut",
"type": "object"
},
"TenantStorageConfigUpsertIn": {
"properties": {
"b2_application_key": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "If omitted during update, existing key is preserved. Send empty string to clear it if allowed.",
"title": "B2 Application Key"
},
"b2_clean_bucket": {
"default": "clean-document-bucket",
"maxLength": 255,
"title": "B2 Clean Bucket",
"type": "string"
},
"b2_endpoint": {
"anyOf": [
{
"maxLength": 512,
"type": "string"
},
{
"type": "null"
}
],
"title": "B2 Endpoint"
},
"b2_key_id": {
"maxLength": 255,
"minLength": 1,
"title": "B2 Key Id",
"type": "string"
},
"b2_quarantine_bucket": {
"default": "quarantine-bucket",
"maxLength": 255,
"title": "B2 Quarantine Bucket",
"type": "string"
}
},
"required": [
"b2_key_id"
],
"title": "TenantStorageConfigUpsertIn",
"type": "object"
},
"TenantStorageConfigViewOut": {
"properties": {
"b2_clean_bucket": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "B2 Clean Bucket"
},
"b2_endpoint": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "B2 Endpoint"
},
"b2_key_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "B2 Key Id"
},
"b2_quarantine_bucket": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "B2 Quarantine Bucket"
},
"configured": {
"title": "Configured",
"type": "boolean"
},
"created_at": {
"anyOf": [
{
"format": "date-time",
"type": "string"
},
{
"type": "null"
}
],
"title": "Created At"
},
"created_by_id": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Created By Id"
},
"has_application_key": {
"default": false,
"title": "Has Application Key",
"type": "boolean"
},
"is_active": {
"default": true,
"title": "Is Active",
"type": "boolean"
},
"source": {
"enum": [
"tenant",
"fallback"
],
"title": "Source",
"type": "string"
},
"tenant_id": {
"anyOf": [
{
"format": "uuid",
"type": "string"
},
{
"type": "null"
}
],
"title": "Tenant Id"
},
"updated_at": {
"anyOf": [
{
"format": "date-time",
"type": "string"
},
{
"type": "null"
}
],
"title": "Updated At"
},
"updated_by_id": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Updated By Id"
}
},
"required": [
"configured",
"source"
],
"title": "TenantStorageConfigViewOut",
"type": "object"
},
"Token": {
"properties": {
"access_token": {
"title": "Access Token",
"type": "string"
},
"refresh_token": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Refresh Token"
},
"token_type": {
"default": "bearer",
"title": "Token Type",
"type": "string"
}
},
"required": [
"access_token"
],
"title": "Token",
"type": "object"
},
"TotalMetricOut": {
"properties": {
"recent_added": {
"title": "Recent Added",
"type": "integer"
},
"recent_deleted": {
"title": "Recent Deleted",
"type": "integer"
},
"total": {
"title": "Total",
"type": "integer"
}
},
"required": [
"total",
"recent_added",
"recent_deleted"
],
"title": "TotalMetricOut",
"type": "object"
},
"TutorialCompleteSchema": {
"properties": {
"key": {
"default": "dashboard",
"title": "Key",
"type": "string"
}
},
"title": "TutorialCompleteSchema",
"type": "object"
},
"UnreadCountOut": {
"properties": {
"count": {
"title": "Count",
"type": "integer"
}
},
"required": [
"count"
],
"title": "UnreadCountOut",
"type": "object"
},
"UpdateOrgUnitIn": {
"properties": {
"code": {
"anyOf": [
{
"maxLength": 50,
"type": "string"
},
{
"type": "null"
}
],
"title": "Code"
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Description"
},
"name": {
"anyOf": [
{
"maxLength": 255,
"minLength": 1,
"type": "string"
},
{
"type": "null"
}
],
"title": "Name"
},
"sort_order": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Sort Order"
},
"unit_type": {
"anyOf": [
{
"maxLength": 50,
"type": "string"
},
{
"type": "null"
}
],
"title": "Unit Type"
}
},
"title": "UpdateOrgUnitIn",
"type": "object"
},
"UpdateProfileIn": {
"properties": {
"designation": {
"anyOf": [
{
"maxLength": 100,
"type": "string"
},
{
"type": "null"
}
],
"title": "Designation"
},
"name": {
"anyOf": [
{
"maxLength": 255,
"minLength": 2,
"type": "string"
},
{
"type": "null"
}
],
"title": "Name"
},
"preferred_language": {
"anyOf": [
{
"maxLength": 16,
"minLength": 2,
"type": "string"
},
{
"type": "null"
}
],
"title": "Preferred Language"
}
},
"title": "UpdateProfileIn",
"type": "object"
},
"UpdateProjectIn": {
"properties": {
"currentStep": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Currentstep"
},
"htmlContent": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Htmlcontent"
},
"markdownContent": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Markdowncontent"
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Name"
},
"outputFormat": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Outputformat"
},
"progress": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Progress"
},
"sessionId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Sessionid"
},
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Status"
},
"xmlContent": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Xmlcontent"
}
},
"title": "UpdateProjectIn",
"type": "object"
},
"UpdateTenantIn": {
"properties": {
"chat_token_daily_limit": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Chat Token Daily Limit"
},
"disable_pdf_compression": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Disable Pdf Compression"
},
"envelope_limit": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Envelope Limit"
},
"envelope_reset_days": {
"anyOf": [
{
"minimum": 0.0,
"type": "integer"
},
{
"type": "null"
}
],
"title": "Envelope Reset Days"
},
"is_active": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Is Active"
},
"max_users_allowed": {
"anyOf": [
{
"minimum": 0.0,
"type": "integer"
},
{
"type": "null"
}
],
"title": "Max Users Allowed"
},
"name": {
"anyOf": [
{
"maxLength": 255,
"type": "string"
},
{
"type": "null"
}
],
"title": "Name"
},
"slug": {
"anyOf": [
{
"maxLength": 100,
"type": "string"
},
{
"type": "null"
}
],
"title": "Slug"
},
"storage_quota_bytes": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Storage Quota Bytes"
}
},
"title": "UpdateTenantIn",
"type": "object"
},
"UpdateTenantStorageQuotaIn": {
"properties": {
"storage_quota_gb": {
"title": "Storage Quota Gb",
"type": "number"
}
},
"required": [
"storage_quota_gb"
],
"title": "UpdateTenantStorageQuotaIn",
"type": "object"
},
"UpdateTenantTokenQuotaIn": {
"properties": {
"token_limit": {
"minimum": -1.0,
"title": "Token Limit",
"type": "integer"
}
},
"required": [
"token_limit"
],
"title": "UpdateTenantTokenQuotaIn",
"type": "object"
},
"UpdateUserIn": {
"properties": {
"designation": {
"anyOf": [
{
"maxLength": 100,
"type": "string"
},
{
"type": "null"
}
],
"title": "Designation"
},
"is_active": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Is Active"
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Name"
},
"password": {
"anyOf": [
{
"minLength": 12,
"type": "string"
},
{
"type": "null"
}
],
"title": "Password"
},
"role_id": {
"anyOf": [
{
"format": "uuid",
"type": "string"
},
{
"type": "null"
}
],
"title": "Role Id"
},
"tenant_id": {
"anyOf": [
{
"format": "uuid",
"type": "string"
},
{
"type": "null"
}
],
"title": "Tenant Id"
}
},
"title": "UpdateUserIn",
"type": "object"
},
"UpdateUserQuotaIn": {
"properties": {
"daily_credit_limit": {
"minimum": -1.0,
"title": "Daily Credit Limit",
"type": "integer"
}
},
"required": [
"daily_credit_limit"
],
"title": "UpdateUserQuotaIn",
"type": "object"
},
"UserListOut": {
"properties": {
"chat_credit_daily_limit": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Chat Credit Daily Limit"
},
"chat_credits_used_today": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Chat Credits Used Today"
},
"deleted_at": {
"anyOf": [
{
"format": "date-time",
"type": "string"
},
{
"type": "null"
}
],
"title": "Deleted At"
},
"designation": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Designation"
},
"email": {
"title": "Email",
"type": "string"
},
"id": {
"title": "Id",
"type": "integer"
},
"is_active": {
"title": "Is Active",
"type": "boolean"
},
"is_deleted": {
"default": false,
"title": "Is Deleted",
"type": "boolean"
},
"name": {
"title": "Name",
"type": "string"
},
"role": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Role"
},
"role_count": {
"default": 0,
"title": "Role Count",
"type": "integer"
},
"role_id": {
"anyOf": [
{
"format": "uuid",
"type": "string"
},
{
"type": "null"
}
],
"title": "Role Id"
},
"roles": {
"default": [],
"items": {
"$ref": "#/components/schemas/RoleAssignmentOut"
},
"title": "Roles",
"type": "array"
},
"subscription": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Subscription"
},
"tenant_chat_token_limit": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Tenant Chat Token Limit"
},
"tenant_id": {
"anyOf": [
{
"format": "uuid",
"type": "string"
},
{
"type": "null"
}
],
"title": "Tenant Id"
},
"tenant_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Tenant Name"
},
"tenant_total_credits_allocated": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Tenant Total Credits Allocated"
}
},
"required": [
"id",
"name",
"email",
"is_active"
],
"title": "UserListOut",
"type": "object"
},
"UserOut": {
"properties": {
"accesses": {
"items": {
"type": "string"
},
"title": "Accesses",
"type": "array"
},
"created_at": {
"anyOf": [
{
"format": "date-time",
"type": "string"
},
{
"type": "null"
}
],
"title": "Created At"
},
"designation": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Designation"
},
"email": {
"format": "email",
"title": "Email",
"type": "string"
},
"has_completed_docs_tutorial": {
"default": false,
"title": "Has Completed Docs Tutorial",
"type": "boolean"
},
"has_completed_tutorial": {
"default": false,
"title": "Has Completed Tutorial",
"type": "boolean"
},
"id": {
"title": "Id",
"type": "integer"
},
"is_active": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": true,
"title": "Is Active"
},
"name": {
"title": "Name",
"type": "string"
},
"preferred_language": {
"default": "en",
"title": "Preferred Language",
"type": "string"
},
"role": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Role"
},
"role_id": {
"anyOf": [
{
"format": "uuid",
"type": "string"
},
{
"type": "null"
}
],
"title": "Role Id"
},
"roles": {
"items": {
"$ref": "#/components/schemas/RoleAssignmentOut"
},
"title": "Roles",
"type": "array"
},
"subscription": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": "free",
"title": "Subscription"
},
"subscription_details": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"title": "Subscription Details"
},
"tenant_envelope_limit": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Tenant Envelope Limit"
},
"tenant_envelopes_used": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Tenant Envelopes Used"
},
"tenant_id": {
"anyOf": [
{
"format": "uuid",
"type": "string"
},
{
"type": "null"
}
],
"title": "Tenant Id"
},
"terms_accepted": {
"default": false,
"title": "Terms Accepted",
"type": "boolean"
}
},
"required": [
"id",
"email",
"name"
],
"title": "UserOut",
"type": "object"
},
"UserSMTPCredentialsOut": {
"properties": {
"configured": {
"title": "Configured",
"type": "boolean"
},
"has_password": {
"default": false,
"title": "Has Password",
"type": "boolean"
},
"mail_from": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Mail From"
},
"smtp_host": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Smtp Host"
},
"smtp_port": {
"default": 587,
"title": "Smtp Port",
"type": "integer"
},
"smtp_user": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Smtp User"
},
"source": {
"enum": [
"user",
"tenant",
"fallback"
],
"title": "Source",
"type": "string"
}
},
"required": [
"configured",
"source"
],
"title": "UserSMTPCredentialsOut",
"type": "object"
},
"UserSMTPCredentialsPatchIn": {
"properties": {
"mail_from": {
"anyOf": [
{
"format": "email",
"type": "string"
},
{
"type": "null"
}
],
"title": "Mail From"
},
"smtp_password": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "If omitted during update, existing password is preserved. Send empty string to clear it.",
"title": "Smtp Password"
},
"smtp_user": {
"anyOf": [
{
"maxLength": 255,
"type": "string"
},
{
"type": "null"
}
],
"title": "Smtp User"
}
},
"title": "UserSMTPCredentialsPatchIn",
"type": "object"
},
"UserStorageStats": {
"properties": {
"breakdown": {
"$ref": "#/components/schemas/StorageBreakdown",
"default": {
"docx": 0,
"html": 0,
"other": 0,
"pdf": 0
}
},
"file_count": {
"default": 0,
"title": "File Count",
"type": "integer"
},
"percent": {
"default": 0.0,
"title": "Percent",
"type": "number"
},
"used_bytes": {
"default": 0,
"title": "Used Bytes",
"type": "integer"
},
"used_formatted": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Used Formatted"
}
},
"title": "UserStorageStats",
"type": "object"
},
"ValidationError": {
"properties": {
"loc": {
"items": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
}
]
},
"title": "Location",
"type": "array"
},
"msg": {
"title": "Message",
"type": "string"
},
"type": {
"title": "Error Type",
"type": "string"
}
},
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError",
"type": "object"
},
"VerificationResponse": {
"properties": {
"details": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"title": "Details"
},
"message": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Message"
},
"signature_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Signature Id"
},
"status": {
"title": "Status",
"type": "string"
}
},
"required": [
"status"
],
"title": "VerificationResponse",
"type": "object"
},
"VerifyOTPRequest": {
"properties": {
"email": {
"title": "Email",
"type": "string"
},
"otp": {
"title": "Otp",
"type": "string"
},
"slug": {
"title": "Slug",
"type": "string"
}
},
"required": [
"slug",
"email",
"otp"
],
"title": "VerifyOTPRequest",
"type": "object"
},
"VersionCreateIn": {
"properties": {
"changes_description": {
"default": "Updated version",
"maxLength": 1000,
"minLength": 1,
"title": "Changes Description",
"type": "string"
},
"html_content": {
"anyOf": [
{
"maxLength": 10485760,
"type": "string"
},
{
"type": "null"
}
],
"title": "Html Content"
},
"markdown_content": {
"anyOf": [
{
"maxLength": 10485760,
"type": "string"
},
{
"type": "null"
}
],
"title": "Markdown Content"
},
"session_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Session Id"
},
"xml_content": {
"anyOf": [
{
"maxLength": 10485760,
"type": "string"
},
{
"type": "null"
}
],
"title": "Xml Content"
}
},
"title": "VersionCreateIn",
"type": "object"
},
"VersionUpdateIn": {
"properties": {
"changes_description": {
"maxLength": 1000,
"minLength": 1,
"title": "Changes Description",
"type": "string"
}
},
"required": [
"changes_description"
],
"title": "VersionUpdateIn",
"type": "object"
}
},
"securitySchemes": {
"OAuth2PasswordBearer": {
"flows": {
"password": {
"scopes": {},
"tokenUrl": "/auth/login"
}
},
"type": "oauth2"
}
}
},
"info": {
"description": "An interactive API and UI to process PDFs into JATS XML.",
"title": "DocQube Document Processing Pipeline API",
"version": "2.0.0"
},
"openapi": "3.1.0",
"paths": {
"/api/1-process-document/": {
"post": {
"operationId": "upload_api_1_process_document__post",
"requestBody": {
"content": {
"multipart/form-data": {
"schema": {
"$ref": "#/components/schemas/Body_upload_api_1_process_document__post"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Upload",
"tags": [
"Process Task"
]
}
},
"/api/2-convert-to-xml/": {
"post": {
"operationId": "convert_to_xml_api_2_convert_to_xml__post",
"requestBody": {
"content": {
"application/json": {
"schema": {
"additionalProperties": true,
"title": "Payload",
"type": "object"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Convert To Xml",
"tags": [
"Process Task"
]
}
},
"/api/access/all": {
"get": {
"description": "Get all available access codes in the platform.\nTypically used for role management UI.",
"operationId": "get_all_system_accesses_api_access_all_get",
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"items": {
"$ref": "#/components/schemas/AccessOut"
},
"title": "Response Get All System Accesses Api Access All Get",
"type": "array"
}
}
},
"description": "Successful Response"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Get All System Accesses",
"tags": [
"Access"
]
}
},
"/api/access/get": {
"get": {
"description": "Get current user's access codes.\n\nThis endpoint is called by the frontend to determine which UI elements\nto show/hide based on the user's permissions.\n\nReturns:\n {\n \"accesses\": [\"project.create\", \"drive.file.upload\", ...],\n \"role\": \"superadmin\" | \"tenant_admin\" | null,\n \"roles\": [\"tenant_admin\", \"approver\"]\n }\n\n`role` is the **primary** role and is unchanged. `roles` is every role the\ncaller holds — primary, granted, and through a group — because a user may\nhold several and a single name cannot say so.",
"operationId": "get_user_accesses_api_access_get_get",
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/RoleAccessesOut"
}
}
},
"description": "Successful Response"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Get User Accesses",
"tags": [
"Access"
]
}
},
"/api/activity-logs": {
"get": {
"operationId": "get_activity_logs_api_activity_logs_get",
"parameters": [
{
"in": "query",
"name": "page",
"required": false,
"schema": {
"default": 1,
"minimum": 1,
"title": "Page",
"type": "integer"
}
},
{
"in": "query",
"name": "page_size",
"required": false,
"schema": {
"default": 20,
"maximum": 100,
"minimum": 1,
"title": "Page Size",
"type": "integer"
}
},
{
"in": "query",
"name": "user_id",
"required": false,
"schema": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "User Id"
}
},
{
"in": "query",
"name": "module",
"required": false,
"schema": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Module"
}
},
{
"in": "query",
"name": "action",
"required": false,
"schema": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Action"
}
},
{
"in": "query",
"name": "status",
"required": false,
"schema": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Status"
}
},
{
"in": "query",
"name": "target_id",
"required": false,
"schema": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Target Id"
}
},
{
"in": "query",
"name": "target_name",
"required": false,
"schema": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Target Name"
}
},
{
"in": "query",
"name": "target_type",
"required": false,
"schema": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Target Type"
}
},
{
"in": "query",
"name": "date_from",
"required": false,
"schema": {
"anyOf": [
{
"format": "date-time",
"type": "string"
},
{
"type": "null"
}
],
"title": "Date From"
}
},
{
"in": "query",
"name": "date_to",
"required": false,
"schema": {
"anyOf": [
{
"format": "date-time",
"type": "string"
},
{
"type": "null"
}
],
"title": "Date To"
}
},
{
"in": "query",
"name": "search",
"required": false,
"schema": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Search"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PaginatedActivityLogsOut"
}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Get Activity Logs",
"tags": [
"Activity Logs"
]
}
},
"/api/activity-logs/me": {
"get": {
"operationId": "get_my_activity_logs_api_activity_logs_me_get",
"parameters": [
{
"in": "query",
"name": "page",
"required": false,
"schema": {
"default": 1,
"minimum": 1,
"title": "Page",
"type": "integer"
}
},
{
"in": "query",
"name": "page_size",
"required": false,
"schema": {
"default": 20,
"maximum": 100,
"minimum": 1,
"title": "Page Size",
"type": "integer"
}
},
{
"in": "query",
"name": "module",
"required": false,
"schema": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Module"
}
},
{
"in": "query",
"name": "action",
"required": false,
"schema": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Action"
}
},
{
"in": "query",
"name": "status",
"required": false,
"schema": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Status"
}
},
{
"in": "query",
"name": "target_id",
"required": false,
"schema": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Target Id"
}
},
{
"in": "query",
"name": "target_name",
"required": false,
"schema": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Target Name"
}
},
{
"in": "query",
"name": "target_type",
"required": false,
"schema": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Target Type"
}
},
{
"in": "query",
"name": "date_from",
"required": false,
"schema": {
"anyOf": [
{
"format": "date-time",
"type": "string"
},
{
"type": "null"
}
],
"title": "Date From"
}
},
{
"in": "query",
"name": "date_to",
"required": false,
"schema": {
"anyOf": [
{
"format": "date-time",
"type": "string"
},
{
"type": "null"
}
],
"title": "Date To"
}
},
{
"in": "query",
"name": "search",
"required": false,
"schema": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Search"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PaginatedActivityLogsOut"
}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Get My Activity Logs",
"tags": [
"Activity Logs"
]
}
},
"/api/activity-logs/users/search": {
"get": {
"operationId": "search_activity_log_users_route_api_activity_logs_users_search_get",
"parameters": [
{
"in": "query",
"name": "q",
"required": true,
"schema": {
"minLength": 1,
"title": "Q",
"type": "string"
}
},
{
"in": "query",
"name": "limit",
"required": false,
"schema": {
"default": 10,
"maximum": 50,
"minimum": 1,
"title": "Limit",
"type": "integer"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"items": {
"$ref": "#/components/schemas/ActivityLogUserOption"
},
"title": "Response Search Activity Log Users Route Api Activity Logs Users Search Get",
"type": "array"
}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Search Activity Log Users Route",
"tags": [
"Activity Logs"
]
}
},
"/api/admin/configurations": {
"get": {
"operationId": "list_configurations_api_admin_configurations_get",
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"items": {
"$ref": "#/components/schemas/SystemConfigurationOut"
},
"title": "Response List Configurations Api Admin Configurations Get",
"type": "array"
}
}
},
"description": "Successful Response"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "List Configurations",
"tags": [
"System Configurations"
]
},
"post": {
"operationId": "create_configuration_api_admin_configurations_post",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SystemConfigurationIn"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SystemConfigurationOut"
}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Create Configuration",
"tags": [
"System Configurations"
]
}
},
"/api/admin/configurations/limits/snapshot": {
"get": {
"operationId": "get_limits_snapshot_api_admin_configurations_limits_snapshot_get",
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SystemLimitsOut"
}
}
},
"description": "Successful Response"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Get Limits Snapshot",
"tags": [
"System Configurations"
]
}
},
"/api/admin/configurations/{config_key}": {
"delete": {
"operationId": "delete_configuration_api_admin_configurations__config_key__delete",
"parameters": [
{
"in": "path",
"name": "config_key",
"required": true,
"schema": {
"title": "Config Key",
"type": "string"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Delete Configuration",
"tags": [
"System Configurations"
]
},
"get": {
"operationId": "get_configuration_api_admin_configurations__config_key__get",
"parameters": [
{
"in": "path",
"name": "config_key",
"required": true,
"schema": {
"title": "Config Key",
"type": "string"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SystemConfigurationOut"
}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Get Configuration",
"tags": [
"System Configurations"
]
},
"patch": {
"operationId": "update_configuration_api_admin_configurations__config_key__patch",
"parameters": [
{
"in": "path",
"name": "config_key",
"required": true,
"schema": {
"title": "Config Key",
"type": "string"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SystemConfigurationPatchIn"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SystemConfigurationOut"
}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Update Configuration",
"tags": [
"System Configurations"
]
}
},
"/api/admin/dashboard-metrics": {
"get": {
"operationId": "get_dashboard_metrics_api_admin_dashboard_metrics_get",
"parameters": [
{
"in": "query",
"name": "granularity",
"required": false,
"schema": {
"default": "weekly",
"enum": [
"weekly",
"monthly",
"yearly"
],
"title": "Granularity",
"type": "string"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AdminDashboardMetricsOut"
}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Get Dashboard Metrics",
"tags": [
"Admin Dashboard"
]
}
},
"/api/admin/dashboard-metrics/trends/{metric}": {
"get": {
"operationId": "get_dashboard_metric_trend_api_admin_dashboard_metrics_trends__metric__get",
"parameters": [
{
"in": "path",
"name": "metric",
"required": true,
"schema": {
"enum": [
"signatures",
"uploads"
],
"title": "Metric",
"type": "string"
}
},
{
"in": "query",
"name": "granularity",
"required": false,
"schema": {
"default": "weekly",
"enum": [
"weekly",
"monthly",
"yearly"
],
"title": "Granularity",
"type": "string"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/MetricTrendOnlyOut"
}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Get Dashboard Metric Trend",
"tags": [
"Admin Dashboard"
]
}
},
"/api/admin/users": {
"get": {
"description": "List all users with pagination, search, and optional tenant filter.",
"operationId": "list_all_users_api_admin_users_get",
"parameters": [
{
"in": "query",
"name": "page",
"required": false,
"schema": {
"default": 1,
"minimum": 1,
"title": "Page",
"type": "integer"
}
},
{
"in": "query",
"name": "page_size",
"required": false,
"schema": {
"default": 20,
"maximum": 100,
"minimum": 1,
"title": "Page Size",
"type": "integer"
}
},
{
"in": "query",
"name": "search",
"required": false,
"schema": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Search"
}
},
{
"in": "query",
"name": "tenant_id",
"required": false,
"schema": {
"anyOf": [
{
"format": "uuid",
"type": "string"
},
{
"type": "null"
}
],
"title": "Tenant Id"
}
},
{
"in": "query",
"name": "include_deleted",
"required": false,
"schema": {
"default": false,
"title": "Include Deleted",
"type": "boolean"
}
},
{
"in": "query",
"name": "only_deleted",
"required": false,
"schema": {
"default": false,
"title": "Only Deleted",
"type": "boolean"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PaginatedUsersOut"
}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "List All Users",
"tags": [
"Admin Users"
]
}
},
"/api/admin/users/bulk/distribute-credits-equally": {
"post": {
"description": "Distribute the tenant's total credit limit equally among all active users.",
"operationId": "distribute_credits_equally_api_admin_users_bulk_distribute_credits_equally_post",
"parameters": [
{
"in": "query",
"name": "tenant_id",
"required": false,
"schema": {
"anyOf": [
{
"format": "uuid",
"type": "string"
},
{
"type": "null"
}
],
"title": "Tenant Id"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Distribute Credits Equally",
"tags": [
"Admin Users"
]
}
},
"/api/admin/users/summary/limits": {
"get": {
"description": "Get global user limits snapshot for administration UI.",
"operationId": "get_user_management_limits_api_admin_users_summary_limits_get",
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SystemLimitsOut"
}
}
},
"description": "Successful Response"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Get User Management Limits",
"tags": [
"Admin Users"
]
}
},
"/api/admin/users/{user_id}": {
"delete": {
"operationId": "soft_delete_user_api_admin_users__user_id__delete",
"parameters": [
{
"in": "path",
"name": "user_id",
"required": true,
"schema": {
"title": "User Id",
"type": "integer"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/MessageOut"
}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Soft Delete User",
"tags": [
"Admin Users"
]
},
"get": {
"description": "Get a single user by ID.",
"operationId": "get_user_api_admin_users__user_id__get",
"parameters": [
{
"in": "path",
"name": "user_id",
"required": true,
"schema": {
"title": "User Id",
"type": "integer"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UserListOut"
}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Get User",
"tags": [
"Admin Users"
]
},
"patch": {
"description": "Update a user's name, active status, role, tenant, or password.",
"operationId": "update_user_api_admin_users__user_id__patch",
"parameters": [
{
"in": "path",
"name": "user_id",
"required": true,
"schema": {
"title": "User Id",
"type": "integer"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UpdateUserIn"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UserListOut"
}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Update User",
"tags": [
"Admin Users"
]
}
},
"/api/admin/users/{user_id}/effective-access": {
"get": {
"description": "Every access code this user holds, and which role confers each one.\n\n\"Why can this person do that\" answered itself while a user had one role.\nWith several it does not, and the alternative is reading the database — so\nthis exists before the interface that makes several roles easy to create.\n\nDescendant codes are attributed to the role holding their parent, because\nthat is the row an administrator would edit to take the code away.",
"operationId": "user_effective_access_api_admin_users__user_id__effective_access_get",
"parameters": [
{
"in": "path",
"name": "user_id",
"required": true,
"schema": {
"title": "User Id",
"type": "integer"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"items": {
"$ref": "#/components/schemas/EffectiveAccessOut"
},
"title": "Response User Effective Access Api Admin Users User Id Effective Access Get",
"type": "array"
}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "User Effective Access",
"tags": [
"Admin Users"
]
}
},
"/api/admin/users/{user_id}/restore": {
"post": {
"operationId": "restore_user_api_admin_users__user_id__restore_post",
"parameters": [
{
"in": "path",
"name": "user_id",
"required": true,
"schema": {
"title": "User Id",
"type": "integer"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UserListOut"
}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Restore User",
"tags": [
"Admin Users"
]
}
},
"/api/admin/users/{user_id}/roles": {
"get": {
"description": "Every role this user holds: primary, granted, and through a group.",
"operationId": "list_user_roles_api_admin_users__user_id__roles_get",
"parameters": [
{
"in": "path",
"name": "user_id",
"required": true,
"schema": {
"title": "User Id",
"type": "integer"
}
},
{
"description": "Include grants that have lapsed. They confer nothing; they are shown so an administrator can see that a temporary grant ended rather than wondering where it went.",
"in": "query",
"name": "include_expired",
"required": false,
"schema": {
"default": false,
"description": "Include grants that have lapsed. They confer nothing; they are shown so an administrator can see that a temporary grant ended rather than wondering where it went.",
"title": "Include Expired",
"type": "boolean"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"items": {
"$ref": "#/components/schemas/RoleAssignmentOut"
},
"title": "Response List User Roles Api Admin Users User Id Roles Get",
"type": "array"
}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "List User Roles",
"tags": [
"Admin Users"
]
},
"post": {
"description": "Grant this user an additional role.\n\n`org_unit_id` omitted means **tenant-wide**, which is the authority a\nprimary role already carries and the case the organisation tree could not\nexpress.\n\nDoes **not** touch `users.role_id`. The primary role is left exactly as it\nwas, so nothing an administrator has already set is silently replaced.",
"operationId": "add_user_role_api_admin_users__user_id__roles_post",
"parameters": [
{
"in": "path",
"name": "user_id",
"required": true,
"schema": {
"title": "User Id",
"type": "integer"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AddUserRoleIn"
}
}
},
"required": true
},
"responses": {
"201": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/RoleAssignmentOut"
}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Add User Role",
"tags": [
"Admin Users"
]
}
},
"/api/admin/users/{user_id}/roles/{grant_id}": {
"delete": {
"description": "Revoke one granted role.\n\nThe **primary** role is not revocable here — it has no `grant_id`, and it is\nchanged through `PATCH /api/admin/users/{id}`. Offering a Remove button that\nsilently did nothing to it would be the worst of both.\n\nA grant reaching this user **through a group** is likewise not revocable\nhere: it belongs to the group, and removing it from one member would mean\nediting the group for everybody.",
"operationId": "remove_user_role_api_admin_users__user_id__roles__grant_id__delete",
"parameters": [
{
"in": "path",
"name": "user_id",
"required": true,
"schema": {
"title": "User Id",
"type": "integer"
}
},
{
"in": "path",
"name": "grant_id",
"required": true,
"schema": {
"format": "uuid",
"title": "Grant Id",
"type": "string"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/MessageOut"
}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Remove User Role",
"tags": [
"Admin Users"
]
}
},
"/api/auth/accept-terms": {
"post": {
"operationId": "accept_terms_api_auth_accept_terms_post",
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/StatusMessageOut"
}
}
},
"description": "Successful Response"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Accept Terms",
"tags": [
"Auth"
]
}
},
"/api/auth/devices": {
"get": {
"operationId": "get_user_devices_api_auth_devices_get",
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"items": {
"$ref": "#/components/schemas/DeviceOut"
},
"title": "Response Get User Devices Api Auth Devices Get",
"type": "array"
}
}
},
"description": "Successful Response"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Get User Devices",
"tags": [
"Auth"
]
}
},
"/api/auth/devices/{device_id}": {
"delete": {
"operationId": "logout_device_api_auth_devices__device_id__delete",
"parameters": [
{
"in": "path",
"name": "device_id",
"required": true,
"schema": {
"title": "Device Id",
"type": "integer"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Logout Device",
"tags": [
"Auth"
]
}
},
"/api/auth/editor-token": {
"get": {
"operationId": "get_editor_token_api_auth_editor_token_get",
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/EditorTokenOut"
}
}
},
"description": "Successful Response"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Get Editor Token",
"tags": [
"Auth"
]
}
},
"/api/auth/forgot-password": {
"post": {
"operationId": "forgot_password_api_auth_forgot_password_post",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ForgotPasswordIn"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/MessageOut"
}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"summary": "Forgot Password",
"tags": [
"Auth"
]
}
},
"/api/auth/google": {
"post": {
"operationId": "google_login_api_auth_google_post",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GoogleLoginIn"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Token"
}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"summary": "Google Login",
"tags": [
"Auth"
]
}
},
"/api/auth/login": {
"post": {
"operationId": "login_api_auth_login_post",
"requestBody": {
"content": {
"application/x-www-form-urlencoded": {
"schema": {
"$ref": "#/components/schemas/Body_login_api_auth_login_post"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Token"
}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"summary": "Login",
"tags": [
"Auth"
]
}
},
"/api/auth/logout": {
"post": {
"operationId": "logout_api_auth_logout_post",
"responses": {
"200": {
"content": {
"application/json": {
"schema": {}
}
},
"description": "Successful Response"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Logout",
"tags": [
"Auth"
]
}
},
"/api/auth/me": {
"get": {
"operationId": "verify_auth_api_auth_me_get",
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UserOut"
}
}
},
"description": "Successful Response"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Verify Auth",
"tags": [
"Auth"
]
}
},
"/api/auth/refresh": {
"post": {
"operationId": "refresh_token_api_auth_refresh_post",
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Token"
}
}
},
"description": "Successful Response"
}
},
"summary": "Refresh Token",
"tags": [
"Auth"
]
}
},
"/api/auth/register": {
"post": {
"operationId": "register_api_auth_register_post",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/RegisterIn"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/RegisterOut"
}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"summary": "Register",
"tags": [
"Auth"
]
}
},
"/api/auth/reset-password": {
"post": {
"operationId": "reset_password_api_auth_reset_password_post",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ResetPasswordIn"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"summary": "Reset Password",
"tags": [
"Auth"
]
}
},
"/api/auth/resolve-device-limit": {
"post": {
"operationId": "resolve_device_limit_api_auth_resolve_device_limit_post",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ResolveDeviceLimitIn"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"summary": "Resolve Device Limit",
"tags": [
"Auth"
]
}
},
"/api/auth/session/events": {
"get": {
"description": "SSE Endpoint for real-time session and device revocation events.\nFrontend can listen to this to instantly log out when their session is revoked.",
"operationId": "session_events_api_auth_session_events_get",
"responses": {
"200": {
"content": {
"application/json": {
"schema": {}
}
},
"description": "Successful Response"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Session Events",
"tags": [
"Auth"
]
}
},
"/api/auth/verify": {
"get": {
"operationId": "verify_auth_api_auth_verify_get",
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UserOut"
}
}
},
"description": "Successful Response"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Verify Auth",
"tags": [
"Auth"
]
}
},
"/api/billing/me": {
"get": {
"description": "What this caller's workspace is entitled to.\n\nNot gated on an admin code: a user asking what their own workspace includes\nis asking what they bought.",
"operationId": "my_entitlement_api_billing_me_get",
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/EntitlementOut"
}
}
},
"description": "Successful Response"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "My Entitlement",
"tags": [
"Billing"
]
}
},
"/api/billing/plans": {
"get": {
"description": "The public catalogue.\n\n**Deliberately unauthenticated.** It is what the pricing page shows to a\nvisitor who has not signed up yet, and requiring a token would defeat the\npurpose. It exposes only what is already printed on that page — names,\nprices and limits — and no tenant is named.\n\nThis is the endpoint that closes the original gap: the page advertised four\npriced plans and the backend had never heard of a plan.",
"operationId": "list_plans_api_billing_plans_get",
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"items": {
"$ref": "#/components/schemas/PlanOut"
},
"title": "Response List Plans Api Billing Plans Get",
"type": "array"
}
}
},
"description": "Successful Response"
}
},
"summary": "List Plans",
"tags": [
"Billing"
]
}
},
"/api/billing/tenants/{tenant_id}/overrides": {
"put": {
"description": "The negotiated exception — \"Elite, but 500 GB, because the contract says so\".\n\nStored as its own row rather than by editing the plan, so the plan stays\nhonest and the exception stays visible at renewal. `note` is not optional in\nspirit: an exception with no reason recorded becomes folklore.",
"operationId": "set_override_api_billing_tenants__tenant_id__overrides_put",
"parameters": [
{
"in": "path",
"name": "tenant_id",
"required": true,
"schema": {
"format": "uuid",
"title": "Tenant Id",
"type": "string"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SetOverrideIn"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/EntitlementOut"
}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Set Override",
"tags": [
"Billing"
]
}
},
"/api/billing/tenants/{tenant_id}/subscription": {
"get": {
"operationId": "get_tenant_subscription_api_billing_tenants__tenant_id__subscription_get",
"parameters": [
{
"in": "path",
"name": "tenant_id",
"required": true,
"schema": {
"format": "uuid",
"title": "Tenant Id",
"type": "string"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SubscriptionOut"
}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Get Tenant Subscription",
"tags": [
"Billing"
]
},
"put": {
"description": "Move a tenant onto a plan.\n\nA superadmin decision. A tenant admin moving themselves onto Elite would be\na pricing decision made by the person who benefits from it.",
"operationId": "set_tenant_plan_api_billing_tenants__tenant_id__subscription_put",
"parameters": [
{
"in": "path",
"name": "tenant_id",
"required": true,
"schema": {
"format": "uuid",
"title": "Tenant Id",
"type": "string"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SetPlanIn"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SubscriptionOut"
}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Set Tenant Plan",
"tags": [
"Billing"
]
}
},
"/api/celery/convert-direct": {
"post": {
"description": "Synchronous PDF conversion via Stirling. Returns the converted file directly\nwithout creating any project record or background task.",
"operationId": "convert_direct_api_celery_convert_direct_post",
"requestBody": {
"content": {
"multipart/form-data": {
"schema": {
"$ref": "#/components/schemas/Body_convert_direct_api_celery_convert_direct_post"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Convert Direct",
"tags": [
"Process Task"
]
}
},
"/api/celery/convert-pdf2docx": {
"post": {
"description": "Test endpoint: PDF → DOCX using pdf2docx library directly.\nNo Stirling, no B2, no Celery — just local conversion.",
"operationId": "convert_pdf2docx_api_celery_convert_pdf2docx_post",
"requestBody": {
"content": {
"multipart/form-data": {
"schema": {
"$ref": "#/components/schemas/Body_convert_pdf2docx_api_celery_convert_pdf2docx_post"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Convert Pdf2Docx",
"tags": [
"Process Task"
]
}
},
"/api/celery/convert-to-xml": {
"post": {
"operationId": "convert_to_xml_api_celery_convert_to_xml_post",
"requestBody": {
"content": {
"application/json": {
"schema": {
"additionalProperties": true,
"title": "Payload",
"type": "object"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Convert To Xml",
"tags": [
"Process Task"
]
}
},
"/api/celery/from-drive/{file_id}": {
"post": {
"operationId": "process_from_drive_api_celery_from_drive__file_id__post",
"parameters": [
{
"in": "path",
"name": "file_id",
"required": true,
"schema": {
"title": "File Id",
"type": "integer"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Process From Drive",
"tags": [
"Process Task"
]
}
},
"/api/celery/health": {
"get": {
"operationId": "health_api_celery_health_get",
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CeleryHealthOut"
}
}
},
"description": "Successful Response"
}
},
"summary": "Health",
"tags": [
"Process Task"
]
}
},
"/api/celery/task/{task_id}": {
"delete": {
"operationId": "cancel_task_api_celery_task__task_id__delete",
"parameters": [
{
"in": "path",
"name": "task_id",
"required": true,
"schema": {
"title": "Task Id",
"type": "string"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Cancel Task",
"tags": [
"Process Task"
]
},
"get": {
"operationId": "task_status_api_celery_task__task_id__get",
"parameters": [
{
"in": "path",
"name": "task_id",
"required": true,
"schema": {
"title": "Task Id",
"type": "string"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Task Status",
"tags": [
"Process Task"
]
}
},
"/api/celery/upload": {
"post": {
"operationId": "upload_api_celery_upload_post",
"requestBody": {
"content": {
"multipart/form-data": {
"schema": {
"$ref": "#/components/schemas/Body_upload_api_celery_upload_post"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Upload",
"tags": [
"Process Task"
]
}
},
"/api/chatbot/chat": {
"post": {
"operationId": "chat_api_chatbot_chat_post",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ChatRequest"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Chat",
"tags": [
"chatbot"
]
}
},
"/api/chatbot/chat/stream": {
"post": {
"operationId": "chat_stream_api_chatbot_chat_stream_post",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ChatRequest"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Chat Stream",
"tags": [
"chatbot"
]
}
},
"/api/chatbot/documents": {
"get": {
"operationId": "list_documents_api_chatbot_documents_get",
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"items": {
"$ref": "#/components/schemas/ChatDocumentOut"
},
"title": "Response List Documents Api Chatbot Documents Get",
"type": "array"
}
}
},
"description": "Successful Response"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "List Documents",
"tags": [
"chatbot"
]
}
},
"/api/chatbot/documents/{doc_id}": {
"delete": {
"operationId": "delete_document_api_chatbot_documents__doc_id__delete",
"parameters": [
{
"in": "path",
"name": "doc_id",
"required": true,
"schema": {
"title": "Doc Id",
"type": "string"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/StatusOut"
}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Delete Document",
"tags": [
"chatbot"
]
}
},
"/api/chatbot/history/{doc_id}": {
"get": {
"operationId": "get_history_api_chatbot_history__doc_id__get",
"parameters": [
{
"in": "path",
"name": "doc_id",
"required": true,
"schema": {
"title": "Doc Id",
"type": "string"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Get History",
"tags": [
"chatbot"
]
}
},
"/api/chatbot/ingest-drive": {
"post": {
"operationId": "ingest_drive_file_api_chatbot_ingest_drive_post",
"parameters": [
{
"in": "query",
"name": "file_id",
"required": true,
"schema": {
"title": "File Id",
"type": "integer"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Ingest Drive File",
"tags": [
"chatbot"
]
}
},
"/api/chatbot/quota/{user_id}": {
"patch": {
"operationId": "update_user_quota_api_chatbot_quota__user_id__patch",
"parameters": [
{
"in": "path",
"name": "user_id",
"required": true,
"schema": {
"title": "User Id",
"type": "integer"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UpdateUserQuotaIn"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ChatUsageOut"
}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Update User Quota",
"tags": [
"chatbot"
]
}
},
"/api/chatbot/upload": {
"post": {
"operationId": "upload_document_api_chatbot_upload_post",
"requestBody": {
"content": {
"multipart/form-data": {
"schema": {
"$ref": "#/components/schemas/Body_upload_document_api_chatbot_upload_post"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Upload Document",
"tags": [
"chatbot"
]
}
},
"/api/chatbot/usage": {
"get": {
"operationId": "get_usage_api_chatbot_usage_get",
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ChatUsageOut"
}
}
},
"description": "Successful Response"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Get Usage",
"tags": [
"chatbot"
]
}
},
"/api/collaboration/{file_id}/messages": {
"get": {
"description": "Return the last *limit* chat messages for a file.\n\nOnly users with at least **viewer** access can retrieve messages.",
"operationId": "get_messages_api_collaboration__file_id__messages_get",
"parameters": [
{
"in": "path",
"name": "file_id",
"required": true,
"schema": {
"title": "File Id",
"type": "integer"
}
},
{
"in": "query",
"name": "limit",
"required": false,
"schema": {
"default": 50,
"title": "Limit",
"type": "integer"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Get Messages",
"tags": [
"Collaboration Chat"
]
}
},
"/api/drive/comments/{comment_id}": {
"delete": {
"operationId": "delete_file_comment_api_drive_comments__comment_id__delete",
"parameters": [
{
"in": "path",
"name": "comment_id",
"required": true,
"schema": {
"title": "Comment Id",
"type": "integer"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Delete File Comment",
"tags": [
"Drive"
]
}
},
"/api/drive/comments/{comment_id}/resolve": {
"patch": {
"operationId": "resolve_comment_api_drive_comments__comment_id__resolve_patch",
"parameters": [
{
"in": "path",
"name": "comment_id",
"required": true,
"schema": {
"title": "Comment Id",
"type": "integer"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Resolve Comment",
"tags": [
"Drive"
]
}
},
"/api/drive/email-resource": {
"post": {
"operationId": "email_resource_api_drive_email_resource_post",
"requestBody": {
"content": {
"application/x-www-form-urlencoded": {
"schema": {
"$ref": "#/components/schemas/Body_email_resource_api_drive_email_resource_post"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Email Resource",
"tags": [
"Drive"
]
}
},
"/api/drive/files/create": {
"post": {
"operationId": "create_file_api_drive_files_create_post",
"requestBody": {
"content": {
"application/x-www-form-urlencoded": {
"schema": {
"$ref": "#/components/schemas/Body_create_file_api_drive_files_create_post"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Create File",
"tags": [
"Drive"
]
}
},
"/api/drive/files/upload": {
"post": {
"operationId": "upload_file_legacy_api_drive_files_upload_post",
"requestBody": {
"content": {
"multipart/form-data": {
"schema": {
"$ref": "#/components/schemas/Body_upload_file_legacy_api_drive_files_upload_post"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Upload File Legacy",
"tags": [
"Drive"
]
}
},
"/api/drive/files/{file_id}": {
"delete": {
"operationId": "delete_file_api_drive_files__file_id__delete",
"parameters": [
{
"in": "path",
"name": "file_id",
"required": true,
"schema": {
"title": "File Id",
"type": "integer"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Delete File",
"tags": [
"Drive"
]
},
"get": {
"operationId": "get_file_info_api_drive_files__file_id__get",
"parameters": [
{
"in": "path",
"name": "file_id",
"required": true,
"schema": {
"title": "File Id",
"type": "integer"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/DriveFileDetailOut"
}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Get File Info",
"tags": [
"Drive"
]
},
"patch": {
"operationId": "update_file_api_drive_files__file_id__patch",
"parameters": [
{
"in": "path",
"name": "file_id",
"required": true,
"schema": {
"title": "File Id",
"type": "integer"
}
}
],
"requestBody": {
"content": {
"application/x-www-form-urlencoded": {
"schema": {
"$ref": "#/components/schemas/Body_update_file_api_drive_files__file_id__patch"
}
}
}
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Update File",
"tags": [
"Drive"
]
}
},
"/api/drive/files/{file_id}/activities": {
"get": {
"operationId": "get_file_activity_api_drive_files__file_id__activities_get",
"parameters": [
{
"in": "path",
"name": "file_id",
"required": true,
"schema": {
"title": "File Id",
"type": "integer"
}
},
{
"in": "query",
"name": "limit",
"required": false,
"schema": {
"default": 50,
"title": "Limit",
"type": "integer"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/DriveActivityListOut"
}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Get File Activity",
"tags": [
"Drive"
]
}
},
"/api/drive/files/{file_id}/comments": {
"get": {
"operationId": "list_file_comments_api_drive_files__file_id__comments_get",
"parameters": [
{
"in": "path",
"name": "file_id",
"required": true,
"schema": {
"title": "File Id",
"type": "integer"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/DriveCommentListOut"
}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "List File Comments",
"tags": [
"Drive"
]
},
"post": {
"operationId": "create_file_comment_api_drive_files__file_id__comments_post",
"parameters": [
{
"in": "path",
"name": "file_id",
"required": true,
"schema": {
"title": "File Id",
"type": "integer"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreateCommentRequest"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Create File Comment",
"tags": [
"Drive"
]
}
},
"/api/drive/files/{file_id}/content": {
"patch": {
"description": "Save updated HTML/text content for a file (used by the editor to persist comment highlights).",
"operationId": "update_file_content_api_drive_files__file_id__content_patch",
"parameters": [
{
"in": "path",
"name": "file_id",
"required": true,
"schema": {
"title": "File Id",
"type": "integer"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Update File Content",
"tags": [
"Drive"
]
}
},
"/api/drive/files/{file_id}/copy": {
"post": {
"operationId": "copy_file_api_drive_files__file_id__copy_post",
"parameters": [
{
"in": "path",
"name": "file_id",
"required": true,
"schema": {
"title": "File Id",
"type": "integer"
}
}
],
"requestBody": {
"content": {
"application/x-www-form-urlencoded": {
"schema": {
"$ref": "#/components/schemas/Body_copy_file_api_drive_files__file_id__copy_post"
}
}
}
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Copy File",
"tags": [
"Drive"
]
}
},
"/api/drive/files/{file_id}/download": {
"get": {
"operationId": "download_file_api_drive_files__file_id__download_get",
"parameters": [
{
"in": "path",
"name": "file_id",
"required": true,
"schema": {
"title": "File Id",
"type": "integer"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Download File",
"tags": [
"Drive"
]
}
},
"/api/drive/files/{file_id}/drafts": {
"get": {
"operationId": "get_file_drafts_api_drive_files__file_id__drafts_get",
"parameters": [
{
"in": "path",
"name": "file_id",
"required": true,
"schema": {
"title": "File Id",
"type": "integer"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/DriveDraftListOut"
}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Get File Drafts",
"tags": [
"Drive"
]
},
"post": {
"operationId": "save_file_drafts_api_drive_files__file_id__drafts_post",
"parameters": [
{
"in": "path",
"name": "file_id",
"required": true,
"schema": {
"title": "File Id",
"type": "integer"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SaveDraftsRequest"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Save File Drafts",
"tags": [
"Drive"
]
}
},
"/api/drive/files/{file_id}/info": {
"get": {
"operationId": "get_file_info_api_drive_files__file_id__info_get",
"parameters": [
{
"in": "path",
"name": "file_id",
"required": true,
"schema": {
"title": "File Id",
"type": "integer"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/DriveFileDetailOut"
}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Get File Info",
"tags": [
"Drive"
]
}
},
"/api/drive/files/{file_id}/permanent": {
"delete": {
"operationId": "permanent_delete_file_api_drive_files__file_id__permanent_delete",
"parameters": [
{
"in": "path",
"name": "file_id",
"required": true,
"schema": {
"title": "File Id",
"type": "integer"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Permanent Delete File",
"tags": [
"Drive"
]
}
},
"/api/drive/files/{file_id}/restore": {
"post": {
"operationId": "restore_file_api_drive_files__file_id__restore_post",
"parameters": [
{
"in": "path",
"name": "file_id",
"required": true,
"schema": {
"title": "File Id",
"type": "integer"
}
}
],
"requestBody": {
"content": {
"application/x-www-form-urlencoded": {
"schema": {
"$ref": "#/components/schemas/Body_restore_file_api_drive_files__file_id__restore_post"
}
}
}
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Restore File",
"tags": [
"Drive"
]
}
},
"/api/drive/files/{file_id}/shares": {
"get": {
"operationId": "list_file_shares_api_drive_files__file_id__shares_get",
"parameters": [
{
"in": "path",
"name": "file_id",
"required": true,
"schema": {
"title": "File Id",
"type": "integer"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"items": {
"$ref": "#/components/schemas/DriveShareOut"
},
"title": "Response List File Shares Api Drive Files File Id Shares Get",
"type": "array"
}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "List File Shares",
"tags": [
"Drive"
]
},
"post": {
"operationId": "create_file_share_api_drive_files__file_id__shares_post",
"parameters": [
{
"in": "path",
"name": "file_id",
"required": true,
"schema": {
"title": "File Id",
"type": "integer"
}
}
],
"requestBody": {
"content": {
"application/x-www-form-urlencoded": {
"schema": {
"$ref": "#/components/schemas/Body_create_file_share_api_drive_files__file_id__shares_post"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Create File Share",
"tags": [
"Drive"
]
}
},
"/api/drive/files/{file_id}/star": {
"patch": {
"operationId": "star_file_api_drive_files__file_id__star_patch",
"parameters": [
{
"in": "path",
"name": "file_id",
"required": true,
"schema": {
"title": "File Id",
"type": "integer"
}
}
],
"requestBody": {
"content": {
"application/x-www-form-urlencoded": {
"schema": {
"$ref": "#/components/schemas/Body_star_file_api_drive_files__file_id__star_patch"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Star File",
"tags": [
"Drive"
]
}
},
"/api/drive/files/{file_id}/stream": {
"get": {
"operationId": "stream_file_api_drive_files__file_id__stream_get",
"parameters": [
{
"in": "path",
"name": "file_id",
"required": true,
"schema": {
"title": "File Id",
"type": "integer"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Stream File",
"tags": [
"Drive"
]
}
},
"/api/drive/files/{file_id}/versions": {
"get": {
"operationId": "get_file_versions_api_drive_files__file_id__versions_get",
"parameters": [
{
"in": "path",
"name": "file_id",
"required": true,
"schema": {
"title": "File Id",
"type": "integer"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/DriveVersionListOut"
}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Get File Versions",
"tags": [
"Drive"
]
}
},
"/api/drive/files/{file_id}/versions/{version_id}/download": {
"get": {
"operationId": "download_file_version_api_drive_files__file_id__versions__version_id__download_get",
"parameters": [
{
"in": "path",
"name": "file_id",
"required": true,
"schema": {
"title": "File Id",
"type": "integer"
}
},
{
"in": "path",
"name": "version_id",
"required": true,
"schema": {
"title": "Version Id",
"type": "integer"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Download File Version",
"tags": [
"Drive"
]
}
},
"/api/drive/files/{file_id}/versions/{version_id}/restore": {
"post": {
"operationId": "restore_file_version_api_drive_files__file_id__versions__version_id__restore_post",
"parameters": [
{
"in": "path",
"name": "file_id",
"required": true,
"schema": {
"title": "File Id",
"type": "integer"
}
},
{
"in": "path",
"name": "version_id",
"required": true,
"schema": {
"title": "Version Id",
"type": "integer"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Restore File Version",
"tags": [
"Drive"
]
}
},
"/api/drive/files/{file_id}/versions/{version_id}/stream": {
"get": {
"operationId": "stream_file_version_api_drive_files__file_id__versions__version_id__stream_get",
"parameters": [
{
"in": "path",
"name": "file_id",
"required": true,
"schema": {
"title": "File Id",
"type": "integer"
}
},
{
"in": "path",
"name": "version_id",
"required": true,
"schema": {
"title": "Version Id",
"type": "integer"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Stream File Version",
"tags": [
"Drive"
]
}
},
"/api/drive/files/{file_id}/view": {
"get": {
"operationId": "view_file_api_drive_files__file_id__view_get",
"parameters": [
{
"in": "path",
"name": "file_id",
"required": true,
"schema": {
"title": "File Id",
"type": "integer"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "View File",
"tags": [
"Drive"
]
}
},
"/api/drive/folder/{folder_id}": {
"get": {
"operationId": "open_folder_api_drive_folder__folder_id__get",
"parameters": [
{
"in": "path",
"name": "folder_id",
"required": true,
"schema": {
"title": "Folder Id",
"type": "integer"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/DriveFolderContentsOut"
}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Open Folder",
"tags": [
"Drive"
]
}
},
"/api/drive/folders": {
"post": {
"operationId": "create_folder_api_drive_folders_post",
"requestBody": {
"content": {
"application/x-www-form-urlencoded": {
"schema": {
"$ref": "#/components/schemas/Body_create_folder_api_drive_folders_post"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Create Folder",
"tags": [
"Drive"
]
}
},
"/api/drive/folders/{folder_id}": {
"delete": {
"operationId": "delete_folder_api_drive_folders__folder_id__delete",
"parameters": [
{
"in": "path",
"name": "folder_id",
"required": true,
"schema": {
"title": "Folder Id",
"type": "integer"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Delete Folder",
"tags": [
"Drive"
]
},
"patch": {
"operationId": "update_folder_api_drive_folders__folder_id__patch",
"parameters": [
{
"in": "path",
"name": "folder_id",
"required": true,
"schema": {
"title": "Folder Id",
"type": "integer"
}
}
],
"requestBody": {
"content": {
"application/x-www-form-urlencoded": {
"schema": {
"$ref": "#/components/schemas/Body_update_folder_api_drive_folders__folder_id__patch"
}
}
}
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Update Folder",
"tags": [
"Drive"
]
}
},
"/api/drive/folders/{folder_id}/permanent": {
"delete": {
"operationId": "permanent_delete_folder_api_drive_folders__folder_id__permanent_delete",
"parameters": [
{
"in": "path",
"name": "folder_id",
"required": true,
"schema": {
"title": "Folder Id",
"type": "integer"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Permanent Delete Folder",
"tags": [
"Drive"
]
}
},
"/api/drive/folders/{folder_id}/restore": {
"post": {
"operationId": "restore_folder_api_drive_folders__folder_id__restore_post",
"parameters": [
{
"in": "path",
"name": "folder_id",
"required": true,
"schema": {
"title": "Folder Id",
"type": "integer"
}
}
],
"requestBody": {
"content": {
"application/x-www-form-urlencoded": {
"schema": {
"$ref": "#/components/schemas/Body_restore_folder_api_drive_folders__folder_id__restore_post"
}
}
}
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Restore Folder",
"tags": [
"Drive"
]
}
},
"/api/drive/folders/{folder_id}/shares": {
"get": {
"operationId": "list_folder_shares_api_drive_folders__folder_id__shares_get",
"parameters": [
{
"in": "path",
"name": "folder_id",
"required": true,
"schema": {
"title": "Folder Id",
"type": "integer"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"items": {
"$ref": "#/components/schemas/DriveShareOut"
},
"title": "Response List Folder Shares Api Drive Folders Folder Id Shares Get",
"type": "array"
}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "List Folder Shares",
"tags": [
"Drive"
]
},
"post": {
"operationId": "create_folder_share_api_drive_folders__folder_id__shares_post",
"parameters": [
{
"in": "path",
"name": "folder_id",
"required": true,
"schema": {
"title": "Folder Id",
"type": "integer"
}
}
],
"requestBody": {
"content": {
"application/x-www-form-urlencoded": {
"schema": {
"$ref": "#/components/schemas/Body_create_folder_share_api_drive_folders__folder_id__shares_post"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Create Folder Share",
"tags": [
"Drive"
]
}
},
"/api/drive/folders/{folder_id}/star": {
"patch": {
"operationId": "star_folder_api_drive_folders__folder_id__star_patch",
"parameters": [
{
"in": "path",
"name": "folder_id",
"required": true,
"schema": {
"title": "Folder Id",
"type": "integer"
}
}
],
"requestBody": {
"content": {
"application/x-www-form-urlencoded": {
"schema": {
"$ref": "#/components/schemas/Body_star_folder_api_drive_folders__folder_id__star_patch"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Star Folder",
"tags": [
"Drive"
]
}
},
"/api/drive/me/recent": {
"get": {
"operationId": "get_recent_files_api_drive_me_recent_get",
"parameters": [
{
"in": "query",
"name": "limit",
"required": false,
"schema": {
"default": 50,
"title": "Limit",
"type": "integer"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/DriveFileListOut"
}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Get Recent Files",
"tags": [
"Drive"
]
}
},
"/api/drive/me/search": {
"get": {
"operationId": "search_drive_api_drive_me_search_get",
"parameters": [
{
"in": "query",
"name": "q",
"required": true,
"schema": {
"title": "Q",
"type": "string"
}
},
{
"in": "query",
"name": "limit",
"required": false,
"schema": {
"default": 20,
"title": "Limit",
"type": "integer"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Search Drive",
"tags": [
"Drive"
]
}
},
"/api/drive/me/shared": {
"get": {
"operationId": "get_shared_with_me_api_drive_me_shared_get",
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/DriveSharedListOut"
}
}
},
"description": "Successful Response"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Get Shared With Me",
"tags": [
"Drive"
]
}
},
"/api/drive/me/shared-by-me": {
"get": {
"operationId": "get_shared_by_me_api_drive_me_shared_by_me_get",
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/DriveSharedListOut"
}
}
},
"description": "Successful Response"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Get Shared By Me",
"tags": [
"Drive"
]
}
},
"/api/drive/me/starred": {
"get": {
"operationId": "get_starred_api_drive_me_starred_get",
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/DriveResourceListOut"
}
}
},
"description": "Successful Response"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Get Starred",
"tags": [
"Drive"
]
}
},
"/api/drive/me/trash": {
"get": {
"operationId": "get_trash_api_drive_me_trash_get",
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/DriveResourceListOut"
}
}
},
"description": "Successful Response"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Get Trash",
"tags": [
"Drive"
]
}
},
"/api/drive/permanent/{resource_id}": {
"delete": {
"operationId": "permanent_delete_generic_api_drive_permanent__resource_id__delete",
"parameters": [
{
"in": "path",
"name": "resource_id",
"required": true,
"schema": {
"title": "Resource Id",
"type": "integer"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Permanent Delete Generic",
"tags": [
"Drive"
]
}
},
"/api/drive/restore/{resource_id}": {
"post": {
"operationId": "restore_resource_generic_api_drive_restore__resource_id__post",
"parameters": [
{
"in": "path",
"name": "resource_id",
"required": true,
"schema": {
"title": "Resource Id",
"type": "integer"
}
}
],
"requestBody": {
"content": {
"application/x-www-form-urlencoded": {
"schema": {
"$ref": "#/components/schemas/Body_restore_resource_generic_api_drive_restore__resource_id__post"
}
}
}
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Restore Resource Generic",
"tags": [
"Drive"
]
}
},
"/api/drive/root": {
"get": {
"operationId": "get_root_api_drive_root_get",
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/DriveRootOut"
}
}
},
"description": "Successful Response"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Get Root",
"tags": [
"Drive"
]
}
},
"/api/drive/scan/check": {
"post": {
"description": "Scan a file for malware without persisting it.",
"operationId": "pre_scan_file_api_drive_scan_check_post",
"requestBody": {
"content": {
"multipart/form-data": {
"schema": {
"$ref": "#/components/schemas/Body_pre_scan_file_api_drive_scan_check_post"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Pre Scan File",
"tags": [
"ClamAV Scan"
]
}
},
"/api/drive/scan/status": {
"get": {
"description": "Check if the ClamAV daemon is reachable.",
"operationId": "get_clamav_status_api_drive_scan_status_get",
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/DriveScanStatusOut"
}
}
},
"description": "Successful Response"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Get Clamav Status",
"tags": [
"ClamAV Scan"
]
}
},
"/api/drive/share": {
"post": {
"operationId": "share_resource_generic_api_drive_share_post",
"requestBody": {
"content": {
"application/x-www-form-urlencoded": {
"schema": {
"$ref": "#/components/schemas/Body_share_resource_generic_api_drive_share_post"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Share Resource Generic",
"tags": [
"Drive"
]
}
},
"/api/drive/share/link": {
"post": {
"operationId": "create_share_link_api_drive_share_link_post",
"requestBody": {
"content": {
"application/x-www-form-urlencoded": {
"schema": {
"$ref": "#/components/schemas/Body_create_share_link_api_drive_share_link_post"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Create Share Link",
"tags": [
"Drive"
]
}
},
"/api/drive/share/link/{share_id}": {
"delete": {
"operationId": "revoke_share_link_api_drive_share_link__share_id__delete",
"parameters": [
{
"in": "path",
"name": "share_id",
"required": true,
"schema": {
"title": "Share Id",
"type": "integer"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Revoke Share Link",
"tags": [
"Drive"
]
}
},
"/api/drive/share/links": {
"get": {
"operationId": "list_share_links_api_drive_share_links_get",
"parameters": [
{
"in": "query",
"name": "resource_id",
"required": true,
"schema": {
"title": "Resource Id",
"type": "integer"
}
},
{
"in": "query",
"name": "resource_type",
"required": true,
"schema": {
"title": "Resource Type",
"type": "string"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "List Share Links",
"tags": [
"Drive"
]
}
},
"/api/drive/shares/{share_id}": {
"delete": {
"operationId": "delete_share_api_drive_shares__share_id__delete",
"parameters": [
{
"in": "path",
"name": "share_id",
"required": true,
"schema": {
"title": "Share Id",
"type": "integer"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Delete Share",
"tags": [
"Drive"
]
},
"patch": {
"operationId": "update_share_api_drive_shares__share_id__patch",
"parameters": [
{
"in": "path",
"name": "share_id",
"required": true,
"schema": {
"title": "Share Id",
"type": "integer"
}
}
],
"requestBody": {
"content": {
"application/x-www-form-urlencoded": {
"schema": {
"$ref": "#/components/schemas/Body_update_share_api_drive_shares__share_id__patch"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Update Share",
"tags": [
"Drive"
]
}
},
"/api/drive/star": {
"post": {
"operationId": "star_resource_generic_api_drive_star_post",
"requestBody": {
"content": {
"application/x-www-form-urlencoded": {
"schema": {
"$ref": "#/components/schemas/Body_star_resource_generic_api_drive_star_post"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Star Resource Generic",
"tags": [
"Drive"
]
}
},
"/api/drive/star/{resource_id}": {
"delete": {
"operationId": "unstar_resource_generic_api_drive_star__resource_id__delete",
"parameters": [
{
"in": "path",
"name": "resource_id",
"required": true,
"schema": {
"title": "Resource Id",
"type": "integer"
}
}
],
"requestBody": {
"content": {
"application/x-www-form-urlencoded": {
"schema": {
"$ref": "#/components/schemas/Body_unstar_resource_generic_api_drive_star__resource_id__delete"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Unstar Resource Generic",
"tags": [
"Drive"
]
}
},
"/api/drive/trash/{resource_id}": {
"post": {
"operationId": "trash_resource_generic_api_drive_trash__resource_id__post",
"parameters": [
{
"in": "path",
"name": "resource_id",
"required": true,
"schema": {
"title": "Resource Id",
"type": "integer"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Trash Resource Generic",
"tags": [
"Drive"
]
}
},
"/api/drive/upload": {
"post": {
"operationId": "upload_file_api_drive_upload_post",
"requestBody": {
"content": {
"multipart/form-data": {
"schema": {
"$ref": "#/components/schemas/Body_upload_file_api_drive_upload_post"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Upload File",
"tags": [
"Drive"
]
}
},
"/api/drive/upload/callback": {
"post": {
"operationId": "upload_callback_api_drive_upload_callback_post",
"requestBody": {
"content": {
"application/x-www-form-urlencoded": {
"schema": {
"$ref": "#/components/schemas/Body_upload_callback_api_drive_upload_callback_post"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Upload Callback",
"tags": [
"Drive"
]
}
},
"/api/drive/upload/presigned": {
"post": {
"operationId": "generate_upload_url_api_drive_upload_presigned_post",
"requestBody": {
"content": {
"application/x-www-form-urlencoded": {
"schema": {
"$ref": "#/components/schemas/Body_generate_upload_url_api_drive_upload_presigned_post"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PresignedUploadOut"
}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Generate Upload Url",
"tags": [
"Drive"
]
}
},
"/api/export-docx/": {
"post": {
"operationId": "export_docx_api_export_docx__post",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ExportDocxRequest"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/DocxExportOut"
}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Export Docx",
"tags": [
"Export"
]
}
},
"/api/export-html/": {
"post": {
"operationId": "export_html_api_export_html__post",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ExportHTMLRequest"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Export Html",
"tags": [
"Export"
]
}
},
"/api/export-pdf/": {
"post": {
"operationId": "export_pdf_api_export_pdf__post",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ExportPdfRequest"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Export Pdf",
"tags": [
"Export"
]
}
},
"/api/export-simple-html/": {
"post": {
"operationId": "export_simple_html_api_export_simple_html__post",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ExportSimpleHTMLRequest"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Export Simple Html",
"tags": [
"Export"
]
}
},
"/api/export-xml/": {
"post": {
"operationId": "convert_to_xml_api_export_xml__post",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ExportXMLRequest"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Convert To Xml",
"tags": [
"Export"
]
}
},
"/api/extract": {
"post": {
"description": "On-demand document extraction endpoint.\nLoads models only when called and unloads after.",
"operationId": "extract_api_extract_post",
"requestBody": {
"content": {
"multipart/form-data": {
"schema": {
"$ref": "#/components/schemas/Body_extract_api_extract_post"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Extract"
}
},
"/api/extractions/extract": {
"post": {
"operationId": "start_extraction_api_extractions_extract_post",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ExtractionRequest"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ExtractionResponse"
}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Start Extraction",
"tags": [
"Extraction"
]
}
},
"/api/extractions/{document_id}": {
"get": {
"operationId": "get_extraction_status_api_extractions__document_id__get",
"parameters": [
{
"in": "path",
"name": "document_id",
"required": true,
"schema": {
"title": "Document Id",
"type": "integer"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ExtractionResponse"
}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Get Extraction Status",
"tags": [
"Extraction"
]
}
},
"/api/health": {
"get": {
"operationId": "health_check_api_health_get",
"responses": {
"200": {
"content": {
"application/json": {
"schema": {}
}
},
"description": "Successful Response"
}
},
"summary": "Health Check"
}
},
"/api/me/account": {
"delete": {
"operationId": "delete_account_api_me_account_delete",
"responses": {
"200": {
"content": {
"application/json": {
"schema": {}
}
},
"description": "Successful Response"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Delete Account",
"tags": [
"User Profile"
]
}
},
"/api/me/api-key": {
"post": {
"operationId": "update_api_key_api_me_api_key_post",
"requestBody": {
"content": {
"application/json": {
"schema": {
"additionalProperties": true,
"title": "Payload",
"type": "object"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/StatusOut"
}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Update Api Key",
"tags": [
"User Profile"
]
}
},
"/api/me/api-key/status": {
"get": {
"operationId": "get_api_key_status_api_me_api_key_status_get",
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiKeyStatusOut"
}
}
},
"description": "Successful Response"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Get Api Key Status",
"tags": [
"User Profile"
]
}
},
"/api/me/password": {
"post": {
"operationId": "change_password_api_me_password_post",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ChangePasswordIn"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Change Password",
"tags": [
"User Profile"
]
}
},
"/api/me/profile": {
"get": {
"operationId": "get_profile_api_me_profile_get",
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UserOut"
}
}
},
"description": "Successful Response"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Get Profile",
"tags": [
"User Profile"
]
},
"patch": {
"operationId": "update_profile_api_me_profile_patch",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UpdateProfileIn"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UserOut"
}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Update Profile",
"tags": [
"User Profile"
]
}
},
"/api/me/projects": {
"get": {
"operationId": "list_projects_api_me_projects_get",
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"items": {
"$ref": "#/components/schemas/ProjectOut"
},
"title": "Response List Projects Api Me Projects Get",
"type": "array"
}
}
},
"description": "Successful Response"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "List Projects",
"tags": [
"Projects"
]
},
"post": {
"operationId": "create_project_api_me_projects_post",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreateProjectIn"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProjectOut"
}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Create Project",
"tags": [
"Projects"
]
}
},
"/api/me/projects/": {
"post": {
"operationId": "create_project_api_me_projects__post",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreateProjectIn"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProjectOut"
}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Create Project",
"tags": [
"Projects"
]
}
},
"/api/me/projects/{project_id}": {
"delete": {
"operationId": "delete_project_api_me_projects__project_id__delete",
"parameters": [
{
"in": "path",
"name": "project_id",
"required": true,
"schema": {
"title": "Project Id",
"type": "integer"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/MessageOut"
}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Delete Project",
"tags": [
"Projects"
]
},
"get": {
"operationId": "get_project_api_me_projects__project_id__get",
"parameters": [
{
"in": "path",
"name": "project_id",
"required": true,
"schema": {
"title": "Project Id",
"type": "integer"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProjectDetailOut"
}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Get Project",
"tags": [
"Projects"
]
},
"patch": {
"operationId": "update_project_api_me_projects__project_id__patch",
"parameters": [
{
"in": "path",
"name": "project_id",
"required": true,
"schema": {
"title": "Project Id",
"type": "integer"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UpdateProjectIn"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Update Project",
"tags": [
"Projects"
]
}
},
"/api/me/projects/{project_id}/activity": {
"get": {
"operationId": "get_project_activity_api_me_projects__project_id__activity_get",
"parameters": [
{
"in": "path",
"name": "project_id",
"required": true,
"schema": {
"title": "Project Id",
"type": "integer"
}
},
{
"in": "query",
"name": "limit",
"required": false,
"schema": {
"default": 50,
"title": "Limit",
"type": "integer"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProjectActivityOut"
}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Get Project Activity",
"tags": [
"Project Details"
]
}
},
"/api/me/projects/{project_id}/details": {
"get": {
"operationId": "get_project_details_api_me_projects__project_id__details_get",
"parameters": [
{
"in": "path",
"name": "project_id",
"required": true,
"schema": {
"title": "Project Id",
"type": "integer"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProjectDetailsOut"
}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Get Project Details",
"tags": [
"Project Details"
]
}
},
"/api/me/smtp-credentials": {
"get": {
"operationId": "get_smtp_credentials_api_me_smtp_credentials_get",
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UserSMTPCredentialsOut"
}
}
},
"description": "Successful Response"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Get Smtp Credentials",
"tags": [
"User Profile"
]
},
"patch": {
"operationId": "update_smtp_credentials_api_me_smtp_credentials_patch",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UserSMTPCredentialsPatchIn"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UserSMTPCredentialsOut"
}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Update Smtp Credentials",
"tags": [
"User Profile"
]
}
},
"/api/me/stats": {
"get": {
"operationId": "get_stats_api_me_stats_get",
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/MeStatsOut"
}
}
},
"description": "Successful Response"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Get Stats",
"tags": [
"User Profile"
]
}
},
"/api/me/storage-nonce": {
"get": {
"description": "Returns a deterministic, user-specific nonce for client-side encryption.\nCombined with APP_SECRET to ensure it's not guessing-prone.",
"operationId": "get_storage_nonce_api_me_storage_nonce_get",
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/StorageNonceOut"
}
}
},
"description": "Successful Response"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Get Storage Nonce",
"tags": [
"User Profile"
]
}
},
"/api/me/tutorial-complete": {
"post": {
"operationId": "complete_tutorial_api_me_tutorial_complete_post",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/TutorialCompleteSchema"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UserOut"
}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Complete Tutorial",
"tags": [
"User Profile"
]
}
},
"/api/me/tutorial/finish": {
"post": {
"description": "A specific, robust endpoint to mark tutorials as finished.\nAutomatically handles both dashboard and docs depending on the key.",
"operationId": "finish_tutorial_api_me_tutorial_finish_post",
"requestBody": {
"content": {
"application/json": {
"schema": {
"anyOf": [
{
"$ref": "#/components/schemas/TutorialCompleteSchema"
},
{
"type": "null"
}
],
"title": "Payload"
}
}
}
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UserOut"
}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Finish Tutorial",
"tags": [
"User Profile"
]
}
},
"/api/notifications": {
"delete": {
"description": "Delete all notifications for the current user.",
"operationId": "delete_all_api_notifications_delete",
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/DeletedCountOut"
}
}
},
"description": "Successful Response"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Delete All",
"tags": [
"Notifications"
]
},
"get": {
"description": "Return up to `limit` notifications for the current user (newest first).",
"operationId": "list_notifications_api_notifications_get",
"parameters": [
{
"in": "query",
"name": "limit",
"required": false,
"schema": {
"default": 50,
"maximum": 100,
"minimum": 1,
"title": "Limit",
"type": "integer"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"items": {
"$ref": "#/components/schemas/NotificationOut"
},
"title": "Response List Notifications Api Notifications Get",
"type": "array"
}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "List Notifications",
"tags": [
"Notifications"
]
}
},
"/api/notifications/read-all": {
"patch": {
"description": "Mark all notifications for the current user as read.",
"operationId": "mark_all_read_api_notifications_read_all_patch",
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/MarkedCountOut"
}
}
},
"description": "Successful Response"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Mark All Read",
"tags": [
"Notifications"
]
}
},
"/api/notifications/unread-count": {
"get": {
"description": "Return the number of unread notifications.",
"operationId": "unread_count_api_notifications_unread_count_get",
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UnreadCountOut"
}
}
},
"description": "Successful Response"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Unread Count",
"tags": [
"Notifications"
]
}
},
"/api/notifications/{notif_id}": {
"delete": {
"description": "Delete a single notification.",
"operationId": "delete_notification_api_notifications__notif_id__delete",
"parameters": [
{
"in": "path",
"name": "notif_id",
"required": true,
"schema": {
"title": "Notif Id",
"type": "integer"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/StatusOut"
}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Delete Notification",
"tags": [
"Notifications"
]
}
},
"/api/notifications/{notif_id}/read": {
"patch": {
"description": "Mark a single notification as read.",
"operationId": "mark_read_api_notifications__notif_id__read_patch",
"parameters": [
{
"in": "path",
"name": "notif_id",
"required": true,
"schema": {
"title": "Notif Id",
"type": "integer"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Mark Read",
"tags": [
"Notifications"
]
}
},
"/api/org/access-history": {
"get": {
"description": "Who was granted what, when, and by whom.\n\nThe question a security questionnaire actually asks is \"who had access in\nMarch\", and this is how it is answered: the events are append-only, so the\nstate at any past moment is a replay rather than a stored snapshot. That\nneeds no extra storage and cannot drift from the events it summarises.\n\nFiltering on `org_unit_id` matches the JSON payload rather than a column,\nbecause the log is generic and shared with every other module. That is a\nsequential scan over this tenant's access rows — acceptable, because this\nendpoint is used rarely and by a human.",
"operationId": "access_history_api_org_access_history_get",
"parameters": [
{
"in": "query",
"name": "target_user_id",
"required": false,
"schema": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Target User Id"
}
},
{
"in": "query",
"name": "org_unit_id",
"required": false,
"schema": {
"anyOf": [
{
"format": "uuid",
"type": "string"
},
{
"type": "null"
}
],
"title": "Org Unit Id"
}
},
{
"in": "query",
"name": "since",
"required": false,
"schema": {
"anyOf": [
{
"format": "date-time",
"type": "string"
},
{
"type": "null"
}
],
"title": "Since"
}
},
{
"in": "query",
"name": "until",
"required": false,
"schema": {
"anyOf": [
{
"format": "date-time",
"type": "string"
},
{
"type": "null"
}
],
"title": "Until"
}
},
{
"in": "query",
"name": "limit",
"required": false,
"schema": {
"default": 200,
"title": "Limit",
"type": "integer"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"items": {
"$ref": "#/components/schemas/AccessEventOut"
},
"title": "Response Access History Api Org Access History Get",
"type": "array"
}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Access History",
"tags": [
"Organisation"
]
}
},
"/api/org/authority/{access_code}": {
"get": {
"description": "Where the caller holds one access code.\n\nDeliberately ungated and self-only: it reports the caller's own authority,\nwhich they can already determine by trying things. It exists so the frontend\ncan grey out what will fail rather than letting the user find out with a 403,\nand so that \"why can I not see this?\" has an answer that does not require\nreading the database.",
"operationId": "my_authority_api_org_authority__access_code__get",
"parameters": [
{
"in": "path",
"name": "access_code",
"required": true,
"schema": {
"title": "Access Code",
"type": "string"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AuthorityOut"
}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "My Authority",
"tags": [
"Organisation"
]
}
},
"/api/org/grants": {
"post": {
"description": "Grant a role to a user or a group, at a unit or tenant-wide.\n\nThe body of this used to live here. It now lives in `GrantService`, because\n`/api/admin/users/{id}/roles` needs the same delegation check, the same\ntenant validation and the same audit write — and a second copy of a\npermission check is a second chance to omit the one that stops a scoped\nmanager granting themselves the whole tenant.",
"operationId": "grant_role_api_org_grants_post",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GrantRoleIn"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ScopedRoleOut"
}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Grant Role",
"tags": [
"Organisation"
]
}
},
"/api/org/grants/{grant_id}": {
"delete": {
"operationId": "revoke_grant_api_org_grants__grant_id__delete",
"parameters": [
{
"in": "path",
"name": "grant_id",
"required": true,
"schema": {
"format": "uuid",
"title": "Grant Id",
"type": "string"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OrgStatusOut"
}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Revoke Grant",
"tags": [
"Organisation"
]
}
},
"/api/org/groups": {
"get": {
"operationId": "list_groups_api_org_groups_get",
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"items": {
"$ref": "#/components/schemas/AccessGroupOut"
},
"title": "Response List Groups Api Org Groups Get",
"type": "array"
}
}
},
"description": "Successful Response"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "List Groups",
"tags": [
"Organisation"
]
},
"post": {
"operationId": "create_group_api_org_groups_post",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreateAccessGroupIn"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AccessGroupOut"
}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Create Group",
"tags": [
"Organisation"
]
}
},
"/api/org/groups/{group_id}": {
"delete": {
"description": "Deleting a group takes its grants with it (ON DELETE CASCADE).\n\nDeliberate: a grant whose principal no longer exists is a row nobody can\nsee, revoke or audit, and it must not keep applying.",
"operationId": "delete_group_api_org_groups__group_id__delete",
"parameters": [
{
"in": "path",
"name": "group_id",
"required": true,
"schema": {
"format": "uuid",
"title": "Group Id",
"type": "string"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OrgStatusOut"
}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Delete Group",
"tags": [
"Organisation"
]
}
},
"/api/org/groups/{group_id}/members": {
"get": {
"operationId": "list_group_members_api_org_groups__group_id__members_get",
"parameters": [
{
"in": "path",
"name": "group_id",
"required": true,
"schema": {
"format": "uuid",
"title": "Group Id",
"type": "string"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"items": {
"$ref": "#/components/schemas/GroupMemberOut"
},
"title": "Response List Group Members Api Org Groups Group Id Members Get",
"type": "array"
}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "List Group Members",
"tags": [
"Organisation"
]
},
"post": {
"operationId": "add_group_member_api_org_groups__group_id__members_post",
"parameters": [
{
"in": "path",
"name": "group_id",
"required": true,
"schema": {
"format": "uuid",
"title": "Group Id",
"type": "string"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AddGroupMemberIn"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GroupMemberOut"
}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Add Group Member",
"tags": [
"Organisation"
]
}
},
"/api/org/groups/{group_id}/members/{target_user_id}": {
"delete": {
"operationId": "remove_group_member_api_org_groups__group_id__members__target_user_id__delete",
"parameters": [
{
"in": "path",
"name": "group_id",
"required": true,
"schema": {
"format": "uuid",
"title": "Group Id",
"type": "string"
}
},
{
"in": "path",
"name": "target_user_id",
"required": true,
"schema": {
"title": "Target User Id",
"type": "integer"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OrgStatusOut"
}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Remove Group Member",
"tags": [
"Organisation"
]
}
},
"/api/org/units": {
"get": {
"operationId": "list_units_api_org_units_get",
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"items": {
"$ref": "#/components/schemas/OrgUnitOut"
},
"title": "Response List Units Api Org Units Get",
"type": "array"
}
}
},
"description": "Successful Response"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "List Units",
"tags": [
"Organisation"
]
},
"post": {
"operationId": "create_unit_api_org_units_post",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreateOrgUnitIn"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OrgUnitOut"
}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Create Unit",
"tags": [
"Organisation"
]
}
},
"/api/org/units/{unit_id}": {
"delete": {
"operationId": "delete_unit_api_org_units__unit_id__delete",
"parameters": [
{
"in": "path",
"name": "unit_id",
"required": true,
"schema": {
"format": "uuid",
"title": "Unit Id",
"type": "string"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OrgUnitOut"
}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Delete Unit",
"tags": [
"Organisation"
]
},
"get": {
"operationId": "get_unit_api_org_units__unit_id__get",
"parameters": [
{
"in": "path",
"name": "unit_id",
"required": true,
"schema": {
"format": "uuid",
"title": "Unit Id",
"type": "string"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OrgUnitOut"
}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Get Unit",
"tags": [
"Organisation"
]
},
"patch": {
"operationId": "update_unit_api_org_units__unit_id__patch",
"parameters": [
{
"in": "path",
"name": "unit_id",
"required": true,
"schema": {
"format": "uuid",
"title": "Unit Id",
"type": "string"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UpdateOrgUnitIn"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OrgUnitOut"
}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Update Unit",
"tags": [
"Organisation"
]
}
},
"/api/org/units/{unit_id}/grants": {
"get": {
"description": "Roles granted **at** this unit.\n\nDeliberately not \"roles effective here\": a grant on an ancestor also applies\nto this unit through subtree inheritance, and rolling those in would make\nthe list look like something you could revoke from here. You cannot — you\nrevoke it where it was granted. Showing only what was granted at this node\nkeeps the display and the action in agreement.\n\nThe other direction, \"everything this user holds\", is\n`/org/users/{id}/roles`.",
"operationId": "grants_at_unit_api_org_units__unit_id__grants_get",
"parameters": [
{
"in": "path",
"name": "unit_id",
"required": true,
"schema": {
"format": "uuid",
"title": "Unit Id",
"type": "string"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"items": {
"$ref": "#/components/schemas/ScopedRoleOut"
},
"title": "Response Grants At Unit Api Org Units Unit Id Grants Get",
"type": "array"
}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Grants At Unit",
"tags": [
"Organisation"
]
}
},
"/api/org/units/{unit_id}/leads": {
"get": {
"operationId": "lead_history_api_org_units__unit_id__leads_get",
"parameters": [
{
"in": "path",
"name": "unit_id",
"required": true,
"schema": {
"format": "uuid",
"title": "Unit Id",
"type": "string"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"items": {
"$ref": "#/components/schemas/LeadOut"
},
"title": "Response Lead History Api Org Units Unit Id Leads Get",
"type": "array"
}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Lead History",
"tags": [
"Organisation"
]
},
"post": {
"operationId": "set_lead_api_org_units__unit_id__leads_post",
"parameters": [
{
"in": "path",
"name": "unit_id",
"required": true,
"schema": {
"format": "uuid",
"title": "Unit Id",
"type": "string"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SetLeadIn"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/LeadOut"
}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Set Lead",
"tags": [
"Organisation"
]
}
},
"/api/org/units/{unit_id}/members": {
"get": {
"operationId": "list_members_api_org_units__unit_id__members_get",
"parameters": [
{
"in": "path",
"name": "unit_id",
"required": true,
"schema": {
"format": "uuid",
"title": "Unit Id",
"type": "string"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"items": {
"$ref": "#/components/schemas/MemberOut"
},
"title": "Response List Members Api Org Units Unit Id Members Get",
"type": "array"
}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "List Members",
"tags": [
"Organisation"
]
},
"post": {
"operationId": "add_member_api_org_units__unit_id__members_post",
"parameters": [
{
"in": "path",
"name": "unit_id",
"required": true,
"schema": {
"format": "uuid",
"title": "Unit Id",
"type": "string"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AddMemberIn"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/MemberOut"
}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Add Member",
"tags": [
"Organisation"
]
}
},
"/api/org/units/{unit_id}/members/{target_user_id}": {
"delete": {
"operationId": "remove_member_api_org_units__unit_id__members__target_user_id__delete",
"parameters": [
{
"in": "path",
"name": "unit_id",
"required": true,
"schema": {
"format": "uuid",
"title": "Unit Id",
"type": "string"
}
},
{
"in": "path",
"name": "target_user_id",
"required": true,
"schema": {
"title": "Target User Id",
"type": "integer"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OrgStatusOut"
}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Remove Member",
"tags": [
"Organisation"
]
}
},
"/api/org/units/{unit_id}/parent": {
"patch": {
"operationId": "reparent_unit_api_org_units__unit_id__parent_patch",
"parameters": [
{
"in": "path",
"name": "unit_id",
"required": true,
"schema": {
"format": "uuid",
"title": "Unit Id",
"type": "string"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ReparentIn"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OrgUnitOut"
}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Reparent Unit",
"tags": [
"Organisation"
]
}
},
"/api/org/users/{target_user_id}/roles": {
"get": {
"operationId": "list_grants_api_org_users__target_user_id__roles_get",
"parameters": [
{
"in": "path",
"name": "target_user_id",
"required": true,
"schema": {
"title": "Target User Id",
"type": "integer"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"items": {
"$ref": "#/components/schemas/ScopedRoleOut"
},
"title": "Response List Grants Api Org Users Target User Id Roles Get",
"type": "array"
}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "List Grants",
"tags": [
"Organisation"
]
}
},
"/api/org/users/{target_user_id}/units": {
"get": {
"operationId": "units_for_user_api_org_users__target_user_id__units_get",
"parameters": [
{
"in": "path",
"name": "target_user_id",
"required": true,
"schema": {
"title": "Target User Id",
"type": "integer"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"items": {
"$ref": "#/components/schemas/MemberOut"
},
"title": "Response Units For User Api Org Users Target User Id Units Get",
"type": "array"
}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Units For User",
"tags": [
"Organisation"
]
}
},
"/api/pdf/extract-blocks/{file_id}": {
"get": {
"description": "Extract text/image blocks using PyMuPDF (extraction only — no Stirling call).\n\nAlso attaches `locked_regions` per page so the frontend knows which\nareas are part of a signature imprint and must not be edited.",
"operationId": "extract_blocks_route_api_pdf_extract_blocks__file_id__get",
"parameters": [
{
"in": "path",
"name": "file_id",
"required": true,
"schema": {
"title": "File Id",
"type": "integer"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Extract Blocks Route",
"tags": [
"Stirling Editor"
]
}
},
"/api/pdf/save-blocks/{file_id}": {
"post": {
"description": "Apply edits via Stirling-PDF REST API and persist the result as a new version.\n\nPipeline (inside apply_edits):\n 1. Stirling /redact — wipe original content\n 2. PyMuPDF overlay — draw replacement text\n 3. Stirling /overlay — composite onto base\n 4. PyMuPDF — insert replacement images",
"operationId": "save_blocks_route_api_pdf_save_blocks__file_id__post",
"parameters": [
{
"in": "path",
"name": "file_id",
"required": true,
"schema": {
"title": "File Id",
"type": "integer"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SaveEditsRequest"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Save Blocks Route",
"tags": [
"Stirling Editor"
]
}
},
"/api/projects/comments/{comment_id}": {
"delete": {
"operationId": "delete_project_comment_api_projects_comments__comment_id__delete",
"parameters": [
{
"in": "path",
"name": "comment_id",
"required": true,
"schema": {
"title": "Comment Id",
"type": "integer"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Delete Project Comment",
"tags": [
"Project Comments"
]
}
},
"/api/projects/{project_id}/comments": {
"get": {
"operationId": "list_project_comments_api_projects__project_id__comments_get",
"parameters": [
{
"in": "path",
"name": "project_id",
"required": true,
"schema": {
"title": "Project Id",
"type": "integer"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProjectCommentsOut"
}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "List Project Comments",
"tags": [
"Project Comments"
]
},
"post": {
"operationId": "create_project_comment_api_projects__project_id__comments_post",
"parameters": [
{
"in": "path",
"name": "project_id",
"required": true,
"schema": {
"title": "Project Id",
"type": "integer"
}
}
],
"requestBody": {
"content": {
"application/x-www-form-urlencoded": {
"schema": {
"$ref": "#/components/schemas/Body_create_project_comment_api_projects__project_id__comments_post"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Create Project Comment",
"tags": [
"Project Comments"
]
}
},
"/api/projects/{project_id}/versions": {
"get": {
"operationId": "list_versions_api_projects__project_id__versions_get",
"parameters": [
{
"in": "path",
"name": "project_id",
"required": true,
"schema": {
"title": "Project Id",
"type": "integer"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "List Versions",
"tags": [
"Version Control"
]
},
"post": {
"operationId": "create_version_api_projects__project_id__versions_post",
"parameters": [
{
"in": "path",
"name": "project_id",
"required": true,
"schema": {
"title": "Project Id",
"type": "integer"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/VersionCreateIn"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Create Version",
"tags": [
"Version Control"
]
}
},
"/api/projects/{project_id}/versions/{version_id}": {
"delete": {
"operationId": "delete_version_api_projects__project_id__versions__version_id__delete",
"parameters": [
{
"in": "path",
"name": "project_id",
"required": true,
"schema": {
"title": "Project Id",
"type": "integer"
}
},
{
"in": "path",
"name": "version_id",
"required": true,
"schema": {
"title": "Version Id",
"type": "integer"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Delete Version",
"tags": [
"Version Control"
]
},
"get": {
"operationId": "get_version_api_projects__project_id__versions__version_id__get",
"parameters": [
{
"in": "path",
"name": "project_id",
"required": true,
"schema": {
"title": "Project Id",
"type": "integer"
}
},
{
"in": "path",
"name": "version_id",
"required": true,
"schema": {
"title": "Version Id",
"type": "integer"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Get Version",
"tags": [
"Version Control"
]
},
"patch": {
"operationId": "update_version_description_api_projects__project_id__versions__version_id__patch",
"parameters": [
{
"in": "path",
"name": "project_id",
"required": true,
"schema": {
"title": "Project Id",
"type": "integer"
}
},
{
"in": "path",
"name": "version_id",
"required": true,
"schema": {
"title": "Version Id",
"type": "integer"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/VersionUpdateIn"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Update Version Description",
"tags": [
"Version Control"
]
}
},
"/api/projects/{project_id}/versions/{version_id}/restore": {
"post": {
"operationId": "restore_version_api_projects__project_id__versions__version_id__restore_post",
"parameters": [
{
"in": "path",
"name": "project_id",
"required": true,
"schema": {
"title": "Project Id",
"type": "integer"
}
},
{
"in": "path",
"name": "version_id",
"required": true,
"schema": {
"title": "Version Id",
"type": "integer"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Restore Version",
"tags": [
"Version Control"
]
}
},
"/api/roles": {
"get": {
"description": "Get paginated list of roles with optional search.\n\nRequired access: admin.role.read | superadmin.role.read\n\nSuperadmins see roles across all tenants by default, or a single\ntenant when `?tenant_id=<uuid>` is provided. Tenant admins are\nalways scoped to their own tenant regardless of the query param.",
"operationId": "list_roles_paginated_api_roles_get",
"parameters": [
{
"in": "query",
"name": "page",
"required": false,
"schema": {
"default": 1,
"minimum": 1,
"title": "Page",
"type": "integer"
}
},
{
"in": "query",
"name": "page_size",
"required": false,
"schema": {
"default": 10,
"maximum": 100,
"minimum": 1,
"title": "Page Size",
"type": "integer"
}
},
{
"in": "query",
"name": "search",
"required": false,
"schema": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Search"
}
},
{
"in": "query",
"name": "tenant_id",
"required": false,
"schema": {
"anyOf": [
{
"format": "uuid",
"type": "string"
},
{
"type": "null"
}
],
"title": "Tenant Id"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/RolePaginatedOut"
}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "List Roles Paginated",
"tags": [
"Roles"
]
}
},
"/api/roles/": {
"get": {
"description": "Get all roles.\n\nRequired access: admin.role.read | superadmin.role.read\n\nSuperadmins see roles across all tenants by default, or a single\ntenant when `?tenant_id=<uuid>` is provided. Tenant admins are\nalways scoped to their own tenant regardless of the query param.",
"operationId": "get_all_roles_api_roles__get",
"parameters": [
{
"in": "query",
"name": "tenant_id",
"required": false,
"schema": {
"anyOf": [
{
"format": "uuid",
"type": "string"
},
{
"type": "null"
}
],
"title": "Tenant Id"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"items": {
"$ref": "#/components/schemas/RoleOut"
},
"title": "Response Get All Roles Api Roles Get",
"type": "array"
}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Get All Roles",
"tags": [
"Roles"
]
},
"post": {
"description": "Create a new role.\n\nRequired access: admin.role.create | superadmin.role.create\n\n- **role_name**: Name of the role\n- **description**: Optional description\n- **access_ids**: List of access IDs to assign\n- **tenant_id**: Tenant ID (for tenant-specific roles)",
"operationId": "create_role_api_roles__post",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/RoleCreate"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/RoleOut"
}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Create Role",
"tags": [
"Roles"
]
}
},
"/api/roles/assign-user": {
"post": {
"description": "Assign a role to a user.",
"operationId": "assign_role_to_user_api_roles_assign_user_post",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AssignUserRoleIn"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/RoleAssignedOut"
}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Assign Role To User",
"tags": [
"Roles"
]
}
},
"/api/roles/tenant/{tenant_id}": {
"get": {
"description": "Get all roles for a specific tenant.\n\nThe tenant is named by the caller, so a tenant administrator must not be\nable to name somebody else's.",
"operationId": "get_roles_by_tenant_api_roles_tenant__tenant_id__get",
"parameters": [
{
"in": "path",
"name": "tenant_id",
"required": true,
"schema": {
"format": "uuid",
"title": "Tenant Id",
"type": "string"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"items": {
"$ref": "#/components/schemas/RoleOut"
},
"title": "Response Get Roles By Tenant Api Roles Tenant Tenant Id Get",
"type": "array"
}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Get Roles By Tenant",
"tags": [
"Roles"
]
}
},
"/api/roles/{role_id}": {
"delete": {
"description": "Delete a role.\n\nRequired access: admin.role.update | superadmin.role.delete\n\n**Refuses with 409 while the role is still held**, unless `?force=true`.\n\nDeleting a role has always taken authority away silently: `user_roles.role_id`\nis `ON DELETE CASCADE`, so every grant of it disappears, and `users.role_id`\nis `ON DELETE SET NULL`, so every holder loses their primary role. Neither\nleaves a trace and neither was ever counted for the operator. With one role\nper user that was survivable; with roles granted in several places it is\nnot, because the operator can no longer hold the affected set in their head.\n\nThe cascade behaviour is unchanged. Only the silence is.",
"operationId": "delete_role_api_roles__role_id__delete",
"parameters": [
{
"in": "path",
"name": "role_id",
"required": true,
"schema": {
"format": "uuid",
"title": "Role Id",
"type": "string"
}
},
{
"description": "Delete even though the role is still held. Required once anybody holds it, so the removal of their authority is a decision rather than a side effect.",
"in": "query",
"name": "force",
"required": false,
"schema": {
"default": false,
"description": "Delete even though the role is still held. Required once anybody holds it, so the removal of their authority is a decision rather than a side effect.",
"title": "Force",
"type": "boolean"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/MessageOut"
}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Delete Role",
"tags": [
"Roles"
]
},
"get": {
"description": "Get a specific role by ID.\n\nRequired access: admin.role.read | superadmin.role.read",
"operationId": "get_role_api_roles__role_id__get",
"parameters": [
{
"in": "path",
"name": "role_id",
"required": true,
"schema": {
"format": "uuid",
"title": "Role Id",
"type": "string"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/RoleOut"
}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Get Role",
"tags": [
"Roles"
]
},
"patch": {
"description": "Update a role's details and accesses.\n\nRequired access: admin.role.update | superadmin.role.update\n\n- **role_name**: New role name (optional)\n- **description**: New description (optional)\n- **access_ids**: New list of access IDs (optional)",
"operationId": "update_role_api_roles__role_id__patch",
"parameters": [
{
"in": "path",
"name": "role_id",
"required": true,
"schema": {
"format": "uuid",
"title": "Role Id",
"type": "string"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/RoleUpdate"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/RoleOut"
}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Update Role",
"tags": [
"Roles"
]
}
},
"/api/roles/{role_id}/details": {
"get": {
"description": "Get a role with all assigned access codes.\n\nRequired access: admin.role.read | superadmin.role.read\n\nAlso reports how many principals hold it, so the editing screen can say what\na change affects. Counted here and not on the list endpoints, which render\nup to a hundred roles.",
"operationId": "get_role_with_accesses_api_roles__role_id__details_get",
"parameters": [
{
"in": "path",
"name": "role_id",
"required": true,
"schema": {
"format": "uuid",
"title": "Role Id",
"type": "string"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/RoleWithAccessesOut"
}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Get Role With Accesses",
"tags": [
"Roles"
]
}
},
"/api/s/{token}": {
"get": {
"operationId": "get_share_metadata_api_s__token__get",
"parameters": [
{
"in": "path",
"name": "token",
"required": true,
"schema": {
"title": "Token",
"type": "string"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"summary": "Get Share Metadata",
"tags": [
"Public Share"
]
}
},
"/api/s/{token}/download": {
"get": {
"operationId": "download_file_by_token_api_s__token__download_get",
"parameters": [
{
"in": "path",
"name": "token",
"required": true,
"schema": {
"title": "Token",
"type": "string"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"summary": "Download File By Token",
"tags": [
"Public Share"
]
}
},
"/api/s/{token}/view": {
"get": {
"operationId": "view_file_by_token_api_s__token__view_get",
"parameters": [
{
"in": "path",
"name": "token",
"required": true,
"schema": {
"title": "Token",
"type": "string"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"summary": "View File By Token",
"tags": [
"Public Share"
]
}
},
"/api/serve-image/{session_id}/{filename}": {
"get": {
"description": "Alias for serving images extracted during document processing.",
"operationId": "serve_image_api_serve_image__session_id___filename__get",
"parameters": [
{
"in": "path",
"name": "session_id",
"required": true,
"schema": {
"title": "Session Id",
"type": "string"
}
},
{
"in": "path",
"name": "filename",
"required": true,
"schema": {
"title": "Filename",
"type": "string"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Serve Image"
}
},
"/api/sharing/": {
"post": {
"operationId": "share_project_api_sharing__post",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ShareProjectRequest"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ShareProjectResponse"
}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Share Project",
"tags": [
"Project Sharing"
]
}
},
"/api/sharing/shared-with-me": {
"get": {
"operationId": "shared_with_me_api_sharing_shared_with_me_get",
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"items": {
"$ref": "#/components/schemas/SharedProjectInfo"
},
"title": "Response Shared With Me Api Sharing Shared With Me Get",
"type": "array"
}
}
},
"description": "Successful Response"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Shared With Me",
"tags": [
"Project Sharing"
]
}
},
"/api/sharing/{project_id}/shares": {
"get": {
"operationId": "list_project_shares_api_sharing__project_id__shares_get",
"parameters": [
{
"in": "path",
"name": "project_id",
"required": true,
"schema": {
"title": "Project Id",
"type": "integer"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"items": {
"$ref": "#/components/schemas/ShareProjectResponse"
},
"title": "Response List Project Shares Api Sharing Project Id Shares Get",
"type": "array"
}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "List Project Shares",
"tags": [
"Project Sharing"
]
}
},
"/api/sharing/{share_id}": {
"delete": {
"operationId": "remove_share_api_sharing__share_id__delete",
"parameters": [
{
"in": "path",
"name": "share_id",
"required": true,
"schema": {
"title": "Share Id",
"type": "integer"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Remove Share",
"tags": [
"Project Sharing"
]
}
},
"/api/signing/builder-token": {
"post": {
"description": "Generate a JWT token for the Builder component, or editor URL for Zoho Sign.",
"operationId": "get_builder_token_api_signing_builder_token_post",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/DocusealBuilderTokenRequest"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Get Builder Token",
"tags": [
"Signing"
]
}
},
"/api/signing/config/global": {
"get": {
"description": "Super Admin gets the global signature config.",
"operationId": "get_global_config_api_signing_config_global_get",
"responses": {
"200": {
"content": {
"application/json": {
"schema": {}
}
},
"description": "Successful Response"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Get Global Config",
"tags": [
"Signing Config"
]
},
"put": {
"description": "Super Admin updates the global signature config.",
"operationId": "update_global_config_api_signing_config_global_put",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GlobalConfigUpdate"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GlobalConfigUpdatedOut"
}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Update Global Config",
"tags": [
"Signing Config"
]
}
},
"/api/signing/config/tenant": {
"get": {
"description": "Tenant Admin gets their specific config and the global default.",
"operationId": "get_tenant_config_api_signing_config_tenant_get",
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SigningConfigOut"
}
}
},
"description": "Successful Response"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Get Tenant Config",
"tags": [
"Signing Config"
]
},
"put": {
"description": "Tenant Admin updates their specific config.",
"operationId": "update_tenant_config_api_signing_config_tenant_put",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/TenantConfigUpdate"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/StatusOut"
}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Update Tenant Config",
"tags": [
"Signing Config"
]
}
},
"/api/signing/docuseal/webhook": {
"post": {
"description": "Webhook endpoint for Docuseal to notify when signing is complete.",
"operationId": "docuseal_webhook_api_signing_docuseal_webhook_post",
"responses": {
"200": {
"content": {
"application/json": {
"schema": {}
}
},
"description": "Successful Response"
}
},
"summary": "Docuseal Webhook",
"tags": [
"Signing"
]
}
},
"/api/signing/files/{file_id}/imprints": {
"get": {
"description": "Fetch signature imprints for a specific file.",
"operationId": "get_file_imprints_api_signing_files__file_id__imprints_get",
"parameters": [
{
"in": "path",
"name": "file_id",
"required": true,
"schema": {
"title": "File Id",
"type": "integer"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SignatureImprintsResponse"
}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Get File Imprints",
"tags": [
"Signing"
]
}
},
"/api/signing/history": {
"get": {
"description": "Get signing history for the current user.",
"operationId": "get_signing_history_api_signing_history_get",
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"items": {
"$ref": "#/components/schemas/SigningHistoryItem"
},
"title": "Response Get Signing History Api Signing History Get",
"type": "array"
}
}
},
"description": "Successful Response"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Get Signing History",
"tags": [
"Signing"
]
}
},
"/api/signing/ocr": {
"post": {
"description": "Internal OCR endpoint — called by the Windows host to leverage\nTesseract installed inside the Docker container.",
"operationId": "ocr_endpoint_api_signing_ocr_post",
"requestBody": {
"content": {
"multipart/form-data": {
"schema": {
"$ref": "#/components/schemas/Body_ocr_endpoint_api_signing_ocr_post"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"summary": "Ocr Endpoint",
"tags": [
"Signing"
]
}
},
"/api/signing/requests/{request_id}/audit-trail": {
"get": {
"description": "Download the audit trail certificate directly from S3.",
"operationId": "download_audit_trail_api_signing_requests__request_id__audit_trail_get",
"parameters": [
{
"in": "path",
"name": "request_id",
"required": true,
"schema": {
"title": "Request Id",
"type": "string"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Download Audit Trail",
"tags": [
"Signing"
]
}
},
"/api/signing/requests/{request_id}/cancel": {
"post": {
"operationId": "cancel_signing_request_api_signing_requests__request_id__cancel_post",
"parameters": [
{
"in": "path",
"name": "request_id",
"required": true,
"schema": {
"title": "Request Id",
"type": "string"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"additionalProperties": true,
"title": "Response Cancel Signing Request Api Signing Requests Request Id Cancel Post",
"type": "object"
}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Cancel Signing Request",
"tags": [
"Signing"
]
}
},
"/api/signing/requests/{request_id}/mark-sent": {
"put": {
"operationId": "mark_request_sent_api_signing_requests__request_id__mark_sent_put",
"parameters": [
{
"in": "path",
"name": "request_id",
"required": true,
"schema": {
"title": "Request Id",
"type": "string"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"additionalProperties": true,
"title": "Response Mark Request Sent Api Signing Requests Request Id Mark Sent Put",
"type": "object"
}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Mark Request Sent",
"tags": [
"Signing"
]
}
},
"/api/signing/requests/{request_id}/remind": {
"post": {
"operationId": "resend_signing_reminder_api_signing_requests__request_id__remind_post",
"parameters": [
{
"in": "path",
"name": "request_id",
"required": true,
"schema": {
"title": "Request Id",
"type": "string"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ResendReminderRequest"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"additionalProperties": true,
"title": "Response Resend Signing Reminder Api Signing Requests Request Id Remind Post",
"type": "object"
}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Resend Signing Reminder",
"tags": [
"Signing"
]
}
},
"/api/signing/self-sign": {
"post": {
"description": "Sign a PDF document with placed signature/date/text elements.",
"operationId": "self_sign_api_signing_self_sign_post",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SelfSignRequest"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SelfSignResponse"
}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Self Sign",
"tags": [
"Signing"
]
}
},
"/api/signing/send-otp": {
"post": {
"operationId": "send_docuseal_otp_api_signing_send_otp_post",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SendOTPRequest"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"additionalProperties": true,
"title": "Response Send Docuseal Otp Api Signing Send Otp Post",
"type": "object"
}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"summary": "Send Docuseal Otp",
"tags": [
"Signing"
]
}
},
"/api/signing/submit": {
"post": {
"description": "Create a submission to send the document for signing.",
"operationId": "create_submission_api_signing_submit_post",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/DocusealSubmissionRequest"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/DocusealSubmissionResponse"
}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Create Submission",
"tags": [
"Signing"
]
}
},
"/api/signing/template": {
"post": {
"description": "Create a signing template from an existing DriveFile or multiple files.",
"operationId": "create_template_api_signing_template_post",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/DocusealTemplateRequest"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/DocusealTemplateResponse"
}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Create Template",
"tags": [
"Signing"
]
}
},
"/api/signing/verify": {
"post": {
"description": "Verify a signature by either scanning a document for DocQube signature blocks\nor looking up a specific Signature ID.",
"operationId": "verify_signature_api_signing_verify_post",
"requestBody": {
"content": {
"multipart/form-data": {
"schema": {
"$ref": "#/components/schemas/Body_verify_signature_api_signing_verify_post"
}
}
}
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/VerificationResponse"
}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"summary": "Verify Signature",
"tags": [
"Signing"
]
}
},
"/api/signing/verify-otp": {
"post": {
"operationId": "verify_docuseal_otp_api_signing_verify_otp_post",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/VerifyOTPRequest"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"additionalProperties": true,
"title": "Response Verify Docuseal Otp Api Signing Verify Otp Post",
"type": "object"
}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"summary": "Verify Docuseal Otp",
"tags": [
"Signing"
]
}
},
"/api/signing/zohosign/webhook": {
"post": {
"description": "Webhook endpoint for Zoho Sign to notify when signing is complete.",
"operationId": "zohosign_webhook_api_signing_zohosign_webhook_post",
"parameters": [
{
"in": "query",
"name": "secret",
"required": false,
"schema": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Secret"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"summary": "Zohosign Webhook",
"tags": [
"Signing"
]
}
},
"/api/speech/transcribe": {
"post": {
"operationId": "transcribe_audio_api_speech_transcribe_post",
"requestBody": {
"content": {
"multipart/form-data": {
"schema": {
"$ref": "#/components/schemas/Body_transcribe_audio_api_speech_transcribe_post"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Transcribe Audio",
"tags": [
"Speech"
]
}
},
"/api/sso/login": {
"post": {
"description": "Endpoint for SaaS to initiate a login session for a user.\nVerified via HMAC signature.",
"operationId": "sso_login_api_sso_login_post",
"responses": {
"200": {
"content": {
"application/json": {
"schema": {}
}
},
"description": "Successful Response"
}
},
"summary": "Sso Login",
"tags": [
"SSO"
]
}
},
"/api/sso/provision": {
"post": {
"description": "Receive tenant provisioning/update events from SaaS and sync the mapped\nDocQube tenant, including max_users_allowed.",
"operationId": "provision_tenant_api_sso_provision_post",
"responses": {
"200": {
"content": {
"application/json": {
"schema": {}
}
},
"description": "Successful Response"
}
},
"summary": "Provision Tenant",
"tags": [
"SSO"
]
}
},
"/api/sso/sync-permissions": {
"post": {
"description": "Return all permission nodes defined in DocQube to the SaaS platform.",
"operationId": "sync_permissions_api_sso_sync_permissions_post",
"responses": {
"200": {
"content": {
"application/json": {
"schema": {}
}
},
"description": "Successful Response"
}
},
"summary": "Sync Permissions",
"tags": [
"SSO"
]
}
},
"/api/storage/files": {
"get": {
"operationId": "list_files_api_storage_files_get",
"parameters": [
{
"in": "query",
"name": "limit",
"required": false,
"schema": {
"default": 50,
"title": "Limit",
"type": "integer"
}
},
{
"in": "query",
"name": "offset",
"required": false,
"schema": {
"default": 0,
"title": "Offset",
"type": "integer"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/StorageFilesResponse"
}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "List Files",
"tags": [
"Storage"
]
}
},
"/api/storage/files/{file_id}": {
"delete": {
"operationId": "delete_file_api_storage_files__file_id__delete",
"parameters": [
{
"in": "path",
"name": "file_id",
"required": true,
"schema": {
"title": "File Id",
"type": "integer"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SuccessOut"
}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Delete File",
"tags": [
"Storage"
]
}
},
"/api/storage/upload": {
"post": {
"operationId": "upload_file_api_storage_upload_post",
"requestBody": {
"content": {
"multipart/form-data": {
"schema": {
"$ref": "#/components/schemas/Body_upload_file_api_storage_upload_post"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Upload File",
"tags": [
"Storage"
]
}
},
"/api/storage/usage": {
"get": {
"operationId": "get_usage_api_storage_usage_get",
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/StorageUsageResponse"
}
}
},
"description": "Successful Response"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Get Usage",
"tags": [
"Storage"
]
}
},
"/api/storage_drive/{key}": {
"get": {
"operationId": "serve_storage_file_api_storage_drive__key__get",
"parameters": [
{
"in": "path",
"name": "key",
"required": true,
"schema": {
"title": "Key",
"type": "string"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Serve Storage File"
}
},
"/api/task-status/{task_id}": {
"get": {
"operationId": "task_status_api_task_status__task_id__get",
"parameters": [
{
"in": "path",
"name": "task_id",
"required": true,
"schema": {
"title": "Task Id",
"type": "string"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Task Status",
"tags": [
"Process Task"
]
}
},
"/api/task/{task_id}": {
"delete": {
"operationId": "cancel_task_api_task__task_id__delete",
"parameters": [
{
"in": "path",
"name": "task_id",
"required": true,
"schema": {
"title": "Task Id",
"type": "string"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Cancel Task",
"tags": [
"Process Task"
]
},
"get": {
"operationId": "task_status_api_task__task_id__get",
"parameters": [
{
"in": "path",
"name": "task_id",
"required": true,
"schema": {
"title": "Task Id",
"type": "string"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Task Status",
"tags": [
"Process Task"
]
}
},
"/api/tenant/contacts": {
"get": {
"description": "Get all global contacts for the tenant.",
"operationId": "get_contacts_api_tenant_contacts_get",
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"items": {
"$ref": "#/components/schemas/TenantContactOut"
},
"title": "Response Get Contacts Api Tenant Contacts Get",
"type": "array"
}
}
},
"description": "Successful Response"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Get Contacts",
"tags": [
"Tenant Contacts"
]
},
"post": {
"description": "Create a new global contact for the tenant.",
"operationId": "create_contact_api_tenant_contacts_post",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/TenantContactCreate"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/TenantContactOut"
}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Create Contact",
"tags": [
"Tenant Contacts"
]
}
},
"/api/tenant/contacts/{contact_id}": {
"delete": {
"description": "Delete a global contact.",
"operationId": "delete_contact_api_tenant_contacts__contact_id__delete",
"parameters": [
{
"in": "path",
"name": "contact_id",
"required": true,
"schema": {
"format": "uuid",
"title": "Contact Id",
"type": "string"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Delete Contact",
"tags": [
"Tenant Contacts"
]
},
"put": {
"description": "Update an existing global contact for the tenant.",
"operationId": "update_contact_api_tenant_contacts__contact_id__put",
"parameters": [
{
"in": "path",
"name": "contact_id",
"required": true,
"schema": {
"format": "uuid",
"title": "Contact Id",
"type": "string"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/TenantContactUpdate"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/TenantContactOut"
}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Update Contact",
"tags": [
"Tenant Contacts"
]
}
},
"/api/tenants": {
"get": {
"operationId": "list_tenants_api_tenants_get",
"parameters": [
{
"in": "query",
"name": "skip",
"required": false,
"schema": {
"default": 0,
"title": "Skip",
"type": "integer"
}
},
{
"in": "query",
"name": "limit",
"required": false,
"schema": {
"default": 100,
"title": "Limit",
"type": "integer"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"items": {
"$ref": "#/components/schemas/TenantOut"
},
"title": "Response List Tenants Api Tenants Get",
"type": "array"
}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "List Tenants",
"tags": [
"Tenants"
]
},
"post": {
"operationId": "create_tenant_api_tenants_post",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreateTenantIn"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/TenantOut"
}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Create Tenant",
"tags": [
"Tenants"
]
}
},
"/api/tenants/me/chat-token-quota": {
"patch": {
"operationId": "update_my_tenant_chat_token_quota_api_tenants_me_chat_token_quota_patch",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UpdateTenantTokenQuotaIn"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/TenantOut"
}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Update My Tenant Chat Token Quota",
"tags": [
"Tenants"
]
}
},
"/api/tenants/me/compression": {
"patch": {
"operationId": "update_my_tenant_compression_api_tenants_me_compression_patch",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Body_update_my_tenant_compression_api_tenants_me_compression_patch"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/TenantOut"
}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Update My Tenant Compression",
"tags": [
"Tenants"
]
}
},
"/api/tenants/me/details": {
"get": {
"operationId": "get_my_tenant_api_tenants_me_details_get",
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/TenantOut"
}
}
},
"description": "Successful Response"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Get My Tenant",
"tags": [
"Tenants"
]
}
},
"/api/tenants/me/smtp-settings": {
"delete": {
"operationId": "clear_my_tenant_smtp_settings_api_tenants_me_smtp_settings_delete",
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/MessageOut"
}
}
},
"description": "Successful Response"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Clear My Tenant Smtp Settings",
"tags": [
"Tenants"
]
},
"get": {
"operationId": "get_my_tenant_smtp_settings_api_tenants_me_smtp_settings_get",
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/TenantSMTPConfigViewOut"
}
}
},
"description": "Successful Response"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Get My Tenant Smtp Settings",
"tags": [
"Tenants"
]
},
"put": {
"operationId": "upsert_my_tenant_smtp_settings_api_tenants_me_smtp_settings_put",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/TenantSMTPConfigUpsertIn"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/TenantSMTPConfigViewOut"
}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Upsert My Tenant Smtp Settings",
"tags": [
"Tenants"
]
}
},
"/api/tenants/me/storage-quota": {
"patch": {
"operationId": "update_my_tenant_storage_quota_api_tenants_me_storage_quota_patch",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UpdateTenantStorageQuotaIn"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/TenantOut"
}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Update My Tenant Storage Quota",
"tags": [
"Tenants"
]
}
},
"/api/tenants/me/storage-settings": {
"delete": {
"operationId": "clear_my_tenant_storage_settings_api_tenants_me_storage_settings_delete",
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/MessageOut"
}
}
},
"description": "Successful Response"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Clear My Tenant Storage Settings",
"tags": [
"Tenants"
]
},
"get": {
"operationId": "get_my_tenant_storage_settings_api_tenants_me_storage_settings_get",
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/TenantStorageConfigViewOut"
}
}
},
"description": "Successful Response"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Get My Tenant Storage Settings",
"tags": [
"Tenants"
]
},
"put": {
"operationId": "upsert_my_tenant_storage_settings_api_tenants_me_storage_settings_put",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/TenantStorageConfigUpsertIn"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/TenantStorageConfigViewOut"
}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Upsert My Tenant Storage Settings",
"tags": [
"Tenants"
]
}
},
"/api/tenants/{tenant_id}": {
"delete": {
"operationId": "deactivate_tenant_api_tenants__tenant_id__delete",
"parameters": [
{
"in": "path",
"name": "tenant_id",
"required": true,
"schema": {
"format": "uuid",
"title": "Tenant Id",
"type": "string"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/TenantOut"
}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Deactivate Tenant",
"tags": [
"Tenants"
]
},
"get": {
"operationId": "get_tenant_api_tenants__tenant_id__get",
"parameters": [
{
"in": "path",
"name": "tenant_id",
"required": true,
"schema": {
"format": "uuid",
"title": "Tenant Id",
"type": "string"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/TenantOut"
}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Get Tenant",
"tags": [
"Tenants"
]
},
"patch": {
"operationId": "update_tenant_api_tenants__tenant_id__patch",
"parameters": [
{
"in": "path",
"name": "tenant_id",
"required": true,
"schema": {
"format": "uuid",
"title": "Tenant Id",
"type": "string"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UpdateTenantIn"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/TenantOut"
}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Update Tenant",
"tags": [
"Tenants"
]
}
},
"/api/tenants/{tenant_id}/chat-token-quota": {
"patch": {
"operationId": "update_tenant_chat_token_quota_api_tenants__tenant_id__chat_token_quota_patch",
"parameters": [
{
"in": "path",
"name": "tenant_id",
"required": true,
"schema": {
"format": "uuid",
"title": "Tenant Id",
"type": "string"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UpdateTenantTokenQuotaIn"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/TenantOut"
}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Update Tenant Chat Token Quota",
"tags": [
"Tenants"
]
}
},
"/api/tenants/{tenant_id}/users": {
"get": {
"operationId": "list_tenant_users_api_tenants__tenant_id__users_get",
"parameters": [
{
"in": "path",
"name": "tenant_id",
"required": true,
"schema": {
"format": "uuid",
"title": "Tenant Id",
"type": "string"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"items": {
"$ref": "#/components/schemas/UserOut"
},
"title": "Response List Tenant Users Api Tenants Tenant Id Users Get",
"type": "array"
}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "List Tenant Users",
"tags": [
"Tenants"
]
}
},
"/api/users/search": {
"get": {
"description": "Search users by name or email, within the caller's own tenant.\n\nPreviously unscoped: any authenticated user could enumerate every user of\nevery tenant, complete with email addresses, roles and access codes. A\ncaller with no tenant is a superadmin under today's model and still\nsearches across tenants.",
"operationId": "search_users_api_users_search_get",
"parameters": [
{
"in": "query",
"name": "q",
"required": true,
"schema": {
"minLength": 1,
"title": "Q",
"type": "string"
}
},
{
"in": "query",
"name": "limit",
"required": false,
"schema": {
"default": 10,
"maximum": 50,
"minimum": 1,
"title": "Limit",
"type": "integer"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"items": {
"$ref": "#/components/schemas/UserOut"
},
"title": "Response Search Users Api Users Search Get",
"type": "array"
}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"security": [
{
"OAuth2PasswordBearer": []
}
],
"summary": "Search Users",
"tags": [
"Users"
]
}
}
}
}