{"openapi":"3.1.0","info":{"version":"1.0.0","title":"Lotics API","summary":"REST API for Lotics — operations software for supply chain and logistics teams.","description":"Programmatic access to a Lotics workspace: tables and fields, records (query, aggregate, create, update, delete), views, workflows, document generation, apps, comments, files and search.\n\nAuthenticate with an organization-scoped API key (`Authorization: Bearer ltk_…`), created by an admin under Settings → API keys. A key inherits the permissions of the member who created it, so the API never reaches data that member could not open in the product.\n\nList endpoints are cursor-paginated: pass the previous response's `next_cursor` as `cursor` until it is absent. Every non-2xx response carries the same JSON error body — branch on `code`, not on the wording of `message`.\n\nGuide and examples: https://lotics.ai/docs/api","termsOfService":"https://lotics.ai/terms","contact":{"name":"Lotics","url":"https://lotics.ai/contact","email":"hello@lotics.ai"}},"externalDocs":{"description":"Lotics REST API guide","url":"https://lotics.ai/docs/api"},"servers":[{"url":"https://api.lotics.ai","description":"Production"}],"security":[{"ApiKeyAuth":[]}],"tags":[{"name":"agent_context_activations"},{"name":"api_keys"},{"name":"app-icons"},{"name":"approval_requests"},{"name":"apps"},{"name":"audit_logs"},{"name":"auth"},{"name":"automations"},{"name":"billing"},{"name":"browser_agent"},{"name":"connected_accounts"},{"name":"content-installations"},{"name":"document_templates"},{"name":"explorer"},{"name":"files"},{"name":"iam"},{"name":"instructions"},{"name":"knowledge_docs"},{"name":"me"},{"name":"member_instructions"},{"name":"members"},{"name":"memories"},{"name":"notifications"},{"name":"packages"},{"name":"realtime"},{"name":"record_data_templates"},{"name":"records"},{"name":"search"},{"name":"skills"},{"name":"system_agents"},{"name":"table"},{"name":"tables"},{"name":"usage"},{"name":"user"},{"name":"views"},{"name":"voice_sessions"},{"name":"workflow_executions"},{"name":"workflows"},{"name":"workspace"},{"name":"workspaces"}],"paths":{"/v1/iam/resources/{resource_type}/{resource_id}/role_bindings":{"post":{"operationId":"post_v1_iam_resources_resource_type_resource_id_role_bindings","tags":["iam"],"summary":"Assign a role binding to a principal for a resource","description":"Assign a role binding to a principal for a resource","parameters":[{"name":"resource_type","in":"path","required":true,"description":"The kind of resource being addressed. With `resource_id` it names one object to act on.","schema":{"type":"string","enum":["table","table_view","app","automation","skill","document_template","instruction","knowledge_doc"]}},{"name":"resource_id","in":"path","required":true,"description":"The id of the resource named by `resource_type`.","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_iam_resources_resource_type_resource_id_role_bindings_Body"}}}},"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_iam_resources_resource_type_resource_id_role_bindings_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"get":{"operationId":"get_v1_iam_resources_resource_type_resource_id_role_bindings","tags":["iam"],"summary":"Get all role bindings for a specific resource","description":"Get all role bindings for a specific resource","parameters":[{"name":"resource_type","in":"path","required":true,"description":"The kind of resource being addressed. With `resource_id` it names one object to act on.","schema":{"type":"string","enum":["table","table_view","app","automation","skill","document_template","instruction","knowledge_doc"]}},{"name":"resource_id","in":"path","required":true,"description":"The id of the resource named by `resource_type`.","schema":{"type":"string"}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/get_v1_iam_resources_resource_type_resource_id_role_bindings_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/iam/member_groups":{"post":{"operationId":"post_v1_iam_member_groups","tags":["iam"],"summary":"Create a new group","description":"Create a new group","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_iam_member_groups_Body"}}}},"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_iam_member_groups_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"get":{"operationId":"get_v1_iam_member_groups","tags":["iam"],"summary":"List all groups in the organization","description":"List all groups in the organization","responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/get_v1_iam_member_groups_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/iam/member_groups/{group_id}":{"delete":{"operationId":"delete_v1_iam_member_groups_group_id","tags":["iam"],"summary":"Delete a group","description":"Delete a group","parameters":[{"name":"group_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success response"},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"get":{"operationId":"get_v1_iam_member_groups_group_id","tags":["iam"],"summary":"Get a specific group by ID","description":"Get a specific group by ID","parameters":[{"name":"group_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/get_v1_iam_member_groups_group_id_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"put":{"operationId":"put_v1_iam_member_groups_group_id","tags":["iam"],"summary":"Update a group","description":"Update a group","parameters":[{"name":"group_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/put_v1_iam_member_groups_group_id_Body"}}}},"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/put_v1_iam_member_groups_group_id_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/iam/me/role_bindings":{"get":{"operationId":"get_v1_iam_me_role_bindings","tags":["iam"],"summary":"Get all role bindings for the current authenticated member","description":"Get all role bindings for the current authenticated member","responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/get_v1_iam_me_role_bindings_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/iam/my_permissions":{"get":{"operationId":"get_v1_iam_my_permissions","tags":["iam"],"summary":"Get all permissions for the current user","description":"Get all permissions for the current user","responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/get_v1_iam_my_permissions_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/iam/resources/{resource_type}/{resource_id}/my_actions":{"get":{"operationId":"get_v1_iam_resources_resource_type_resource_id_my_actions","tags":["iam"],"summary":"Get the current user's effective actions for a resource","description":"Get the current user's effective actions for a resource","parameters":[{"name":"resource_type","in":"path","required":true,"description":"The kind of resource being addressed. With `resource_id` it names one object to act on.","schema":{"type":"string","enum":["table","table_view","app","automation","skill","document_template","instruction","knowledge_doc"]}},{"name":"resource_id","in":"path","required":true,"description":"The id of the resource named by `resource_type`.","schema":{"type":"string"}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/get_v1_iam_resources_resource_type_resource_id_my_actions_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/iam/invitations":{"get":{"operationId":"get_v1_iam_invitations","tags":["iam"],"summary":"List pending invitations for the organization (API-key-accessible)","description":"List pending invitations for the organization (API-key-accessible)","responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/get_v1_iam_invitations_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/user/invitations":{"get":{"operationId":"get_v1_user_invitations","tags":["user"],"summary":"List the signed-in user's pending invitations, across organizations","description":"List the signed-in user's pending invitations, across organizations","responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/get_v1_user_invitations_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/iam/principals":{"get":{"operationId":"get_v1_iam_principals","tags":["iam"],"summary":"List all assignable principals (members, pending invitations, groups) in the organization","description":"List all assignable principals (members, pending invitations, groups) in the organization","responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/get_v1_iam_principals_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/iam/resource_access/{resource_type}":{"get":{"operationId":"get_v1_iam_resource_access_resource_type","tags":["iam"],"summary":"List who each resource of a type is shared with","description":"For every resource of this type in the workspace that the caller can see, the members, groups and organization granted access. Read-only: no roles and no binding ids, so it cannot be used to change sharing.","parameters":[{"name":"resource_type","in":"path","required":true,"description":"The kind of resource being addressed. With `resource_id` it names one object to act on.","schema":{"type":"string","enum":["table","table_view","app","automation","skill","document_template","instruction","knowledge_doc"]}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/get_v1_iam_resource_access_resource_type_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/members/{member_id}":{"delete":{"operationId":"delete_v1_members_member_id","tags":["members"],"summary":"Remove a member from the organization","description":"Remove a member from the organization","parameters":[{"name":"member_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/delete_v1_members_member_id_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"patch":{"operationId":"patch_v1_members_member_id","tags":["members"],"summary":"Update a member's per-organization display name","description":"Update a member's per-organization display name","parameters":[{"name":"member_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/patch_v1_members_member_id_Body"}}}},"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/patch_v1_members_member_id_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/iam/role_bindings/{binding_id}":{"delete":{"operationId":"delete_v1_iam_role_bindings_binding_id","tags":["iam"],"summary":"Remove a role binding","description":"Remove a role binding","parameters":[{"name":"binding_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/delete_v1_iam_role_bindings_binding_id_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"patch":{"operationId":"patch_v1_iam_role_bindings_binding_id","tags":["iam"],"summary":"Update a role binding","description":"Update a role binding","parameters":[{"name":"binding_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/patch_v1_iam_role_bindings_binding_id_Body"}}}},"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/patch_v1_iam_role_bindings_binding_id_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/members/{member_id}/restore":{"post":{"operationId":"post_v1_members_member_id_restore","tags":["members"],"summary":"Restore a removed member","description":"Restore a removed member","parameters":[{"name":"member_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_members_member_id_restore_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/iam/invitations/{invitation_id}/revoke":{"post":{"operationId":"post_v1_iam_invitations_invitation_id_revoke","tags":["iam"],"summary":"Revoke a pending invitation (cascade-deletes pre-granted access)","description":"Revoke a pending invitation (cascade-deletes pre-granted access)","parameters":[{"name":"invitation_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_iam_invitations_invitation_id_revoke_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/iam/resources/{resource_type}/{resource_id}/transfer_ownership":{"post":{"operationId":"post_v1_iam_resources_resource_type_resource_id_transfer_ownership","tags":["iam"],"summary":"Transfer resource ownership to another member","description":"Transfer resource ownership to another member","parameters":[{"name":"resource_type","in":"path","required":true,"description":"The kind of resource being addressed. With `resource_id` it names one object to act on.","schema":{"type":"string","enum":["table","table_view","app","automation","skill","document_template","instruction","knowledge_doc"]}},{"name":"resource_id","in":"path","required":true,"description":"The id of the resource named by `resource_type`.","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_iam_resources_resource_type_resource_id_transfer_ownership_Body"}}}},"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_iam_resources_resource_type_resource_id_transfer_ownership_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/iam/invitations/{invitation_id}":{"patch":{"operationId":"patch_v1_iam_invitations_invitation_id","tags":["iam"],"summary":"Update a pending invitation's display name","description":"Update a pending invitation's display name","parameters":[{"name":"invitation_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/patch_v1_iam_invitations_invitation_id_Body"}}}},"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/patch_v1_iam_invitations_invitation_id_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/system_agents/{chat_session_id}/messages/{message_id}/archive":{"post":{"operationId":"post_v1_system_agents_chat_session_id_messages_message_id_archive","tags":["system_agents"],"summary":"Archive a chat message","description":"Archives a single chat message (soft delete). Used to clean up draft messages after the real message is created.","parameters":[{"name":"chat_session_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"message_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_system_agents_chat_session_id_messages_message_id_archive_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/system_agents/chat_sessions/{chat_session_id}":{"delete":{"operationId":"delete_v1_system_agents_chat_sessions_chat_session_id","tags":["system_agents"],"summary":"Delete a chat session","description":"Archives a chat session (soft delete)","parameters":[{"name":"chat_session_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/delete_v1_system_agents_chat_sessions_chat_session_id_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"get":{"operationId":"get_v1_system_agents_chat_sessions_chat_session_id","tags":["system_agents"],"summary":"Get chat session","description":"Gets a chat session for a member","parameters":[{"name":"chat_session_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/get_v1_system_agents_chat_sessions_chat_session_id_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/system_agents/chat_sessions/{chat_session_id}/usage":{"get":{"operationId":"get_v1_system_agents_chat_sessions_chat_session_id_usage","tags":["system_agents"],"summary":"Get context occupancy and credit spend for a chat session","description":"Per-turn context occupancy (for the chat's memory meter) and the total credits the conversation has consumed.","parameters":[{"name":"chat_session_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/get_v1_system_agents_chat_sessions_chat_session_id_usage_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/system_agents/chat_sessions":{"get":{"operationId":"get_v1_system_agents_chat_sessions","tags":["system_agents"],"summary":"Get chat sessions","description":"Gets chat sessions for a member","parameters":[{"name":"limit","in":"query","required":false,"description":"How many sessions to return, newest first.","schema":{"type":"number"}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/get_v1_system_agents_chat_sessions_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/system_agents/{chat_session_id}/messages":{"get":{"operationId":"get_v1_system_agents_chat_session_id_messages","tags":["system_agents"],"summary":"Get messages for a chat session","description":"Retrieves all messages for a specific chat session of an agent","parameters":[{"name":"chat_session_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/get_v1_system_agents_chat_session_id_messages_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"operationId":"post_v1_system_agents_chat_session_id_messages","tags":["system_agents"],"summary":"Generate agent message","description":"Generates a streaming message from the agent","parameters":[{"name":"chat_session_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_system_agents_chat_session_id_messages_Body"}}}},"responses":{"200":{"description":"Success response"},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/system_agents/{chat_session_id}/messages/save":{"post":{"operationId":"post_v1_system_agents_chat_session_id_messages_save","tags":["system_agents"],"summary":"Save messages without LLM generation","description":"Saves messages directly to the chat session without triggering AI response generation. Used for workflow action results.","parameters":[{"name":"chat_session_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_system_agents_chat_session_id_messages_save_Body"}}}},"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_system_agents_chat_session_id_messages_save_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/auth/facebook":{"get":{"operationId":"get_auth_facebook","tags":["auth"],"summary":"Start the Facebook OAuth flow and return the URL to send the browser to.","description":"Start the Facebook OAuth flow and return the URL to send the browser to.","parameters":[{"name":"from","in":"query","required":true,"description":"Where to send the browser once the flow finishes: a path within the app, such as `/settings/connections`. Anything pointing at another origin is ignored and the browser lands on the app root instead.","schema":{"type":"string"}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/get_auth_facebook_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/auth/google":{"get":{"operationId":"get_auth_google","tags":["auth"],"summary":"Start the Google OAuth flow and return the URL to send the browser to.","description":"Start the Google OAuth flow and return the URL to send the browser to.","parameters":[{"name":"from","in":"query","required":true,"description":"Where to send the browser once the flow finishes: a path within the app, such as `/settings/connections`. Anything pointing at another origin is ignored and the browser lands on the app root instead.","schema":{"type":"string"}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/get_auth_google_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/auth/google_drive":{"get":{"operationId":"get_auth_google_drive","tags":["auth"],"summary":"Start the Google Drive OAuth flow and return the URL to send the browser to.","description":"Start the Google Drive OAuth flow and return the URL to send the browser to.","parameters":[{"name":"from","in":"query","required":true,"description":"Where to send the browser once the flow finishes: a path within the app, such as `/settings/connections`. Anything pointing at another origin is ignored and the browser lands on the app root instead.","schema":{"type":"string"}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/get_auth_google_drive_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/auth/outlook":{"get":{"operationId":"get_auth_outlook","tags":["auth"],"summary":"Start the Microsoft Outlook OAuth flow and return the URL to send the browser to.","description":"Start the Microsoft Outlook OAuth flow and return the URL to send the browser to.","parameters":[{"name":"from","in":"query","required":true,"description":"Where to send the browser once the flow finishes: a path within the app, such as `/settings/connections`. Anything pointing at another origin is ignored and the browser lands on the app root instead.","schema":{"type":"string"}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/get_auth_outlook_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/auth/zalo":{"get":{"operationId":"get_auth_zalo","tags":["auth"],"summary":"Start the Zalo OAuth flow and return the URL to send the browser to.","description":"Start the Zalo OAuth flow and return the URL to send the browser to.","parameters":[{"name":"from","in":"query","required":true,"description":"Where to send the browser once the flow finishes: a path within the app, such as `/settings/connections`. Anything pointing at another origin is ignored and the browser lands on the app root instead.","schema":{"type":"string"}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/get_auth_zalo_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/connected_accounts":{"post":{"operationId":"post_v1_connected_accounts","tags":["connected_accounts"],"summary":"Connect an account by storing credentials for a provider.","description":"Connect an account by storing credentials for a provider.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_connected_accounts_Body"}}}},"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_connected_accounts_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"get":{"operationId":"get_v1_connected_accounts","tags":["connected_accounts"],"summary":"List the connected accounts this member can use, optionally filtered by provider.","description":"List the connected accounts this member can use, optionally filtered by provider.","parameters":[{"name":"providers","in":"query","required":false,"description":"Return only accounts for these providers, such as \"facebook\", \"google\" or \"microsoft\". Omit for every provider.","schema":{"type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/get_v1_connected_accounts_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/connected_accounts/{connected_account_id}":{"delete":{"operationId":"delete_v1_connected_accounts_connected_account_id","tags":["connected_accounts"],"summary":"Disconnect an account and delete its stored credentials.","description":"Disconnect an account and delete its stored credentials.","parameters":[{"name":"connected_account_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/delete_v1_connected_accounts_connected_account_id_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"get":{"operationId":"get_v1_connected_accounts_connected_account_id","tags":["connected_accounts"],"summary":"Get one connected account, without its stored secrets.","description":"Get one connected account, without its stored secrets.","parameters":[{"name":"connected_account_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/get_v1_connected_accounts_connected_account_id_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"patch":{"operationId":"patch_v1_connected_accounts_connected_account_id","tags":["connected_accounts"],"summary":"Rename a connected account or replace its credentials.","description":"Rename a connected account or replace its credentials.","parameters":[{"name":"connected_account_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/patch_v1_connected_accounts_connected_account_id_Body"}}}},"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/patch_v1_connected_accounts_connected_account_id_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/tables/{table_id}/views/{view_id}":{"delete":{"operationId":"delete_v1_tables_table_id_views_view_id","tags":["tables"],"summary":"Delete a view.","description":"Delete a view.","parameters":[{"name":"table_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"view_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/delete_v1_tables_table_id_views_view_id_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"get":{"operationId":"get_v1_tables_table_id_views_view_id","tags":["tables"],"summary":"Get one view, with its filters, sorts, grouping and field visibility.","description":"Get one view, with its filters, sorts, grouping and field visibility.","parameters":[{"name":"table_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"view_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/get_v1_tables_table_id_views_view_id_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"patch":{"operationId":"patch_v1_tables_table_id_views_view_id","tags":["tables"],"summary":"Update a view's filters, sorts, grouping, colors or field visibility.","description":"Update a view's filters, sorts, grouping, colors or field visibility.","parameters":[{"name":"table_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"view_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/patch_v1_tables_table_id_views_view_id_Body"}}}},"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/patch_v1_tables_table_id_views_view_id_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/tables/{table_id}/clone":{"post":{"operationId":"post_v1_tables_table_id_clone","tags":["tables"],"summary":"Clone a table's structure, optionally with its rows.","description":"Clone a table's structure, optionally with its rows.","parameters":[{"name":"table_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_tables_table_id_clone_Body"}}}},"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_tables_table_id_clone_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/views/{view_id}/clone":{"post":{"operationId":"post_v1_views_view_id_clone","tags":["views"],"summary":"Clone a view","description":"Creates a copy of an existing view. Pass filters/sort/field_config to override the source view's values (e.g. to save the caller's unsaved changes as a new view).","parameters":[{"name":"view_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_views_view_id_clone_Body"}}}},"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_views_view_id_clone_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/tables/{table_id}/draft_records":{"post":{"operationId":"post_v1_tables_table_id_draft_records","tags":["tables"],"summary":"Create a draft record, not yet visible to the rest of the workspace.","description":"Create a draft record, not yet visible to the rest of the workspace.","parameters":[{"name":"table_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_tables_table_id_draft_records_Body"}}}},"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_tables_table_id_draft_records_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/tables/{table_id}/records/comments":{"post":{"operationId":"post_v1_tables_table_id_records_comments","tags":["tables"],"summary":"Comment on a record.","description":"Comment on a record.","parameters":[{"name":"table_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_tables_table_id_records_comments_Body"}}}},"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_tables_table_id_records_comments_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/tables/{table_id}/record_data_templates":{"post":{"operationId":"post_v1_tables_table_id_record_data_templates","tags":["tables"],"summary":"Create a record data template — a named set of prefilled values for new records.","description":"Create a record data template — a named set of prefilled values for new records.","parameters":[{"name":"table_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_tables_table_id_record_data_templates_Body"}}}},"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_tables_table_id_record_data_templates_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"get":{"operationId":"get_v1_tables_table_id_record_data_templates","tags":["tables"],"summary":"List a table's record data templates.","description":"List a table's record data templates.","parameters":[{"name":"table_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/get_v1_tables_table_id_record_data_templates_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/tables":{"post":{"operationId":"post_v1_tables","tags":["tables"],"summary":"Create a new table with fields. Formula, rollup, and lookup fields are computed and read-only in records.","description":"Create a new table with fields. Formula, rollup, and lookup fields are computed and read-only in records.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_tables_Body"}}}},"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_tables_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"get":{"operationId":"get_v1_tables","tags":["tables"],"summary":"List all tables in the workspace with their field schemas.","description":"List all tables in the workspace with their field schemas.","responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/get_v1_tables_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/tables/{table_id}/fields":{"post":{"operationId":"post_v1_tables_table_id_fields","tags":["tables"],"summary":"Add a new field to a table. Call get_api_docs({ topics: [\"schema_management\"] }) for field type reference.","description":"Add a new field to a table. Call get_api_docs({ topics: [\"schema_management\"] }) for field type reference.","parameters":[{"name":"table_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_tables_table_id_fields_Body"}}}},"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_tables_table_id_fields_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/tables/{table_id}/records":{"post":{"operationId":"post_v1_tables_table_id_records","tags":["tables"],"summary":"Create records. Only include writable fields — skip formula, rollup, lookup, and button fields.","description":"Create records. Only include writable fields — skip formula, rollup, lookup, and button fields.","parameters":[{"name":"table_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_tables_table_id_records_Body"}}}},"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_tables_table_id_records_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"delete":{"operationId":"delete_v1_tables_table_id_records","tags":["tables"],"summary":"Soft-delete (archive) records by IDs. Can be restored later.","description":"Soft-delete (archive) records by IDs. Can be restored later.","parameters":[{"name":"table_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/delete_v1_tables_table_id_records_Body"}}}},"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/delete_v1_tables_table_id_records_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"patch":{"operationId":"patch_v1_tables_table_id_records","tags":["tables"],"summary":"Update records. Send only changed fields — omitted fields are unchanged. Skip computed fields (formula, rollup, lookup).","description":"Update records. Send only changed fields — omitted fields are unchanged. Skip computed fields (formula, rollup, lookup).","parameters":[{"name":"table_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/patch_v1_tables_table_id_records_Body"}}}},"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/patch_v1_tables_table_id_records_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/tables/{table_id}/views":{"post":{"operationId":"post_v1_tables_table_id_views","tags":["tables"],"summary":"Create a saved view with filters, sorting, and field visibility.","description":"Create a saved view with filters, sorting, and field visibility.","parameters":[{"name":"table_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_tables_table_id_views_Body"}}}},"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_tables_table_id_views_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/records/{record_id}/comments/{comment_id}":{"delete":{"operationId":"delete_v1_records_record_id_comments_comment_id","tags":["records"],"summary":"Delete a comment.","description":"Delete a comment.","parameters":[{"name":"record_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"comment_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/delete_v1_records_record_id_comments_comment_id_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"patch":{"operationId":"patch_v1_records_record_id_comments_comment_id","tags":["records"],"summary":"Edit a comment the caller wrote.","description":"Edit a comment the caller wrote.","parameters":[{"name":"record_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"comment_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/patch_v1_records_record_id_comments_comment_id_Body"}}}},"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/patch_v1_records_record_id_comments_comment_id_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/record_data_templates/{record_data_template_id}":{"delete":{"operationId":"delete_v1_record_data_templates_record_data_template_id","tags":["record_data_templates"],"summary":"Delete a record data template.","description":"Delete a record data template.","parameters":[{"name":"record_data_template_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/delete_v1_record_data_templates_record_data_template_id_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"get":{"operationId":"get_v1_record_data_templates_record_data_template_id","tags":["record_data_templates"],"summary":"Get one record data template.","description":"Get one record data template.","parameters":[{"name":"record_data_template_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/get_v1_record_data_templates_record_data_template_id_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"patch":{"operationId":"patch_v1_record_data_templates_record_data_template_id","tags":["record_data_templates"],"summary":"Update a record data template's name or prefilled values.","description":"Update a record data template's name or prefilled values.","parameters":[{"name":"record_data_template_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/patch_v1_record_data_templates_record_data_template_id_Body"}}}},"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/patch_v1_record_data_templates_record_data_template_id_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/tables/{table_id}":{"delete":{"operationId":"delete_v1_tables_table_id","tags":["tables"],"summary":"Permanently delete a table and all its records. Cannot be undone.","description":"Permanently delete a table and all its records. Cannot be undone.","parameters":[{"name":"table_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"cascade","in":"query","required":false,"description":"Set 'true' to also delete link fields on other tables that point at this one.","schema":{"type":"string"}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/delete_v1_tables_table_id_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"get":{"operationId":"get_v1_tables_table_id","tags":["tables"],"summary":"Get a table's full schema including field definitions. Call this first to learn field keys and types before reading or writing records.","description":"Get a table's full schema including field definitions. Call this first to learn field keys and types before reading or writing records.","parameters":[{"name":"table_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/get_v1_tables_table_id_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"patch":{"operationId":"patch_v1_tables_table_id","tags":["tables"],"summary":"Update a table's name, fields, or configuration.","description":"Update a table's name, fields, or configuration.","parameters":[{"name":"table_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/patch_v1_tables_table_id_Body"}}}},"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/patch_v1_tables_table_id_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/tables/{table_id}/fields/{field_key}":{"delete":{"operationId":"delete_v1_tables_table_id_fields_field_key","tags":["tables"],"summary":"Delete a field. Use force=true to cascade-delete dependent formula/rollup/lookup fields.","description":"Delete a field. Use force=true to cascade-delete dependent formula/rollup/lookup fields.","parameters":[{"name":"table_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"field_key","in":"path","required":true,"description":"The field within `table_id`, by its key (`fld_...`), not its display name.","schema":{"type":"string"}},{"name":"force","in":"query","required":false,"description":"If true, cascade-deletes same-table dependent fields (formula/rollup/lookup). Does NOT bypass cross-table rollup/lookup dependents, nor references from workflows or apps — those must be deleted, repointed, or archived first.","schema":{"type":"string","enum":["true","false"]}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/delete_v1_tables_table_id_fields_field_key_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"patch":{"operationId":"patch_v1_tables_table_id_fields_field_key","tags":["tables"],"summary":"Update a field's name, type, or options (e.g. add select options). The field_key param identifies which field.","description":"Update a field's name, type, or options (e.g. add select options). The field_key param identifies which field.","parameters":[{"name":"table_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"field_key","in":"path","required":true,"description":"The field within `table_id`, by its key (`fld_...`), not its display name.","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/patch_v1_tables_table_id_fields_field_key_Body"}}}},"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/patch_v1_tables_table_id_fields_field_key_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/tables/{table_id}/workflows/{table_workflow_id}":{"delete":{"operationId":"delete_v1_tables_table_id_workflows_table_workflow_id","tags":["tables"],"summary":"Delete a table workflow. Archives the underlying workflow row.","description":"Delete a table workflow. Archives the underlying workflow row.","parameters":[{"name":"table_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"table_workflow_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/delete_v1_tables_table_id_workflows_table_workflow_id_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"patch":{"operationId":"patch_v1_tables_table_id_workflows_table_workflow_id","tags":["tables"],"summary":"Update a table workflow. Runs the same parse pipeline as the agent tool — DSL parse, display-name resolution, semantic validation, before_* sync constraint.","description":"Update a table workflow. Runs the same parse pipeline as the agent tool — DSL parse, display-name resolution, semantic validation, before_* sync constraint.","parameters":[{"name":"table_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"table_workflow_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/patch_v1_tables_table_id_workflows_table_workflow_id_Body"}}}},"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/patch_v1_tables_table_id_workflows_table_workflow_id_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/views/{view_id}":{"delete":{"operationId":"delete_v1_views_view_id","tags":["views"],"summary":"Delete a view. It is archived and can be restored.","description":"Delete a view. It is archived and can be restored.","parameters":[{"name":"view_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/delete_v1_views_view_id_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"get":{"operationId":"get_v1_views_view_id","tags":["views"],"summary":"Get a view's full configuration.","description":"Get a view's full configuration.","parameters":[{"name":"view_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/get_v1_views_view_id_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"patch":{"operationId":"patch_v1_views_view_id","tags":["views"],"summary":"Update a view's name, filters, sorting, or field visibility. Send only changed properties.","description":"Update a view's name, filters, sorting, or field visibility. Send only changed properties.","parameters":[{"name":"view_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/patch_v1_views_view_id_Body"}}}},"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/patch_v1_views_view_id_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/views/{view_id}/export_csv":{"post":{"operationId":"post_v1_views_view_id_export_csv","tags":["views"],"summary":"Export a view's rows as CSV, under that view's filters and sort.","description":"Export a view's rows as CSV, under that view's filters and sort.","parameters":[{"name":"view_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_views_view_id_export_csv_Body"}}}},"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_views_view_id_export_csv_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/table/{table_id}/export_excel":{"post":{"operationId":"post_table_table_id_export_excel","tags":["table"],"summary":"Export a whole table as an .xlsx workbook.","description":"Export a whole table as an .xlsx workbook.","parameters":[{"name":"table_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_table_table_id_export_excel_Body"}}}},"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_table_table_id_export_excel_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/views/{view_id}/export_xlsx":{"post":{"operationId":"post_v1_views_view_id_export_xlsx","tags":["views"],"summary":"Export a view's rows as an .xlsx workbook, under that view's filters and sort.","description":"Export a view's rows as an .xlsx workbook, under that view's filters and sort.","parameters":[{"name":"view_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_views_view_id_export_xlsx_Body"}}}},"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_views_view_id_export_xlsx_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/tables/{table_id}/records/find_position":{"post":{"operationId":"post_v1_tables_table_id_records_find_position","tags":["tables"],"summary":"Find which page of a view a record falls on, under that view's sort and filters.","description":"Find which page of a view a record falls on, under that view's sort and filters.","parameters":[{"name":"table_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_tables_table_id_records_find_position_Body"}}}},"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_tables_table_id_records_find_position_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/explorer":{"get":{"operationId":"get_v1_explorer","tags":["explorer"],"summary":"List the workspace's tables and views as the sidebar tree shows them.","description":"List the workspace's tables and views as the sidebar tree shows them.","responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/get_v1_explorer_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/tables/{table_id}/fields/{field_key}/dependencies":{"get":{"operationId":"get_v1_tables_table_id_fields_field_key_dependencies","tags":["tables"],"summary":"Get field dependencies","description":"Analyze all dependencies of a field before deletion. Returns a report categorizing dependencies into: can_auto_cleanup (safe to remove), will_break (causes errors), and requires_manual_action (needs user attention).","parameters":[{"name":"table_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"field_key","in":"path","required":true,"description":"The field within `table_id`, by its key (`fld_...`), not its display name.","schema":{"type":"string"}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/get_v1_tables_table_id_fields_field_key_dependencies_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/records/{record_id}/comments":{"get":{"operationId":"get_v1_records_record_id_comments","tags":["records"],"summary":"List the comments on a record.","description":"List the comments on a record.","parameters":[{"name":"record_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/get_v1_records_record_id_comments_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/tables/{table_id}/comments":{"get":{"operationId":"get_v1_tables_table_id_comments","tags":["tables"],"summary":"List the comments across a table's records.","description":"List the comments across a table's records.","parameters":[{"name":"table_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/get_v1_tables_table_id_comments_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/records/{record_id}":{"get":{"operationId":"get_v1_records_record_id","tags":["records"],"summary":"Get a single record by ID.","description":"Get a single record by ID.","parameters":[{"name":"record_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/get_v1_records_record_id_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/records/{record_id}/logs":{"get":{"operationId":"get_v1_records_record_id_logs","tags":["records"],"summary":"List a record's activity: who changed which field, when, and to what.","description":"List a record's activity: who changed which field, when, and to what.","parameters":[{"name":"record_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/get_v1_records_record_id_logs_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/tables/{table_id}/records/by_ids":{"post":{"operationId":"post_v1_tables_table_id_records_by_ids","tags":["tables"],"summary":"Get multiple records by IDs in one request.","description":"Get multiple records by IDs in one request.","parameters":[{"name":"table_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_tables_table_id_records_by_ids_Body"}}}},"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_tables_table_id_records_by_ids_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/tables/{table_id}/references":{"get":{"operationId":"get_v1_tables_table_id_references","tags":["tables"],"summary":"List what else in the workspace references this table.","description":"List what else in the workspace references this table.","parameters":[{"name":"table_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/get_v1_tables_table_id_references_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/tables/{table_id}/views/{view_id}/summary":{"post":{"operationId":"post_v1_tables_table_id_views_view_id_summary","tags":["tables"],"summary":"Get view summary","description":"Compute aggregate summaries for a table view. Accepts filters and search from the frontend.","parameters":[{"name":"table_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"view_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_tables_table_id_views_view_id_summary_Body"}}}},"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_tables_table_id_views_view_id_summary_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/views/{view_id}/hide":{"post":{"operationId":"post_v1_views_view_id_hide","tags":["views"],"summary":"Hide a view from the calling member's explorer sidebar. Personal preference — does not affect access or other members.","description":"Hide a view from the calling member's explorer sidebar. Personal preference — does not affect access or other members.","parameters":[{"name":"view_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_views_view_id_hide_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/tables/{table_id}/archived_views":{"get":{"operationId":"get_v1_tables_table_id_archived_views","tags":["tables"],"summary":"List a table's deleted views, most recently deleted first.","description":"List a table's deleted views, most recently deleted first.","parameters":[{"name":"table_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/get_v1_tables_table_id_archived_views_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/tables/{table_id}/records/lock":{"post":{"operationId":"post_v1_tables_table_id_records_lock","tags":["tables"],"summary":"Lock fields on records so they can only be changed through an approval.","description":"Lock fields on records so they can only be changed through an approval.","parameters":[{"name":"table_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_tables_table_id_records_lock_Body"}}}},"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_tables_table_id_records_lock_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/tables/{table_id}/records/{record_id}/buttons/{field_key}/press":{"post":{"operationId":"post_v1_tables_table_id_records_record_id_buttons_field_key_press","tags":["tables"],"summary":"Press a button field on a record, running the workflow it is bound to.","description":"Press a button field on a record, running the workflow it is bound to.","parameters":[{"name":"table_id","in":"path","required":true,"description":"Table containing the button field","schema":{"type":"string"}},{"name":"record_id","in":"path","required":true,"description":"Record to press the button on","schema":{"type":"string"}},{"name":"field_key","in":"path","required":true,"description":"Field key of the button field","schema":{"type":"string"}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_tables_table_id_records_record_id_buttons_field_key_press_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/tables/{table_id}/records/purge":{"post":{"operationId":"post_v1_tables_table_id_records_purge","tags":["tables"],"summary":"Permanently delete archived records from the trash. Targets must already be archived. Requires table:manage.","description":"Permanently delete archived records from the trash. Targets must already be archived. Requires table:manage.","parameters":[{"name":"table_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_tables_table_id_records_purge_Body"}}}},"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_tables_table_id_records_purge_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/tables/{table_id}/records/query":{"post":{"operationId":"post_v1_tables_table_id_records_query","tags":["tables"],"summary":"Query records with filters, sorting, search, and pagination. Use field_keys to select specific fields. Set limit=0 for count only.","description":"Query records with filters, sorting, search, and pagination. Use field_keys to select specific fields. Set limit=0 for count only.","parameters":[{"name":"table_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_tables_table_id_records_query_Body"}}}},"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_tables_table_id_records_query_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/tables/reorder":{"post":{"operationId":"post_v1_tables_reorder","tags":["tables"],"summary":"Reorder tables","description":"Reorder tables in the workspace by providing an ordered array of table IDs","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_tables_reorder_Body"}}}},"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_tables_reorder_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/tables/{table_id}/views/reorder":{"post":{"operationId":"post_v1_tables_table_id_views_reorder","tags":["tables"],"summary":"Reorder views","description":"Reorder views in a table by providing an ordered array of view IDs","parameters":[{"name":"table_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_tables_table_id_views_reorder_Body"}}}},"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_tables_table_id_views_reorder_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/tables/{table_id}/fields/{field_key}/repoint":{"post":{"operationId":"post_v1_tables_table_id_fields_field_key_repoint","tags":["tables"],"summary":"Point a linked-record field at a different table, rewriting its existing links.","description":"Point a linked-record field at a different table, rewriting its existing links.","parameters":[{"name":"table_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"field_key","in":"path","required":true,"description":"The linked-record field to repoint, by its key (`fld_...`).","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_tables_table_id_fields_field_key_repoint_Body"}}}},"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_tables_table_id_fields_field_key_repoint_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/records/resolve":{"post":{"operationId":"post_v1_records_resolve","tags":["records"],"summary":"Resolve record ids to their table identity — only records the caller can see.","description":"Resolve record ids to their table identity — only records the caller can see.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_records_resolve_Body"}}}},"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_records_resolve_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/tables/{table_id}/records/restore":{"post":{"operationId":"post_v1_tables_table_id_records_restore","tags":["tables"],"summary":"Restore deleted records.","description":"Restore deleted records.","parameters":[{"name":"table_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_tables_table_id_records_restore_Body"}}}},"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_tables_table_id_records_restore_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/views/{view_id}/restore":{"post":{"operationId":"post_v1_views_view_id_restore","tags":["views"],"summary":"Restore a deleted view, with its filters, sorting and columns intact.","description":"Restore a deleted view, with its filters, sorting and columns intact.","parameters":[{"name":"view_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_views_view_id_restore_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/tables/{table_id}/draft_records/submit":{"post":{"operationId":"post_v1_tables_table_id_draft_records_submit","tags":["tables"],"summary":"Publish a draft record, firing the table's create workflows.","description":"Publish a draft record, firing the table's create workflows.","parameters":[{"name":"table_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_tables_table_id_draft_records_submit_Body"}}}},"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_tables_table_id_draft_records_submit_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/views/{view_id}/unhide":{"post":{"operationId":"post_v1_views_view_id_unhide","tags":["views"],"summary":"Restore a view the calling member previously hid from their explorer sidebar.","description":"Restore a view the calling member previously hid from their explorer sidebar.","parameters":[{"name":"view_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_views_view_id_unhide_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/tables/{table_id}/records/unlock":{"post":{"operationId":"post_v1_tables_table_id_records_unlock","tags":["tables"],"summary":"Unlock fields that were locked on records.","description":"Unlock fields that were locked on records.","parameters":[{"name":"table_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_tables_table_id_records_unlock_Body"}}}},"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_tables_table_id_records_unlock_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/workspaces":{"post":{"operationId":"post_v1_workspaces","tags":["workspaces"],"summary":"Create a workspace in this organization.","description":"Create a workspace in this organization.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_workspaces_Body"}}}},"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_workspaces_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"get":{"operationId":"get_v1_workspaces","tags":["workspaces"],"summary":"List the workspaces in this organization that the caller can open.","description":"List the workspaces in this organization that the caller can open.","responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/get_v1_workspaces_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/workspace/backup":{"post":{"operationId":"post_v1_workspace_backup","tags":["workspace"],"summary":"Take a backup of the current workspace.","description":"Take a backup of the current workspace.","responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_workspace_backup_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/workspace":{"get":{"operationId":"get_v1_workspace","tags":["workspace"],"summary":"Get the workspace this request is scoped to.","description":"Get the workspace this request is scoped to.","responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/get_v1_workspace_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"patch":{"operationId":"patch_v1_workspace","tags":["workspace"],"summary":"Update the current workspace's settings.","description":"Update the current workspace's settings.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/patch_v1_workspace_Body"}}}},"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/patch_v1_workspace_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/workspace/backups":{"get":{"operationId":"get_v1_workspace_backups","tags":["workspace"],"summary":"List the backups held for the current workspace.","description":"List the backups held for the current workspace.","responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/get_v1_workspace_backups_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/workspaces/dangling-references":{"get":{"operationId":"get_v1_workspaces_dangling_references","tags":["workspaces"],"summary":"Report references in this organization that point at a workspace which no longer exists.","description":"Report references in this organization that point at a workspace which no longer exists.","responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/get_v1_workspaces_dangling_references_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/workspaces/{id}":{"delete":{"operationId":"delete_v1_workspaces_id","tags":["workspaces"],"summary":"Delete a workspace and everything in it.","description":"Delete a workspace and everything in it.","parameters":[{"name":"id","in":"path","required":true,"description":"The workspace to delete.","schema":{"type":"string"}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/delete_v1_workspaces_id_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/workspace/backups/{backup_id}/restore":{"post":{"operationId":"post_v1_workspace_backups_backup_id_restore","tags":["workspace"],"summary":"Restore the current workspace from one of its backups.","description":"Restore the current workspace from one of its backups.","parameters":[{"name":"backup_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_workspace_backups_backup_id_restore_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/notifications":{"post":{"operationId":"post_v1_notifications","tags":["notifications"],"summary":"Send a notification to a member.","description":"Send a notification to a member.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_notifications_Body"}}}},"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_notifications_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"delete":{"operationId":"delete_v1_notifications","tags":["notifications"],"summary":"Delete every notification for this member.","description":"Delete every notification for this member.","responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/delete_v1_notifications_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"get":{"operationId":"get_v1_notifications","tags":["notifications"],"summary":"List this member's notifications, newest first.","description":"List this member's notifications, newest first.","parameters":[{"name":"done","in":"query","required":false,"description":"Return only notifications that have been marked done, or only those that have not. Omit for both.","schema":{"type":"boolean"}},{"name":"level","in":"query","required":false,"description":"Return only notifications at this severity. Omit for every level.","schema":{"type":"string","enum":["urgent","warning","info","success"]}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/get_v1_notifications_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/notifications/{notification_id}/done":{"post":{"operationId":"post_v1_notifications_notification_id_done","tags":["notifications"],"summary":"Mark a notification done.","description":"Mark a notification done.","parameters":[{"name":"notification_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_notifications_notification_id_done_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/files/multipart/abort":{"post":{"operationId":"post_v1_files_multipart_abort","tags":["files"],"summary":"Abandon a multipart upload and discard the parts already sent.","description":"Abandon a multipart upload and discard the parts already sent.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_files_multipart_abort_Body"}}}},"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_files_multipart_abort_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/files/direct/complete":{"post":{"operationId":"post_v1_files_direct_complete","tags":["files"],"summary":"Finish a direct upload and register the file once its bytes are in storage.","description":"Finish a direct upload and register the file once its bytes are in storage.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_files_direct_complete_Body"}}}},"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_files_direct_complete_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/files/multipart/complete":{"post":{"operationId":"post_v1_files_multipart_complete","tags":["files"],"summary":"Finish a multipart upload and register the assembled file.","description":"Finish a multipart upload and register the assembled file.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_files_multipart_complete_Body"}}}},"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_files_multipart_complete_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/files/download_zip":{"post":{"operationId":"post_v1_files_download_zip","tags":["files"],"summary":"Bundle several files into one zip and return it.","description":"Bundle several files into one zip and return it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_files_download_zip_Body"}}}},"responses":{"200":{"description":"Success response"},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/files/auth_token":{"get":{"operationId":"get_v1_files_auth_token","tags":["files"],"summary":"Mint the short-lived token the file proxy accepts, so a browser can load private files directly.","description":"Mint the short-lived token the file proxy accepts, so a browser can load private files directly.","responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/get_v1_files_auth_token_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/files/{file_id}/signed_url":{"get":{"operationId":"get_v1_files_file_id_signed_url","tags":["files"],"summary":"Get a time-limited download URL for a file.","description":"Get a time-limited download URL for a file.","parameters":[{"name":"file_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"variant","in":"query","required":false,"description":"Serve a derived rendition instead of the original. Omit for the original bytes.","schema":{"type":"string","enum":["thumbnail"]}},{"name":"disposition","in":"query","required":false,"description":"Whether the browser should display the file or download it.","schema":{"type":"string","enum":["inline","attachment"]}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/get_v1_files_file_id_signed_url_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/files":{"get":{"operationId":"get_v1_files","tags":["files"],"summary":"List files in this workspace.","description":"List files in this workspace.","parameters":[{"name":"file_ids","in":"query","required":false,"description":"Return only these files. Omit for every file in the workspace.","schema":{"type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/get_v1_files_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"operationId":"post_v1_files","tags":["files"],"summary":"Upload a file through the API, for files small enough to send in one request.","description":"Upload a file through the API, for files small enough to send in one request.","responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_files_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/files/direct/init":{"post":{"operationId":"post_v1_files_direct_init","tags":["files"],"summary":"Start a single-part direct upload and get the presigned URL to PUT the bytes to.","description":"Start a single-part direct upload and get the presigned URL to PUT the bytes to.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_files_direct_init_Body"}}}},"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_files_direct_init_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/files/multipart/init":{"post":{"operationId":"post_v1_files_multipart_init","tags":["files"],"summary":"Start a multipart upload and get presigned URLs for its parts.","description":"Start a multipart upload and get presigned URLs for its parts.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_files_multipart_init_Body"}}}},"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_files_multipart_init_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/files/{file_id}/versions":{"get":{"operationId":"get_v1_files_file_id_versions","tags":["files"],"summary":"List a file's version chain, newest first.","description":"List a file's version chain, newest first.","parameters":[{"name":"file_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/get_v1_files_file_id_versions_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/files/{org_id}/{file_id}/{filename}":{"get":{"operationId":"get_v1_files_org_id_file_id_filename","tags":["files"],"summary":"Serve a file's bytes.","description":"Serve a file's bytes.","parameters":[{"name":"org_id","in":"path","required":true,"description":"The organization that owns the file.","schema":{"type":"string"}},{"name":"file_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"filename","in":"path","required":true,"description":"The file's name. Carried in the path so a browser download and a shared link land on a meaningful filename; the bytes served are decided by `file_id`.","schema":{"type":"string"}},{"name":"variant","in":"query","required":false,"description":"Serve a derived rendition instead of the original. Omit for the original bytes.","schema":{"type":"string","enum":["thumbnail"]}},{"name":"disposition","in":"query","required":false,"description":"Whether the browser should display the file or download it.","schema":{"type":"string","enum":["inline","attachment"]}}],"responses":{"200":{"description":"Success response"},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/files/profile_image":{"post":{"operationId":"post_v1_files_profile_image","tags":["files"],"summary":"Upload the caller's profile image.","description":"Upload the caller's profile image.","responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_files_profile_image_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/workflows/dry_run":{"post":{"operationId":"post_v1_workflows_dry_run","tags":["workflows"],"summary":"Dry-run a workflow against a synthetic trigger payload","description":"Verifies the workflow source and, on success, simulates execution with all tool calls recorded but not dispatched. Returns the planned mutations, step outputs, and any validation failures or evaluation errors.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_workflows_dry_run_Body"}}}},"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_workflows_dry_run_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/workflows/{workflow_id}":{"get":{"operationId":"get_v1_workflows_workflow_id","tags":["workflows"],"summary":"Get workflow by ID","description":"Retrieves a workflow by its ID","parameters":[{"name":"workflow_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/get_v1_workflows_workflow_id_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"patch":{"operationId":"patch_v1_workflows_workflow_id","tags":["workflows"],"summary":"Update workflow","description":"Updates an existing workflow","parameters":[{"name":"workflow_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/patch_v1_workflows_workflow_id_Body"}}}},"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/patch_v1_workflows_workflow_id_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/workflows":{"get":{"operationId":"get_v1_workflows","tags":["workflows"],"summary":"List workflows","description":"Lists all workflows in the workspace, optionally filtered by table IDs","parameters":[{"name":"ids","in":"query","required":false,"description":"Filter by workflow IDs","schema":{"type":"array","items":{"type":"string"}}},{"name":"table_ids","in":"query","required":false,"description":"Filter by table IDs referenced in workflows","schema":{"type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/get_v1_workflows_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/workflows/rescan":{"post":{"operationId":"post_v1_workflows_rescan","tags":["workflows"],"summary":"Rescan all workflows","description":"Rescans all workflows in the workspace to rebuild their metadata.table_ids based on table references in steps and triggers","responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_workflows_rescan_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/document_templates":{"post":{"operationId":"post_v1_document_templates","tags":["document_templates"],"summary":"Create a document template from an uploaded PDF, Excel, Word or HTML file.","description":"Create a document template from an uploaded PDF, Excel, Word or HTML file.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_document_templates_Body"}}}},"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_document_templates_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"get":{"operationId":"get_v1_document_templates","tags":["document_templates"],"summary":"List the document templates in this workspace.","description":"List the document templates in this workspace.","responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/get_v1_document_templates_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/document_templates/{document_template_id}":{"delete":{"operationId":"delete_v1_document_templates_document_template_id","tags":["document_templates"],"summary":"Delete a document template.","description":"Delete a document template.","parameters":[{"name":"document_template_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/delete_v1_document_templates_document_template_id_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"get":{"operationId":"get_v1_document_templates_document_template_id","tags":["document_templates"],"summary":"Get one document template, including its variable and region markup.","description":"Get one document template, including its variable and region markup.","parameters":[{"name":"document_template_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/get_v1_document_templates_document_template_id_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"patch":{"operationId":"patch_v1_document_templates_document_template_id","tags":["document_templates"],"summary":"Update a document template's name, source file or data schema.","description":"Update a document template's name, source file or data schema.","parameters":[{"name":"document_template_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/patch_v1_document_templates_document_template_id_Body"}}}},"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/patch_v1_document_templates_document_template_id_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/document_templates/{document_template_id}/find_text":{"post":{"operationId":"post_v1_document_templates_document_template_id_find_text","tags":["document_templates"],"summary":"Locate a literal string in a template, so it can be marked without knowing its coordinates.","description":"Locate a literal string in a template, so it can be marked without knowing its coordinates.","parameters":[{"name":"document_template_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_document_templates_document_template_id_find_text_Body"}}}},"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_document_templates_document_template_id_find_text_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/document_templates/{document_template_id}/mark_conditional_region":{"post":{"operationId":"post_v1_document_templates_document_template_id_mark_conditional_region","tags":["document_templates"],"summary":"Mark a region of the template as conditional, included only when its expression is true.","description":"Mark a region of the template as conditional, included only when its expression is true.","parameters":[{"name":"document_template_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_document_templates_document_template_id_mark_conditional_region_Body"}}}},"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_document_templates_document_template_id_mark_conditional_region_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/document_templates/{document_template_id}/mark_loop_region":{"post":{"operationId":"post_v1_document_templates_document_template_id_mark_loop_region","tags":["document_templates"],"summary":"Mark a region of the template as a loop, repeated once per row of a list.","description":"Mark a region of the template as a loop, repeated once per row of a list.","parameters":[{"name":"document_template_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_document_templates_document_template_id_mark_loop_region_Body"}}}},"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_document_templates_document_template_id_mark_loop_region_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/document_templates/{document_template_id}/mark_variable":{"post":{"operationId":"post_v1_document_templates_document_template_id_mark_variable","tags":["document_templates"],"summary":"Mark a span of the template as a variable to fill at generation time.","description":"Mark a span of the template as a variable to fill at generation time.","parameters":[{"name":"document_template_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_document_templates_document_template_id_mark_variable_Body"}}}},"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_document_templates_document_template_id_mark_variable_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/document_templates/{document_template_id}/unmark_conditional_region":{"post":{"operationId":"post_v1_document_templates_document_template_id_unmark_conditional_region","tags":["document_templates"],"summary":"Remove a conditional marking from a template region.","description":"Remove a conditional marking from a template region.","parameters":[{"name":"document_template_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_document_templates_document_template_id_unmark_conditional_region_Body"}}}},"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_document_templates_document_template_id_unmark_conditional_region_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/document_templates/{document_template_id}/unmark_loop_region":{"post":{"operationId":"post_v1_document_templates_document_template_id_unmark_loop_region","tags":["document_templates"],"summary":"Remove a loop marking from a template region.","description":"Remove a loop marking from a template region.","parameters":[{"name":"document_template_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_document_templates_document_template_id_unmark_loop_region_Body"}}}},"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_document_templates_document_template_id_unmark_loop_region_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/document_templates/{document_template_id}/unmark_variable":{"post":{"operationId":"post_v1_document_templates_document_template_id_unmark_variable","tags":["document_templates"],"summary":"Remove a variable marking, restoring the literal text.","description":"Remove a variable marking, restoring the literal text.","parameters":[{"name":"document_template_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_document_templates_document_template_id_unmark_variable_Body"}}}},"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_document_templates_document_template_id_unmark_variable_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/apps/{app_id}/field-options":{"post":{"operationId":"post_v1_apps_app_id_field_options","tags":["apps"],"summary":"Resolve the full option set (key, label, color) of a named query's select columns","description":"Resolve the full option set (key, label, color) of a named query's select columns","parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_apps_app_id_field_options_Body"}}}},"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_apps_app_id_field_options_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/content-installations/{id}/upgrade":{"post":{"operationId":"post_v1_content_installations_id_upgrade","tags":["content-installations"],"summary":"Upgrade a content installation to a newer package version.","description":"Upgrade a content installation to a newer package version.","parameters":[{"name":"id","in":"path","required":true,"description":"The content installation to act on.","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_content_installations_id_upgrade_Body"}}}},"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_content_installations_id_upgrade_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"get":{"operationId":"get_v1_content_installations_id_upgrade","tags":["content-installations"],"summary":"Preview upgrading a content installation to a newer package version.","description":"Preview upgrading a content installation to a newer package version.","parameters":[{"name":"id","in":"path","required":true,"description":"The content installation to act on.","schema":{"type":"string"}},{"name":"version","in":"query","required":false,"description":"Target version to preview; omitted previews the latest published version.","schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/get_v1_content_installations_id_upgrade_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/apps/{app_id}/package-release":{"post":{"operationId":"post_v1_apps_app_id_package_release","tags":["apps"],"summary":"Release a new package version from this app's current state.","description":"Release a new package version from this app's current state.","parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_apps_app_id_package_release_Body"}}}},"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_apps_app_id_package_release_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"get":{"operationId":"get_v1_apps_app_id_package_release","tags":["apps"],"summary":"Preview releasing a new package version from this app's current state.","description":"Preview releasing a new package version from this app's current state.","parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"knowledge","in":"query","required":false,"description":"JSON array [{ \"alias\", \"doc_id\" }] re-declaring the bundled-knowledge set; omitted reconstructs it from the pin.","schema":{"type":"string"}},{"name":"config","in":"query","required":false,"description":"JSON array of contract config knob declarations re-declaring the config; omitted carries the pin's config forward.","schema":{"type":"string"}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/get_v1_apps_app_id_package_release_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/apps/{app_id}/package-upgrade":{"post":{"operationId":"post_v1_apps_app_id_package_upgrade","tags":["apps"],"summary":"Upgrade this installation to a newer package version.","description":"Upgrade this installation to a newer package version.","parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_apps_app_id_package_upgrade_Body"}}}},"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_apps_app_id_package_upgrade_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"get":{"operationId":"get_v1_apps_app_id_package_upgrade","tags":["apps"],"summary":"Preview upgrading this installation to a newer package version.","description":"Preview upgrading this installation to a newer package version.","parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"version","in":"query","required":false,"description":"Target version to preview; omitted previews the latest published version.","schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/get_v1_apps_app_id_package_upgrade_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/apps/{app_id}/public/authenticate":{"post":{"operationId":"post_v1_apps_app_id_public_authenticate","tags":["apps"],"summary":"Exchange a shared password for a public-app session token","description":"Exchange a shared password for a public-app session token","parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_apps_app_id_public_authenticate_Body"}}}},"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_apps_app_id_public_authenticate_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/apps/{app_id}/authoring/begin":{"post":{"operationId":"post_v1_apps_app_id_authoring_begin","tags":["apps"],"summary":"Open an authoring session against an app draft.","description":"Open an authoring session against an app draft.","parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_apps_app_id_authoring_begin_Body"}}}},"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_apps_app_id_authoring_begin_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/apps/{app_id}/agent-runs/{run_id}/cancel":{"post":{"operationId":"post_v1_apps_app_id_agent_runs_run_id_cancel","tags":["apps"],"summary":"Cancel an in-flight app agent run","description":"Cancel an in-flight app agent run","parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"run_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_apps_app_id_agent_runs_run_id_cancel_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/apps/{app_id}/files/complete":{"post":{"operationId":"post_v1_apps_app_id_files_complete","tags":["apps"],"summary":"Finalize a presigned upload into an app","description":"Finalize a presigned upload into an app","parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_apps_app_id_files_complete_Body"}}}},"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_apps_app_id_files_complete_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/apps/{app_id}/agent-runs/{run_id}/continue":{"post":{"operationId":"post_v1_apps_app_id_agent_runs_run_id_continue","tags":["apps"],"summary":"Answer a run's pending ask_user_choice and continue it (streams)","description":"Answer a run's pending ask_user_choice and continue it (streams)","parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"run_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_apps_app_id_agent_runs_run_id_continue_Body"}}}},"responses":{"200":{"description":"Success response"},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/apps":{"post":{"operationId":"post_v1_apps","tags":["apps"],"summary":"Create a custom-code app.","description":"Create a custom-code app.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_apps_Body"}}}},"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_apps_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"get":{"operationId":"get_v1_apps","tags":["apps"],"summary":"List the apps in this workspace that the caller can open.","description":"List the apps in this workspace that the caller can open.","responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/get_v1_apps_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/apps/{app_id}":{"delete":{"operationId":"delete_v1_apps_app_id","tags":["apps"],"summary":"Delete an app.","description":"Delete an app.","parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/delete_v1_apps_app_id_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"get":{"operationId":"get_v1_apps_app_id","tags":["apps"],"summary":"Get one app, with its declared aliases and bindings.","description":"Get one app, with its declared aliases and bindings.","parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/get_v1_apps_app_id_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"patch":{"operationId":"patch_v1_apps_app_id","tags":["apps"],"summary":"Update an app's name, icon or settings.","description":"Update an app's name, icon or settings.","parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/patch_v1_apps_app_id_Body"}}}},"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/patch_v1_apps_app_id_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/content-installations/{id}":{"delete":{"operationId":"delete_v1_content_installations_id","tags":["content-installations"],"summary":"Remove a content installation and the artifacts it delivered.","description":"Remove a content installation and the artifacts it delivered.","parameters":[{"name":"id","in":"path","required":true,"description":"The content installation to act on.","schema":{"type":"string"}},{"name":"keep_content","in":"query","required":false,"description":"Pass \"true\" to leave the delivered knowledge docs and templates in place and remove only the installation record. Defaults to removing them.","schema":{"type":"string","enum":["true","false"]}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/delete_v1_content_installations_id_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/apps/{app_id}/authoring/deploy":{"post":{"operationId":"post_v1_apps_app_id_authoring_deploy","tags":["apps"],"summary":"Deploy the draft the authoring session holds.","description":"Deploy the draft the authoring session holds.","parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_apps_app_id_authoring_deploy_Body"}}}},"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_apps_app_id_authoring_deploy_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/apps/{app_id}/authoring/discard":{"post":{"operationId":"post_v1_apps_app_id_authoring_discard","tags":["apps"],"summary":"Discard the authoring session's draft and its working tree.","description":"Discard the authoring session's draft and its working tree.","parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_apps_app_id_authoring_discard_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/apps/{app_id}/eject":{"post":{"operationId":"post_v1_apps_app_id_eject","tags":["apps"],"summary":"Eject an installed app from its package, so it can be edited freely and no longer upgrades.","description":"Eject an installed app from its package, so it can be edited freely and no longer upgrades.","parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_apps_app_id_eject_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/apps/{app_id}/authoring/ensure":{"post":{"operationId":"post_v1_apps_app_id_authoring_ensure","tags":["apps"],"summary":"Open an authoring session if none is running, otherwise return the one already open.","description":"Open an authoring session if none is running, otherwise return the one already open.","parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_apps_app_id_authoring_ensure_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/apps/{app_id}/agents/{alias}/runs":{"post":{"operationId":"post_v1_apps_app_id_agents_alias_runs","tags":["apps"],"summary":"Run an app agent by its manifest alias (streams the result)","description":"Run an app agent by its manifest alias (streams the result)","parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"alias","in":"path","required":true,"description":"The agent to run, by the alias the app declares it under.","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_apps_app_id_agents_alias_runs_Body"}}}},"responses":{"200":{"description":"Success response"},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/apps/{app_id}/workflows/{alias}/execute":{"post":{"operationId":"post_v1_apps_app_id_workflows_alias_execute","tags":["apps"],"summary":"Execute a workflow by its app-manifest alias","description":"Execute a workflow by its app-manifest alias","parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"alias","in":"path","required":true,"description":"The workflow to run, by the alias the app declares it under.","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_apps_app_id_workflows_alias_execute_Body"}}}},"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_apps_app_id_workflows_alias_execute_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/packages/{package_id}/fleet-upgrade":{"post":{"operationId":"post_v1_packages_package_id_fleet_upgrade","tags":["packages"],"summary":"Upgrade every installation of a package across the fleet to a newer version.","description":"Upgrade every installation of a package across the fleet to a newer version.","parameters":[{"name":"package_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_packages_package_id_fleet_upgrade_Body"}}}},"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_packages_package_id_fleet_upgrade_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/apps/{app_id}/agent-runs/{run_id}":{"get":{"operationId":"get_v1_apps_app_id_agent_runs_run_id","tags":["apps"],"summary":"Get a single app agent run by id","description":"Get a single app agent run by id","parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"run_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/get_v1_apps_app_id_agent_runs_run_id_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/apps/{app_id}/authoring":{"get":{"operationId":"get_v1_apps_app_id_authoring","tags":["apps"],"summary":"Get the authoring session for an app draft, if one is open.","description":"Get the authoring session for an app draft, if one is open.","parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/get_v1_apps_app_id_authoring_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/apps/{app_id}/authoring/diff":{"get":{"operationId":"get_v1_apps_app_id_authoring_diff","tags":["apps"],"summary":"Diff the authoring draft against the app's deployed version.","description":"Diff the authoring draft against the app's deployed version.","parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/get_v1_apps_app_id_authoring_diff_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/apps/{app_id}/binding":{"get":{"operationId":"get_v1_apps_app_id_binding","tags":["apps"],"summary":"A package installation's alias→id maps for client-side F/OPT resolution","description":"A package installation's alias→id maps for client-side F/OPT resolution","parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/get_v1_apps_app_id_binding_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/apps/by-subdomain/{subdomain}":{"get":{"operationId":"get_v1_apps_by_subdomain_subdomain","tags":["apps"],"summary":"Resolve a public subdomain to the app's identity","description":"Resolve a public subdomain to the app's identity","parameters":[{"name":"subdomain","in":"path","required":true,"description":"The subdomain the app is published under, without the domain.","schema":{"type":"string"}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/get_v1_apps_by_subdomain_subdomain_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/apps/{app_id}/embed-grant":{"get":{"operationId":"get_v1_apps_app_id_embed_grant","tags":["apps"],"summary":"Mint a grant so an authenticated member can embed a password-gated app","description":"Mint a grant so an authenticated member can embed a password-gated app","parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/get_v1_apps_app_id_embed_grant_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/apps/{app_id}/package-config":{"get":{"operationId":"get_v1_apps_app_id_package_config","tags":["apps"],"summary":"Get the configuration values this installation supplies to its package.","description":"Get the configuration values this installation supplies to its package.","parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/get_v1_apps_app_id_package_config_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"patch":{"operationId":"patch_v1_apps_app_id_package_config","tags":["apps"],"summary":"Update the configuration values this installation supplies to its package.","description":"Update the configuration values this installation supplies to its package.","parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/patch_v1_apps_app_id_package_config_Body"}}}},"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/patch_v1_apps_app_id_package_config_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/apps/{app_id}/public-info":{"get":{"operationId":"get_v1_apps_app_id_public_info","tags":["apps"],"summary":"Resolve an app's public subdomain (its <slug>.lotics.app origin)","description":"Resolve an app's public subdomain (its <slug>.lotics.app origin)","parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/get_v1_apps_app_id_public_info_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/apps/{app_id}/versions/{version_id}":{"get":{"operationId":"get_v1_apps_app_id_versions_version_id","tags":["apps"],"summary":"Get one app version's metadata, including its entry HTML path.","description":"Get one app version's metadata, including its entry HTML path.","parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"version_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/get_v1_apps_app_id_versions_version_id_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/apps/{app_id}/versions/{version_id}/source":{"get":{"operationId":"get_v1_apps_app_id_versions_version_id_source","tags":["apps"],"summary":"Download an app version's source archive.","description":"Download an app version's source archive.","parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"version_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/get_v1_apps_app_id_versions_version_id_source_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/apps/{app_id}/workflows/{alias}/dts":{"post":{"operationId":"post_v1_apps_app_id_workflows_alias_dts","tags":["apps"],"summary":"Get the workspace .d.ts + envelope for an app workflow body","description":"Get the workspace .d.ts + envelope for an app workflow body","parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"alias","in":"path","required":true,"description":"The workflow whose input/output types to return, by its declared alias.","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_apps_app_id_workflows_alias_dts_Body"}}}},"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_apps_app_id_workflows_alias_dts_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/packages/{package_id}":{"get":{"operationId":"get_v1_packages_package_id","tags":["packages"],"summary":"Get a package's registry entry.","description":"Get a package's registry entry.","parameters":[{"name":"package_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/get_v1_packages_package_id_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/apps/{app_id}/package-health":{"get":{"operationId":"get_v1_apps_app_id_package_health","tags":["apps"],"summary":"Report whether this installation still matches the package version it is pinned to.","description":"Report whether this installation still matches the package version it is pinned to.","parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/get_v1_apps_app_id_package_health_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/packages/{package_id}/installations":{"post":{"operationId":"post_v1_packages_package_id_installations","tags":["packages"],"summary":"Install a package version into a workspace.","description":"Install a package version into a workspace.","parameters":[{"name":"package_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_packages_package_id_installations_Body"}}}},"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_packages_package_id_installations_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/apps/{app_id}/agent-runs":{"get":{"operationId":"get_v1_apps_app_id_agent_runs","tags":["apps"],"summary":"List an app agent session's run history","description":"List an app agent session's run history","parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"session_id","in":"query","required":true,"description":"The session thread to list runs for.","schema":{"type":"string","minLength":1}},{"name":"limit","in":"query","required":false,"description":"Runs per page.","schema":{"type":"number"}},{"name":"offset","in":"query","required":false,"description":"How many runs to skip, for paging.","schema":{"type":"number"}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/get_v1_apps_app_id_agent_runs_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/apps/{app_id}/members":{"get":{"operationId":"get_v1_apps_app_id_members","tags":["apps"],"summary":"List the app organization's members (member-picker source)","description":"List the app organization's members (member-picker source)","parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"group_id","in":"query","required":false,"description":"Restrict to one member group — only honored if declared on a member input","schema":{"type":"string"}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/get_v1_apps_app_id_members_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/apps/{app_id}/versions":{"get":{"operationId":"get_v1_apps_app_id_versions","tags":["apps"],"summary":"List an app's deployed versions, newest first.","description":"List an app's deployed versions, newest first.","parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Versions per page.","schema":{"type":"number"}},{"name":"offset","in":"query","required":false,"description":"How many versions to skip, for paging.","schema":{"type":"number"}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/get_v1_apps_app_id_versions_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/packages/{package_id}/versions":{"get":{"operationId":"get_v1_packages_package_id_versions","tags":["packages"],"summary":"List a package's published versions.","description":"List a package's published versions.","parameters":[{"name":"package_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/get_v1_packages_package_id_versions_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/workspaces/{workspace_id}/content-installations":{"get":{"operationId":"get_v1_workspaces_workspace_id_content_installations","tags":["workspaces"],"summary":"List the content installations delivered into a workspace.","description":"List the content installations delivered into a workspace.","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/get_v1_workspaces_workspace_id_content_installations_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/apps/{app_id}/package-publish":{"get":{"operationId":"get_v1_apps_app_id_package_publish","tags":["apps"],"summary":"Preview publishing this app as a package: the extracted contract and any blocking findings.","description":"Preview publishing this app as a package: the extracted contract and any blocking findings.","parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"knowledge","in":"query","required":false,"description":"JSON array [{ \"alias\", \"doc_id\" }] of the app's package-managed knowledge docs.","schema":{"type":"string"}},{"name":"config","in":"query","required":false,"description":"JSON array of contract config knob declarations (the app manifest's `lotics.config`).","schema":{"type":"string"}},{"name":"renames","in":"query","required":false,"description":"JSON array [{ \"from\", \"to\" }] of `--rename` alias fixes to apply before previewing.","schema":{"type":"string"}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/get_v1_apps_app_id_package_publish_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"operationId":"post_v1_apps_app_id_package_publish","tags":["apps"],"summary":"Publish this app as the first version of a new package.","description":"Publish this app as the first version of a new package.","parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_apps_app_id_package_publish_Body"}}}},"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_apps_app_id_package_publish_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/apps/{app_id}/query":{"post":{"operationId":"post_v1_apps_app_id_query","tags":["apps"],"summary":"Run a named query declared in the app's manifest","description":"Run a named query declared in the app's manifest","parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_apps_app_id_query_Body"}}}},"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_apps_app_id_query_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/apps/reorder":{"post":{"operationId":"post_v1_apps_reorder","tags":["apps"],"summary":"Reorder the calling member's apps list","description":"Arrange the apps list for the calling member only. Personal preference — it does not affect access, and no other member's list changes. Apps left out of the array keep the default order behind the listed ones.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_apps_reorder_Body"}}}},"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_apps_reorder_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/apps/{app_id}/authoring/preview-failure":{"post":{"operationId":"post_v1_apps_app_id_authoring_preview_failure","tags":["apps"],"summary":"Report that the authoring preview failed to build, so the session can surface why.","description":"Report that the authoring preview failed to build, so the session can surface why.","parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_apps_app_id_authoring_preview_failure_Body"}}}},"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_apps_app_id_authoring_preview_failure_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/apps/{app_id}/files/upload-url":{"post":{"operationId":"post_v1_apps_app_id_files_upload_url","tags":["apps"],"summary":"Mint a presigned URL for uploading a file into an app","description":"Mint a presigned URL for uploading a file into an app","parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_apps_app_id_files_upload_url_Body"}}}},"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_apps_app_id_files_upload_url_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/packages/{package_id}/retire":{"post":{"operationId":"post_v1_packages_package_id_retire","tags":["packages"],"summary":"Retire a package so it can no longer be installed.","description":"Retire a package so it can no longer be installed.","parameters":[{"name":"package_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_packages_package_id_retire_Body"}}}},"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_packages_package_id_retire_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/app-icons":{"get":{"operationId":"get_v1_app_icons","tags":["app-icons"],"summary":"Search the icon set an app can use for its launcher tile.","description":"Search the icon set an app can use for its launcher tile.","parameters":[{"name":"q","in":"query","required":true,"description":"Search term — a word or concept (\"shipping\", \"calendar\").","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Max results, 1–50 (default 30).","schema":{"type":"integer","minimum":1,"maximum":50}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/get_v1_app_icons_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/apps/{app_id}/public-password":{"put":{"operationId":"put_v1_apps_app_id_public_password","tags":["apps"],"summary":"Set or clear the shared password gating the app's public link","description":"Set or clear the shared password gating the app's public link","parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/put_v1_apps_app_id_public_password_Body"}}}},"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/put_v1_apps_app_id_public_password_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/apps/{app_id}/subdomain":{"put":{"operationId":"put_v1_apps_app_id_subdomain","tags":["apps"],"summary":"Rename an app's public subdomain","description":"Rename an app's public subdomain","parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/put_v1_apps_app_id_subdomain_Body"}}}},"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/put_v1_apps_app_id_subdomain_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/apps/{app_id}/uninstall":{"post":{"operationId":"post_v1_apps_app_id_uninstall","tags":["apps"],"summary":"Uninstall a package installation and remove the app it materialized.","description":"Uninstall a package installation and remove the app it materialized.","parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_apps_app_id_uninstall_Body"}}}},"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_apps_app_id_uninstall_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/apps/{app_id}/embed-grant/verify":{"post":{"operationId":"post_v1_apps_app_id_embed_grant_verify","tags":["apps"],"summary":"Verify an embed grant relayed by the app-host Worker","description":"Verify an embed grant relayed by the app-host Worker","parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_apps_app_id_embed_grant_verify_Body"}}}},"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_apps_app_id_embed_grant_verify_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/packages/{package_id}/versions/{version}/yank":{"post":{"operationId":"post_v1_packages_package_id_versions_version_yank","tags":["packages"],"summary":"Yank or unyank a published package version","description":"Yank or unyank a published package version","parameters":[{"name":"package_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"version","in":"path","required":true,"description":"The published version number to yank or restore.","schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_packages_package_id_versions_version_yank_Body"}}}},"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_packages_package_id_versions_version_yank_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/apps/{app_id}/records/{record_id}/comments":{"post":{"operationId":"post_v1_apps_app_id_records_record_id_comments","tags":["apps"],"summary":"Comment on a record through an app.","description":"Comment on a record through an app.","parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"record_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_apps_app_id_records_record_id_comments_Body"}}}},"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_apps_app_id_records_record_id_comments_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"get":{"operationId":"get_v1_apps_app_id_records_record_id_comments","tags":["apps"],"summary":"List the comments on a record, read through an app's own access.","description":"List the comments on a record, read through an app's own access.","parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"record_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/get_v1_apps_app_id_records_record_id_comments_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/apps/{app_id}/records/{record_id}/comments/{comment_id}":{"delete":{"operationId":"delete_v1_apps_app_id_records_record_id_comments_comment_id","tags":["apps"],"summary":"Delete a comment, through an app.","description":"Delete a comment, through an app.","parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"record_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"comment_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/delete_v1_apps_app_id_records_record_id_comments_comment_id_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"patch":{"operationId":"patch_v1_apps_app_id_records_record_id_comments_comment_id","tags":["apps"],"summary":"Edit a comment the caller wrote, through an app.","description":"Edit a comment the caller wrote, through an app.","parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"record_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"comment_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/patch_v1_apps_app_id_records_record_id_comments_comment_id_Body"}}}},"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/patch_v1_apps_app_id_records_record_id_comments_comment_id_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/apps/{app_id}/tables/{table_id}/comment-counts":{"get":{"operationId":"get_v1_apps_app_id_tables_table_id_comment_counts","tags":["apps"],"summary":"Count comments per record for a table, so an app can badge its rows.","description":"Count comments per record for a table, so an app can badge its rows.","parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"table_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/get_v1_apps_app_id_tables_table_id_comment_counts_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/automations":{"post":{"operationId":"post_v1_automations","tags":["automations"],"summary":"Create an automation (trigger + workflow pair)","description":"Creates an automation with a trigger and associated workflow. Accepts every trigger type registered in the adapter registry — required config keys are enforced per adapter.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_automations_Body"}}}},"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_automations_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"get":{"operationId":"get_v1_automations","tags":["automations"],"summary":"Query automations","description":"Queries automations with optional filters","parameters":[{"name":"ids","in":"query","required":false,"description":"Filter by automation (trigger) IDs","schema":{"type":"array","items":{"type":"string"}}},{"name":"enabled","in":"query","required":false,"description":"Filter by enabled/disabled status","schema":{"type":"boolean"}},{"name":"trigger_type","in":"query","required":false,"description":"Filter by trigger type (e.g. recurring_schedule, receive_webhook)","schema":{"type":"string"}},{"name":"exclude_trigger_types","in":"query","required":false,"description":"Exclude automations whose trigger type is in this list","schema":{"type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/get_v1_automations_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/automations/{trigger_id}":{"delete":{"operationId":"delete_v1_automations_trigger_id","tags":["automations"],"summary":"Delete automation","description":"Archives an automation's trigger and associated workflow","parameters":[{"name":"trigger_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/delete_v1_automations_trigger_id_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"patch":{"operationId":"patch_v1_automations_trigger_id","tags":["automations"],"summary":"Update automation","description":"Updates an automation's trigger config and/or workflow steps","parameters":[{"name":"trigger_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/patch_v1_automations_trigger_id_Body"}}}},"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/patch_v1_automations_trigger_id_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/skills":{"post":{"operationId":"post_v1_skills","tags":["skills"],"summary":"Create skill","description":"Creates a new skill in the workspace","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_skills_Body"}}}},"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_skills_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"get":{"operationId":"get_v1_skills","tags":["skills"],"summary":"List skills","description":"Lists skills in the workspace. Pass user_invocable=true to list only skills visible in the composer picker. Pass source to filter by source (chat, browser_extension).","parameters":[{"name":"user_invocable","in":"query","required":false,"description":"Return only skills a member can invoke from the composer picker.","schema":{"type":"boolean"}},{"name":"source","in":"query","required":false,"description":"Return only skills from one source, such as `chat` or `browser_extension`.","schema":{"type":"string"}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/get_v1_skills_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/skills/{skill_id}":{"delete":{"operationId":"delete_v1_skills_skill_id","tags":["skills"],"summary":"Delete skill","description":"Deletes a skill from the workspace","parameters":[{"name":"skill_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/delete_v1_skills_skill_id_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"get":{"operationId":"get_v1_skills_skill_id","tags":["skills"],"summary":"Get skill by ID","description":"Retrieves a skill by its ID","parameters":[{"name":"skill_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/get_v1_skills_skill_id_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"patch":{"operationId":"patch_v1_skills_skill_id","tags":["skills"],"summary":"Update skill","description":"Updates an existing skill in the workspace","parameters":[{"name":"skill_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/patch_v1_skills_skill_id_Body"}}}},"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/patch_v1_skills_skill_id_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/instructions":{"post":{"operationId":"post_v1_instructions","tags":["instructions"],"summary":"Create instruction","description":"Creates a new workspace instruction","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_instructions_Body"}}}},"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_instructions_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"get":{"operationId":"get_v1_instructions","tags":["instructions"],"summary":"List instructions","description":"Lists instructions in the workspace. Filter by scope.","parameters":[{"name":"scope","in":"query","required":false,"description":"Return only instructions at this scope — those set for the whole workspace, or this member's own. Omit for both.","schema":{"type":"string","enum":["workspace","member"]}},{"name":"include_table_scoped","in":"query","required":false,"description":"Also return instructions attached to a single table, which are left out by default.","schema":{"type":"boolean"}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/get_v1_instructions_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/instructions/{instruction_id}":{"delete":{"operationId":"delete_v1_instructions_instruction_id","tags":["instructions"],"summary":"Delete instruction","description":"Archives an instruction","parameters":[{"name":"instruction_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/delete_v1_instructions_instruction_id_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"get":{"operationId":"get_v1_instructions_instruction_id","tags":["instructions"],"summary":"Get instruction","description":"Retrieves an instruction by ID","parameters":[{"name":"instruction_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/get_v1_instructions_instruction_id_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"patch":{"operationId":"patch_v1_instructions_instruction_id","tags":["instructions"],"summary":"Update instruction","description":"Updates an existing instruction. Creates a new version.","parameters":[{"name":"instruction_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/patch_v1_instructions_instruction_id_Body"}}}},"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/patch_v1_instructions_instruction_id_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/instructions/{instruction_id}/versions":{"get":{"operationId":"get_v1_instructions_instruction_id_versions","tags":["instructions"],"summary":"List instruction versions","description":"Lists version history for an instruction","parameters":[{"name":"instruction_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Versions per page, 1–100.","schema":{"type":"integer","minimum":1,"maximum":100}},{"name":"offset","in":"query","required":false,"description":"How many versions to skip, for paging.","schema":{"type":"integer","minimum":0,"maximum":9007199254740991}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/get_v1_instructions_instruction_id_versions_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/instructions/{instruction_id}/restore":{"post":{"operationId":"post_v1_instructions_instruction_id_restore","tags":["instructions"],"summary":"Restore instruction version","description":"Restores an instruction to a previous version. Creates a new version with the restored content.","parameters":[{"name":"instruction_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_instructions_instruction_id_restore_Body"}}}},"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_instructions_instruction_id_restore_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/member_instructions":{"post":{"operationId":"post_v1_member_instructions","tags":["member_instructions"],"summary":"Create personal instruction","description":"Creates a new personal instruction for the current member","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_member_instructions_Body"}}}},"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_member_instructions_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"get":{"operationId":"get_v1_member_instructions","tags":["member_instructions"],"summary":"List personal instructions","description":"Lists the current member's personal instructions","responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/get_v1_member_instructions_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/member_instructions/{instruction_id}":{"delete":{"operationId":"delete_v1_member_instructions_instruction_id","tags":["member_instructions"],"summary":"Delete personal instruction","description":"Archives a personal instruction owned by the current member","parameters":[{"name":"instruction_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/delete_v1_member_instructions_instruction_id_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"patch":{"operationId":"patch_v1_member_instructions_instruction_id","tags":["member_instructions"],"summary":"Update personal instruction","description":"Updates a personal instruction owned by the current member","parameters":[{"name":"instruction_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/patch_v1_member_instructions_instruction_id_Body"}}}},"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/patch_v1_member_instructions_instruction_id_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/knowledge_docs":{"post":{"operationId":"post_v1_knowledge_docs","tags":["knowledge_docs"],"summary":"Create knowledge doc","description":"Creates a new knowledge doc in the workspace","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_knowledge_docs_Body"}}}},"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_knowledge_docs_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"get":{"operationId":"get_v1_knowledge_docs","tags":["knowledge_docs"],"summary":"List knowledge docs","description":"Lists knowledge docs in the workspace (metadata only; the body is fetched by the single GET)","responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/get_v1_knowledge_docs_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/knowledge_docs/{knowledge_doc_id}":{"delete":{"operationId":"delete_v1_knowledge_docs_knowledge_doc_id","tags":["knowledge_docs"],"summary":"Delete knowledge doc","description":"Archives a knowledge doc","parameters":[{"name":"knowledge_doc_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/delete_v1_knowledge_docs_knowledge_doc_id_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"get":{"operationId":"get_v1_knowledge_docs_knowledge_doc_id","tags":["knowledge_docs"],"summary":"Get knowledge doc","description":"Retrieves a knowledge doc by ID","parameters":[{"name":"knowledge_doc_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/get_v1_knowledge_docs_knowledge_doc_id_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"patch":{"operationId":"patch_v1_knowledge_docs_knowledge_doc_id","tags":["knowledge_docs"],"summary":"Update knowledge doc","description":"Updates a knowledge doc. A content change mints a new content-file version.","parameters":[{"name":"knowledge_doc_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/patch_v1_knowledge_docs_knowledge_doc_id_Body"}}}},"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/patch_v1_knowledge_docs_knowledge_doc_id_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/memories":{"post":{"operationId":"post_v1_memories","tags":["memories"],"summary":"Create memory","description":"Creates a new personal memory","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_memories_Body"}}}},"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_memories_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"get":{"operationId":"get_v1_memories","tags":["memories"],"summary":"List memories","description":"Lists the caller's personal memories","responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/get_v1_memories_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/memories/{memory_id}":{"delete":{"operationId":"delete_v1_memories_memory_id","tags":["memories"],"summary":"Delete memory","description":"Archives a memory","parameters":[{"name":"memory_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/delete_v1_memories_memory_id_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"patch":{"operationId":"patch_v1_memories_memory_id","tags":["memories"],"summary":"Update memory","description":"Updates description and/or content of a memory","parameters":[{"name":"memory_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/patch_v1_memories_memory_id_Body"}}}},"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/patch_v1_memories_memory_id_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/search":{"get":{"operationId":"get_v1_search","tags":["search"],"summary":"Global search","description":"Search across the workspace. Returns a single ranked list of tables, views, and records.","parameters":[{"name":"q","in":"query","required":true,"description":"Search query string","schema":{"type":"string","minLength":1,"maxLength":200}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/get_v1_search_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/api_keys":{"post":{"operationId":"post_v1_api_keys","tags":["api_keys"],"summary":"Create API key","description":"Creates a new API key and returns plaintext value once","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_api_keys_Body"}}}},"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_api_keys_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"get":{"operationId":"get_v1_api_keys","tags":["api_keys"],"summary":"List API keys","description":"Lists all API keys in the current organization","responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/get_v1_api_keys_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/api_keys/{api_key_id}":{"patch":{"operationId":"patch_v1_api_keys_api_key_id","tags":["api_keys"],"summary":"Update API key","description":"Updates metadata or status for an existing API key","parameters":[{"name":"api_key_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/patch_v1_api_keys_api_key_id_Body"}}}},"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/patch_v1_api_keys_api_key_id_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/me/cancel_erasure":{"post":{"operationId":"post_v1_me_cancel_erasure","tags":["me"],"summary":"Cancel a pending account-erasure request during the grace window","description":"Cancel a pending account-erasure request during the grace window","responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_me_cancel_erasure_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/me/claim_email":{"post":{"operationId":"post_v1_me_claim_email","tags":["me"],"summary":"Start moving the authenticated member's sign-in identity onto another email address","description":"Start moving the authenticated member's sign-in identity onto another email address","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_me_claim_email_Body"}}}},"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_me_claim_email_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/me/confirm_email_claim":{"post":{"operationId":"post_v1_me_confirm_email_claim","tags":["me"],"summary":"Confirm an email claim with the token sent to the new address","description":"Confirm an email claim with the token sent to the new address","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_me_confirm_email_claim_Body"}}}},"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_me_confirm_email_claim_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/me/confirm_erasure":{"post":{"operationId":"post_v1_me_confirm_erasure","tags":["me"],"summary":"Confirm a pending erasure request and start the 30-day grace window","description":"Confirm a pending erasure request and start the 30-day grace window","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_me_confirm_erasure_Body"}}}},"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_me_confirm_erasure_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/me/export":{"get":{"operationId":"get_v1_me_export","tags":["me"],"summary":"Export the authenticated member's personal data (GDPR access/portability)","description":"Export the authenticated member's personal data (GDPR access/portability)","responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/get_v1_me_export_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/me/erasure":{"get":{"operationId":"get_v1_me_erasure","tags":["me"],"summary":"Read the authenticated member's pending account-erasure schedule, if any","description":"Read the authenticated member's pending account-erasure schedule, if any","responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/get_v1_me_erasure_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/me/security-events":{"get":{"operationId":"get_v1_me_security_events","tags":["me"],"summary":"List the authenticated member's recent account-security events","description":"List the authenticated member's recent account-security events","responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/get_v1_me_security_events_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/me/sessions":{"get":{"operationId":"get_v1_me_sessions","tags":["me"],"summary":"List the authenticated member's active sessions","description":"List the authenticated member's active sessions","responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/get_v1_me_sessions_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"delete":{"operationId":"delete_v1_me_sessions","tags":["me"],"summary":"Revoke every session of the authenticated member except the current one","description":"Revoke every session of the authenticated member except the current one","responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/delete_v1_me_sessions_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/me/request_erasure":{"post":{"operationId":"post_v1_me_request_erasure","tags":["me"],"summary":"Request erasure of the authenticated member's account (emails a confirmation token)","description":"Request erasure of the authenticated member's account (emails a confirmation token)","responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_me_request_erasure_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/me/sessions/{session_id}":{"delete":{"operationId":"delete_v1_me_sessions_session_id","tags":["me"],"summary":"Revoke one of the authenticated member's sessions","description":"Revoke one of the authenticated member's sessions","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/delete_v1_me_sessions_session_id_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/approval_requests/locked_record_change":{"post":{"operationId":"post_v1_approval_requests_locked_record_change","tags":["approval_requests"],"summary":"Ask an approver to release a locked field so a record change can be applied.","description":"Ask an approver to release a locked field so a record change can be applied.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_approval_requests_locked_record_change_Body"}}}},"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_approval_requests_locked_record_change_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/approval_requests/{approval_request_id}":{"get":{"operationId":"get_v1_approval_requests_approval_request_id","tags":["approval_requests"],"summary":"Get one approval request, with the change it is asking about.","description":"Get one approval request, with the change it is asking about.","parameters":[{"name":"approval_request_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/get_v1_approval_requests_approval_request_id_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/approval_requests":{"get":{"operationId":"get_v1_approval_requests","tags":["approval_requests"],"summary":"List approval requests addressed to this member.","description":"List approval requests addressed to this member.","parameters":[{"name":"status","in":"query","required":false,"description":"Return only requests in this state. Omit for every state.","schema":{"type":"string","enum":["pending","approved","rejected","timed_out"]}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/get_v1_approval_requests_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/approval_requests/{approval_request_id}/respond":{"post":{"operationId":"post_v1_approval_requests_approval_request_id_respond","tags":["approval_requests"],"summary":"Approve or reject an approval request.","description":"Approve or reject an approval request.","parameters":[{"name":"approval_request_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_approval_requests_approval_request_id_respond_Body"}}}},"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_approval_requests_approval_request_id_respond_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/audit_logs":{"get":{"operationId":"get_v1_audit_logs","tags":["audit_logs"],"summary":"List audit logs","description":"Query audit logs with combined filters for resource, action, actor, and date range","parameters":[{"name":"resource_type","in":"query","required":false,"description":"Return only entries about this kind of resource.","schema":{"type":"string","enum":["record","table","field","view","role_binding","group","organization","member","invitation","app","package","skill","automation","document_template","instruction","knowledge_doc","plan_period","scheduled_plan_change","credit_grant","billing_invoice","billing_party","api_key","session"]}},{"name":"resource_id","in":"query","required":false,"description":"Return only entries about this one resource.","schema":{"type":"string"}},{"name":"parent_resource_type","in":"query","required":false,"description":"Return only entries whose parent resource is of this kind.","schema":{"type":"string","enum":["record","table","field","view","role_binding","group","organization","member","invitation","app","package","skill","automation","document_template","instruction","knowledge_doc","plan_period","scheduled_plan_change","credit_grant","billing_invoice","billing_party","api_key","session"]}},{"name":"parent_resource_id","in":"query","required":false,"description":"Return only entries beneath this one resource — every record under a table, for example.","schema":{"type":"string"}},{"name":"action","in":"query","required":false,"description":"Return only these actions. Pass more than one to match any of them.","schema":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}},{"name":"actor_id","in":"query","required":false,"description":"Return only entries for what this member did.","schema":{"type":"string"}},{"name":"workspace_id","in":"query","required":false,"description":"Return only entries in this workspace. Omit for the whole organization.","schema":{"type":"string"}},{"name":"created_after","in":"query","required":false,"description":"ISO 8601 timestamp. Entries at or after this instant — the bound is inclusive.","schema":{"type":"string"}},{"name":"created_before","in":"query","required":false,"description":"ISO 8601 timestamp. Entries strictly before this instant — the bound is exclusive.","schema":{"type":"string"}},{"name":"cursor","in":"query","required":false,"description":"Continue from a previous page: pass the `next_cursor` it returned. Omit for the first page.","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Entries per page, 1–50. Defaults to 20.","schema":{"type":"number"}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/get_v1_audit_logs_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/agent_context_activations":{"get":{"operationId":"get_v1_agent_context_activations","tags":["agent_context_activations"],"summary":"List agent context activations","description":"Lists the current member's activation state for skills","parameters":[{"name":"resource_type","in":"query","required":true,"description":"The kind of resource whose activation is being read or set.","schema":{"type":"string","enum":["skill"]}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/get_v1_agent_context_activations_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/agent_context_activations/{resource_type}/{resource_id}":{"put":{"operationId":"put_v1_agent_context_activations_resource_type_resource_id","tags":["agent_context_activations"],"summary":"Set agent context activation","description":"Enable or disable a skill in the current member's agent context","parameters":[{"name":"resource_type","in":"path","required":true,"description":"The kind of resource whose activation is being read or set.","schema":{"type":"string","enum":["skill"]}},{"name":"resource_id","in":"path","required":true,"description":"The id of the resource named by `resource_type`.","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/put_v1_agent_context_activations_resource_type_resource_id_Body"}}}},"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/put_v1_agent_context_activations_resource_type_resource_id_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/voice_sessions/{session_id}/complete":{"post":{"operationId":"post_v1_voice_sessions_session_id_complete","tags":["voice_sessions"],"summary":"Close a recording session and queue it for transcription.","description":"Close a recording session and queue it for transcription.","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_voice_sessions_session_id_complete_Body"}}}},"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_voice_sessions_session_id_complete_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/voice_sessions/{session_id}":{"delete":{"operationId":"delete_v1_voice_sessions_session_id","tags":["voice_sessions"],"summary":"Delete a recording session and its stored audio.","description":"Delete a recording session and its stored audio.","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/delete_v1_voice_sessions_session_id_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"get":{"operationId":"get_v1_voice_sessions_session_id","tags":["voice_sessions"],"summary":"Get a recording session, its transcript and its summary.","description":"Get a recording session, its transcript and its summary.","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/get_v1_voice_sessions_session_id_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/voice_sessions/{session_id}/urls":{"post":{"operationId":"post_v1_voice_sessions_session_id_urls","tags":["voice_sessions"],"summary":"Get more presigned chunk-upload URLs for a recording still in progress.","description":"Get more presigned chunk-upload URLs for a recording still in progress.","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_voice_sessions_session_id_urls_Body"}}}},"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_voice_sessions_session_id_urls_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/voice_sessions/pending":{"get":{"operationId":"get_v1_voice_sessions_pending","tags":["voice_sessions"],"summary":"List recording sessions that were left unfinished, so the client can resume them.","description":"List recording sessions that were left unfinished, so the client can resume them.","parameters":[{"name":"chat_session_id","in":"query","required":false,"description":"Return only unfinished recordings started from this chat session.","schema":{"type":"string"}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/get_v1_voice_sessions_pending_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/voice_sessions/init":{"post":{"operationId":"post_v1_voice_sessions_init","tags":["voice_sessions"],"summary":"Open a recording session and get presigned URLs for its first chunks.","description":"Open a recording session and get presigned URLs for its first chunks.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_voice_sessions_init_Body"}}}},"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_voice_sessions_init_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/voice_sessions/{session_id}/retry":{"post":{"operationId":"post_v1_voice_sessions_session_id_retry","tags":["voice_sessions"],"summary":"Re-run transcription for a session whose processing failed.","description":"Re-run transcription for a session whose processing failed.","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_voice_sessions_session_id_retry_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/usage/credit_balance":{"get":{"operationId":"get_v1_usage_credit_balance","tags":["usage"],"summary":"Get credit balance for the current organization","description":"Get credit balance for the current organization","responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/get_v1_usage_credit_balance_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/usage/credit_statement":{"get":{"operationId":"get_v1_usage_credit_statement","tags":["usage"],"summary":"Get the credit consumption statement for a billing period","description":"Get the credit consumption statement for a billing period","parameters":[{"name":"cycle_offset","in":"query","required":false,"description":"Which billing cycle to report on, counted back from the current one: 0 or omitted for the cycle in progress, -1 for the previous cycle, and so on. Cycles follow the organization's billing day, not calendar months.","schema":{"type":"integer","minimum":-9007199254740991,"maximum":0}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/get_v1_usage_credit_statement_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/usage/plan":{"get":{"operationId":"get_v1_usage_plan","tags":["usage"],"summary":"Get current organization plan","description":"Get current organization plan","responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/get_v1_usage_plan_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/usage/plan/history":{"get":{"operationId":"get_v1_usage_plan_history","tags":["usage"],"summary":"Get plan change history for the organization","description":"Get plan change history for the organization","responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/get_v1_usage_plan_history_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/usage/events":{"get":{"operationId":"get_v1_usage_events","tags":["usage"],"summary":"Get paginated usage event log","description":"Get paginated usage event log","parameters":[{"name":"cycle_offset","in":"query","required":false,"description":"Which billing cycle to report on, counted back from the current one: 0 or omitted for the cycle in progress, -1 for the previous cycle, and so on. Cycles follow the organization's billing day, not calendar months.","schema":{"type":"integer","minimum":-9007199254740991,"maximum":0}},{"name":"member_id","in":"query","required":false,"description":"Scope the log to one member. Omit for the whole organization.","schema":{"type":"string"}},{"name":"cursor","in":"query","required":false,"description":"Continue from a previous page: pass the `next_cursor` it returned. Omit for the first page.","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Events per page, 1–100.","schema":{"type":"integer","minimum":1,"maximum":100}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/get_v1_usage_events_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/usage/member_detail":{"get":{"operationId":"get_v1_usage_member_detail","tags":["usage"],"summary":"Get usage breakdown for a specific member","description":"Get usage breakdown for a specific member","parameters":[{"name":"member_id","in":"query","required":true,"description":"The member whose charges to break down.","schema":{"type":"string"}},{"name":"cycle_offset","in":"query","required":false,"description":"Which billing cycle to report on, counted back from the current one: 0 or omitted for the cycle in progress, -1 for the previous cycle, and so on. Cycles follow the organization's billing day, not calendar months.","schema":{"type":"integer","minimum":-9007199254740991,"maximum":0}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/get_v1_usage_member_detail_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/usage/model_detail":{"get":{"operationId":"get_v1_usage_model_detail","tags":["usage"],"summary":"Get daily usage breakdown for a specific model","description":"Get daily usage breakdown for a specific model","parameters":[{"name":"model_id","in":"query","required":true,"description":"The AI model to break down, as it appears in `by_model` on the usage summary.","schema":{"type":"string"}},{"name":"cycle_offset","in":"query","required":false,"description":"Which billing cycle to report on, counted back from the current one: 0 or omitted for the cycle in progress, -1 for the previous cycle, and so on. Cycles follow the organization's billing day, not calendar months.","schema":{"type":"integer","minimum":-9007199254740991,"maximum":0}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/get_v1_usage_model_detail_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/usage/summary":{"get":{"operationId":"get_v1_usage_summary","tags":["usage"],"summary":"Get usage summary for a billing period","description":"Get usage summary for a billing period","parameters":[{"name":"cycle_offset","in":"query","required":false,"description":"Which billing cycle to report on, counted back from the current one: 0 or omitted for the cycle in progress, -1 for the previous cycle, and so on. Cycles follow the organization's billing day, not calendar months.","schema":{"type":"integer","minimum":-9007199254740991,"maximum":0}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/get_v1_usage_summary_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/billing/invoices/archive":{"get":{"operationId":"get_v1_billing_invoices_archive","tags":["billing"],"summary":"Download every invoice for the current organization as a zip","description":"Download every invoice for the current organization as a zip","responses":{"200":{"description":"Success response"},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/billing/invoices/{invoice_id}/download":{"get":{"operationId":"get_v1_billing_invoices_invoice_id_download","tags":["billing"],"summary":"Download an invoice document","description":"Download an invoice document","parameters":[{"name":"invoice_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success response"},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/billing/party":{"get":{"operationId":"get_v1_billing_party","tags":["billing"],"summary":"Read the current organization's billing party","description":"Read the current organization's billing party","responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/get_v1_billing_party_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"put":{"operationId":"put_v1_billing_party","tags":["billing"],"summary":"Set the current organization's billing party","description":"Set the current organization's billing party","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/put_v1_billing_party_Body"}}}},"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/put_v1_billing_party_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/billing/invoices":{"get":{"operationId":"get_v1_billing_invoices","tags":["billing"],"summary":"List invoices issued to the current organization","description":"List invoices issued to the current organization","responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/get_v1_billing_invoices_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/workflow_executions/{execution_id}/cancel":{"post":{"operationId":"post_v1_workflow_executions_execution_id_cancel","tags":["workflow_executions"],"summary":"Cancel a waiting workflow execution","description":"Cancels an execution paused on an approval step: resolves its pending approval requests and stops it from ever resuming. Only executions in the waiting state can be cancelled.","parameters":[{"name":"execution_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_workflow_executions_execution_id_cancel_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/workflow_executions/{execution_id}":{"get":{"operationId":"get_v1_workflow_executions_execution_id","tags":["workflow_executions"],"summary":"Get workflow execution with steps","description":"Returns a single workflow execution with its step-level logs for auditing","parameters":[{"name":"execution_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/get_v1_workflow_executions_execution_id_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/workflow_executions":{"get":{"operationId":"get_v1_workflow_executions","tags":["workflow_executions"],"summary":"Query workflow executions","description":"Lists workflow executions with optional status filtering and pagination","parameters":[{"name":"workflow_id","in":"query","required":true,"description":"Filter by workflow ID","schema":{"type":"string"}},{"name":"status","in":"query","required":false,"description":"Filter by execution status","schema":{"type":"string","enum":["running","completed","failed","waiting","cancelled","returned"]}},{"name":"limit","in":"query","required":false,"description":"Max results (default 20, max 100)","schema":{"type":"number"}},{"name":"offset","in":"query","required":false,"description":"Pagination offset","schema":{"type":"number"}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/get_v1_workflow_executions_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/browser_agent/sessions/{session_id}/archive":{"post":{"operationId":"post_v1_browser_agent_sessions_session_id_archive","tags":["browser_agent"],"summary":"Archive browser agent session","description":"Archive browser agent session","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_browser_agent_sessions_session_id_archive_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/browser_agent/{session_id}/messages":{"get":{"operationId":"get_v1_browser_agent_session_id_messages","tags":["browser_agent"],"summary":"Get browser agent messages","description":"Load persisted conversation history for a browser agent session","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/get_v1_browser_agent_session_id_messages_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"operationId":"post_v1_browser_agent_session_id_messages","tags":["browser_agent"],"summary":"Send browser agent message","description":"Start streaming agent loop for browser form filling","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_browser_agent_session_id_messages_Body"}}}},"responses":{"200":{"description":"Success response"},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/browser_agent/sessions":{"get":{"operationId":"get_v1_browser_agent_sessions","tags":["browser_agent"],"summary":"List browser agent sessions","description":"List browser agent sessions","parameters":[{"name":"limit","in":"query","required":false,"description":"Sessions per page, 1–100.","schema":{"type":"number","minimum":1,"maximum":100}},{"name":"offset","in":"query","required":false,"description":"How many sessions to skip, for paging.","schema":{"type":"number","minimum":0}}],"responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/get_v1_browser_agent_sessions_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/realtime/token":{"post":{"operationId":"post_v1_realtime_token","tags":["realtime"],"summary":"Issue a short-lived token for the realtime change channel","description":"Issue a short-lived token for the realtime change channel","responses":{"200":{"description":"Success response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/post_v1_realtime_token_Response"}}}},"400":{"description":"The request was malformed, or failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Authenticated, but not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The resource does not exist, or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"securitySchemes":{"ApiKeyAuth":{"type":"http","scheme":"bearer","bearerFormat":"ltk_<48 characters>","description":"Organization-scoped API key, sent as `Authorization: Bearer ltk_…`. Created by an organization admin under Settings → API keys and shown once. A key inherits the permissions of the member who created it."}},"schemas":{"TableRecordFilters":{"anyOf":[{"type":"object","properties":{"node_type":{"type":"string","const":"condition"},"field_key":{"type":"string"},"type":{"type":"string"},"operator":{"type":"string"},"value":{}},"required":["node_type","operator"],"additionalProperties":false},{"type":"object","properties":{"node_type":{"type":"string","const":"traversal"},"path":{"type":"array","items":{"type":"string"}},"condition":{"type":"object","properties":{"node_type":{"type":"string","const":"condition"},"field_key":{"type":"string"},"type":{"type":"string"},"operator":{"type":"string"},"value":{}},"required":["node_type","operator"],"additionalProperties":false}},"required":["node_type","path","condition"],"additionalProperties":false},{"$ref":"#/components/schemas/TableRecordFiltersGroup"}]},"TableRecordFiltersGroup":{"type":"object","properties":{"node_type":{"type":"string","const":"group"},"logic":{"type":"string","enum":["and","or"]},"children":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"node_type":{"type":"string","const":"condition"},"field_key":{"type":"string"},"type":{"type":"string"},"operator":{"type":"string"},"value":{}},"required":["node_type","operator"],"additionalProperties":false},{"type":"object","properties":{"node_type":{"type":"string","const":"traversal"},"path":{"type":"array","items":{"type":"string"}},"condition":{"type":"object","properties":{"node_type":{"type":"string","const":"condition"},"field_key":{"type":"string"},"type":{"type":"string"},"operator":{"type":"string"},"value":{}},"required":["node_type","operator"],"additionalProperties":false}},"required":["node_type","path","condition"],"additionalProperties":false},{"$ref":"#/components/schemas/TableRecordFiltersGroup"}]}}},"required":["node_type","logic","children"],"additionalProperties":false},"AppWorkflowOutput":{"oneOf":[{"type":"object","properties":{"description":{"type":"string"},"required":{"type":"boolean"},"type":{"type":"string","const":"text"}},"required":["type"],"additionalProperties":false},{"type":"object","properties":{"description":{"type":"string"},"required":{"type":"boolean"},"type":{"type":"string","const":"number"}},"required":["type"],"additionalProperties":false},{"type":"object","properties":{"description":{"type":"string"},"required":{"type":"boolean"},"type":{"type":"string","const":"boolean"}},"required":["type"],"additionalProperties":false},{"type":"object","properties":{"description":{"type":"string"},"required":{"type":"boolean"},"type":{"type":"string","const":"date"}},"required":["type"],"additionalProperties":false},{"type":"object","properties":{"description":{"type":"string"},"required":{"type":"boolean"},"type":{"type":"string","const":"datetime"}},"required":["type"],"additionalProperties":false},{"type":"object","properties":{"description":{"type":"string"},"required":{"type":"boolean"},"type":{"type":"string","const":"email"}},"required":["type"],"additionalProperties":false},{"type":"object","properties":{"description":{"type":"string"},"required":{"type":"boolean"},"type":{"type":"string","const":"json"}},"required":["type"],"additionalProperties":false},{"type":"object","properties":{"description":{"type":"string"},"required":{"type":"boolean"},"type":{"type":"string","const":"record_link"},"table_id":{"type":"string"},"multi":{"type":"boolean"}},"required":["type","table_id"],"additionalProperties":false},{"type":"object","properties":{"description":{"type":"string"},"required":{"type":"boolean"},"type":{"type":"string","const":"select"},"options":{"minItems":1,"type":"array","items":{"type":"object","properties":{"label":{"type":"string"},"value":{"type":"string"}},"required":["label","value"],"additionalProperties":false}},"multi":{"type":"boolean"}},"required":["type","options"],"additionalProperties":false},{"type":"object","properties":{"description":{"type":"string"},"required":{"type":"boolean"},"type":{"type":"string","const":"object"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"$ref":"#/components/schemas/AppWorkflowOutput"}}},"required":["type","fields"],"additionalProperties":false},{"type":"object","properties":{"description":{"type":"string"},"required":{"type":"boolean"},"type":{"type":"string","const":"array"},"items":{"$ref":"#/components/schemas/AppWorkflowOutput"}},"required":["type","items"],"additionalProperties":false}]},"AppWorkflowInput":{"oneOf":[{"type":"object","properties":{"description":{"description":"Human-readable description of this input — surfaces in agent + CLI tooling","type":"string"},"required":{"description":"Whether the input must be provided. Defaults to true.","type":"boolean"},"type":{"type":"string","const":"text"}},"required":["type"],"additionalProperties":false},{"type":"object","properties":{"description":{"description":"Human-readable description of this input — surfaces in agent + CLI tooling","type":"string"},"required":{"description":"Whether the input must be provided. Defaults to true.","type":"boolean"},"type":{"type":"string","const":"number"}},"required":["type"],"additionalProperties":false},{"type":"object","properties":{"description":{"description":"Human-readable description of this input — surfaces in agent + CLI tooling","type":"string"},"required":{"description":"Whether the input must be provided. Defaults to true.","type":"boolean"},"type":{"type":"string","const":"boolean"}},"required":["type"],"additionalProperties":false},{"type":"object","properties":{"description":{"description":"Human-readable description of this input — surfaces in agent + CLI tooling","type":"string"},"required":{"description":"Whether the input must be provided. Defaults to true.","type":"boolean"},"type":{"type":"string","const":"date"}},"required":["type"],"additionalProperties":false},{"type":"object","properties":{"description":{"description":"Human-readable description of this input — surfaces in agent + CLI tooling","type":"string"},"required":{"description":"Whether the input must be provided. Defaults to true.","type":"boolean"},"type":{"type":"string","const":"datetime"}},"required":["type"],"additionalProperties":false},{"type":"object","properties":{"description":{"description":"Human-readable description of this input — surfaces in agent + CLI tooling","type":"string"},"required":{"description":"Whether the input must be provided. Defaults to true.","type":"boolean"},"type":{"type":"string","const":"email"}},"required":["type"],"additionalProperties":false},{"type":"object","properties":{"description":{"description":"Human-readable description of this input — surfaces in agent + CLI tooling","type":"string"},"required":{"description":"Whether the input must be provided. Defaults to true.","type":"boolean"},"type":{"type":"string","const":"record_link"},"table_id":{"type":"string","description":"Records must belong to this table. Validated at execute time + workflow save."},"multi":{"description":"When true, accept an array of record_ids. Defaults to single.","type":"boolean"}},"required":["type","table_id"],"additionalProperties":false},{"type":"object","properties":{"description":{"description":"Human-readable description of this input — surfaces in agent + CLI tooling","type":"string"},"required":{"description":"Whether the input must be provided. Defaults to true.","type":"boolean"},"type":{"type":"string","const":"select"},"options":{"description":"Inline option set. Provide EITHER `options` OR `field`, never both.","minItems":1,"type":"array","items":{"type":"object","properties":{"label":{"type":"string"},"value":{"type":"string"}},"required":["label","value"],"additionalProperties":false}},"field":{"description":"A select field's key (fld_…) whose CURRENT options back this input — resolved at type-gen, validated at run time, drift-proof. Provide EITHER `field` OR `options`, never both.","type":"string"},"multi":{"type":"boolean"}},"required":["type"],"additionalProperties":false},{"type":"object","properties":{"description":{"description":"Human-readable description of this input — surfaces in agent + CLI tooling","type":"string"},"required":{"description":"Whether the input must be provided. Defaults to true.","type":"boolean"},"type":{"type":"string","const":"date_range"},"include_time":{"description":"When true, the range includes time components (datetime). Defaults to false.","type":"boolean"}},"required":["type"],"additionalProperties":false},{"type":"object","properties":{"description":{"description":"Human-readable description of this input — surfaces in agent + CLI tooling","type":"string"},"required":{"description":"Whether the input must be provided. Defaults to true.","type":"boolean"},"type":{"type":"string","const":"member"},"multi":{"type":"boolean"},"group":{"description":"Member group ID this input draws from. Gates `useMembers({ group })` to declared groups (an app can only list a group it declares here) and constrains the submitted member(s) to that group at execution.","type":"string"}},"required":["type"],"additionalProperties":false},{"type":"object","properties":{"description":{"description":"Human-readable description of this input — surfaces in agent + CLI tooling","type":"string"},"required":{"description":"Whether the input must be provided. Defaults to true.","type":"boolean"},"type":{"type":"string","const":"json"}},"required":["type"],"additionalProperties":false},{"type":"object","properties":{"description":{"description":"Human-readable description of this input — surfaces in agent + CLI tooling","type":"string"},"required":{"description":"Whether the input must be provided. Defaults to true.","type":"boolean"},"type":{"type":"string","const":"file"},"multi":{"type":"boolean"}},"required":["type"],"additionalProperties":false},{"type":"object","properties":{"description":{"description":"Human-readable description of this input — surfaces in agent + CLI tooling","type":"string"},"required":{"description":"Whether the input must be provided. Defaults to true.","type":"boolean"},"type":{"type":"string","const":"object"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"$ref":"#/components/schemas/AppWorkflowInput"}}},"required":["type","fields"],"additionalProperties":false},{"type":"object","properties":{"description":{"description":"Human-readable description of this input — surfaces in agent + CLI tooling","type":"string"},"required":{"description":"Whether the input must be provided. Defaults to true.","type":"boolean"},"type":{"type":"string","const":"array"},"items":{"$ref":"#/components/schemas/AppWorkflowInput"}},"required":["type","items"],"additionalProperties":false}]},"post_v1_iam_resources_resource_type_resource_id_role_bindings_Response":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the role binding"},"principal":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","const":"member","description":"Principal type: individual member"},"id":{"type":"string","description":"Member ID"}},"required":["type","id"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"member_group","description":"Principal type: group of members"},"id":{"type":"string","description":"Member group ID"}},"required":["type","id"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"organization","description":"Principal type: all members in organization"},"id":{"type":"string","description":"Organization ID"}},"required":["type","id"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"public","description":"Principal type: anyone, including unauthenticated visitors"},"id":{"type":"string","const":"public","description":"Always the `public` sentinel — no entity"}},"required":["type","id"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"invitation","description":"Principal type: pending invitation (not yet accepted)"},"id":{"type":"string","description":"Invitation ID"}},"required":["type","id"],"additionalProperties":false}],"description":"Who this role binding applies to (member, group, or organization)"},"resource_type":{"type":"string","enum":["table","table_view","app","automation","skill","document_template","instruction","knowledge_doc"],"description":"Type of resource being accessed"},"resource_id":{"type":"string","description":"ID of the specific resource"},"role":{"type":"string","description":"Role name (e.g., 'viewer', 'editor', 'manager', 'user')"}},"required":["id","principal","resource_type","resource_id","role"],"additionalProperties":false},"post_v1_iam_member_groups_Response":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the member group"},"name":{"type":"string","description":"Display name of the group"},"description":{"description":"Optional description of the group's purpose","type":"string"},"member_ids":{"type":"array","items":{"type":"string"},"description":"Array of member IDs in this group"},"invitation_ids":{"type":"array","items":{"type":"string"},"description":"Array of pending invitation IDs pre-granted membership; migrated to member_ids on accept"},"organization_id":{"type":"string","description":"ID of the organization this group belongs to"},"created_at":{"type":"string","description":"Timestamp when group was created"},"created_by":{"type":"string","description":"Member ID of the user who created this group"}},"required":["id","name","member_ids","invitation_ids","organization_id","created_at","created_by"],"additionalProperties":false},"get_v1_iam_me_role_bindings_Response":{"type":"array","items":{"$ref":"#/components/schemas/patch_v1_iam_role_bindings_binding_id_Response"}},"get_v1_iam_member_groups_group_id_Response":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the member group"},"name":{"type":"string","description":"Display name of the group"},"description":{"description":"Optional description of the group's purpose","type":"string"},"member_ids":{"type":"array","items":{"type":"string"},"description":"Array of member IDs in this group"},"invitation_ids":{"type":"array","items":{"type":"string"},"description":"Array of pending invitation IDs pre-granted membership; migrated to member_ids on accept"},"organization_id":{"type":"string","description":"ID of the organization this group belongs to"},"created_at":{"type":"string","description":"Timestamp when group was created"},"created_by":{"type":"string","description":"Member ID of the user who created this group"}},"required":["id","name","member_ids","invitation_ids","organization_id","created_at","created_by"],"additionalProperties":false},"get_v1_iam_my_permissions_Response":{"type":"object","properties":{"is_org_admin":{"type":"boolean"},"resources":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}}},"required":["is_org_admin","resources"],"additionalProperties":false},"get_v1_iam_resources_resource_type_resource_id_my_actions_Response":{"type":"object","properties":{"actions":{"type":"array","items":{"type":"string"}},"is_org_admin":{"type":"boolean"}},"required":["actions","is_org_admin"],"additionalProperties":false},"get_v1_iam_resources_resource_type_resource_id_role_bindings_Response":{"type":"array","items":{"$ref":"#/components/schemas/patch_v1_iam_role_bindings_binding_id_Response"}},"get_v1_iam_member_groups_Response":{"type":"object","properties":{"groups":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the member group"},"name":{"type":"string","description":"Display name of the group"},"description":{"description":"Optional description of the group's purpose","type":"string"},"member_ids":{"type":"array","items":{"type":"string"},"description":"Array of member IDs in this group"},"organization_id":{"type":"string","description":"ID of the organization this group belongs to"},"created_at":{"type":"string","description":"Timestamp when group was created"},"created_by":{"type":"string","description":"Member ID of the user who created this group"},"invitation_ids":{"description":"Pending invitation IDs — ADMINS ONLY; omitted entirely for a non-admin caller","type":"array","items":{"type":"string"}}},"required":["id","name","member_ids","organization_id","created_at","created_by"],"additionalProperties":false}}},"required":["groups"],"additionalProperties":false},"get_v1_iam_invitations_Response":{"type":"object","properties":{"invitations":{"type":"array","items":{"$ref":"#/components/schemas/patch_v1_iam_invitations_invitation_id_Response"}}},"required":["invitations"],"additionalProperties":false},"get_v1_user_invitations_Response":{"type":"object","properties":{"invitations":{"type":"array","items":{"type":"object","properties":{"invitation_id":{"type":"string","description":"Unique identifier for the pending invitation"},"organization_id":{"type":"string","description":"Organization the invitee will join on accept"},"email":{"type":"string","description":"Email the invitation was sent to"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Admin-supplied display name (carried onto member.name on accept; invitee can override at accept time)"},"role":{"type":"string","enum":["owner","admin","member"],"description":"Role the invitee will receive on accept"},"expires_at":{"type":"string","description":"ISO timestamp when the invitation expires"},"organization_name":{"type":"string"}},"required":["invitation_id","organization_id","email","name","role","expires_at","organization_name"],"additionalProperties":false}}},"required":["invitations"],"additionalProperties":false},"get_v1_iam_principals_Response":{"type":"object","properties":{"members":{"type":"array","items":{"$ref":"#/components/schemas/patch_v1_members_member_id_Response"}},"invitations":{"type":"array","items":{"$ref":"#/components/schemas/patch_v1_iam_invitations_invitation_id_Response"}},"groups":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the member group"},"name":{"type":"string","description":"Display name of the group"},"description":{"description":"Optional description of the group's purpose","type":"string"},"member_count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Number of accepted members in the group"},"invitation_count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Number of pending invitations pre-granted membership"}},"required":["id","name","member_count","invitation_count"],"additionalProperties":false}}},"required":["members","invitations","groups"],"additionalProperties":false},"get_v1_iam_resource_access_resource_type_Response":{"type":"array","items":{"type":"object","properties":{"resource_id":{"type":"string","description":"ID of the resource these principals can reach"},"principals":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","const":"member","description":"Principal type: an individual member"},"id":{"type":"string","description":"Member ID"}},"required":["type","id"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"member_group","description":"Principal type: a member group"},"id":{"type":"string","description":"Group ID"}},"required":["type","id"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"organization","description":"Principal type: everyone in the organization"},"id":{"type":"string","description":"Organization ID"}},"required":["type","id"],"additionalProperties":false}]},"description":"Members, groups and the organization that have been granted access"}},"required":["resource_id","principals"],"additionalProperties":false}},"delete_v1_members_member_id_Response":{"type":"object","properties":{"member_id":{"type":"string"},"sign_in_identifier":{"type":"string"},"credential_revoked":{"type":"boolean"},"automations_archived":{"type":"number"},"resources_reassigned":{"type":"number"},"connected_accounts_archived":{"type":"number"}},"required":["member_id","sign_in_identifier","credential_revoked","automations_archived","resources_reassigned","connected_accounts_archived"],"additionalProperties":false},"delete_v1_iam_role_bindings_binding_id_Response":{"type":"object","properties":{"success":{"type":"boolean"}},"required":["success"],"additionalProperties":false},"post_v1_members_member_id_restore_Response":{"type":"object","properties":{"member_id":{"type":"string"},"name":{"type":"string"},"sign_in_identifier":{"type":"string"},"role":{"type":"string"},"account_type":{"type":"string"},"credential_needed":{"type":"boolean"}},"required":["member_id","name","sign_in_identifier","role","account_type","credential_needed"],"additionalProperties":false},"post_v1_iam_invitations_invitation_id_revoke_Response":{"type":"object","properties":{"success":{"type":"boolean"}},"required":["success"],"additionalProperties":false},"post_v1_iam_resources_resource_type_resource_id_transfer_ownership_Response":{"type":"object","properties":{"success":{"type":"boolean"}},"required":["success"],"additionalProperties":false},"put_v1_iam_member_groups_group_id_Response":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the member group"},"name":{"type":"string","description":"Display name of the group"},"description":{"description":"Optional description of the group's purpose","type":"string"},"member_ids":{"type":"array","items":{"type":"string"},"description":"Array of member IDs in this group"},"invitation_ids":{"type":"array","items":{"type":"string"},"description":"Array of pending invitation IDs pre-granted membership; migrated to member_ids on accept"},"organization_id":{"type":"string","description":"ID of the organization this group belongs to"},"created_at":{"type":"string","description":"Timestamp when group was created"},"created_by":{"type":"string","description":"Member ID of the user who created this group"}},"required":["id","name","member_ids","invitation_ids","organization_id","created_at","created_by"],"additionalProperties":false},"patch_v1_members_member_id_Response":{"type":"object","properties":{"member_id":{"type":"string","description":"Unique identifier for the member"},"organization_id":{"type":"string","description":"Organization ID the member belongs to"},"name":{"type":"string","description":"Display name of the member"},"email_address":{"type":"string","description":"What the member types to sign in: an email address for a self-managed member, an administrator-issued name (e.g. giamdoc.sunrise) for an admin-managed one. The latter is NOT an address and cannot receive mail — the field name predates the split."},"role":{"type":"string","enum":["owner","admin","member"],"description":"Organization role"},"image":{"description":"URL to the member's profile picture","anyOf":[{"type":"string"},{"type":"null"}]},"account_type":{"type":"string","enum":["self_managed","admin_managed"],"description":"How the account is credentialed. admin_managed means an admin chose the sign-in name and set the password; the account has NO email address at all, so nothing can be mailed to it until the member claims one they control."},"archived":{"description":"True when this person has been removed from the organization. The membership survives removal so records naming them keep resolving; it grants nothing. Optional because an older server omits it — absent means active.","type":"boolean"},"joined_at":{"description":"ISO timestamp of when this membership began. Optional because an older server omits it — absent means not told, never 'joined at the epoch'.","type":"string"}},"required":["member_id","organization_id","name","email_address","role","account_type"],"additionalProperties":false},"patch_v1_iam_invitations_invitation_id_Response":{"type":"object","properties":{"invitation_id":{"type":"string","description":"Unique identifier for the pending invitation"},"organization_id":{"type":"string","description":"Organization the invitee will join on accept"},"email":{"type":"string","description":"Email the invitation was sent to"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Admin-supplied display name (carried onto member.name on accept; invitee can override at accept time)"},"role":{"type":"string","enum":["owner","admin","member"],"description":"Role the invitee will receive on accept"},"expires_at":{"type":"string","description":"ISO timestamp when the invitation expires"}},"required":["invitation_id","organization_id","email","name","role","expires_at"],"additionalProperties":false},"patch_v1_iam_role_bindings_binding_id_Response":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the role binding"},"principal":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","const":"member","description":"Principal type: individual member"},"id":{"type":"string","description":"Member ID"}},"required":["type","id"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"member_group","description":"Principal type: group of members"},"id":{"type":"string","description":"Member group ID"}},"required":["type","id"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"organization","description":"Principal type: all members in organization"},"id":{"type":"string","description":"Organization ID"}},"required":["type","id"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"public","description":"Principal type: anyone, including unauthenticated visitors"},"id":{"type":"string","const":"public","description":"Always the `public` sentinel — no entity"}},"required":["type","id"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"invitation","description":"Principal type: pending invitation (not yet accepted)"},"id":{"type":"string","description":"Invitation ID"}},"required":["type","id"],"additionalProperties":false}],"description":"Who this role binding applies to (member, group, or organization)"},"resource_type":{"type":"string","enum":["table","table_view","app","automation","skill","document_template","instruction","knowledge_doc"],"description":"Type of resource being accessed"},"resource_id":{"type":"string","description":"ID of the specific resource"},"role":{"type":"string","description":"Role name (e.g., 'viewer', 'editor', 'manager', 'user')"}},"required":["id","principal","resource_type","resource_id","role"],"additionalProperties":false},"post_v1_system_agents_chat_session_id_messages_message_id_archive_Response":{"type":"object","properties":{"id":{"type":"string"}},"required":["id"],"additionalProperties":false},"delete_v1_system_agents_chat_sessions_chat_session_id_Response":{"type":"object","properties":{"id":{"type":"string"},"deleted":{"type":"boolean","const":true}},"required":["id","deleted"],"additionalProperties":false},"get_v1_system_agents_chat_sessions_chat_session_id_Response":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the system agent session"},"workspace_id":{"type":"string","description":"ID of the workspace this session belongs to"},"member_id":{"type":"string","description":"ID of the member who owns this session"},"title":{"type":"string","description":"Title/name for the chat session"},"summarized_text":{"type":"string","description":"Summary of the conversation history"},"last_summarized_at_message_index":{"type":"number","description":"Index of the last message included in the summary"},"created_at":{"type":"string","description":"Timestamp when session was created"}},"required":["id","workspace_id","member_id","title","summarized_text","last_summarized_at_message_index","created_at"],"additionalProperties":false},{"type":"null"}]},"get_v1_system_agents_chat_sessions_chat_session_id_usage_Response":{"type":"object","properties":{"turns":{"type":"array","items":{"type":"object","properties":{"message_id":{"type":"string"},"context_tokens":{"type":"number"}},"required":["message_id","context_tokens"],"additionalProperties":false}},"credits_used":{"type":"number"}},"required":["turns","credits_used"],"additionalProperties":false},"get_v1_system_agents_chat_sessions_Response":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the system agent session"},"workspace_id":{"type":"string","description":"ID of the workspace this session belongs to"},"member_id":{"type":"string","description":"ID of the member who owns this session"},"title":{"type":"string","description":"Title/name for the chat session"},"summarized_text":{"type":"string","description":"Summary of the conversation history"},"last_summarized_at_message_index":{"type":"number","description":"Index of the last message included in the summary"},"created_at":{"type":"string","description":"Timestamp when session was created"}},"required":["id","workspace_id","member_id","title","summarized_text","last_summarized_at_message_index","created_at"],"additionalProperties":false}},"get_v1_system_agents_chat_session_id_messages_Response":{"type":"array","items":{}},"post_v1_system_agents_chat_session_id_messages_save_Response":{"type":"object","properties":{"success":{"type":"boolean"}},"required":["success"],"additionalProperties":false},"get_auth_facebook_Response":{"type":"object","properties":{"redirect_url":{"type":"string"}},"required":["redirect_url"],"additionalProperties":false},"get_auth_google_Response":{"type":"object","properties":{"redirect_url":{"type":"string"}},"required":["redirect_url"],"additionalProperties":false},"get_auth_google_drive_Response":{"type":"object","properties":{"redirect_url":{"type":"string"}},"required":["redirect_url"],"additionalProperties":false},"get_auth_outlook_Response":{"type":"object","properties":{"redirect_url":{"type":"string"}},"required":["redirect_url"],"additionalProperties":false},"get_auth_zalo_Response":{"type":"object","properties":{"redirect_url":{"type":"string","format":"uri"}},"required":["redirect_url"],"additionalProperties":false},"post_v1_connected_accounts_Response":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the connected account"},"name":{"type":"string","description":"Display name for this connected account"},"member_id":{"type":"string","description":"ID of the member who created this account"},"created_at":{"type":"string","description":"Timestamp when account was connected"},"workspace_id":{"type":"string","description":"ID of the workspace this account belongs to"},"provider":{"type":"string","const":"wininvoice","description":"WinInvoice provider identifier"},"credentials":{"type":"object","properties":{"client_id":{"type":"string","description":"WinInvoice client ID"},"client_secret":{"type":"string"}},"required":["client_id"],"additionalProperties":false,"description":"WinInvoice API credentials (secret stripped)"},"scheme":{"type":"string","const":"basic","description":"Basic authentication scheme"}},"required":["id","name","member_id","created_at","workspace_id","provider","credentials","scheme"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the connected account"},"name":{"type":"string","description":"Display name for this connected account"},"member_id":{"type":"string","description":"ID of the member who created this account"},"created_at":{"type":"string","description":"Timestamp when account was connected"},"workspace_id":{"type":"string","description":"ID of the workspace this account belongs to"},"provider":{"type":"string","const":"outlook","description":"Outlook provider identifier"},"provider_user_id":{"type":"string","description":"User ID from the Outlook provider"},"scheme":{"type":"string","const":"oauth2","description":"OAuth 2.0 authentication scheme"},"scopes":{"type":"array","items":{"type":"string"},"description":"OAuth scopes granted for this account"},"profile":{"description":"User profile data from Outlook"}},"required":["id","name","member_id","created_at","workspace_id","provider","provider_user_id","scheme","scopes","profile"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the connected account"},"name":{"type":"string","description":"Display name for this connected account"},"member_id":{"type":"string","description":"ID of the member who created this account"},"created_at":{"type":"string","description":"Timestamp when account was connected"},"workspace_id":{"type":"string","description":"ID of the workspace this account belongs to"},"provider":{"type":"string","const":"gmail","description":"Gmail provider identifier"},"provider_user_id":{"type":"string","description":"User ID from the Gmail provider"},"scheme":{"type":"string","const":"oauth2","description":"OAuth 2.0 authentication scheme"},"scopes":{"type":"array","items":{"type":"string"},"description":"OAuth scopes granted for this account"},"profile":{"description":"User profile data from Gmail"}},"required":["id","name","member_id","created_at","workspace_id","provider","provider_user_id","scheme","scopes","profile"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the connected account"},"name":{"type":"string","description":"Display name for this connected account"},"member_id":{"type":"string","description":"ID of the member who created this account"},"created_at":{"type":"string","description":"Timestamp when account was connected"},"workspace_id":{"type":"string","description":"ID of the workspace this account belongs to"},"provider":{"type":"string","const":"google_drive","description":"Google Drive provider identifier"},"provider_user_id":{"type":"string","description":"User ID from the Google provider"},"scheme":{"type":"string","const":"oauth2","description":"OAuth 2.0 authentication scheme"},"scopes":{"type":"array","items":{"type":"string"},"description":"OAuth scopes granted for this account"},"profile":{"description":"User profile data from Google"}},"required":["id","name","member_id","created_at","workspace_id","provider","provider_user_id","scheme","scopes","profile"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the connected account"},"name":{"type":"string","description":"Display name for this connected account"},"member_id":{"type":"string","description":"ID of the member who created this account"},"created_at":{"type":"string","description":"Timestamp when account was connected"},"workspace_id":{"type":"string","description":"ID of the workspace this account belongs to"},"provider":{"type":"string","const":"facebook","description":"Facebook provider identifier"},"provider_user_id":{"type":"string","description":"User ID from the Facebook provider"},"scheme":{"type":"string","const":"oauth2","description":"OAuth 2.0 authentication scheme"},"scopes":{"type":"array","items":{"type":"string"},"description":"OAuth scopes granted for this account"},"profile":{"type":"object","properties":{"id":{"type":"string","description":"Facebook user ID"},"name":{"type":"string","description":"User's display name on Facebook"},"email":{"description":"User's email address (if available)","type":"string"},"picture":{"description":"User's profile picture information","type":"object","properties":{"data":{"type":"object","properties":{"url":{"type":"string","description":"URL to the profile picture"},"width":{"type":"number","description":"Width of the profile picture in pixels"},"height":{"type":"number","description":"Height of the profile picture in pixels"}},"required":["url","width","height"],"additionalProperties":false}},"required":["data"],"additionalProperties":false}},"required":["id","name"],"additionalProperties":false,"description":"User profile data from Facebook"},"resources":{"type":"object","properties":{"pages":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Facebook Page ID"},"name":{"type":"string","description":"Name of the Facebook Page"},"category":{"type":"string","description":"Primary category of the Facebook Page"},"category_list":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Category ID"},"name":{"type":"string","description":"Category name"}},"required":["id","name"],"additionalProperties":false},"description":"List of categories assigned to the Facebook Page"},"tasks":{"type":"array","items":{"type":"string"},"description":"List of tasks/permissions available for this page"}},"required":["id","name","category","category_list","tasks"],"additionalProperties":false},"description":"Facebook Pages managed by this account"}},"required":["pages"],"additionalProperties":false,"description":"Resources (pages) available through this connection"}},"required":["id","name","member_id","created_at","workspace_id","provider","provider_user_id","scheme","scopes","profile","resources"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the connected account"},"name":{"type":"string","description":"Display name for this connected account"},"member_id":{"type":"string","description":"ID of the member who created this account"},"created_at":{"type":"string","description":"Timestamp when account was connected"},"workspace_id":{"type":"string","description":"ID of the workspace this account belongs to"},"provider":{"type":"string","const":"zalo","description":"Zalo provider identifier"},"provider_user_id":{"type":"string","description":"User ID from the Zalo provider"},"scheme":{"type":"string","const":"oauth2","description":"OAuth 2.0 authentication scheme"},"scopes":{"type":"array","items":{"type":"string"},"description":"OAuth scopes granted for this account"},"profile":{"type":"object","properties":{"oa_id":{"type":"number","description":"Zalo Official Account ID"},"name":{"type":"string","description":"Name of the Zalo Official Account"},"description":{"type":"string","description":"Description of the Zalo Official Account"},"oa_alias":{"description":"Alias/username for the Official Account","anyOf":[{"type":"string"},{"type":"null"}]},"is_verified":{"type":"boolean","description":"Whether the Official Account is verified by Zalo"},"oa_type":{"type":"number","description":"Type code for the Official Account"},"cate_name":{"type":"string","description":"Category name of the Official Account"},"num_follower":{"type":"number","description":"Number of followers"},"avatar":{"type":"string","description":"URL to the account avatar image"},"cover":{"type":"string","description":"URL to the account cover image"},"package_name":{"description":"Name of the subscription package","type":"string"},"package_valid_through_date":{"description":"Expiration date of the subscription package","type":"string"},"package_auto_renew_date":{"description":"Auto-renewal date for the subscription","type":"string"},"linked_zca":{"description":"Linked Zalo Cloud Account identifier","type":"string"}},"required":["oa_id","name","description","is_verified","oa_type","cate_name","num_follower","avatar","cover"],"additionalProperties":false,"description":"Official Account profile data from Zalo"}},"required":["id","name","member_id","created_at","workspace_id","provider","provider_user_id","scheme","scopes","profile"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the connected account"},"name":{"type":"string","description":"Display name for this connected account"},"member_id":{"type":"string","description":"ID of the member who created this account"},"created_at":{"type":"string","description":"Timestamp when account was connected"},"workspace_id":{"type":"string","description":"ID of the workspace this account belongs to"},"provider":{"type":"string","const":"payos","description":"PayOS provider identifier"},"credentials":{"type":"object","properties":{"client_id":{"type":"string","description":"PayOS client ID"},"api_key":{"type":"string"},"checksum_key":{"type":"string"}},"required":["client_id"],"additionalProperties":false,"description":"PayOS API credentials (secrets stripped)"}},"required":["id","name","member_id","created_at","workspace_id","provider","credentials"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the connected account"},"name":{"type":"string","description":"Display name for this connected account"},"member_id":{"type":"string","description":"ID of the member who created this account"},"created_at":{"type":"string","description":"Timestamp when account was connected"},"workspace_id":{"type":"string","description":"ID of the workspace this account belongs to"},"provider":{"type":"string","const":"misa","description":"MISA AMIS accounting provider identifier"},"credentials":{"type":"object","properties":{"access_code":{"type":"string"},"org_company_code":{"type":"string","description":"Customer's MISA organization/domain identifier"},"expires_at":{"type":"string","description":"ISO timestamp of cached token expiry"}},"required":["org_company_code","expires_at"],"additionalProperties":false,"description":"MISA AMIS credentials (secrets stripped at API boundary)"},"scheme":{"type":"string","const":"api_key","description":"MISA token-based authentication scheme"}},"required":["id","name","member_id","created_at","workspace_id","provider","credentials","scheme"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the connected account"},"name":{"type":"string","description":"Display name for this connected account"},"member_id":{"type":"string","description":"ID of the member who created this account"},"created_at":{"type":"string","description":"Timestamp when account was connected"},"workspace_id":{"type":"string","description":"ID of the workspace this account belongs to"},"provider":{"type":"string","const":"lark","description":"Lark Base (Bitable) provider identifier"},"credentials":{"type":"object","properties":{"app_id":{"type":"string","description":"Lark custom-app App ID (cli_...)"},"app_secret":{"type":"string","description":"Lark custom-app App Secret"},"region":{"type":"string","enum":["larksuite","feishu"],"description":"larksuite (international) or feishu (China)"},"expires_at":{"type":"string","description":"ISO timestamp of cached token expiry"}},"required":["app_id","app_secret","region","expires_at"],"additionalProperties":false,"description":"Lark credentials (tenant_access_token stripped at API boundary)"},"scheme":{"type":"string","const":"api_key","description":"Lark app-credential authentication scheme"}},"required":["id","name","member_id","created_at","workspace_id","provider","credentials","scheme"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the connected account"},"name":{"type":"string","description":"Display name for this connected account"},"member_id":{"type":"string","description":"ID of the member who created this account"},"created_at":{"type":"string","description":"Timestamp when account was connected"},"workspace_id":{"type":"string","description":"ID of the workspace this account belongs to"},"provider":{"type":"string","const":"fedex","description":"FedEx shipping provider identifier"},"credentials":{"type":"object","properties":{"client_id":{"type":"string","description":"FedEx API key (OAuth client ID)"},"client_secret":{"type":"string","description":"FedEx secret key (OAuth client secret)"},"account_number":{"type":"string","description":"FedEx shipping account number"},"environment":{"type":"string","enum":["sandbox","production"],"description":"sandbox or production"},"expires_at":{"type":"string","description":"ISO timestamp of cached token expiry"}},"required":["client_id","client_secret","account_number","environment","expires_at"],"additionalProperties":false,"description":"FedEx credentials (access_token stripped at API boundary)"},"scheme":{"type":"string","const":"oauth2","description":"FedEx OAuth2 client-credentials scheme"}},"required":["id","name","member_id","created_at","workspace_id","provider","credentials","scheme"],"additionalProperties":false}]},"delete_v1_connected_accounts_connected_account_id_Response":{"type":"object","properties":{"success":{"type":"boolean"}},"required":["success"],"additionalProperties":false},"get_v1_connected_accounts_connected_account_id_Response":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the connected account"},"name":{"type":"string","description":"Display name for this connected account"},"member_id":{"type":"string","description":"ID of the member who created this account"},"created_at":{"type":"string","description":"Timestamp when account was connected"},"workspace_id":{"type":"string","description":"ID of the workspace this account belongs to"},"provider":{"type":"string","const":"wininvoice","description":"WinInvoice provider identifier"},"credentials":{"type":"object","properties":{"client_id":{"type":"string","description":"WinInvoice client ID"},"client_secret":{"type":"string"}},"required":["client_id"],"additionalProperties":false,"description":"WinInvoice API credentials (secret stripped)"},"scheme":{"type":"string","const":"basic","description":"Basic authentication scheme"}},"required":["id","name","member_id","created_at","workspace_id","provider","credentials","scheme"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the connected account"},"name":{"type":"string","description":"Display name for this connected account"},"member_id":{"type":"string","description":"ID of the member who created this account"},"created_at":{"type":"string","description":"Timestamp when account was connected"},"workspace_id":{"type":"string","description":"ID of the workspace this account belongs to"},"provider":{"type":"string","const":"outlook","description":"Outlook provider identifier"},"provider_user_id":{"type":"string","description":"User ID from the Outlook provider"},"scheme":{"type":"string","const":"oauth2","description":"OAuth 2.0 authentication scheme"},"scopes":{"type":"array","items":{"type":"string"},"description":"OAuth scopes granted for this account"},"profile":{"description":"User profile data from Outlook"}},"required":["id","name","member_id","created_at","workspace_id","provider","provider_user_id","scheme","scopes","profile"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the connected account"},"name":{"type":"string","description":"Display name for this connected account"},"member_id":{"type":"string","description":"ID of the member who created this account"},"created_at":{"type":"string","description":"Timestamp when account was connected"},"workspace_id":{"type":"string","description":"ID of the workspace this account belongs to"},"provider":{"type":"string","const":"gmail","description":"Gmail provider identifier"},"provider_user_id":{"type":"string","description":"User ID from the Gmail provider"},"scheme":{"type":"string","const":"oauth2","description":"OAuth 2.0 authentication scheme"},"scopes":{"type":"array","items":{"type":"string"},"description":"OAuth scopes granted for this account"},"profile":{"description":"User profile data from Gmail"}},"required":["id","name","member_id","created_at","workspace_id","provider","provider_user_id","scheme","scopes","profile"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the connected account"},"name":{"type":"string","description":"Display name for this connected account"},"member_id":{"type":"string","description":"ID of the member who created this account"},"created_at":{"type":"string","description":"Timestamp when account was connected"},"workspace_id":{"type":"string","description":"ID of the workspace this account belongs to"},"provider":{"type":"string","const":"google_drive","description":"Google Drive provider identifier"},"provider_user_id":{"type":"string","description":"User ID from the Google provider"},"scheme":{"type":"string","const":"oauth2","description":"OAuth 2.0 authentication scheme"},"scopes":{"type":"array","items":{"type":"string"},"description":"OAuth scopes granted for this account"},"profile":{"description":"User profile data from Google"}},"required":["id","name","member_id","created_at","workspace_id","provider","provider_user_id","scheme","scopes","profile"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the connected account"},"name":{"type":"string","description":"Display name for this connected account"},"member_id":{"type":"string","description":"ID of the member who created this account"},"created_at":{"type":"string","description":"Timestamp when account was connected"},"workspace_id":{"type":"string","description":"ID of the workspace this account belongs to"},"provider":{"type":"string","const":"facebook","description":"Facebook provider identifier"},"provider_user_id":{"type":"string","description":"User ID from the Facebook provider"},"scheme":{"type":"string","const":"oauth2","description":"OAuth 2.0 authentication scheme"},"scopes":{"type":"array","items":{"type":"string"},"description":"OAuth scopes granted for this account"},"profile":{"type":"object","properties":{"id":{"type":"string","description":"Facebook user ID"},"name":{"type":"string","description":"User's display name on Facebook"},"email":{"description":"User's email address (if available)","type":"string"},"picture":{"description":"User's profile picture information","type":"object","properties":{"data":{"type":"object","properties":{"url":{"type":"string","description":"URL to the profile picture"},"width":{"type":"number","description":"Width of the profile picture in pixels"},"height":{"type":"number","description":"Height of the profile picture in pixels"}},"required":["url","width","height"],"additionalProperties":false}},"required":["data"],"additionalProperties":false}},"required":["id","name"],"additionalProperties":false,"description":"User profile data from Facebook"},"resources":{"type":"object","properties":{"pages":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Facebook Page ID"},"name":{"type":"string","description":"Name of the Facebook Page"},"category":{"type":"string","description":"Primary category of the Facebook Page"},"category_list":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Category ID"},"name":{"type":"string","description":"Category name"}},"required":["id","name"],"additionalProperties":false},"description":"List of categories assigned to the Facebook Page"},"tasks":{"type":"array","items":{"type":"string"},"description":"List of tasks/permissions available for this page"}},"required":["id","name","category","category_list","tasks"],"additionalProperties":false},"description":"Facebook Pages managed by this account"}},"required":["pages"],"additionalProperties":false,"description":"Resources (pages) available through this connection"}},"required":["id","name","member_id","created_at","workspace_id","provider","provider_user_id","scheme","scopes","profile","resources"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the connected account"},"name":{"type":"string","description":"Display name for this connected account"},"member_id":{"type":"string","description":"ID of the member who created this account"},"created_at":{"type":"string","description":"Timestamp when account was connected"},"workspace_id":{"type":"string","description":"ID of the workspace this account belongs to"},"provider":{"type":"string","const":"zalo","description":"Zalo provider identifier"},"provider_user_id":{"type":"string","description":"User ID from the Zalo provider"},"scheme":{"type":"string","const":"oauth2","description":"OAuth 2.0 authentication scheme"},"scopes":{"type":"array","items":{"type":"string"},"description":"OAuth scopes granted for this account"},"profile":{"type":"object","properties":{"oa_id":{"type":"number","description":"Zalo Official Account ID"},"name":{"type":"string","description":"Name of the Zalo Official Account"},"description":{"type":"string","description":"Description of the Zalo Official Account"},"oa_alias":{"description":"Alias/username for the Official Account","anyOf":[{"type":"string"},{"type":"null"}]},"is_verified":{"type":"boolean","description":"Whether the Official Account is verified by Zalo"},"oa_type":{"type":"number","description":"Type code for the Official Account"},"cate_name":{"type":"string","description":"Category name of the Official Account"},"num_follower":{"type":"number","description":"Number of followers"},"avatar":{"type":"string","description":"URL to the account avatar image"},"cover":{"type":"string","description":"URL to the account cover image"},"package_name":{"description":"Name of the subscription package","type":"string"},"package_valid_through_date":{"description":"Expiration date of the subscription package","type":"string"},"package_auto_renew_date":{"description":"Auto-renewal date for the subscription","type":"string"},"linked_zca":{"description":"Linked Zalo Cloud Account identifier","type":"string"}},"required":["oa_id","name","description","is_verified","oa_type","cate_name","num_follower","avatar","cover"],"additionalProperties":false,"description":"Official Account profile data from Zalo"}},"required":["id","name","member_id","created_at","workspace_id","provider","provider_user_id","scheme","scopes","profile"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the connected account"},"name":{"type":"string","description":"Display name for this connected account"},"member_id":{"type":"string","description":"ID of the member who created this account"},"created_at":{"type":"string","description":"Timestamp when account was connected"},"workspace_id":{"type":"string","description":"ID of the workspace this account belongs to"},"provider":{"type":"string","const":"payos","description":"PayOS provider identifier"},"credentials":{"type":"object","properties":{"client_id":{"type":"string","description":"PayOS client ID"},"api_key":{"type":"string"},"checksum_key":{"type":"string"}},"required":["client_id"],"additionalProperties":false,"description":"PayOS API credentials (secrets stripped)"}},"required":["id","name","member_id","created_at","workspace_id","provider","credentials"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the connected account"},"name":{"type":"string","description":"Display name for this connected account"},"member_id":{"type":"string","description":"ID of the member who created this account"},"created_at":{"type":"string","description":"Timestamp when account was connected"},"workspace_id":{"type":"string","description":"ID of the workspace this account belongs to"},"provider":{"type":"string","const":"misa","description":"MISA AMIS accounting provider identifier"},"credentials":{"type":"object","properties":{"access_code":{"type":"string"},"org_company_code":{"type":"string","description":"Customer's MISA organization/domain identifier"},"expires_at":{"type":"string","description":"ISO timestamp of cached token expiry"}},"required":["org_company_code","expires_at"],"additionalProperties":false,"description":"MISA AMIS credentials (secrets stripped at API boundary)"},"scheme":{"type":"string","const":"api_key","description":"MISA token-based authentication scheme"}},"required":["id","name","member_id","created_at","workspace_id","provider","credentials","scheme"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the connected account"},"name":{"type":"string","description":"Display name for this connected account"},"member_id":{"type":"string","description":"ID of the member who created this account"},"created_at":{"type":"string","description":"Timestamp when account was connected"},"workspace_id":{"type":"string","description":"ID of the workspace this account belongs to"},"provider":{"type":"string","const":"lark","description":"Lark Base (Bitable) provider identifier"},"credentials":{"type":"object","properties":{"app_id":{"type":"string","description":"Lark custom-app App ID (cli_...)"},"app_secret":{"type":"string","description":"Lark custom-app App Secret"},"region":{"type":"string","enum":["larksuite","feishu"],"description":"larksuite (international) or feishu (China)"},"expires_at":{"type":"string","description":"ISO timestamp of cached token expiry"}},"required":["app_id","app_secret","region","expires_at"],"additionalProperties":false,"description":"Lark credentials (tenant_access_token stripped at API boundary)"},"scheme":{"type":"string","const":"api_key","description":"Lark app-credential authentication scheme"}},"required":["id","name","member_id","created_at","workspace_id","provider","credentials","scheme"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the connected account"},"name":{"type":"string","description":"Display name for this connected account"},"member_id":{"type":"string","description":"ID of the member who created this account"},"created_at":{"type":"string","description":"Timestamp when account was connected"},"workspace_id":{"type":"string","description":"ID of the workspace this account belongs to"},"provider":{"type":"string","const":"fedex","description":"FedEx shipping provider identifier"},"credentials":{"type":"object","properties":{"client_id":{"type":"string","description":"FedEx API key (OAuth client ID)"},"client_secret":{"type":"string","description":"FedEx secret key (OAuth client secret)"},"account_number":{"type":"string","description":"FedEx shipping account number"},"environment":{"type":"string","enum":["sandbox","production"],"description":"sandbox or production"},"expires_at":{"type":"string","description":"ISO timestamp of cached token expiry"}},"required":["client_id","client_secret","account_number","environment","expires_at"],"additionalProperties":false,"description":"FedEx credentials (access_token stripped at API boundary)"},"scheme":{"type":"string","const":"oauth2","description":"FedEx OAuth2 client-credentials scheme"}},"required":["id","name","member_id","created_at","workspace_id","provider","credentials","scheme"],"additionalProperties":false}]},"get_v1_connected_accounts_Response":{"type":"array","items":{"$ref":"#/components/schemas/patch_v1_connected_accounts_connected_account_id_Response"}},"patch_v1_connected_accounts_connected_account_id_Response":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the connected account"},"name":{"type":"string","description":"Display name for this connected account"},"member_id":{"type":"string","description":"ID of the member who created this account"},"created_at":{"type":"string","description":"Timestamp when account was connected"},"workspace_id":{"type":"string","description":"ID of the workspace this account belongs to"},"provider":{"type":"string","const":"wininvoice","description":"WinInvoice provider identifier"},"credentials":{"type":"object","properties":{"client_id":{"type":"string","description":"WinInvoice client ID"},"client_secret":{"type":"string"}},"required":["client_id"],"additionalProperties":false,"description":"WinInvoice API credentials (secret stripped)"},"scheme":{"type":"string","const":"basic","description":"Basic authentication scheme"}},"required":["id","name","member_id","created_at","workspace_id","provider","credentials","scheme"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the connected account"},"name":{"type":"string","description":"Display name for this connected account"},"member_id":{"type":"string","description":"ID of the member who created this account"},"created_at":{"type":"string","description":"Timestamp when account was connected"},"workspace_id":{"type":"string","description":"ID of the workspace this account belongs to"},"provider":{"type":"string","const":"outlook","description":"Outlook provider identifier"},"provider_user_id":{"type":"string","description":"User ID from the Outlook provider"},"scheme":{"type":"string","const":"oauth2","description":"OAuth 2.0 authentication scheme"},"scopes":{"type":"array","items":{"type":"string"},"description":"OAuth scopes granted for this account"},"profile":{"description":"User profile data from Outlook"}},"required":["id","name","member_id","created_at","workspace_id","provider","provider_user_id","scheme","scopes","profile"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the connected account"},"name":{"type":"string","description":"Display name for this connected account"},"member_id":{"type":"string","description":"ID of the member who created this account"},"created_at":{"type":"string","description":"Timestamp when account was connected"},"workspace_id":{"type":"string","description":"ID of the workspace this account belongs to"},"provider":{"type":"string","const":"gmail","description":"Gmail provider identifier"},"provider_user_id":{"type":"string","description":"User ID from the Gmail provider"},"scheme":{"type":"string","const":"oauth2","description":"OAuth 2.0 authentication scheme"},"scopes":{"type":"array","items":{"type":"string"},"description":"OAuth scopes granted for this account"},"profile":{"description":"User profile data from Gmail"}},"required":["id","name","member_id","created_at","workspace_id","provider","provider_user_id","scheme","scopes","profile"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the connected account"},"name":{"type":"string","description":"Display name for this connected account"},"member_id":{"type":"string","description":"ID of the member who created this account"},"created_at":{"type":"string","description":"Timestamp when account was connected"},"workspace_id":{"type":"string","description":"ID of the workspace this account belongs to"},"provider":{"type":"string","const":"google_drive","description":"Google Drive provider identifier"},"provider_user_id":{"type":"string","description":"User ID from the Google provider"},"scheme":{"type":"string","const":"oauth2","description":"OAuth 2.0 authentication scheme"},"scopes":{"type":"array","items":{"type":"string"},"description":"OAuth scopes granted for this account"},"profile":{"description":"User profile data from Google"}},"required":["id","name","member_id","created_at","workspace_id","provider","provider_user_id","scheme","scopes","profile"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the connected account"},"name":{"type":"string","description":"Display name for this connected account"},"member_id":{"type":"string","description":"ID of the member who created this account"},"created_at":{"type":"string","description":"Timestamp when account was connected"},"workspace_id":{"type":"string","description":"ID of the workspace this account belongs to"},"provider":{"type":"string","const":"facebook","description":"Facebook provider identifier"},"provider_user_id":{"type":"string","description":"User ID from the Facebook provider"},"scheme":{"type":"string","const":"oauth2","description":"OAuth 2.0 authentication scheme"},"scopes":{"type":"array","items":{"type":"string"},"description":"OAuth scopes granted for this account"},"profile":{"type":"object","properties":{"id":{"type":"string","description":"Facebook user ID"},"name":{"type":"string","description":"User's display name on Facebook"},"email":{"description":"User's email address (if available)","type":"string"},"picture":{"description":"User's profile picture information","type":"object","properties":{"data":{"type":"object","properties":{"url":{"type":"string","description":"URL to the profile picture"},"width":{"type":"number","description":"Width of the profile picture in pixels"},"height":{"type":"number","description":"Height of the profile picture in pixels"}},"required":["url","width","height"],"additionalProperties":false}},"required":["data"],"additionalProperties":false}},"required":["id","name"],"additionalProperties":false,"description":"User profile data from Facebook"},"resources":{"type":"object","properties":{"pages":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Facebook Page ID"},"name":{"type":"string","description":"Name of the Facebook Page"},"category":{"type":"string","description":"Primary category of the Facebook Page"},"category_list":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Category ID"},"name":{"type":"string","description":"Category name"}},"required":["id","name"],"additionalProperties":false},"description":"List of categories assigned to the Facebook Page"},"tasks":{"type":"array","items":{"type":"string"},"description":"List of tasks/permissions available for this page"}},"required":["id","name","category","category_list","tasks"],"additionalProperties":false},"description":"Facebook Pages managed by this account"}},"required":["pages"],"additionalProperties":false,"description":"Resources (pages) available through this connection"}},"required":["id","name","member_id","created_at","workspace_id","provider","provider_user_id","scheme","scopes","profile","resources"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the connected account"},"name":{"type":"string","description":"Display name for this connected account"},"member_id":{"type":"string","description":"ID of the member who created this account"},"created_at":{"type":"string","description":"Timestamp when account was connected"},"workspace_id":{"type":"string","description":"ID of the workspace this account belongs to"},"provider":{"type":"string","const":"zalo","description":"Zalo provider identifier"},"provider_user_id":{"type":"string","description":"User ID from the Zalo provider"},"scheme":{"type":"string","const":"oauth2","description":"OAuth 2.0 authentication scheme"},"scopes":{"type":"array","items":{"type":"string"},"description":"OAuth scopes granted for this account"},"profile":{"type":"object","properties":{"oa_id":{"type":"number","description":"Zalo Official Account ID"},"name":{"type":"string","description":"Name of the Zalo Official Account"},"description":{"type":"string","description":"Description of the Zalo Official Account"},"oa_alias":{"description":"Alias/username for the Official Account","anyOf":[{"type":"string"},{"type":"null"}]},"is_verified":{"type":"boolean","description":"Whether the Official Account is verified by Zalo"},"oa_type":{"type":"number","description":"Type code for the Official Account"},"cate_name":{"type":"string","description":"Category name of the Official Account"},"num_follower":{"type":"number","description":"Number of followers"},"avatar":{"type":"string","description":"URL to the account avatar image"},"cover":{"type":"string","description":"URL to the account cover image"},"package_name":{"description":"Name of the subscription package","type":"string"},"package_valid_through_date":{"description":"Expiration date of the subscription package","type":"string"},"package_auto_renew_date":{"description":"Auto-renewal date for the subscription","type":"string"},"linked_zca":{"description":"Linked Zalo Cloud Account identifier","type":"string"}},"required":["oa_id","name","description","is_verified","oa_type","cate_name","num_follower","avatar","cover"],"additionalProperties":false,"description":"Official Account profile data from Zalo"}},"required":["id","name","member_id","created_at","workspace_id","provider","provider_user_id","scheme","scopes","profile"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the connected account"},"name":{"type":"string","description":"Display name for this connected account"},"member_id":{"type":"string","description":"ID of the member who created this account"},"created_at":{"type":"string","description":"Timestamp when account was connected"},"workspace_id":{"type":"string","description":"ID of the workspace this account belongs to"},"provider":{"type":"string","const":"payos","description":"PayOS provider identifier"},"credentials":{"type":"object","properties":{"client_id":{"type":"string","description":"PayOS client ID"},"api_key":{"type":"string"},"checksum_key":{"type":"string"}},"required":["client_id"],"additionalProperties":false,"description":"PayOS API credentials (secrets stripped)"}},"required":["id","name","member_id","created_at","workspace_id","provider","credentials"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the connected account"},"name":{"type":"string","description":"Display name for this connected account"},"member_id":{"type":"string","description":"ID of the member who created this account"},"created_at":{"type":"string","description":"Timestamp when account was connected"},"workspace_id":{"type":"string","description":"ID of the workspace this account belongs to"},"provider":{"type":"string","const":"misa","description":"MISA AMIS accounting provider identifier"},"credentials":{"type":"object","properties":{"access_code":{"type":"string"},"org_company_code":{"type":"string","description":"Customer's MISA organization/domain identifier"},"expires_at":{"type":"string","description":"ISO timestamp of cached token expiry"}},"required":["org_company_code","expires_at"],"additionalProperties":false,"description":"MISA AMIS credentials (secrets stripped at API boundary)"},"scheme":{"type":"string","const":"api_key","description":"MISA token-based authentication scheme"}},"required":["id","name","member_id","created_at","workspace_id","provider","credentials","scheme"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the connected account"},"name":{"type":"string","description":"Display name for this connected account"},"member_id":{"type":"string","description":"ID of the member who created this account"},"created_at":{"type":"string","description":"Timestamp when account was connected"},"workspace_id":{"type":"string","description":"ID of the workspace this account belongs to"},"provider":{"type":"string","const":"lark","description":"Lark Base (Bitable) provider identifier"},"credentials":{"type":"object","properties":{"app_id":{"type":"string","description":"Lark custom-app App ID (cli_...)"},"app_secret":{"type":"string","description":"Lark custom-app App Secret"},"region":{"type":"string","enum":["larksuite","feishu"],"description":"larksuite (international) or feishu (China)"},"expires_at":{"type":"string","description":"ISO timestamp of cached token expiry"}},"required":["app_id","app_secret","region","expires_at"],"additionalProperties":false,"description":"Lark credentials (tenant_access_token stripped at API boundary)"},"scheme":{"type":"string","const":"api_key","description":"Lark app-credential authentication scheme"}},"required":["id","name","member_id","created_at","workspace_id","provider","credentials","scheme"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the connected account"},"name":{"type":"string","description":"Display name for this connected account"},"member_id":{"type":"string","description":"ID of the member who created this account"},"created_at":{"type":"string","description":"Timestamp when account was connected"},"workspace_id":{"type":"string","description":"ID of the workspace this account belongs to"},"provider":{"type":"string","const":"fedex","description":"FedEx shipping provider identifier"},"credentials":{"type":"object","properties":{"client_id":{"type":"string","description":"FedEx API key (OAuth client ID)"},"client_secret":{"type":"string","description":"FedEx secret key (OAuth client secret)"},"account_number":{"type":"string","description":"FedEx shipping account number"},"environment":{"type":"string","enum":["sandbox","production"],"description":"sandbox or production"},"expires_at":{"type":"string","description":"ISO timestamp of cached token expiry"}},"required":["client_id","client_secret","account_number","environment","expires_at"],"additionalProperties":false,"description":"FedEx credentials (access_token stripped at API boundary)"},"scheme":{"type":"string","const":"oauth2","description":"FedEx OAuth2 client-credentials scheme"}},"required":["id","name","member_id","created_at","workspace_id","provider","credentials","scheme"],"additionalProperties":false}]},"delete_v1_tables_table_id_views_view_id_Response":{"type":"object","properties":{"success":{"type":"boolean"}},"required":["success"],"additionalProperties":false},"post_v1_tables_table_id_clone_Response":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the table"},"workspace_id":{"type":"string","description":"ID of the workspace this table belongs to"},"name":{"type":"string","description":"Display name of the table"},"description":{"type":"string","description":"Description of the table's purpose"},"position":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Display ordering index for the table. Lower numbers are shown first. "},"fields":{"type":"array","items":{"$ref":"#/components/schemas/patch_v1_tables_table_id_fields_field_key_Response"},"description":"Array of field definitions for this table"},"workflows":{"description":"Workflows attached to this table that fire around record mutations. before_* run synchronously and may reject; after_* run after commit and do not block.","type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Unique table-workflow binding ID (tbw_ prefix)"},"name":{"type":"string","description":"Human-readable name"},"description":{"type":"string","description":"Description of what this workflow does"},"enabled":{"type":"boolean","description":"Whether this workflow is active"},"event":{"type":"string","enum":["before_create","after_create","before_update","after_update","before_delete","after_delete"],"description":"Lifecycle event that fires this workflow. before_* runs synchronously and may reject the mutation; after_* runs after commit and does not block."},"workflow_id":{"type":"string","description":"ID of the workflow row that owns this binding's steps. The workflow's steps_v2 is the source of truth for the AST."},"if":{"description":"Optional pre-execution gate. Evaluated against the trigger context (record / prev_record / changes / runtime); the workflow fires only when truthy. Skip gating means the workflow always fires.","anyOf":[{},{"type":"null"}]},"created_at":{"type":"string","description":"When the binding was created"},"updated_at":{"type":"string","description":"When the binding was last modified"},"archived_at":{"description":"Set when the binding was removed (soft-delete). An archived binding never fires and is hidden from active listings, but is restorable; null/absent = active.","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","description","enabled","event","workflow_id","created_at","updated_at"],"additionalProperties":false}},"private_filters":{"description":"Row-level private filters AND'd to every query as a security boundary (admin bypass)","anyOf":[{"$ref":"#/components/schemas/TableRecordFiltersGroup"},{"type":"null"}]},"colors":{"description":"Color rules for styling records based on filter conditions","anyOf":[{"type":"array","items":{"type":"object","properties":{"filters":{"anyOf":[{"$ref":"#/components/schemas/TableRecordFiltersGroup"},{"type":"null"}],"description":"The filter conditions that determine when this color rule applies. Null means no filtering."},"color":{"type":"string","enum":["red","orange","amber","yellow","lime","green","emerald","teal","cyan","sky","blue","indigo","violet","purple","fuchsia","pink","rose","slate","gray","zinc","neutral","stone"],"description":"The color to apply to records matching the filters."}},"required":["filters","color"],"additionalProperties":false}},{"type":"null"}]},"approvers":{"description":"Principals (members, groups, or the organization) who review locked-record change requests on this table. Null/empty = organization admins review. The requester never reviews their own request.","anyOf":[{"type":"array","items":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","const":"member","description":"Principal type: individual member"},"id":{"type":"string","description":"Member ID"}},"required":["type","id"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"member_group","description":"Principal type: group of members"},"id":{"type":"string","description":"Member group ID"}},"required":["type","id"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"organization","description":"Principal type: all members in organization"},"id":{"type":"string","description":"Organization ID"}},"required":["type","id"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"public","description":"Principal type: anyone, including unauthenticated visitors"},"id":{"type":"string","const":"public","description":"Always the `public` sentinel — no entity"}},"required":["type","id"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"invitation","description":"Principal type: pending invitation (not yet accepted)"},"id":{"type":"string","description":"Invitation ID"}},"required":["type","id"],"additionalProperties":false}]}},{"type":"null"}]},"created_at":{"type":"string","description":"Timestamp when table was created"}},"required":["id","workspace_id","name","description","fields","created_at"],"additionalProperties":false},"post_v1_views_view_id_clone_Response":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the view"},"table_id":{"type":"string","description":"ID of the table this view displays"},"workspace_id":{"type":"string","description":"ID of the workspace this view belongs to"},"name":{"type":"string","description":"Display name of the view"},"description":{"type":"string","description":"Description of the view's purpose"},"visible_to":{"description":"Sidebar declutter list (NOT access control). null/absent = every member with access to the parent table sees this view; a non-empty list of members/groups restricts who sees it in the explorer. [] is normalized to null on write.","anyOf":[{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["member","group"],"description":"Principal kind that may see the view: an individual member or a member group"},"id":{"type":"string","description":"Member ID (type=member) or member-group ID (type=group)"}},"required":["type","id"],"additionalProperties":false}},{"type":"null"}]},"position":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Display ordering index for the view. Lower numbers are shown first. Use incremental values with gaps (100, 200, 300) instead of consecutive numbers (1, 2, 3) to enable efficient reordering without updating multiple records. Example: To insert between 100 and 200, use 150."},"frozen_columns":{"description":"Number of columns to freeze. Frozen columns are not scrollable.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"summary":{"description":"Map of field keys to summary operations.","anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"anyOf":[{"type":"object","properties":{"operation":{"type":"string","description":"Operation to perform on the field"},"field_key":{"type":"string","description":"Field key to display in the summary row"}},"required":["operation","field_key"],"additionalProperties":false},{"type":"null"}]}},{"type":"null"}]},"default_record_data_template_id":{"description":"ID of the record template to use as the default record initial data","anyOf":[{"type":"string"},{"type":"null"}]},"field_config":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"description":"Field key"},"visibility":{"type":"string","enum":["visible","hidden"],"description":"Field visibility state: 'visible' = shown to everyone, 'hidden' = not shown by default but members can toggle"},"width":{"type":"number"}},"required":["key","visibility"],"additionalProperties":false},"description":"Ordered array of field config entries. Order = display order, visibility = per-entry. Fields not listed are hidden."},"sort":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"field_key":{"type":"string","description":"Field key to sort by"},"order":{"anyOf":[{"type":"string","enum":["asc","desc"]},{"type":"null"}],"description":"Sort order: 'asc' for ascending, 'desc' for descending"},"blank_position":{"description":"Blank position: 'top' for top, 'bottom' for bottom","type":"string","enum":["top","bottom"]}},"required":["field_key","order"],"additionalProperties":false}},{"type":"null"}],"description":"Sorting configuration for records in this view"},"filters":{"anyOf":[{"$ref":"#/components/schemas/TableRecordFiltersGroup"},{"type":"null"}],"description":"Filter conditions applied to records in this view"},"created_at":{"type":"string","description":"Timestamp when view was created"}},"required":["id","table_id","workspace_id","name","description","position","field_config","sort","filters","created_at"],"additionalProperties":false},"post_v1_tables_table_id_draft_records_Response":{"type":"array","items":{"$ref":"#/components/schemas/get_v1_records_record_id_Response"}},"post_v1_tables_table_id_records_comments_Response":{"type":"array","items":{"$ref":"#/components/schemas/patch_v1_apps_app_id_records_record_id_comments_comment_id_Response"}},"post_v1_tables_table_id_record_data_templates_Response":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the record data template"},"name":{"type":"string","description":"Display name of the record data template"},"description":{"type":"string","description":"Description of the record data template"},"table_id":{"type":"string","description":"ID of the table this record template belongs to"},"data":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{},"description":"The data of the record template. The key is the Field key."}},"required":["id","name","description","table_id","data"],"additionalProperties":false},"post_v1_tables_Response":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the table"},"workspace_id":{"type":"string","description":"ID of the workspace this table belongs to"},"name":{"type":"string","description":"Display name of the table"},"description":{"type":"string","description":"Description of the table's purpose"},"position":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Display ordering index for the table. Lower numbers are shown first. "},"fields":{"type":"array","items":{"$ref":"#/components/schemas/patch_v1_tables_table_id_fields_field_key_Response"},"description":"Array of field definitions for this table"},"workflows":{"description":"Workflows attached to this table that fire around record mutations. before_* run synchronously and may reject; after_* run after commit and do not block.","type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Unique table-workflow binding ID (tbw_ prefix)"},"name":{"type":"string","description":"Human-readable name"},"description":{"type":"string","description":"Description of what this workflow does"},"enabled":{"type":"boolean","description":"Whether this workflow is active"},"event":{"type":"string","enum":["before_create","after_create","before_update","after_update","before_delete","after_delete"],"description":"Lifecycle event that fires this workflow. before_* runs synchronously and may reject the mutation; after_* runs after commit and does not block."},"workflow_id":{"type":"string","description":"ID of the workflow row that owns this binding's steps. The workflow's steps_v2 is the source of truth for the AST."},"if":{"description":"Optional pre-execution gate. Evaluated against the trigger context (record / prev_record / changes / runtime); the workflow fires only when truthy. Skip gating means the workflow always fires.","anyOf":[{},{"type":"null"}]},"created_at":{"type":"string","description":"When the binding was created"},"updated_at":{"type":"string","description":"When the binding was last modified"},"archived_at":{"description":"Set when the binding was removed (soft-delete). An archived binding never fires and is hidden from active listings, but is restorable; null/absent = active.","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","description","enabled","event","workflow_id","created_at","updated_at"],"additionalProperties":false}},"private_filters":{"description":"Row-level private filters AND'd to every query as a security boundary (admin bypass)","anyOf":[{"$ref":"#/components/schemas/TableRecordFiltersGroup"},{"type":"null"}]},"colors":{"description":"Color rules for styling records based on filter conditions","anyOf":[{"type":"array","items":{"type":"object","properties":{"filters":{"anyOf":[{"$ref":"#/components/schemas/TableRecordFiltersGroup"},{"type":"null"}],"description":"The filter conditions that determine when this color rule applies. Null means no filtering."},"color":{"type":"string","enum":["red","orange","amber","yellow","lime","green","emerald","teal","cyan","sky","blue","indigo","violet","purple","fuchsia","pink","rose","slate","gray","zinc","neutral","stone"],"description":"The color to apply to records matching the filters."}},"required":["filters","color"],"additionalProperties":false}},{"type":"null"}]},"approvers":{"description":"Principals (members, groups, or the organization) who review locked-record change requests on this table. Null/empty = organization admins review. The requester never reviews their own request.","anyOf":[{"type":"array","items":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","const":"member","description":"Principal type: individual member"},"id":{"type":"string","description":"Member ID"}},"required":["type","id"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"member_group","description":"Principal type: group of members"},"id":{"type":"string","description":"Member group ID"}},"required":["type","id"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"organization","description":"Principal type: all members in organization"},"id":{"type":"string","description":"Organization ID"}},"required":["type","id"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"public","description":"Principal type: anyone, including unauthenticated visitors"},"id":{"type":"string","const":"public","description":"Always the `public` sentinel — no entity"}},"required":["type","id"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"invitation","description":"Principal type: pending invitation (not yet accepted)"},"id":{"type":"string","description":"Invitation ID"}},"required":["type","id"],"additionalProperties":false}]}},{"type":"null"}]},"created_at":{"type":"string","description":"Timestamp when table was created"}},"required":["id","workspace_id","name","description","fields","created_at"],"additionalProperties":false},"post_v1_tables_table_id_fields_Response":{"oneOf":[{"type":"object","properties":{"key":{"type":"string","description":"Unique field key"},"name":{"type":"string","description":"Display name"},"description":{"type":"string","description":"Field description"},"confirm_before_update":{"description":"Show confirmation before AI updates","type":"boolean"},"type":{"type":"string","const":"number"},"format":{"type":"string","enum":["number","currency","percentage"]},"currency":{"description":"ISO 4217 code","type":"string"},"default_value":{"description":"Value pre-filled into a new record when none is supplied for this field. Applied on create only — existing records are never backfilled. null clears it.","anyOf":[{"type":"number"},{"type":"null"}]}},"required":["key","name","description","type","format"],"additionalProperties":false},{"type":"object","properties":{"key":{"type":"string","description":"Unique field key"},"name":{"type":"string","description":"Display name"},"description":{"type":"string","description":"Field description"},"confirm_before_update":{"description":"Show confirmation before AI updates","type":"boolean"},"type":{"type":"string","const":"text"},"unique":{"description":"Unique values required","type":"boolean"},"format":{"type":"string","enum":["text","link","markdown"]},"default_value":{"description":"Value pre-filled into a new record when none is supplied for this field. Applied on create only — existing records are never backfilled. null clears it.","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["key","name","description","type"],"additionalProperties":false},{"type":"object","properties":{"key":{"type":"string","description":"Unique field key"},"name":{"type":"string","description":"Display name"},"description":{"type":"string","description":"Field description"},"confirm_before_update":{"description":"Show confirmation before AI updates","type":"boolean"},"type":{"type":"string","const":"date"},"format":{"type":"string","enum":["date","datetime","date_range","datetime_range"]},"timezone":{"description":"IANA timezone","type":"string"},"derive_from":{"description":"Auto-populate from the row's system timestamp. `created_at` stamps once at insert time; `updated_at` re-stamps on every record edit. Derived fields are read-only — user-supplied values are silently ignored at write time, matching the formula/rollup/lookup pattern. Replaces the per-table after_create workflow pattern.","type":"string","enum":["created_at","updated_at"]},"default_value":{"description":"Value pre-filled into a new record when none is supplied for this field. Applied on create only — existing records are never backfilled. null clears it. A date string in the field's format.","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["key","name","description","type"],"additionalProperties":false},{"type":"object","properties":{"key":{"type":"string","description":"Unique field key"},"name":{"type":"string","description":"Display name"},"description":{"type":"string","description":"Field description"},"confirm_before_update":{"description":"Show confirmation before AI updates","type":"boolean"},"type":{"type":"string","const":"boolean"},"default_value":{"description":"Value pre-filled into a new record when none is supplied for this field. Applied on create only — existing records are never backfilled. null clears it.","anyOf":[{"type":"boolean"},{"type":"null"}]}},"required":["key","name","description","type"],"additionalProperties":false},{"type":"object","properties":{"key":{"type":"string","description":"Unique field key"},"name":{"type":"string","description":"Display name"},"description":{"type":"string","description":"Field description"},"confirm_before_update":{"description":"Show confirmation before AI updates","type":"boolean"},"type":{"type":"string","const":"select"},"options":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"},"color":{"type":"string","enum":["red","orange","amber","yellow","lime","green","emerald","teal","cyan","sky","blue","indigo","violet","purple","fuchsia","pink","rose","slate","gray","zinc","neutral","stone"]}},"required":["key","name","color"],"additionalProperties":false}},"multi":{"description":"Allow multiple selections","type":"boolean"},"default_value":{"description":"Value pre-filled into a new record when none is supplied for this field. Applied on create only — existing records are never backfilled. null clears it. Option key(s) — one for single-select.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]}},"required":["key","name","description","type","options"],"additionalProperties":false},{"type":"object","properties":{"key":{"type":"string","description":"Unique field key"},"name":{"type":"string","description":"Display name"},"description":{"type":"string","description":"Field description"},"confirm_before_update":{"description":"Show confirmation before AI updates","type":"boolean"},"type":{"type":"string","const":"select_member"},"multi":{"description":"Allow multiple selections","type":"boolean"},"default_value":{"description":"Value pre-filled into a new record when none is supplied for this field. Applied on create only — existing records are never backfilled. null clears it. Member ID(s) — one for single-select.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]}},"required":["key","name","description","type"],"additionalProperties":false},{"type":"object","properties":{"key":{"type":"string","description":"Unique field key"},"name":{"type":"string","description":"Display name"},"description":{"type":"string","description":"Field description"},"confirm_before_update":{"description":"Show confirmation before AI updates","type":"boolean"},"type":{"type":"string","const":"select_record_link","description":"Field type for linking to records in another table"},"table_id":{"type":"string","description":"ID of the target table that records can be linked to"},"display_field_keys":{"default":[],"description":"Field keys of the linked table shown as the link's display text and as the columns in the record picker. If empty, the picker shows all fields.","type":"array","items":{"type":"string"}},"display_field_widths":{"description":"Per-column widths in pixels for the record picker, keyed by linked-table field key. Missing keys fall back to the default column width.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"paired_field_key":{"description":"Key of the paired link field in the linked table. If set to a string, this indicates a bidirectional link where both tables can reference each other and data synchronizes in both directions. Both fields have paired_field_key pointing to each other. If set to null, explicitly disconnects the bidirectional link (clears paired_field_key on both sides). If undefined, no change is made to the existing paired_field_key.","type":"string"},"cardinality":{"description":"How many linked records this field can hold. Default 'many' (multi-select). 'one' = single-select; this side holds exactly one link to the partner. Requires paired_field_key. Two paired sides cannot both be 'one'.","type":"string","enum":["one","many"]}},"required":["key","name","description","type","table_id","display_field_keys"],"additionalProperties":false},{"type":"object","properties":{"key":{"type":"string","description":"Unique field key"},"name":{"type":"string","description":"Display name"},"description":{"type":"string","description":"Field description"},"confirm_before_update":{"description":"Show confirmation before AI updates","type":"boolean"},"type":{"type":"string","const":"rollup","description":"Field type for aggregating values from linked records (sum, avg, filled, earliest, etc.)"},"source_field_key":{"type":"string","description":"The field key of the select_record_link field to rollup from"},"aggregate_option":{"anyOf":[{"type":"object","properties":{"operation":{"type":"string","const":"count"},"field_key":{"type":"string"}},"required":["operation"],"additionalProperties":false},{"type":"object","properties":{"operation":{"type":"string","enum":["empty","filled","percent_empty","percent_filled","unique","percent_unique"]},"field_key":{"type":"string"}},"required":["operation","field_key"],"additionalProperties":false},{"type":"object","properties":{"operation":{"type":"string","enum":["empty","filled","percent_empty","percent_filled","unique","percent_unique","sum","avg","median","min","max","range"]},"field_key":{"type":"string"}},"required":["operation","field_key"],"additionalProperties":false},{"type":"object","properties":{"operation":{"type":"string","enum":["empty","filled","percent_empty","percent_filled","unique","percent_unique","earliest","latest","date_range"]},"field_key":{"type":"string"}},"required":["operation","field_key"],"additionalProperties":false},{"type":"object","properties":{"operation":{"type":"string","enum":["empty","filled","percent_empty","percent_filled","unique","percent_unique"]},"field_key":{"type":"string"}},"required":["operation","field_key"],"additionalProperties":false},{"type":"object","properties":{"operation":{"type":"string","enum":["empty","filled","percent_empty","percent_filled","unique","percent_unique"]},"field_key":{"type":"string"}},"required":["operation","field_key"],"additionalProperties":false},{"type":"object","properties":{"operation":{"type":"string","enum":["empty","filled","percent_empty","percent_filled"]},"field_key":{"type":"string"}},"required":["operation","field_key"],"additionalProperties":false},{"type":"object","properties":{"operation":{"type":"string","enum":["checked","unchecked","percent_checked","percent_unchecked"]},"field_key":{"type":"string"}},"required":["operation","field_key"],"additionalProperties":false},{"type":"object","properties":{"operation":{"type":"string","enum":["empty","filled","percent_empty","percent_filled"]},"field_key":{"type":"string"}},"required":["operation","field_key"],"additionalProperties":false},{"type":"object","properties":{"operation":{"type":"string","enum":["empty","filled","percent_empty","percent_filled","unique","percent_unique","sum","avg","median","min","max","range"]},"field_key":{"type":"string"}},"required":["operation","field_key"],"additionalProperties":false},{"type":"object","properties":{"operation":{"type":"string","enum":["empty","filled","percent_empty","percent_filled","unique","percent_unique","sum","avg","median","min","max","range","earliest","latest","date_range"]},"field_key":{"type":"string"}},"required":["operation","field_key"],"additionalProperties":false}],"description":"The field aggregation function to apply (e.g., sum, avg, filled, earliest)"},"filter":{"description":"Optional filter to apply to linked records before aggregation. Only records matching the filter conditions will be included in the rollup calculation.","$ref":"#/components/schemas/TableRecordFiltersGroup"},"aggregate_field_type":{"description":"What this rollup's CELL holds — 'date' for earliest/latest, 'number' for every other operation (counts, sums, percentages). Derived from the operation, not from the aggregated field: a 'filled' count over a files column is a number. Server-derived at write time; ignored on input.","type":"string","enum":["text","number","date","boolean","select","select_member","select_record_link","files","formula","rollup","lookup","button","autonumber"]},"aggregate_field_format":{"description":"The format of this rollup's own value. Operations that preserve the aggregated value's unit (sum/avg/median/min/max/range/earliest/latest) inherit the target field's format; counting operations are 'number', percentages 'percentage'. Server-derived at write time; ignored on input.","type":"string"},"aggregate_field_currency":{"description":"The currency code of this rollup's own value (e.g. 'USD', 'VND'), inherited from the aggregated field only when the operation preserves its unit — a COUNT of a currency column carries no currency. Server-derived at write time; ignored on input.","type":"string"}},"required":["key","name","description","type","source_field_key","aggregate_option"],"additionalProperties":false},{"type":"object","properties":{"key":{"type":"string","description":"Unique field key"},"name":{"type":"string","description":"Display name"},"description":{"type":"string","description":"Field description"},"confirm_before_update":{"description":"Show confirmation before AI updates","type":"boolean"},"type":{"type":"string","const":"lookup","description":"Field type for displaying values from fields in linked records"},"source_field_key":{"type":"string","description":"The field key of the select_record_link field to lookup from"},"lookup_field_key":{"type":"string","description":"The field key from the linked records to display"},"lookup_field_type":{"description":"The type of the target lookup field (e.g. 'text', 'number', 'date'). Resolved from the linked table's field definition at read time.","type":"string","enum":["text","number","date","boolean","select","select_member","select_record_link","files","formula","rollup","lookup","button","autonumber"]},"lookup_field_format":{"description":"The format of the target lookup field (e.g. 'currency', 'percentage', 'datetime'). Resolved from the linked table's field definition at read time.","type":"string"},"lookup_field_currency":{"description":"The currency code of the target lookup field (e.g. 'USD', 'VND'). Resolved from the linked table's field definition at read time.","type":"string"},"lookup_field_options":{"description":"Options for select-type lookup fields. Synced from the source select field's options.","type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"},"color":{"type":"string"}},"required":["key","name"],"additionalProperties":false}},"order_by":{"description":"When set, sort the linked records by this field on the linked table and return ONLY the picked field from the single extreme record (desc=latest, asc=earliest), as a one-element array. Omit to return every linked record's value as an array. field_key must be a field on the linked table.","type":"object","properties":{"field_key":{"type":"string"},"direction":{"type":"string","enum":["asc","desc"]}},"required":["field_key","direction"],"additionalProperties":false}},"required":["key","name","description","type","source_field_key","lookup_field_key"],"additionalProperties":false},{"type":"object","properties":{"key":{"type":"string","description":"Unique field key"},"name":{"type":"string","description":"Display name"},"description":{"type":"string","description":"Field description"},"confirm_before_update":{"description":"Show confirmation before AI updates","type":"boolean"},"type":{"type":"string","const":"files","description":"Field type for file attachments (images, PDFs, documents)"}},"required":["key","name","description","type"],"additionalProperties":false},{"type":"object","properties":{"key":{"type":"string","description":"Unique field key"},"name":{"type":"string","description":"Display name"},"description":{"type":"string","description":"Field description"},"confirm_before_update":{"description":"Show confirmation before AI updates","type":"boolean"},"type":{"type":"string","const":"formula","description":"Field type for calculated values based on expressions"},"formula":{"type":"object","properties":{"expression":{"type":"string","description":"JavaScript expression. Uses {Field Name} for field references."},"format":{"description":"Display format. 'number' / 'currency' / 'percentage' for numeric results; 'link' for text-output formulas that return a URL — renders the result as a clickable link.","type":"string","enum":["number","currency","percentage","link"]},"currency":{"description":"ISO 4217 currency code, e.g. USD, VND, EUR","type":"string"},"output_type":{"description":"Output type of the formula. Inferred by the backend from the expression — read-only on input. `datetime` when the result carries a time of day (references a datetime field or a time-bearing helper).","type":"string","enum":["number","text","date","datetime","boolean"]},"volatile":{"description":"Whether the formula's result depends on `now()` or other non-deterministic helpers. Inferred by the backend — read-only on input.","type":"boolean"}},"required":["expression"],"additionalProperties":false,"description":"Formula configuration and expression"}},"required":["key","name","description","type","formula"],"additionalProperties":false},{"type":"object","properties":{"key":{"type":"string","description":"Unique field key"},"name":{"type":"string","description":"Display name"},"description":{"type":"string","description":"Field description"},"confirm_before_update":{"description":"Show confirmation before AI updates","type":"boolean"},"type":{"type":"string","const":"button","description":"Field type for action buttons"},"text":{"type":"string","description":"Button label text displayed to users"},"workflow_id":{"description":"ID of the workflow the button presses trigger. Null means no action configured — pressing the button is a no-op. Button authoring is retired: existing bindings keep running, but nothing sets a new one.","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["key","name","description","type","text"],"additionalProperties":false},{"type":"object","properties":{"key":{"type":"string","description":"Unique field key"},"name":{"type":"string","description":"Display name"},"description":{"type":"string","description":"Field description"},"confirm_before_update":{"description":"Show confirmation before AI updates","type":"boolean"},"type":{"type":"string","const":"autonumber"},"prefix":{"description":"Literal prefix prepended to every display value (e.g. 'KH-' → 'KH-001'). Ignored when `template` is set.","type":"string"},"padding":{"description":"Zero-pad the integer to this width. Default 1 (no padding). 3 → '001', '012', '123', '1234' (overflow uses the actual width). Ignored when `template` is set.","type":"integer","minimum":1,"maximum":20},"template":{"description":"Format template with placeholder tokens evaluated at insert time. Tokens: {N} (raw integer), {N:W} (zero-padded to width W, e.g. {N:3} → 001), {YEAR} (4-digit year), {YEAR:2} (2-digit year), {MONTH} (2-digit month), {DAY} (2-digit day). Date tokens use the workspace timezone. Example: 'HM-{YEAR}-{N:3}' yields 'HM-2026-001'. Stored as the composed string; subsequent template edits do NOT re-format existing rows (date tokens would lose the original creation date).","type":"string"}},"required":["key","name","description","type"],"additionalProperties":false}]},"post_v1_tables_table_id_records_Response":{"type":"object","properties":{"record_ids":{"type":"array","items":{"type":"string"}},"workflow_messages":{"type":"array","items":{"type":"object","properties":{"table_workflow_id":{"type":"string","description":"tbw_* binding that emitted the message."},"workflow_name":{"type":"string","description":"Human name of the workflow at execution time."},"event":{"type":"string","enum":["before_create","after_create","before_update","after_update","before_delete","after_delete"],"description":"Lifecycle event that produced the message. Only before_* events can surface here."},"record_id":{"type":"string","description":"Record that triggered the workflow. Lets the UI scope the message to a specific row in bulk responses."},"message":{"type":"string","description":"Author-provided text from the workflow's return.message."}},"required":["table_workflow_id","workflow_name","event","record_id","message"],"additionalProperties":false},"description":"Non-blocking messages emitted by before_create workflows that exited with status=\"success\" and a non-empty `message`. Empty when no workflow returned a message."}},"required":["record_ids","workflow_messages"],"additionalProperties":false},"post_v1_tables_table_id_views_Response":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the view"},"table_id":{"type":"string","description":"ID of the table this view displays"},"workspace_id":{"type":"string","description":"ID of the workspace this view belongs to"},"name":{"type":"string","description":"Display name of the view"},"description":{"type":"string","description":"Description of the view's purpose"},"visible_to":{"description":"Sidebar declutter list (NOT access control). null/absent = every member with access to the parent table sees this view; a non-empty list of members/groups restricts who sees it in the explorer. [] is normalized to null on write.","anyOf":[{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["member","group"],"description":"Principal kind that may see the view: an individual member or a member group"},"id":{"type":"string","description":"Member ID (type=member) or member-group ID (type=group)"}},"required":["type","id"],"additionalProperties":false}},{"type":"null"}]},"position":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Display ordering index for the view. Lower numbers are shown first. Use incremental values with gaps (100, 200, 300) instead of consecutive numbers (1, 2, 3) to enable efficient reordering without updating multiple records. Example: To insert between 100 and 200, use 150."},"frozen_columns":{"description":"Number of columns to freeze. Frozen columns are not scrollable.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"summary":{"description":"Map of field keys to summary operations.","anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"anyOf":[{"type":"object","properties":{"operation":{"type":"string","description":"Operation to perform on the field"},"field_key":{"type":"string","description":"Field key to display in the summary row"}},"required":["operation","field_key"],"additionalProperties":false},{"type":"null"}]}},{"type":"null"}]},"default_record_data_template_id":{"description":"ID of the record template to use as the default record initial data","anyOf":[{"type":"string"},{"type":"null"}]},"field_config":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"description":"Field key"},"visibility":{"type":"string","enum":["visible","hidden"],"description":"Field visibility state: 'visible' = shown to everyone, 'hidden' = not shown by default but members can toggle"},"width":{"type":"number"}},"required":["key","visibility"],"additionalProperties":false},"description":"Ordered array of field config entries. Order = display order, visibility = per-entry. Fields not listed are hidden."},"sort":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"field_key":{"type":"string","description":"Field key to sort by"},"order":{"anyOf":[{"type":"string","enum":["asc","desc"]},{"type":"null"}],"description":"Sort order: 'asc' for ascending, 'desc' for descending"},"blank_position":{"description":"Blank position: 'top' for top, 'bottom' for bottom","type":"string","enum":["top","bottom"]}},"required":["field_key","order"],"additionalProperties":false}},{"type":"null"}],"description":"Sorting configuration for records in this view"},"filters":{"anyOf":[{"$ref":"#/components/schemas/TableRecordFiltersGroup"},{"type":"null"}],"description":"Filter conditions applied to records in this view"},"created_at":{"type":"string","description":"Timestamp when view was created"}},"required":["id","table_id","workspace_id","name","description","position","field_config","sort","filters","created_at"],"additionalProperties":false},"delete_v1_records_record_id_comments_comment_id_Response":{"type":"object","properties":{"success":{"type":"boolean"}},"required":["success"],"additionalProperties":false},"delete_v1_record_data_templates_record_data_template_id_Response":{"type":"object","properties":{"success":{"type":"boolean"}},"required":["success"],"additionalProperties":false},"delete_v1_tables_table_id_Response":{"type":"object","properties":{"id":{"type":"string"},"deleted":{"type":"boolean"}},"required":["id","deleted"],"additionalProperties":false},"delete_v1_tables_table_id_fields_field_key_Response":{"type":"object","properties":{"deleted":{"type":"boolean"},"field_key":{"type":"string"},"cleaned_up":{"description":"Cleanup statistics","type":"object","properties":{"views":{"type":"number","description":"Number of views updated"},"fields":{"type":"number","description":"Number of dependent fields deleted"},"records":{"type":"number","description":"Number of records with field data cleaned"}},"required":["views","fields","records"],"additionalProperties":false}},"required":["deleted","field_key"],"additionalProperties":false},"delete_v1_tables_table_id_records_Response":{"type":"object","properties":{"ids":{"type":"array","items":{"type":"string"}},"deleted":{"type":"boolean"},"workflow_messages":{"type":"array","items":{"type":"object","properties":{"table_workflow_id":{"type":"string","description":"tbw_* binding that emitted the message."},"workflow_name":{"type":"string","description":"Human name of the workflow at execution time."},"event":{"type":"string","enum":["before_create","after_create","before_update","after_update","before_delete","after_delete"],"description":"Lifecycle event that produced the message. Only before_* events can surface here."},"record_id":{"type":"string","description":"Record that triggered the workflow. Lets the UI scope the message to a specific row in bulk responses."},"message":{"type":"string","description":"Author-provided text from the workflow's return.message."}},"required":["table_workflow_id","workflow_name","event","record_id","message"],"additionalProperties":false},"description":"Non-blocking messages emitted by before_delete workflows that exited with status=\"success\" and a non-empty `message`. Empty when no workflow returned a message."}},"required":["ids","deleted","workflow_messages"],"additionalProperties":false},"delete_v1_tables_table_id_workflows_table_workflow_id_Response":{"type":"object","properties":{"table_workflow_id":{"type":"string"},"table_id":{"type":"string"}},"required":["table_workflow_id","table_id"],"additionalProperties":false},"delete_v1_views_view_id_Response":{"type":"object","properties":{"success":{"type":"boolean"}},"required":["success"],"additionalProperties":false},"post_v1_views_view_id_export_csv_Response":{"type":"object","properties":{"file_id":{"type":"string"},"filename":{"type":"string"}},"required":["file_id","filename"],"additionalProperties":false},"post_table_table_id_export_excel_Response":{"type":"object","properties":{"url":{"type":"string"},"filename":{"type":"string"}},"required":["url","filename"],"additionalProperties":false},"post_v1_views_view_id_export_xlsx_Response":{"type":"object","properties":{"url":{"type":"string"},"filename":{"type":"string"}},"required":["url","filename"],"additionalProperties":false},"post_v1_tables_table_id_records_find_position_Response":{"type":"object","properties":{"position":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]}},"required":["position"],"additionalProperties":false},"get_v1_explorer_Response":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"position":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"views":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"owner_member_id":{"type":"string"},"visible_to":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["member","group"],"description":"Principal kind that may see the view: an individual member or a member group"},"id":{"type":"string","description":"Member ID (type=member) or member-group ID (type=group)"}},"required":["type","id"],"additionalProperties":false}},{"type":"null"}]},"hidden":{"type":"boolean"}},"required":["id","name","owner_member_id","hidden"],"additionalProperties":false}},"owner_member_id":{"type":"string"},"package_apps":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"],"additionalProperties":false}}},"required":["id","name","views","owner_member_id"],"additionalProperties":false}},"get_v1_tables_table_id_fields_field_key_dependencies_Response":{"type":"object","properties":{"field_key":{"type":"string","description":"Key of the field being analyzed"},"field_name":{"type":"string","description":"Name of the field being analyzed"},"table_id":{"type":"string","description":"ID of the table containing the field"},"dependencies":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["view_filter","view_private_filter","view_sort","view_summary","view_field_config","table_colors","formula_reference","rollup_source","lookup_source","lookup_target","link_display","app_component","app_data_source","record_locked_field"],"description":"Type of dependency"},"entity_type":{"type":"string","enum":["view","field","app","record","table"],"description":"Type of entity that has the dependency"},"entity_id":{"type":"string","description":"ID of the dependent entity"},"entity_name":{"type":"string","description":"Name of the dependent entity"},"details":{"description":"Additional details about the dependency","type":"string"}},"required":["type","entity_type","entity_id","entity_name"],"additionalProperties":false},"description":"All dependencies found"},"can_auto_cleanup":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["view_filter","view_private_filter","view_sort","view_summary","view_field_config","table_colors","formula_reference","rollup_source","lookup_source","lookup_target","link_display","app_component","app_data_source","record_locked_field"],"description":"Type of dependency"},"entity_type":{"type":"string","enum":["view","field","app","record","table"],"description":"Type of entity that has the dependency"},"entity_id":{"type":"string","description":"ID of the dependent entity"},"entity_name":{"type":"string","description":"Name of the dependent entity"},"details":{"description":"Additional details about the dependency","type":"string"}},"required":["type","entity_type","entity_id","entity_name"],"additionalProperties":false},"description":"Dependencies that can be automatically cleaned up"},"will_break":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["view_filter","view_private_filter","view_sort","view_summary","view_field_config","table_colors","formula_reference","rollup_source","lookup_source","lookup_target","link_display","app_component","app_data_source","record_locked_field"],"description":"Type of dependency"},"entity_type":{"type":"string","enum":["view","field","app","record","table"],"description":"Type of entity that has the dependency"},"entity_id":{"type":"string","description":"ID of the dependent entity"},"entity_name":{"type":"string","description":"Name of the dependent entity"},"details":{"description":"Additional details about the dependency","type":"string"}},"required":["type","entity_type","entity_id","entity_name"],"additionalProperties":false},"description":"Dependencies that will cause errors after deletion"},"requires_manual_action":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["view_filter","view_private_filter","view_sort","view_summary","view_field_config","table_colors","formula_reference","rollup_source","lookup_source","lookup_target","link_display","app_component","app_data_source","record_locked_field"],"description":"Type of dependency"},"entity_type":{"type":"string","enum":["view","field","app","record","table"],"description":"Type of entity that has the dependency"},"entity_id":{"type":"string","description":"ID of the dependent entity"},"entity_name":{"type":"string","description":"Name of the dependent entity"},"details":{"description":"Additional details about the dependency","type":"string"}},"required":["type","entity_type","entity_id","entity_name"],"additionalProperties":false},"description":"Dependencies that may require user attention"}},"required":["field_key","field_name","table_id","dependencies","can_auto_cleanup","will_break","requires_manual_action"],"additionalProperties":false},"get_v1_records_record_id_comments_Response":{"type":"array","items":{"$ref":"#/components/schemas/patch_v1_apps_app_id_records_record_id_comments_comment_id_Response"}},"get_v1_record_data_templates_record_data_template_id_Response":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the record data template"},"name":{"type":"string","description":"Display name of the record data template"},"description":{"type":"string","description":"Description of the record data template"},"table_id":{"type":"string","description":"ID of the table this record template belongs to"},"data":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{},"description":"The data of the record template. The key is the Field key."}},"required":["id","name","description","table_id","data"],"additionalProperties":false},"get_v1_tables_table_id_record_data_templates_Response":{"type":"array","items":{"$ref":"#/components/schemas/patch_v1_record_data_templates_record_data_template_id_Response"}},"get_v1_tables_table_id_Response":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the table"},"workspace_id":{"type":"string","description":"ID of the workspace this table belongs to"},"name":{"type":"string","description":"Display name of the table"},"description":{"type":"string","description":"Description of the table's purpose"},"position":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Display ordering index for the table. Lower numbers are shown first. "},"fields":{"type":"array","items":{"$ref":"#/components/schemas/patch_v1_tables_table_id_fields_field_key_Response"},"description":"Array of field definitions for this table"},"workflows":{"description":"Workflows attached to this table that fire around record mutations. before_* run synchronously and may reject; after_* run after commit and do not block.","type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Unique table-workflow binding ID (tbw_ prefix)"},"name":{"type":"string","description":"Human-readable name"},"description":{"type":"string","description":"Description of what this workflow does"},"enabled":{"type":"boolean","description":"Whether this workflow is active"},"event":{"type":"string","enum":["before_create","after_create","before_update","after_update","before_delete","after_delete"],"description":"Lifecycle event that fires this workflow. before_* runs synchronously and may reject the mutation; after_* runs after commit and does not block."},"workflow_id":{"type":"string","description":"ID of the workflow row that owns this binding's steps. The workflow's steps_v2 is the source of truth for the AST."},"if":{"description":"Optional pre-execution gate. Evaluated against the trigger context (record / prev_record / changes / runtime); the workflow fires only when truthy. Skip gating means the workflow always fires.","anyOf":[{},{"type":"null"}]},"created_at":{"type":"string","description":"When the binding was created"},"updated_at":{"type":"string","description":"When the binding was last modified"},"archived_at":{"description":"Set when the binding was removed (soft-delete). An archived binding never fires and is hidden from active listings, but is restorable; null/absent = active.","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","description","enabled","event","workflow_id","created_at","updated_at"],"additionalProperties":false}},"private_filters":{"description":"Row-level private filters AND'd to every query as a security boundary (admin bypass)","anyOf":[{"$ref":"#/components/schemas/TableRecordFiltersGroup"},{"type":"null"}]},"colors":{"description":"Color rules for styling records based on filter conditions","anyOf":[{"type":"array","items":{"type":"object","properties":{"filters":{"anyOf":[{"$ref":"#/components/schemas/TableRecordFiltersGroup"},{"type":"null"}],"description":"The filter conditions that determine when this color rule applies. Null means no filtering."},"color":{"type":"string","enum":["red","orange","amber","yellow","lime","green","emerald","teal","cyan","sky","blue","indigo","violet","purple","fuchsia","pink","rose","slate","gray","zinc","neutral","stone"],"description":"The color to apply to records matching the filters."}},"required":["filters","color"],"additionalProperties":false}},{"type":"null"}]},"approvers":{"description":"Principals (members, groups, or the organization) who review locked-record change requests on this table. Null/empty = organization admins review. The requester never reviews their own request.","anyOf":[{"type":"array","items":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","const":"member","description":"Principal type: individual member"},"id":{"type":"string","description":"Member ID"}},"required":["type","id"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"member_group","description":"Principal type: group of members"},"id":{"type":"string","description":"Member group ID"}},"required":["type","id"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"organization","description":"Principal type: all members in organization"},"id":{"type":"string","description":"Organization ID"}},"required":["type","id"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"public","description":"Principal type: anyone, including unauthenticated visitors"},"id":{"type":"string","const":"public","description":"Always the `public` sentinel — no entity"}},"required":["type","id"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"invitation","description":"Principal type: pending invitation (not yet accepted)"},"id":{"type":"string","description":"Invitation ID"}},"required":["type","id"],"additionalProperties":false}]}},{"type":"null"}]},"created_at":{"type":"string","description":"Timestamp when table was created"}},"required":["id","workspace_id","name","description","fields","created_at"],"additionalProperties":false},"get_v1_tables_table_id_comments_Response":{"type":"array","items":{"$ref":"#/components/schemas/patch_v1_apps_app_id_records_record_id_comments_comment_id_Response"}},"get_v1_records_record_id_Response":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the record"},"table_id":{"type":"string","description":"ID of the table this record belongs to"},"workspace_id":{"type":"string","description":"ID of the workspace this record belongs to"},"data":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{},"description":"The data of the record. The key is the Field key."},"locked":{"description":"Whether the entire record is locked from editing","type":"boolean"},"draft":{"description":"Whether the record is an unsubmitted draft — UI-only in-progress state, not yet a real row. Row-visibility scoping is enforced at submit, not while a draft is being filled in.","type":"boolean"},"updated_at":{"type":"string","description":"Timestamp of last update"},"created_at":{"type":"string","description":"Timestamp when record was created"}},"required":["id","table_id","workspace_id","data","updated_at","created_at"],"additionalProperties":false},"get_v1_records_record_id_logs_Response":{"type":"object","properties":{"logs":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"organization_id":{"type":"string"},"workspace_id":{"anyOf":[{"type":"string"},{"type":"null"}]},"action":{"type":"string","enum":["record.create","record.update","record.delete","record.delete_permanent","record.restore","record.lock","record.unlock","record.comment.create","record.comment.update","record.comment.delete","table.create","table.update","table.archive","table.restore","field.create","field.update","field.delete","view.create","view.update","view.archive","view.restore","iam.role_binding.assign","iam.role_binding.update","iam.role_binding.remove","iam.ownership.transfer","iam.group.create","iam.group.update","iam.group.delete","iam.member.create_managed","iam.member.reset_password","iam.member.update_name","iam.invitation.revoke","iam.invitation.update","app.create","app.update","app.archive","app.install","app.uninstall","app.upgrade","app.eject","app.adopt","app.rebind_role","app.reset","app.config_update","app.public_password.set","app.public_password.clear","package.publish","package.set_official","package.yank","package.retire","package.content_install","package.content_upgrade","package.content_uninstall","skill.create","skill.update","skill.archive","automation.create","automation.update","automation.archive","document_template.create","document_template.update","document_template.archive","instruction.create","instruction.update","instruction.archive","instruction.restore","knowledge_doc.create","knowledge_doc.update","knowledge_doc.archive","knowledge_doc.restore","plan_period.create","plan_period.activate","plan_period.upgrade","plan_period.renew","plan_period.cancel_renewal","plan_period.resume_renewal","plan_period.set_overage","plan_period.downgrade","plan_period.expire","plan_period.trial","plan_period.suspend","plan_period.unsuspend","scheduled_change.create","scheduled_change.cancel","scheduled_change.apply","credit_grant.create","credit_grant.revoke","billing_invoice.attach","billing_invoice.remove","billing_invoice.set_buyer","billing_party.set","api_key.create","api_key.update","api_key.revoke","member.data_export","member.erasure_requested","member.erasure_cancelled","member.erasure_executed","organization.renamed","member.invited","member.accepted","member.removed","member.restored","member.role_changed","member.email_claimed","session.revoked","support.access"]},"actor_type":{"type":"string","enum":["member","api_key","system","public"]},"actor_id":{"type":"string"},"resource_type":{"type":"string","enum":["record","table","field","view","role_binding","group","organization","member","invitation","app","package","skill","automation","document_template","instruction","knowledge_doc","plan_period","scheduled_plan_change","credit_grant","billing_invoice","billing_party","api_key","session"]},"resource_id":{"type":"string"},"parent_resource_type":{"anyOf":[{"type":"string","enum":["record","table","field","view","role_binding","group","organization","member","invitation","app","package","skill","automation","document_template","instruction","knowledge_doc","plan_period","scheduled_plan_change","credit_grant","billing_invoice","billing_party","api_key","session"]},{"type":"null"}]},"parent_resource_id":{"anyOf":[{"type":"string"},{"type":"null"}]},"change_origin":{"anyOf":[{"oneOf":[{"type":"object","properties":{"type":{"type":"string","const":"member","description":"Change originated from a member"},"member_id":{"type":"string","description":"Member ID of the user who modified"},"member_session_id":{"description":"Session ID of the member at the time of modification","type":"string"},"app_id":{"description":"ID of the app through which the member acted","type":"string"}},"required":["type","member_id"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"chat_agent","description":"Change originated from chat agent"},"on_behalf_member_id":{"type":"string","description":"ID of the member on whose behalf the chat agent acted"},"tool_call_id":{"description":"ID of the tool call that the chat agent performed","type":"string"}},"required":["type","on_behalf_member_id"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"button","description":"Change originated from a button click"},"table_id":{"type":"string","description":"ID of the table containing the button"},"record_id":{"type":"string","description":"ID of the record where the button was clicked"},"field_key":{"type":"string","description":"Key of the button field"},"clicked_by":{"type":"string","description":"ID of the member who clicked the button"},"workflow_id":{"description":"ID of the workflow that executed","type":"string"},"workflow_execution_id":{"description":"ID of the workflow execution instance","type":"string"}},"required":["type","table_id","record_id","field_key","clicked_by"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"submit_record","description":"Change originated from a draft record submission"},"table_id":{"type":"string","description":"ID of the table containing the record"},"record_id":{"type":"string","description":"ID of the record being submitted"},"submitted_by":{"type":"string","description":"ID of the member who submitted"},"workflow_id":{"description":"ID of the workflow that executed","type":"string"},"workflow_execution_id":{"description":"ID of the workflow execution instance","type":"string"}},"required":["type","table_id","record_id","submitted_by"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"app_action","description":"Change originated from an app action"},"app_id":{"type":"string","description":"ID of the app containing the action"},"action_id":{"type":"string","description":"ID of the action that was triggered"},"triggered_by":{"type":"string","description":"ID of the member who triggered the action"},"workflow_id":{"description":"ID of the workflow that executed","type":"string"},"workflow_execution_id":{"description":"ID of the workflow execution instance","type":"string"}},"required":["type","app_id","action_id","triggered_by"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"app_workflow","description":"Change originated from a custom-code app calling useWorkflow(alias). The alias resolves through apps.workflows under the app's IAM principal — no ui.actions[] lookup, no record-level button binding."},"app_id":{"type":"string","description":"ID of the app that called the workflow"},"alias":{"type":"string","description":"Alias used in the app's manifest"},"triggered_by":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"ID of the member who triggered the call. Null when an anonymous visitor triggered it through a publicly-shared app — there is no member."},"workflow_id":{"description":"ID of the workflow that executed","type":"string"},"workflow_execution_id":{"description":"ID of the workflow execution instance","type":"string"}},"required":["type","app_id","alias","triggered_by"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"app_agent","description":"Change originated from a custom-code app running an agent via useAgentRun(alias). The alias resolves through apps.agents under the app's IAM principal; the agent's tools mutate records under that authority, distinct from a run-to-completion app_workflow."},"app_id":{"type":"string","description":"ID of the app that ran the agent"},"alias":{"type":"string","description":"Agent alias in the app's manifest"},"triggered_by":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"ID of the member who started the run. Null when an anonymous visitor started it through a publicly-shared app — there is no member."},"run_id":{"description":"ID of the app_agent_runs row for this run","type":"string"}},"required":["type","app_id","alias","triggered_by"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"automation","description":"Change originated from an automation (trigger + workflow)"},"trigger_type":{"description":"Type of the trigger that initiated this automation","type":"string"},"trigger_id":{"description":"ID of the trigger that initiated this automation","type":"string"},"workflow_id":{"description":"ID of the workflow that executed","type":"string"},"workflow_execution_id":{"description":"ID of the workflow execution instance","type":"string"},"automation_id":{"description":"[Legacy] Use trigger_id instead","type":"string"},"automation_execution_id":{"description":"[Legacy] Use workflow_execution_id instead","type":"string"}},"required":["type"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"system","description":"Change originated from system (Human system administrator/engineer)"},"author":{"type":"string","description":"Name of the system administrator/engineer"}},"required":["type","author"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"table_workflow","description":"Change originated from a table workflow execution"},"table_id":{"type":"string","description":"ID of the table whose workflow fired"},"table_workflow_id":{"type":"string","description":"ID of the binding entry on the table"},"event":{"type":"string","description":"Lifecycle event that fired the workflow (before_create, after_update, etc.)"},"triggered_by_member_id":{"description":"Member who initiated the write that fired this workflow (or the head of the chain when fired by another workflow). Null when fired from a non-member origin (recurring schedule, system).","anyOf":[{"type":"string"},{"type":"null"}]},"workflow_id":{"description":"ID of the workflow procedure that executed","type":"string"},"workflow_execution_id":{"description":"ID of the workflow execution instance","type":"string"}},"required":["type","table_id","table_workflow_id","event"],"additionalProperties":false}]},{"type":"null"}]},"details":{"anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"null"}]},"ip_address":{"anyOf":[{"type":"string"},{"type":"null"}]},"user_agent":{"anyOf":[{"type":"string"},{"type":"null"}]},"request_id":{"anyOf":[{"type":"string"},{"type":"null"}]},"session_id":{"anyOf":[{"type":"string"},{"type":"null"}]},"created_at":{"type":"string"}},"required":["id","organization_id","workspace_id","action","actor_type","actor_id","resource_type","resource_id","parent_resource_type","parent_resource_id","change_origin","details","ip_address","user_agent","request_id","session_id","created_at"],"additionalProperties":false}}},"required":["logs"],"additionalProperties":false},"post_v1_tables_table_id_records_by_ids_Response":{"type":"object","properties":{"records":{"type":"array","items":{"$ref":"#/components/schemas/get_v1_records_record_id_Response"}}},"required":["records"],"additionalProperties":false},"get_v1_tables_table_id_references_Response":{"type":"object","properties":{"table":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string","enum":["app","workflow"]},"id":{"type":"string"},"name":{"type":"string"}},"required":["kind","id","name"],"additionalProperties":false}},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string","enum":["app","workflow"]},"id":{"type":"string"},"name":{"type":"string"}},"required":["kind","id","name"],"additionalProperties":false}}}},"required":["table","fields"],"additionalProperties":false},"get_v1_tables_table_id_views_view_id_Response":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the view"},"table_id":{"type":"string","description":"ID of the table this view displays"},"workspace_id":{"type":"string","description":"ID of the workspace this view belongs to"},"name":{"type":"string","description":"Display name of the view"},"description":{"type":"string","description":"Description of the view's purpose"},"visible_to":{"description":"Sidebar declutter list (NOT access control). null/absent = every member with access to the parent table sees this view; a non-empty list of members/groups restricts who sees it in the explorer. [] is normalized to null on write.","anyOf":[{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["member","group"],"description":"Principal kind that may see the view: an individual member or a member group"},"id":{"type":"string","description":"Member ID (type=member) or member-group ID (type=group)"}},"required":["type","id"],"additionalProperties":false}},{"type":"null"}]},"position":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Display ordering index for the view. Lower numbers are shown first. Use incremental values with gaps (100, 200, 300) instead of consecutive numbers (1, 2, 3) to enable efficient reordering without updating multiple records. Example: To insert between 100 and 200, use 150."},"frozen_columns":{"description":"Number of columns to freeze. Frozen columns are not scrollable.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"summary":{"description":"Map of field keys to summary operations.","anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"anyOf":[{"type":"object","properties":{"operation":{"type":"string","description":"Operation to perform on the field"},"field_key":{"type":"string","description":"Field key to display in the summary row"}},"required":["operation","field_key"],"additionalProperties":false},{"type":"null"}]}},{"type":"null"}]},"default_record_data_template_id":{"description":"ID of the record template to use as the default record initial data","anyOf":[{"type":"string"},{"type":"null"}]},"field_config":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"description":"Field key"},"visibility":{"type":"string","enum":["visible","hidden"],"description":"Field visibility state: 'visible' = shown to everyone, 'hidden' = not shown by default but members can toggle"},"width":{"type":"number"}},"required":["key","visibility"],"additionalProperties":false},"description":"Ordered array of field config entries. Order = display order, visibility = per-entry. Fields not listed are hidden."},"sort":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"field_key":{"type":"string","description":"Field key to sort by"},"order":{"anyOf":[{"type":"string","enum":["asc","desc"]},{"type":"null"}],"description":"Sort order: 'asc' for ascending, 'desc' for descending"},"blank_position":{"description":"Blank position: 'top' for top, 'bottom' for bottom","type":"string","enum":["top","bottom"]}},"required":["field_key","order"],"additionalProperties":false}},{"type":"null"}],"description":"Sorting configuration for records in this view"},"filters":{"anyOf":[{"$ref":"#/components/schemas/TableRecordFiltersGroup"},{"type":"null"}],"description":"Filter conditions applied to records in this view"},"created_at":{"type":"string","description":"Timestamp when view was created"}},"required":["id","table_id","workspace_id","name","description","position","field_config","sort","filters","created_at"],"additionalProperties":false},"get_v1_tables_Response":{"type":"array","items":{"$ref":"#/components/schemas/patch_v1_tables_table_id_Response"}},"get_v1_views_view_id_Response":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the view"},"table_id":{"type":"string","description":"ID of the table this view displays"},"workspace_id":{"type":"string","description":"ID of the workspace this view belongs to"},"name":{"type":"string","description":"Display name of the view"},"description":{"type":"string","description":"Description of the view's purpose"},"visible_to":{"description":"Sidebar declutter list (NOT access control). null/absent = every member with access to the parent table sees this view; a non-empty list of members/groups restricts who sees it in the explorer. [] is normalized to null on write.","anyOf":[{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["member","group"],"description":"Principal kind that may see the view: an individual member or a member group"},"id":{"type":"string","description":"Member ID (type=member) or member-group ID (type=group)"}},"required":["type","id"],"additionalProperties":false}},{"type":"null"}]},"position":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Display ordering index for the view. Lower numbers are shown first. Use incremental values with gaps (100, 200, 300) instead of consecutive numbers (1, 2, 3) to enable efficient reordering without updating multiple records. Example: To insert between 100 and 200, use 150."},"frozen_columns":{"description":"Number of columns to freeze. Frozen columns are not scrollable.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"summary":{"description":"Map of field keys to summary operations.","anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"anyOf":[{"type":"object","properties":{"operation":{"type":"string","description":"Operation to perform on the field"},"field_key":{"type":"string","description":"Field key to display in the summary row"}},"required":["operation","field_key"],"additionalProperties":false},{"type":"null"}]}},{"type":"null"}]},"default_record_data_template_id":{"description":"ID of the record template to use as the default record initial data","anyOf":[{"type":"string"},{"type":"null"}]},"field_config":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"description":"Field key"},"visibility":{"type":"string","enum":["visible","hidden"],"description":"Field visibility state: 'visible' = shown to everyone, 'hidden' = not shown by default but members can toggle"},"width":{"type":"number"}},"required":["key","visibility"],"additionalProperties":false},"description":"Ordered array of field config entries. Order = display order, visibility = per-entry. Fields not listed are hidden."},"sort":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"field_key":{"type":"string","description":"Field key to sort by"},"order":{"anyOf":[{"type":"string","enum":["asc","desc"]},{"type":"null"}],"description":"Sort order: 'asc' for ascending, 'desc' for descending"},"blank_position":{"description":"Blank position: 'top' for top, 'bottom' for bottom","type":"string","enum":["top","bottom"]}},"required":["field_key","order"],"additionalProperties":false}},{"type":"null"}],"description":"Sorting configuration for records in this view"},"filters":{"anyOf":[{"$ref":"#/components/schemas/TableRecordFiltersGroup"},{"type":"null"}],"description":"Filter conditions applied to records in this view"},"created_at":{"type":"string","description":"Timestamp when view was created"}},"required":["id","table_id","workspace_id","name","description","position","field_config","sort","filters","created_at"],"additionalProperties":false},"post_v1_tables_table_id_views_view_id_summary_Response":{"type":"object","properties":{"results":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"object","properties":{"value":{"anyOf":[{"type":"number"},{"type":"string"}]}},"required":["value"],"additionalProperties":false}}},"required":["results"],"additionalProperties":false},"post_v1_views_view_id_hide_Response":{"type":"object","properties":{"success":{"type":"boolean"}},"required":["success"],"additionalProperties":false},"get_v1_tables_table_id_archived_views_Response":{"type":"array","items":{"$ref":"#/components/schemas/patch_v1_views_view_id_Response"}},"post_v1_tables_table_id_records_lock_Response":{"type":"array","items":{"$ref":"#/components/schemas/get_v1_records_record_id_Response"}},"post_v1_tables_table_id_records_record_id_buttons_field_key_press_Response":{"type":"object","properties":{"execution_id":{"type":"string"},"files":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the processed file"},"filename":{"type":"string","description":"Original filename of the uploaded file"},"mime_type":{"type":"string","description":"MIME type of the file (e.g., 'image/png', 'application/pdf')"},"url":{"description":"Stable file serving URL, resolved at serving time","type":"string"},"thumbnail_url":{"description":"Thumbnail URL for image files, resolved at serving time","type":"string"},"preview_url":{"description":"Preview URL for legacy Excel files, resolved at serving time","type":"string"},"provider":{"type":"string","description":"Storage provider name (e.g., 'aws', 'gcs')"},"file_storage_key":{"type":"string","description":"Storage key/path where the file is stored"},"workspace_id":{"type":"string","description":"ID of the workspace this file belongs to"},"size":{"description":"Byte size of the stored object (null until backfilled)","anyOf":[{"type":"number"},{"type":"null"}]},"created_at":{"type":"string","description":"Timestamp when file was uploaded"},"metadata":{"description":"Additional metadata about the file"},"data":{"description":"File-type-specific data (e.g., {width, height, orientation} for images)"}},"required":["id","filename","mime_type","provider","file_storage_key","workspace_id","created_at","metadata","data"],"additionalProperties":false}},"status":{"type":"string","enum":["success","error"]},"message":{"type":"string"}},"additionalProperties":false},"post_v1_tables_table_id_records_purge_Response":{"type":"object","properties":{"ids":{"type":"array","items":{"type":"string"}},"deleted":{"type":"boolean"}},"required":["ids","deleted"],"additionalProperties":false},"post_v1_tables_table_id_records_query_Response":{"type":"object","properties":{"records":{"type":"array","items":{"$ref":"#/components/schemas/get_v1_records_record_id_Response"}},"total":{"type":"number"}},"required":["records","total"],"additionalProperties":false},"post_v1_tables_reorder_Response":{"type":"array","items":{"$ref":"#/components/schemas/patch_v1_tables_table_id_Response"}},"post_v1_tables_table_id_views_reorder_Response":{"type":"array","items":{"$ref":"#/components/schemas/patch_v1_views_view_id_Response"}},"post_v1_tables_table_id_fields_field_key_repoint_Response":{"type":"object","properties":{"apps_updated":{"type":"array","items":{"type":"string"}},"workflows_updated":{"type":"array","items":{"type":"string"}},"triggers_updated":{"type":"array","items":{"type":"string"}}},"required":["apps_updated","workflows_updated","triggers_updated"],"additionalProperties":false},"post_v1_records_resolve_Response":{"type":"object","properties":{"records":{"type":"array","items":{"type":"object","properties":{"record_id":{"type":"string"},"table_id":{"type":"string"},"table_name":{"type":"string"},"record_label":{"type":"string"}},"required":["record_id","table_id","table_name","record_label"],"additionalProperties":false}},"unresolved_ids":{"type":"array","items":{"type":"string"}}},"required":["records","unresolved_ids"],"additionalProperties":false},"post_v1_tables_table_id_records_restore_Response":{"type":"array","items":{"$ref":"#/components/schemas/get_v1_records_record_id_Response"}},"post_v1_views_view_id_restore_Response":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the view"},"table_id":{"type":"string","description":"ID of the table this view displays"},"workspace_id":{"type":"string","description":"ID of the workspace this view belongs to"},"name":{"type":"string","description":"Display name of the view"},"description":{"type":"string","description":"Description of the view's purpose"},"visible_to":{"description":"Sidebar declutter list (NOT access control). null/absent = every member with access to the parent table sees this view; a non-empty list of members/groups restricts who sees it in the explorer. [] is normalized to null on write.","anyOf":[{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["member","group"],"description":"Principal kind that may see the view: an individual member or a member group"},"id":{"type":"string","description":"Member ID (type=member) or member-group ID (type=group)"}},"required":["type","id"],"additionalProperties":false}},{"type":"null"}]},"position":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Display ordering index for the view. Lower numbers are shown first. Use incremental values with gaps (100, 200, 300) instead of consecutive numbers (1, 2, 3) to enable efficient reordering without updating multiple records. Example: To insert between 100 and 200, use 150."},"frozen_columns":{"description":"Number of columns to freeze. Frozen columns are not scrollable.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"summary":{"description":"Map of field keys to summary operations.","anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"anyOf":[{"type":"object","properties":{"operation":{"type":"string","description":"Operation to perform on the field"},"field_key":{"type":"string","description":"Field key to display in the summary row"}},"required":["operation","field_key"],"additionalProperties":false},{"type":"null"}]}},{"type":"null"}]},"default_record_data_template_id":{"description":"ID of the record template to use as the default record initial data","anyOf":[{"type":"string"},{"type":"null"}]},"field_config":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"description":"Field key"},"visibility":{"type":"string","enum":["visible","hidden"],"description":"Field visibility state: 'visible' = shown to everyone, 'hidden' = not shown by default but members can toggle"},"width":{"type":"number"}},"required":["key","visibility"],"additionalProperties":false},"description":"Ordered array of field config entries. Order = display order, visibility = per-entry. Fields not listed are hidden."},"sort":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"field_key":{"type":"string","description":"Field key to sort by"},"order":{"anyOf":[{"type":"string","enum":["asc","desc"]},{"type":"null"}],"description":"Sort order: 'asc' for ascending, 'desc' for descending"},"blank_position":{"description":"Blank position: 'top' for top, 'bottom' for bottom","type":"string","enum":["top","bottom"]}},"required":["field_key","order"],"additionalProperties":false}},{"type":"null"}],"description":"Sorting configuration for records in this view"},"filters":{"anyOf":[{"$ref":"#/components/schemas/TableRecordFiltersGroup"},{"type":"null"}],"description":"Filter conditions applied to records in this view"},"created_at":{"type":"string","description":"Timestamp when view was created"}},"required":["id","table_id","workspace_id","name","description","position","field_config","sort","filters","created_at"],"additionalProperties":false},"post_v1_tables_table_id_draft_records_submit_Response":{"type":"object","properties":{"records":{"type":"array","items":{"$ref":"#/components/schemas/get_v1_records_record_id_Response"}},"status":{"type":"string","enum":["success","error"]},"message":{"type":"string"},"workflow_messages":{"type":"array","items":{"type":"object","properties":{"table_workflow_id":{"type":"string","description":"tbw_* binding that emitted the message."},"workflow_name":{"type":"string","description":"Human name of the workflow at execution time."},"event":{"type":"string","enum":["before_create","after_create","before_update","after_update","before_delete","after_delete"],"description":"Lifecycle event that produced the message. Only before_* events can surface here."},"record_id":{"type":"string","description":"Record that triggered the workflow. Lets the UI scope the message to a specific row in bulk responses."},"message":{"type":"string","description":"Author-provided text from the workflow's return.message."}},"required":["table_workflow_id","workflow_name","event","record_id","message"],"additionalProperties":false},"description":"Non-blocking messages emitted by before_create workflows that exited with status=\"success\" and a non-empty `message`. Empty when no workflow returned a message."}},"required":["records"],"additionalProperties":false},"post_v1_views_view_id_unhide_Response":{"type":"object","properties":{"success":{"type":"boolean"}},"required":["success"],"additionalProperties":false},"post_v1_tables_table_id_records_unlock_Response":{"type":"array","items":{"$ref":"#/components/schemas/get_v1_records_record_id_Response"}},"patch_v1_records_record_id_comments_comment_id_Response":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the comment"},"record_id":{"type":"string","description":"ID of the record this comment belongs to"},"table_id":{"type":"string","description":"ID of the table this comment belongs to"},"member_id":{"type":"string","description":"ID of the member who created this comment"},"content":{"type":"string","minLength":0,"maxLength":10000,"description":"Comment text content (0-10,000 characters)"},"files":{"description":"Array of files attached to this comment","anyOf":[{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the file"},"file_storage_key":{"description":"Storage key for the file","type":"string"},"filename":{"type":"string","description":"Original filename"},"mime_type":{"type":"string","description":"MIME type of the file"},"url":{"description":"Public URL for the file, resolved at serving time","type":"string"},"thumbnail_url":{"description":"Thumbnail URL for image files, resolved at serving time","type":"string"},"preview_url":{"description":"Preview URL for legacy Excel files, resolved at serving time","type":"string"},"size":{"description":"Byte size, resolved at serving time from the file object (null/absent until backfilled)","anyOf":[{"type":"number"},{"type":"null"}]},"created_at":{"description":"Upload timestamp, resolved at serving time from the file object","type":"string"}},"required":["id","filename","mime_type"],"additionalProperties":false}},{"type":"null"}]},"workspace_id":{"type":"string","description":"ID of the workspace this comment belongs to"},"updated_at":{"type":"string","description":"Timestamp of last update"},"created_at":{"type":"string","description":"Timestamp when comment was created"}},"required":["id","record_id","table_id","member_id","content","workspace_id","updated_at","created_at"],"additionalProperties":false},"patch_v1_record_data_templates_record_data_template_id_Response":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the record data template"},"name":{"type":"string","description":"Display name of the record data template"},"description":{"type":"string","description":"Description of the record data template"},"table_id":{"type":"string","description":"ID of the table this record template belongs to"},"data":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{},"description":"The data of the record template. The key is the Field key."}},"required":["id","name","description","table_id","data"],"additionalProperties":false},"patch_v1_tables_table_id_Response":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the table"},"workspace_id":{"type":"string","description":"ID of the workspace this table belongs to"},"name":{"type":"string","description":"Display name of the table"},"description":{"type":"string","description":"Description of the table's purpose"},"position":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Display ordering index for the table. Lower numbers are shown first. "},"fields":{"type":"array","items":{"$ref":"#/components/schemas/patch_v1_tables_table_id_fields_field_key_Response"},"description":"Array of field definitions for this table"},"workflows":{"description":"Workflows attached to this table that fire around record mutations. before_* run synchronously and may reject; after_* run after commit and do not block.","type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Unique table-workflow binding ID (tbw_ prefix)"},"name":{"type":"string","description":"Human-readable name"},"description":{"type":"string","description":"Description of what this workflow does"},"enabled":{"type":"boolean","description":"Whether this workflow is active"},"event":{"type":"string","enum":["before_create","after_create","before_update","after_update","before_delete","after_delete"],"description":"Lifecycle event that fires this workflow. before_* runs synchronously and may reject the mutation; after_* runs after commit and does not block."},"workflow_id":{"type":"string","description":"ID of the workflow row that owns this binding's steps. The workflow's steps_v2 is the source of truth for the AST."},"if":{"description":"Optional pre-execution gate. Evaluated against the trigger context (record / prev_record / changes / runtime); the workflow fires only when truthy. Skip gating means the workflow always fires.","anyOf":[{},{"type":"null"}]},"created_at":{"type":"string","description":"When the binding was created"},"updated_at":{"type":"string","description":"When the binding was last modified"},"archived_at":{"description":"Set when the binding was removed (soft-delete). An archived binding never fires and is hidden from active listings, but is restorable; null/absent = active.","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","description","enabled","event","workflow_id","created_at","updated_at"],"additionalProperties":false}},"private_filters":{"description":"Row-level private filters AND'd to every query as a security boundary (admin bypass)","anyOf":[{"$ref":"#/components/schemas/TableRecordFiltersGroup"},{"type":"null"}]},"colors":{"description":"Color rules for styling records based on filter conditions","anyOf":[{"type":"array","items":{"type":"object","properties":{"filters":{"anyOf":[{"$ref":"#/components/schemas/TableRecordFiltersGroup"},{"type":"null"}],"description":"The filter conditions that determine when this color rule applies. Null means no filtering."},"color":{"type":"string","enum":["red","orange","amber","yellow","lime","green","emerald","teal","cyan","sky","blue","indigo","violet","purple","fuchsia","pink","rose","slate","gray","zinc","neutral","stone"],"description":"The color to apply to records matching the filters."}},"required":["filters","color"],"additionalProperties":false}},{"type":"null"}]},"approvers":{"description":"Principals (members, groups, or the organization) who review locked-record change requests on this table. Null/empty = organization admins review. The requester never reviews their own request.","anyOf":[{"type":"array","items":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","const":"member","description":"Principal type: individual member"},"id":{"type":"string","description":"Member ID"}},"required":["type","id"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"member_group","description":"Principal type: group of members"},"id":{"type":"string","description":"Member group ID"}},"required":["type","id"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"organization","description":"Principal type: all members in organization"},"id":{"type":"string","description":"Organization ID"}},"required":["type","id"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"public","description":"Principal type: anyone, including unauthenticated visitors"},"id":{"type":"string","const":"public","description":"Always the `public` sentinel — no entity"}},"required":["type","id"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"invitation","description":"Principal type: pending invitation (not yet accepted)"},"id":{"type":"string","description":"Invitation ID"}},"required":["type","id"],"additionalProperties":false}]}},{"type":"null"}]},"created_at":{"type":"string","description":"Timestamp when table was created"}},"required":["id","workspace_id","name","description","fields","created_at"],"additionalProperties":false},"patch_v1_tables_table_id_fields_field_key_Response":{"oneOf":[{"type":"object","properties":{"key":{"type":"string","description":"Unique field key"},"name":{"type":"string","description":"Display name"},"description":{"type":"string","description":"Field description"},"confirm_before_update":{"description":"Show confirmation before AI updates","type":"boolean"},"type":{"type":"string","const":"number"},"format":{"type":"string","enum":["number","currency","percentage"]},"currency":{"description":"ISO 4217 code","type":"string"},"default_value":{"description":"Value pre-filled into a new record when none is supplied for this field. Applied on create only — existing records are never backfilled. null clears it.","anyOf":[{"type":"number"},{"type":"null"}]}},"required":["key","name","description","type","format"],"additionalProperties":false},{"type":"object","properties":{"key":{"type":"string","description":"Unique field key"},"name":{"type":"string","description":"Display name"},"description":{"type":"string","description":"Field description"},"confirm_before_update":{"description":"Show confirmation before AI updates","type":"boolean"},"type":{"type":"string","const":"text"},"unique":{"description":"Unique values required","type":"boolean"},"format":{"type":"string","enum":["text","link","markdown"]},"default_value":{"description":"Value pre-filled into a new record when none is supplied for this field. Applied on create only — existing records are never backfilled. null clears it.","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["key","name","description","type"],"additionalProperties":false},{"type":"object","properties":{"key":{"type":"string","description":"Unique field key"},"name":{"type":"string","description":"Display name"},"description":{"type":"string","description":"Field description"},"confirm_before_update":{"description":"Show confirmation before AI updates","type":"boolean"},"type":{"type":"string","const":"date"},"format":{"type":"string","enum":["date","datetime","date_range","datetime_range"]},"timezone":{"description":"IANA timezone","type":"string"},"derive_from":{"description":"Auto-populate from the row's system timestamp. `created_at` stamps once at insert time; `updated_at` re-stamps on every record edit. Derived fields are read-only — user-supplied values are silently ignored at write time, matching the formula/rollup/lookup pattern. Replaces the per-table after_create workflow pattern.","type":"string","enum":["created_at","updated_at"]},"default_value":{"description":"Value pre-filled into a new record when none is supplied for this field. Applied on create only — existing records are never backfilled. null clears it. A date string in the field's format.","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["key","name","description","type"],"additionalProperties":false},{"type":"object","properties":{"key":{"type":"string","description":"Unique field key"},"name":{"type":"string","description":"Display name"},"description":{"type":"string","description":"Field description"},"confirm_before_update":{"description":"Show confirmation before AI updates","type":"boolean"},"type":{"type":"string","const":"boolean"},"default_value":{"description":"Value pre-filled into a new record when none is supplied for this field. Applied on create only — existing records are never backfilled. null clears it.","anyOf":[{"type":"boolean"},{"type":"null"}]}},"required":["key","name","description","type"],"additionalProperties":false},{"type":"object","properties":{"key":{"type":"string","description":"Unique field key"},"name":{"type":"string","description":"Display name"},"description":{"type":"string","description":"Field description"},"confirm_before_update":{"description":"Show confirmation before AI updates","type":"boolean"},"type":{"type":"string","const":"select"},"options":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"},"color":{"type":"string","enum":["red","orange","amber","yellow","lime","green","emerald","teal","cyan","sky","blue","indigo","violet","purple","fuchsia","pink","rose","slate","gray","zinc","neutral","stone"]}},"required":["key","name","color"],"additionalProperties":false}},"multi":{"description":"Allow multiple selections","type":"boolean"},"default_value":{"description":"Value pre-filled into a new record when none is supplied for this field. Applied on create only — existing records are never backfilled. null clears it. Option key(s) — one for single-select.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]}},"required":["key","name","description","type","options"],"additionalProperties":false},{"type":"object","properties":{"key":{"type":"string","description":"Unique field key"},"name":{"type":"string","description":"Display name"},"description":{"type":"string","description":"Field description"},"confirm_before_update":{"description":"Show confirmation before AI updates","type":"boolean"},"type":{"type":"string","const":"select_member"},"multi":{"description":"Allow multiple selections","type":"boolean"},"default_value":{"description":"Value pre-filled into a new record when none is supplied for this field. Applied on create only — existing records are never backfilled. null clears it. Member ID(s) — one for single-select.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]}},"required":["key","name","description","type"],"additionalProperties":false},{"type":"object","properties":{"key":{"type":"string","description":"Unique field key"},"name":{"type":"string","description":"Display name"},"description":{"type":"string","description":"Field description"},"confirm_before_update":{"description":"Show confirmation before AI updates","type":"boolean"},"type":{"type":"string","const":"select_record_link","description":"Field type for linking to records in another table"},"table_id":{"type":"string","description":"ID of the target table that records can be linked to"},"display_field_keys":{"default":[],"description":"Field keys of the linked table shown as the link's display text and as the columns in the record picker. If empty, the picker shows all fields.","type":"array","items":{"type":"string"}},"display_field_widths":{"description":"Per-column widths in pixels for the record picker, keyed by linked-table field key. Missing keys fall back to the default column width.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"paired_field_key":{"description":"Key of the paired link field in the linked table. If set to a string, this indicates a bidirectional link where both tables can reference each other and data synchronizes in both directions. Both fields have paired_field_key pointing to each other. If set to null, explicitly disconnects the bidirectional link (clears paired_field_key on both sides). If undefined, no change is made to the existing paired_field_key.","type":"string"},"cardinality":{"description":"How many linked records this field can hold. Default 'many' (multi-select). 'one' = single-select; this side holds exactly one link to the partner. Requires paired_field_key. Two paired sides cannot both be 'one'.","type":"string","enum":["one","many"]}},"required":["key","name","description","type","table_id","display_field_keys"],"additionalProperties":false},{"type":"object","properties":{"key":{"type":"string","description":"Unique field key"},"name":{"type":"string","description":"Display name"},"description":{"type":"string","description":"Field description"},"confirm_before_update":{"description":"Show confirmation before AI updates","type":"boolean"},"type":{"type":"string","const":"rollup","description":"Field type for aggregating values from linked records (sum, avg, filled, earliest, etc.)"},"source_field_key":{"type":"string","description":"The field key of the select_record_link field to rollup from"},"aggregate_option":{"anyOf":[{"type":"object","properties":{"operation":{"type":"string","const":"count"},"field_key":{"type":"string"}},"required":["operation"],"additionalProperties":false},{"type":"object","properties":{"operation":{"type":"string","enum":["empty","filled","percent_empty","percent_filled","unique","percent_unique"]},"field_key":{"type":"string"}},"required":["operation","field_key"],"additionalProperties":false},{"type":"object","properties":{"operation":{"type":"string","enum":["empty","filled","percent_empty","percent_filled","unique","percent_unique","sum","avg","median","min","max","range"]},"field_key":{"type":"string"}},"required":["operation","field_key"],"additionalProperties":false},{"type":"object","properties":{"operation":{"type":"string","enum":["empty","filled","percent_empty","percent_filled","unique","percent_unique","earliest","latest","date_range"]},"field_key":{"type":"string"}},"required":["operation","field_key"],"additionalProperties":false},{"type":"object","properties":{"operation":{"type":"string","enum":["empty","filled","percent_empty","percent_filled","unique","percent_unique"]},"field_key":{"type":"string"}},"required":["operation","field_key"],"additionalProperties":false},{"type":"object","properties":{"operation":{"type":"string","enum":["empty","filled","percent_empty","percent_filled","unique","percent_unique"]},"field_key":{"type":"string"}},"required":["operation","field_key"],"additionalProperties":false},{"type":"object","properties":{"operation":{"type":"string","enum":["empty","filled","percent_empty","percent_filled"]},"field_key":{"type":"string"}},"required":["operation","field_key"],"additionalProperties":false},{"type":"object","properties":{"operation":{"type":"string","enum":["checked","unchecked","percent_checked","percent_unchecked"]},"field_key":{"type":"string"}},"required":["operation","field_key"],"additionalProperties":false},{"type":"object","properties":{"operation":{"type":"string","enum":["empty","filled","percent_empty","percent_filled"]},"field_key":{"type":"string"}},"required":["operation","field_key"],"additionalProperties":false},{"type":"object","properties":{"operation":{"type":"string","enum":["empty","filled","percent_empty","percent_filled","unique","percent_unique","sum","avg","median","min","max","range"]},"field_key":{"type":"string"}},"required":["operation","field_key"],"additionalProperties":false},{"type":"object","properties":{"operation":{"type":"string","enum":["empty","filled","percent_empty","percent_filled","unique","percent_unique","sum","avg","median","min","max","range","earliest","latest","date_range"]},"field_key":{"type":"string"}},"required":["operation","field_key"],"additionalProperties":false}],"description":"The field aggregation function to apply (e.g., sum, avg, filled, earliest)"},"filter":{"description":"Optional filter to apply to linked records before aggregation. Only records matching the filter conditions will be included in the rollup calculation.","$ref":"#/components/schemas/TableRecordFiltersGroup"},"aggregate_field_type":{"description":"What this rollup's CELL holds — 'date' for earliest/latest, 'number' for every other operation (counts, sums, percentages). Derived from the operation, not from the aggregated field: a 'filled' count over a files column is a number. Server-derived at write time; ignored on input.","type":"string","enum":["text","number","date","boolean","select","select_member","select_record_link","files","formula","rollup","lookup","button","autonumber"]},"aggregate_field_format":{"description":"The format of this rollup's own value. Operations that preserve the aggregated value's unit (sum/avg/median/min/max/range/earliest/latest) inherit the target field's format; counting operations are 'number', percentages 'percentage'. Server-derived at write time; ignored on input.","type":"string"},"aggregate_field_currency":{"description":"The currency code of this rollup's own value (e.g. 'USD', 'VND'), inherited from the aggregated field only when the operation preserves its unit — a COUNT of a currency column carries no currency. Server-derived at write time; ignored on input.","type":"string"}},"required":["key","name","description","type","source_field_key","aggregate_option"],"additionalProperties":false},{"type":"object","properties":{"key":{"type":"string","description":"Unique field key"},"name":{"type":"string","description":"Display name"},"description":{"type":"string","description":"Field description"},"confirm_before_update":{"description":"Show confirmation before AI updates","type":"boolean"},"type":{"type":"string","const":"lookup","description":"Field type for displaying values from fields in linked records"},"source_field_key":{"type":"string","description":"The field key of the select_record_link field to lookup from"},"lookup_field_key":{"type":"string","description":"The field key from the linked records to display"},"lookup_field_type":{"description":"The type of the target lookup field (e.g. 'text', 'number', 'date'). Resolved from the linked table's field definition at read time.","type":"string","enum":["text","number","date","boolean","select","select_member","select_record_link","files","formula","rollup","lookup","button","autonumber"]},"lookup_field_format":{"description":"The format of the target lookup field (e.g. 'currency', 'percentage', 'datetime'). Resolved from the linked table's field definition at read time.","type":"string"},"lookup_field_currency":{"description":"The currency code of the target lookup field (e.g. 'USD', 'VND'). Resolved from the linked table's field definition at read time.","type":"string"},"lookup_field_options":{"description":"Options for select-type lookup fields. Synced from the source select field's options.","type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"},"color":{"type":"string"}},"required":["key","name"],"additionalProperties":false}},"order_by":{"description":"When set, sort the linked records by this field on the linked table and return ONLY the picked field from the single extreme record (desc=latest, asc=earliest), as a one-element array. Omit to return every linked record's value as an array. field_key must be a field on the linked table.","type":"object","properties":{"field_key":{"type":"string"},"direction":{"type":"string","enum":["asc","desc"]}},"required":["field_key","direction"],"additionalProperties":false}},"required":["key","name","description","type","source_field_key","lookup_field_key"],"additionalProperties":false},{"type":"object","properties":{"key":{"type":"string","description":"Unique field key"},"name":{"type":"string","description":"Display name"},"description":{"type":"string","description":"Field description"},"confirm_before_update":{"description":"Show confirmation before AI updates","type":"boolean"},"type":{"type":"string","const":"files","description":"Field type for file attachments (images, PDFs, documents)"}},"required":["key","name","description","type"],"additionalProperties":false},{"type":"object","properties":{"key":{"type":"string","description":"Unique field key"},"name":{"type":"string","description":"Display name"},"description":{"type":"string","description":"Field description"},"confirm_before_update":{"description":"Show confirmation before AI updates","type":"boolean"},"type":{"type":"string","const":"formula","description":"Field type for calculated values based on expressions"},"formula":{"type":"object","properties":{"expression":{"type":"string","description":"JavaScript expression. Uses {Field Name} for field references."},"format":{"description":"Display format. 'number' / 'currency' / 'percentage' for numeric results; 'link' for text-output formulas that return a URL — renders the result as a clickable link.","type":"string","enum":["number","currency","percentage","link"]},"currency":{"description":"ISO 4217 currency code, e.g. USD, VND, EUR","type":"string"},"output_type":{"description":"Output type of the formula. Inferred by the backend from the expression — read-only on input. `datetime` when the result carries a time of day (references a datetime field or a time-bearing helper).","type":"string","enum":["number","text","date","datetime","boolean"]},"volatile":{"description":"Whether the formula's result depends on `now()` or other non-deterministic helpers. Inferred by the backend — read-only on input.","type":"boolean"}},"required":["expression"],"additionalProperties":false,"description":"Formula configuration and expression"}},"required":["key","name","description","type","formula"],"additionalProperties":false},{"type":"object","properties":{"key":{"type":"string","description":"Unique field key"},"name":{"type":"string","description":"Display name"},"description":{"type":"string","description":"Field description"},"confirm_before_update":{"description":"Show confirmation before AI updates","type":"boolean"},"type":{"type":"string","const":"button","description":"Field type for action buttons"},"text":{"type":"string","description":"Button label text displayed to users"},"workflow_id":{"description":"ID of the workflow the button presses trigger. Null means no action configured — pressing the button is a no-op. Button authoring is retired: existing bindings keep running, but nothing sets a new one.","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["key","name","description","type","text"],"additionalProperties":false},{"type":"object","properties":{"key":{"type":"string","description":"Unique field key"},"name":{"type":"string","description":"Display name"},"description":{"type":"string","description":"Field description"},"confirm_before_update":{"description":"Show confirmation before AI updates","type":"boolean"},"type":{"type":"string","const":"autonumber"},"prefix":{"description":"Literal prefix prepended to every display value (e.g. 'KH-' → 'KH-001'). Ignored when `template` is set.","type":"string"},"padding":{"description":"Zero-pad the integer to this width. Default 1 (no padding). 3 → '001', '012', '123', '1234' (overflow uses the actual width). Ignored when `template` is set.","type":"integer","minimum":1,"maximum":20},"template":{"description":"Format template with placeholder tokens evaluated at insert time. Tokens: {N} (raw integer), {N:W} (zero-padded to width W, e.g. {N:3} → 001), {YEAR} (4-digit year), {YEAR:2} (2-digit year), {MONTH} (2-digit month), {DAY} (2-digit day). Date tokens use the workspace timezone. Example: 'HM-{YEAR}-{N:3}' yields 'HM-2026-001'. Stored as the composed string; subsequent template edits do NOT re-format existing rows (date tokens would lose the original creation date).","type":"string"}},"required":["key","name","description","type"],"additionalProperties":false}]},"patch_v1_tables_table_id_records_Response":{"type":"object","properties":{"record_ids":{"type":"array","items":{"type":"string"},"description":"IDs the server actually wrote — excludes records that were skipped (e.g., locked rows)."},"skipped_record_ids":{"type":"array","items":{"type":"string"},"description":"DEPRECATED: read `blocked` instead. Maintained for one release as `blocked.map(b => b.record_id)` for clients that haven't migrated."},"blocked":{"type":"array","items":{"type":"object","properties":{"record_id":{"type":"string"},"reason":{"type":"string","const":"record_locked"},"blocked_field_keys":{"type":"array","items":{"type":"string"}}},"required":["record_id","reason","blocked_field_keys"],"additionalProperties":false},"description":"Per-record denial details for writes the server skipped due to lock protection."},"workflow_messages":{"type":"array","items":{"type":"object","properties":{"table_workflow_id":{"type":"string","description":"tbw_* binding that emitted the message."},"workflow_name":{"type":"string","description":"Human name of the workflow at execution time."},"event":{"type":"string","enum":["before_create","after_create","before_update","after_update","before_delete","after_delete"],"description":"Lifecycle event that produced the message. Only before_* events can surface here."},"record_id":{"type":"string","description":"Record that triggered the workflow. Lets the UI scope the message to a specific row in bulk responses."},"message":{"type":"string","description":"Author-provided text from the workflow's return.message."}},"required":["table_workflow_id","workflow_name","event","record_id","message"],"additionalProperties":false},"description":"Non-blocking messages emitted by before_update workflows that exited with status=\"success\" and a non-empty `message`. Clients surface these as advisories alongside the save (e.g. toast or alert). Empty when no workflow returned a message."}},"required":["record_ids","skipped_record_ids","blocked","workflow_messages"],"additionalProperties":false},"patch_v1_tables_table_id_views_view_id_Response":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the view"},"table_id":{"type":"string","description":"ID of the table this view displays"},"workspace_id":{"type":"string","description":"ID of the workspace this view belongs to"},"name":{"type":"string","description":"Display name of the view"},"description":{"type":"string","description":"Description of the view's purpose"},"visible_to":{"description":"Sidebar declutter list (NOT access control). null/absent = every member with access to the parent table sees this view; a non-empty list of members/groups restricts who sees it in the explorer. [] is normalized to null on write.","anyOf":[{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["member","group"],"description":"Principal kind that may see the view: an individual member or a member group"},"id":{"type":"string","description":"Member ID (type=member) or member-group ID (type=group)"}},"required":["type","id"],"additionalProperties":false}},{"type":"null"}]},"position":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Display ordering index for the view. Lower numbers are shown first. Use incremental values with gaps (100, 200, 300) instead of consecutive numbers (1, 2, 3) to enable efficient reordering without updating multiple records. Example: To insert between 100 and 200, use 150."},"frozen_columns":{"description":"Number of columns to freeze. Frozen columns are not scrollable.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"summary":{"description":"Map of field keys to summary operations.","anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"anyOf":[{"type":"object","properties":{"operation":{"type":"string","description":"Operation to perform on the field"},"field_key":{"type":"string","description":"Field key to display in the summary row"}},"required":["operation","field_key"],"additionalProperties":false},{"type":"null"}]}},{"type":"null"}]},"default_record_data_template_id":{"description":"ID of the record template to use as the default record initial data","anyOf":[{"type":"string"},{"type":"null"}]},"field_config":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"description":"Field key"},"visibility":{"type":"string","enum":["visible","hidden"],"description":"Field visibility state: 'visible' = shown to everyone, 'hidden' = not shown by default but members can toggle"},"width":{"type":"number"}},"required":["key","visibility"],"additionalProperties":false},"description":"Ordered array of field config entries. Order = display order, visibility = per-entry. Fields not listed are hidden."},"sort":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"field_key":{"type":"string","description":"Field key to sort by"},"order":{"anyOf":[{"type":"string","enum":["asc","desc"]},{"type":"null"}],"description":"Sort order: 'asc' for ascending, 'desc' for descending"},"blank_position":{"description":"Blank position: 'top' for top, 'bottom' for bottom","type":"string","enum":["top","bottom"]}},"required":["field_key","order"],"additionalProperties":false}},{"type":"null"}],"description":"Sorting configuration for records in this view"},"filters":{"anyOf":[{"$ref":"#/components/schemas/TableRecordFiltersGroup"},{"type":"null"}],"description":"Filter conditions applied to records in this view"},"created_at":{"type":"string","description":"Timestamp when view was created"}},"required":["id","table_id","workspace_id","name","description","position","field_config","sort","filters","created_at"],"additionalProperties":false},"patch_v1_tables_table_id_workflows_table_workflow_id_Response":{"type":"object","properties":{"table_workflow_id":{"type":"string"},"workflow_id":{"type":"string"},"table_id":{"type":"string"},"event":{"type":"string","enum":["before_create","after_create","before_update","after_update","before_delete","after_delete"]},"enabled":{"type":"boolean"}},"required":["table_workflow_id","workflow_id","table_id","event","enabled"],"additionalProperties":false},"patch_v1_views_view_id_Response":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the view"},"table_id":{"type":"string","description":"ID of the table this view displays"},"workspace_id":{"type":"string","description":"ID of the workspace this view belongs to"},"name":{"type":"string","description":"Display name of the view"},"description":{"type":"string","description":"Description of the view's purpose"},"visible_to":{"description":"Sidebar declutter list (NOT access control). null/absent = every member with access to the parent table sees this view; a non-empty list of members/groups restricts who sees it in the explorer. [] is normalized to null on write.","anyOf":[{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["member","group"],"description":"Principal kind that may see the view: an individual member or a member group"},"id":{"type":"string","description":"Member ID (type=member) or member-group ID (type=group)"}},"required":["type","id"],"additionalProperties":false}},{"type":"null"}]},"position":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Display ordering index for the view. Lower numbers are shown first. Use incremental values with gaps (100, 200, 300) instead of consecutive numbers (1, 2, 3) to enable efficient reordering without updating multiple records. Example: To insert between 100 and 200, use 150."},"frozen_columns":{"description":"Number of columns to freeze. Frozen columns are not scrollable.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"summary":{"description":"Map of field keys to summary operations.","anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"anyOf":[{"type":"object","properties":{"operation":{"type":"string","description":"Operation to perform on the field"},"field_key":{"type":"string","description":"Field key to display in the summary row"}},"required":["operation","field_key"],"additionalProperties":false},{"type":"null"}]}},{"type":"null"}]},"default_record_data_template_id":{"description":"ID of the record template to use as the default record initial data","anyOf":[{"type":"string"},{"type":"null"}]},"field_config":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"description":"Field key"},"visibility":{"type":"string","enum":["visible","hidden"],"description":"Field visibility state: 'visible' = shown to everyone, 'hidden' = not shown by default but members can toggle"},"width":{"type":"number"}},"required":["key","visibility"],"additionalProperties":false},"description":"Ordered array of field config entries. Order = display order, visibility = per-entry. Fields not listed are hidden."},"sort":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"field_key":{"type":"string","description":"Field key to sort by"},"order":{"anyOf":[{"type":"string","enum":["asc","desc"]},{"type":"null"}],"description":"Sort order: 'asc' for ascending, 'desc' for descending"},"blank_position":{"description":"Blank position: 'top' for top, 'bottom' for bottom","type":"string","enum":["top","bottom"]}},"required":["field_key","order"],"additionalProperties":false}},{"type":"null"}],"description":"Sorting configuration for records in this view"},"filters":{"anyOf":[{"$ref":"#/components/schemas/TableRecordFiltersGroup"},{"type":"null"}],"description":"Filter conditions applied to records in this view"},"created_at":{"type":"string","description":"Timestamp when view was created"}},"required":["id","table_id","workspace_id","name","description","position","field_config","sort","filters","created_at"],"additionalProperties":false},"post_v1_workspaces_Response":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the workspace"},"name":{"type":"string","description":"Display name of the workspace"},"default_currency":{"type":"string","description":"Default currency code for the workspace"},"timezone":{"type":"string","description":"IANA timezone name (e.g., 'America/New_York', 'Asia/Tokyo')"},"organization_id":{"type":"string","description":"Organization ID this workspace belongs to"},"created_at":{"type":"string","description":"Timestamp when workspace was created"}},"required":["id","name","default_currency","timezone","organization_id","created_at"],"additionalProperties":false},"post_v1_workspace_backup_Response":{"type":"object","properties":{"success":{"type":"boolean"}},"required":["success"],"additionalProperties":false},"get_v1_workspace_Response":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the workspace"},"name":{"type":"string","description":"Display name of the workspace"},"default_currency":{"type":"string","description":"Default currency code for the workspace"},"timezone":{"type":"string","description":"IANA timezone name (e.g., 'America/New_York', 'Asia/Tokyo')"},"organization_id":{"type":"string","description":"Organization ID this workspace belongs to"},"created_at":{"type":"string","description":"Timestamp when workspace was created"}},"required":["id","name","default_currency","timezone","organization_id","created_at"],"additionalProperties":false},"get_v1_workspace_backups_Response":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the workspace backup"},"workspace_id":{"type":"string","description":"ID of the workspace that was backed up"},"organization_id":{"type":"string","description":"ID of the organization this backup belongs to"},"status":{"type":"string","enum":["pending","completed","failed"],"description":"Current status of the backup operation"},"type":{"type":"string","enum":["auto","manual"],"description":"Backup type: 'auto' for scheduled backups, 'manual' for user-initiated"},"url":{"type":"string","description":"URL to download the backup file"},"storage_provider":{"type":"string","description":"Storage provider where backup is stored (e.g., 'aws', 'gcs')"},"storage_key":{"type":"string","description":"Storage key/path where backup file is stored"},"metadata":{"anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"null"}],"description":"Additional metadata about the backup"},"created_at":{"type":"string","description":"Timestamp when backup was initiated"},"completed_at":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Timestamp when backup completed (null if still in progress)"}},"required":["id","workspace_id","organization_id","status","type","url","storage_provider","storage_key","metadata","created_at","completed_at"],"additionalProperties":false}},"get_v1_workspaces_dangling_references_Response":{"type":"array","items":{"type":"object","properties":{"namespace":{"type":"string","enum":["tables","fields","options","templates","groups","knowledge"]},"id":{"type":"string"},"referent":{"type":"object","properties":{"kind":{"type":"string","enum":["app","workflow"]},"id":{"type":"string"},"name":{"type":"string"}},"required":["kind","id","name"],"additionalProperties":false}},"required":["namespace","id","referent"],"additionalProperties":false}},"get_v1_workspaces_Response":{"type":"array","items":{"$ref":"#/components/schemas/patch_v1_workspace_Response"}},"delete_v1_workspaces_id_Response":{"type":"object","properties":{"id":{"type":"string"},"deleted":{"type":"boolean"}},"required":["id","deleted"],"additionalProperties":false},"post_v1_workspace_backups_backup_id_restore_Response":{"type":"object","properties":{"success":{"type":"boolean"}},"required":["success"],"additionalProperties":false},"patch_v1_workspace_Response":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the workspace"},"name":{"type":"string","description":"Display name of the workspace"},"default_currency":{"type":"string","description":"Default currency code for the workspace"},"timezone":{"type":"string","description":"IANA timezone name (e.g., 'America/New_York', 'Asia/Tokyo')"},"organization_id":{"type":"string","description":"Organization ID this workspace belongs to"},"created_at":{"type":"string","description":"Timestamp when workspace was created"}},"required":["id","name","default_currency","timezone","organization_id","created_at"],"additionalProperties":false},"post_v1_notifications_Response":{"type":"object","properties":{"created":{"type":"boolean"}},"required":["created"],"additionalProperties":false},"delete_v1_notifications_Response":{"type":"object","properties":{"deleted":{"type":"boolean"}},"required":["deleted"],"additionalProperties":false},"get_v1_notifications_Response":{"type":"array","items":{"$ref":"#/components/schemas/post_v1_notifications_notification_id_done_Response"}},"post_v1_notifications_notification_id_done_Response":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the notification"},"title":{"type":"string","description":"Title/heading of the notification"},"body":{"type":"string","description":"The message to display in the notification."},"member_id":{"type":"string","description":"ID of the member who should receive this notification"},"workspace_id":{"type":"string","description":"ID of the workspace this notification belongs to"},"level":{"anyOf":[{"type":"string","enum":["urgent","warning","info","success"]},{"type":"null"}],"description":"Notification level"},"created_at":{"type":"string","description":"Timestamp when notification was created"},"done_at":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Timestamp when notification was marked as done/read"},"type":{"type":"string","const":"send_notification_tool","description":"Notification triggered by automation tool"},"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Additional data associated with the notification"}},"required":["id","title","body","member_id","workspace_id","level","created_at","done_at","type","data"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the notification"},"title":{"type":"string","description":"Title/heading of the notification"},"body":{"type":"string","description":"The message to display in the notification."},"member_id":{"type":"string","description":"ID of the member who should receive this notification"},"workspace_id":{"type":"string","description":"ID of the workspace this notification belongs to"},"level":{"anyOf":[{"type":"string","enum":["urgent","warning","info","success"]},{"type":"null"}],"description":"Notification level"},"created_at":{"type":"string","description":"Timestamp when notification was created"},"done_at":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Timestamp when notification was marked as done/read"},"type":{"type":"string","const":"approval_request"},"data":{"type":"object","properties":{"approval_request_id":{"type":"string"},"workflow_name":{"type":"string"},"workflow_execution_id":{"type":"string"},"resolved_status":{"type":"string","enum":["approved","rejected","timed_out","cancelled"]},"resolved_by":{"anyOf":[{"type":"string"},{"type":"null"}]},"resolved_comment":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["approval_request_id","workflow_name","workflow_execution_id"],"additionalProperties":false}},"required":["id","title","body","member_id","workspace_id","level","created_at","done_at","type","data"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the notification"},"title":{"type":"string","description":"Title/heading of the notification"},"body":{"type":"string","description":"The message to display in the notification."},"member_id":{"type":"string","description":"ID of the member who should receive this notification"},"workspace_id":{"type":"string","description":"ID of the workspace this notification belongs to"},"level":{"anyOf":[{"type":"string","enum":["urgent","warning","info","success"]},{"type":"null"}],"description":"Notification level"},"created_at":{"type":"string","description":"Timestamp when notification was created"},"done_at":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Timestamp when notification was marked as done/read"},"type":{"type":"string","const":"locked_record_change"},"data":{"type":"object","properties":{"approval_request_id":{"type":"string"},"table_id":{"type":"string"},"table_name":{"type":"string"},"record_id":{"type":"string"},"changes":{"minItems":1,"type":"array","items":{"type":"object","properties":{"field_key":{"type":"string"},"field_name":{"type":"string"},"old_value_display":{"type":"string"},"new_value_display":{"type":"string"}},"required":["field_key","field_name","old_value_display","new_value_display"],"additionalProperties":false}},"reason":{"type":"string"},"requested_by_name":{"type":"string"},"resolved_status":{"type":"string","enum":["approved","rejected","timed_out","cancelled"]},"resolved_by":{"anyOf":[{"type":"string"},{"type":"null"}]},"resolved_comment":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["approval_request_id","table_id","table_name","record_id","changes","reason","requested_by_name"],"additionalProperties":false}},"required":["id","title","body","member_id","workspace_id","level","created_at","done_at","type","data"],"additionalProperties":false}]},"post_v1_files_multipart_abort_Response":{"type":"object","properties":{"success":{"type":"boolean"}},"required":["success"],"additionalProperties":false},"post_v1_files_direct_complete_Response":{"type":"object","properties":{"files":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the processed file"},"filename":{"type":"string","description":"Original filename of the uploaded file"},"mime_type":{"type":"string","description":"MIME type of the file (e.g., 'image/png', 'application/pdf')"},"url":{"description":"Stable file serving URL, resolved at serving time","type":"string"},"thumbnail_url":{"description":"Thumbnail URL for image files, resolved at serving time","type":"string"},"preview_url":{"description":"Preview URL for legacy Excel files, resolved at serving time","type":"string"},"provider":{"type":"string","description":"Storage provider name (e.g., 'aws', 'gcs')"},"file_storage_key":{"type":"string","description":"Storage key/path where the file is stored"},"workspace_id":{"type":"string","description":"ID of the workspace this file belongs to"},"size":{"description":"Byte size of the stored object (null until backfilled)","anyOf":[{"type":"number"},{"type":"null"}]},"created_at":{"type":"string","description":"Timestamp when file was uploaded"},"metadata":{"description":"Additional metadata about the file"},"data":{"description":"File-type-specific data (e.g., {width, height, orientation} for images)"}},"required":["id","filename","mime_type","provider","file_storage_key","workspace_id","created_at","metadata","data"],"additionalProperties":false},"description":"Successfully uploaded files"},"errors":{"type":"array","items":{"type":"object","properties":{"filename":{"type":"string","description":"Original filename that failed to upload"},"error":{"type":"string","description":"Error message describing the failure reason"}},"required":["filename","error"],"additionalProperties":false},"description":"Files that failed to upload with error details"}},"required":["files","errors"],"additionalProperties":false},"post_v1_files_multipart_complete_Response":{"type":"object","properties":{"files":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the processed file"},"filename":{"type":"string","description":"Original filename of the uploaded file"},"mime_type":{"type":"string","description":"MIME type of the file (e.g., 'image/png', 'application/pdf')"},"url":{"description":"Stable file serving URL, resolved at serving time","type":"string"},"thumbnail_url":{"description":"Thumbnail URL for image files, resolved at serving time","type":"string"},"preview_url":{"description":"Preview URL for legacy Excel files, resolved at serving time","type":"string"},"provider":{"type":"string","description":"Storage provider name (e.g., 'aws', 'gcs')"},"file_storage_key":{"type":"string","description":"Storage key/path where the file is stored"},"workspace_id":{"type":"string","description":"ID of the workspace this file belongs to"},"size":{"description":"Byte size of the stored object (null until backfilled)","anyOf":[{"type":"number"},{"type":"null"}]},"created_at":{"type":"string","description":"Timestamp when file was uploaded"},"metadata":{"description":"Additional metadata about the file"},"data":{"description":"File-type-specific data (e.g., {width, height, orientation} for images)"}},"required":["id","filename","mime_type","provider","file_storage_key","workspace_id","created_at","metadata","data"],"additionalProperties":false},"description":"Successfully uploaded files"},"errors":{"type":"array","items":{"type":"object","properties":{"filename":{"type":"string","description":"Original filename that failed to upload"},"error":{"type":"string","description":"Error message describing the failure reason"}},"required":["filename","error"],"additionalProperties":false},"description":"Files that failed to upload with error details"}},"required":["files","errors"],"additionalProperties":false},"get_v1_files_auth_token_Response":{"type":"object","properties":{"token":{"type":"string"},"expires_at":{"type":"string"}},"required":["token","expires_at"],"additionalProperties":false},"get_v1_files_file_id_signed_url_Response":{"type":"object","properties":{"url":{"type":"string"}},"required":["url"],"additionalProperties":false},"get_v1_files_Response":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the processed file"},"filename":{"type":"string","description":"Original filename of the uploaded file"},"mime_type":{"type":"string","description":"MIME type of the file (e.g., 'image/png', 'application/pdf')"},"url":{"description":"Stable file serving URL, resolved at serving time","type":"string"},"thumbnail_url":{"description":"Thumbnail URL for image files, resolved at serving time","type":"string"},"preview_url":{"description":"Preview URL for legacy Excel files, resolved at serving time","type":"string"},"provider":{"type":"string","description":"Storage provider name (e.g., 'aws', 'gcs')"},"file_storage_key":{"type":"string","description":"Storage key/path where the file is stored"},"workspace_id":{"type":"string","description":"ID of the workspace this file belongs to"},"size":{"description":"Byte size of the stored object (null until backfilled)","anyOf":[{"type":"number"},{"type":"null"}]},"created_at":{"type":"string","description":"Timestamp when file was uploaded"},"metadata":{"description":"Additional metadata about the file"},"data":{"description":"File-type-specific data (e.g., {width, height, orientation} for images)"}},"required":["id","filename","mime_type","provider","file_storage_key","workspace_id","created_at","metadata","data"],"additionalProperties":false}},"post_v1_files_direct_init_Response":{"type":"object","properties":{"file_id":{"type":"string"},"file_storage_key":{"type":"string"},"upload_url":{"type":"string"}},"required":["file_id","file_storage_key","upload_url"],"additionalProperties":false},"post_v1_files_multipart_init_Response":{"type":"object","properties":{"file_id":{"type":"string"},"upload_id":{"type":"string"},"file_storage_key":{"type":"string"},"part_size":{"type":"number"},"parts":{"type":"array","items":{"type":"object","properties":{"part_number":{"type":"number"},"url":{"type":"string"}},"required":["part_number","url"],"additionalProperties":false}}},"required":["file_id","upload_id","file_storage_key","part_size","parts"],"additionalProperties":false},"get_v1_files_file_id_versions_Response":{"type":"object","properties":{"original_file_id":{"type":"string"},"current_version_id":{"type":"string"},"versions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"filename":{"type":"string"},"url":{"type":"string"},"file_storage_key":{"type":"string"},"mime_type":{"type":"string"},"created_at":{"type":"string"},"is_current":{"type":"boolean"},"source_file_id":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","filename","url","file_storage_key","mime_type","created_at","is_current","source_file_id"],"additionalProperties":false},"description":"Ordered newest → oldest. Index 0 is the current version."}},"required":["original_file_id","current_version_id","versions"],"additionalProperties":false},"post_v1_files_Response":{"type":"object","properties":{"files":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the processed file"},"filename":{"type":"string","description":"Original filename of the uploaded file"},"mime_type":{"type":"string","description":"MIME type of the file (e.g., 'image/png', 'application/pdf')"},"url":{"description":"Stable file serving URL, resolved at serving time","type":"string"},"thumbnail_url":{"description":"Thumbnail URL for image files, resolved at serving time","type":"string"},"preview_url":{"description":"Preview URL for legacy Excel files, resolved at serving time","type":"string"},"provider":{"type":"string","description":"Storage provider name (e.g., 'aws', 'gcs')"},"file_storage_key":{"type":"string","description":"Storage key/path where the file is stored"},"workspace_id":{"type":"string","description":"ID of the workspace this file belongs to"},"size":{"description":"Byte size of the stored object (null until backfilled)","anyOf":[{"type":"number"},{"type":"null"}]},"created_at":{"type":"string","description":"Timestamp when file was uploaded"},"metadata":{"description":"Additional metadata about the file"},"data":{"description":"File-type-specific data (e.g., {width, height, orientation} for images)"}},"required":["id","filename","mime_type","provider","file_storage_key","workspace_id","created_at","metadata","data"],"additionalProperties":false},"description":"Successfully uploaded files"},"errors":{"type":"array","items":{"type":"object","properties":{"filename":{"type":"string","description":"Original filename that failed to upload"},"error":{"type":"string","description":"Error message describing the failure reason"}},"required":["filename","error"],"additionalProperties":false},"description":"Files that failed to upload with error details"}},"required":["files","errors"],"additionalProperties":false},"post_v1_files_profile_image_Response":{"type":"object","properties":{"file":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the processed file"},"filename":{"type":"string","description":"Original filename of the uploaded file"},"mime_type":{"type":"string","description":"MIME type of the file (e.g., 'image/png', 'application/pdf')"},"url":{"description":"Stable file serving URL, resolved at serving time","type":"string"},"thumbnail_url":{"description":"Thumbnail URL for image files, resolved at serving time","type":"string"},"preview_url":{"description":"Preview URL for legacy Excel files, resolved at serving time","type":"string"},"provider":{"type":"string","description":"Storage provider name (e.g., 'aws', 'gcs')"},"file_storage_key":{"type":"string","description":"Storage key/path where the file is stored"},"workspace_id":{"type":"string","description":"ID of the workspace this file belongs to"},"size":{"description":"Byte size of the stored object (null until backfilled)","anyOf":[{"type":"number"},{"type":"null"}]},"created_at":{"type":"string","description":"Timestamp when file was uploaded"},"metadata":{"description":"Additional metadata about the file"},"data":{"description":"File-type-specific data (e.g., {width, height, orientation} for images)"}},"required":["id","filename","mime_type","provider","file_storage_key","workspace_id","created_at","metadata","data"],"additionalProperties":false},"small_variant_url":{"type":"string"}},"required":["file","small_variant_url"],"additionalProperties":false},"post_v1_workflows_dry_run_Response":{"type":"object","properties":{"errors":{"type":"array","items":{"type":"object","properties":{"source":{"type":"string","enum":["parse","typecheck","resolve","lint","structural"]},"severity":{"type":"string","enum":["error","warning"]},"code":{"type":"string"},"message":{"type":"string"},"step_id":{"anyOf":[{"type":"string"},{"type":"null"}]},"step_path":{"type":"array","items":{"type":"number"}},"line":{"type":"number"},"lines":{"type":"array","items":{"type":"number"}},"col":{"type":"number"},"suggestion":{"type":"string"}},"required":["source","severity","code","message"],"additionalProperties":false}},"warnings":{"type":"array","items":{"type":"object","properties":{"source":{"type":"string","enum":["parse","typecheck","resolve","lint","structural"]},"severity":{"type":"string","enum":["error","warning"]},"code":{"type":"string"},"message":{"type":"string"},"step_id":{"anyOf":[{"type":"string"},{"type":"null"}]},"step_path":{"type":"array","items":{"type":"number"}},"line":{"type":"number"},"lines":{"type":"array","items":{"type":"number"}},"col":{"type":"number"},"suggestion":{"type":"string"}},"required":["source","severity","code","message"],"additionalProperties":false}},"planned_calls":{"type":"array","items":{"type":"object","properties":{"step_id":{"type":"string"},"tool_name":{"type":"string"},"input":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["step_id","tool_name","input"],"additionalProperties":false}},"step_outputs":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"return_value":{"anyOf":[{"type":"object","properties":{"status":{"type":"string","enum":["success","error"]},"message":{"type":"string"}},"required":["status","message"],"additionalProperties":false},{"type":"null"}]},"validation_failures":{"type":"array","items":{"type":"object","properties":{"step_id":{"type":"string"},"field_key":{"anyOf":[{"type":"string"},{"type":"null"}]},"message":{"type":"string"}},"required":["step_id","field_key","message"],"additionalProperties":false}},"planned_waits":{"type":"array","items":{"type":"object","properties":{"step_id":{"type":"string"},"kind":{"type":"string","enum":["wait","wait_for_event","wait_for_approval"]}},"required":["step_id","kind"],"additionalProperties":false}},"evaluation_errors":{"type":"array","items":{"type":"object","properties":{"step_id":{"type":"string"},"message":{"type":"string"}},"required":["step_id","message"],"additionalProperties":false}},"tool_input_errors":{"type":"array","items":{"type":"object","properties":{"step_id":{"type":"string"},"tool_name":{"type":"string"},"message":{"type":"string"}},"required":["step_id","tool_name","message"],"additionalProperties":false}},"halted":{"type":"boolean"}},"required":["errors","warnings","planned_calls","step_outputs","return_value","validation_failures","planned_waits","evaluation_errors","tool_input_errors","halted"],"additionalProperties":false},"get_v1_workflows_workflow_id_Response":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the workflow"},"name":{"type":"string","description":"Display name of the workflow"},"description":{"type":"string","description":"Human-readable description of what this workflow does"},"steps":{"description":"AST-valued step tree (tool calls, conditionals, loops)."},"metadata":{"description":"Metadata for the workflow","anyOf":[{"type":"object","properties":{"table_ids":{"type":"array","items":{"type":"string"},"description":"IDs of the tables this workflow affects"},"staged_for_app_id":{"description":"Present while the row is a draft-staged fork for this app; cleared when the app publishes the binding. Marked rows left unbound are archived at publish/discard.","type":"string"}},"required":["table_ids"],"additionalProperties":false},{"type":"null"}]},"current_version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Current version number"},"enabled":{"type":"boolean","description":"Whether this workflow is active"},"workspace_id":{"type":"string","description":"ID of the workspace this workflow belongs to"},"created_at":{"type":"string","description":"Timestamp when workflow was created"},"updated_at":{"type":"string","description":"Timestamp of last update"}},"required":["id","name","description","steps","current_version","enabled","workspace_id","created_at","updated_at"],"additionalProperties":false},"get_v1_workflows_Response":{"type":"array","items":{"$ref":"#/components/schemas/patch_v1_workflows_workflow_id_Response"}},"post_v1_workflows_rescan_Response":{"type":"object","properties":{"total":{"type":"number"},"updated":{"type":"number"}},"required":["total","updated"],"additionalProperties":false},"patch_v1_workflows_workflow_id_Response":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the workflow"},"name":{"type":"string","description":"Display name of the workflow"},"description":{"type":"string","description":"Human-readable description of what this workflow does"},"steps":{"description":"AST-valued step tree (tool calls, conditionals, loops)."},"metadata":{"description":"Metadata for the workflow","anyOf":[{"type":"object","properties":{"table_ids":{"type":"array","items":{"type":"string"},"description":"IDs of the tables this workflow affects"},"staged_for_app_id":{"description":"Present while the row is a draft-staged fork for this app; cleared when the app publishes the binding. Marked rows left unbound are archived at publish/discard.","type":"string"}},"required":["table_ids"],"additionalProperties":false},{"type":"null"}]},"current_version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Current version number"},"enabled":{"type":"boolean","description":"Whether this workflow is active"},"workspace_id":{"type":"string","description":"ID of the workspace this workflow belongs to"},"created_at":{"type":"string","description":"Timestamp when workflow was created"},"updated_at":{"type":"string","description":"Timestamp of last update"}},"required":["id","name","description","steps","current_version","enabled","workspace_id","created_at","updated_at"],"additionalProperties":false},"post_v1_document_templates_Response":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the document template"},"workspace_id":{"type":"string","description":"ID of the workspace this template belongs to"},"name":{"type":"string","description":"Display name of the template"},"description":{"type":"string","description":"What the template produces, shown under its name in the library"},"type":{"type":"string","enum":["html","pdf-form","excel","word","email"],"description":"Template type: 'html' for HTML templates, 'pdf-form' for fillable PDF forms, 'excel' for Excel templates, 'word' for Word templates, 'email' for email HTML templates"},"template":{"type":"string","description":"Template content with variable placeholders (e.g., {{customer_name}})"},"format":{"type":"string","description":"Supported document formats."},"orientation":{"type":"string","enum":["portrait","landscape"],"description":"Page orientation for PDF generation"},"variables":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{},"description":"Data to pass to the template."},"current_version":{"type":"number","description":"Current version number of the template"},"owner_member_id":{"description":"Member who created the template, from the IAM registry. Absent on write responses.","anyOf":[{"type":"string"},{"type":"null"}]},"created_at":{"type":"string","description":"Timestamp when template was created"},"template_url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Signed URL to download the template file (pdf-form/excel only)"}},"required":["id","workspace_id","name","description","type","template","variables","current_version","created_at","template_url"],"additionalProperties":false},"delete_v1_document_templates_document_template_id_Response":{"type":"object","properties":{"success":{"type":"boolean"}},"required":["success"],"additionalProperties":false},"post_v1_document_templates_document_template_id_find_text_Response":{"type":"object","properties":{"occurrences":{"type":"array","items":{"type":"object","properties":{"occurrence_index":{"type":"number"},"element_index":{"type":"number"},"context_before":{"type":"string"},"matched_text":{"type":"string"},"context_after":{"type":"string"}},"required":["occurrence_index","element_index","context_before","matched_text","context_after"],"additionalProperties":false}}},"required":["occurrences"],"additionalProperties":false},"get_v1_document_templates_document_template_id_Response":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the document template"},"workspace_id":{"type":"string","description":"ID of the workspace this template belongs to"},"name":{"type":"string","description":"Display name of the template"},"description":{"type":"string","description":"What the template produces, shown under its name in the library"},"type":{"type":"string","enum":["html","pdf-form","excel","word","email"],"description":"Template type: 'html' for HTML templates, 'pdf-form' for fillable PDF forms, 'excel' for Excel templates, 'word' for Word templates, 'email' for email HTML templates"},"template":{"type":"string","description":"Template content with variable placeholders (e.g., {{customer_name}})"},"format":{"type":"string","description":"Supported document formats."},"orientation":{"type":"string","enum":["portrait","landscape"],"description":"Page orientation for PDF generation"},"variables":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{},"description":"Data to pass to the template."},"current_version":{"type":"number","description":"Current version number of the template"},"owner_member_id":{"description":"Member who created the template, from the IAM registry. Absent on write responses.","anyOf":[{"type":"string"},{"type":"null"}]},"created_at":{"type":"string","description":"Timestamp when template was created"},"template_url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Signed URL to download the template file (pdf-form/excel only)"}},"required":["id","workspace_id","name","description","type","template","variables","current_version","created_at","template_url"],"additionalProperties":false},"get_v1_document_templates_Response":{"type":"array","items":{"$ref":"#/components/schemas/patch_v1_document_templates_document_template_id_Response"}},"post_v1_document_templates_document_template_id_mark_conditional_region_Response":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the document template"},"workspace_id":{"type":"string","description":"ID of the workspace this template belongs to"},"name":{"type":"string","description":"Display name of the template"},"description":{"type":"string","description":"What the template produces, shown under its name in the library"},"type":{"type":"string","enum":["html","pdf-form","excel","word","email"],"description":"Template type: 'html' for HTML templates, 'pdf-form' for fillable PDF forms, 'excel' for Excel templates, 'word' for Word templates, 'email' for email HTML templates"},"template":{"type":"string","description":"Template content with variable placeholders (e.g., {{customer_name}})"},"format":{"type":"string","description":"Supported document formats."},"orientation":{"type":"string","enum":["portrait","landscape"],"description":"Page orientation for PDF generation"},"variables":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{},"description":"Data to pass to the template."},"current_version":{"type":"number","description":"Current version number of the template"},"owner_member_id":{"description":"Member who created the template, from the IAM registry. Absent on write responses.","anyOf":[{"type":"string"},{"type":"null"}]},"created_at":{"type":"string","description":"Timestamp when template was created"},"template_url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Signed URL to download the template file (pdf-form/excel only)"}},"required":["id","workspace_id","name","description","type","template","variables","current_version","created_at","template_url"],"additionalProperties":false},"post_v1_document_templates_document_template_id_mark_loop_region_Response":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the document template"},"workspace_id":{"type":"string","description":"ID of the workspace this template belongs to"},"name":{"type":"string","description":"Display name of the template"},"description":{"type":"string","description":"What the template produces, shown under its name in the library"},"type":{"type":"string","enum":["html","pdf-form","excel","word","email"],"description":"Template type: 'html' for HTML templates, 'pdf-form' for fillable PDF forms, 'excel' for Excel templates, 'word' for Word templates, 'email' for email HTML templates"},"template":{"type":"string","description":"Template content with variable placeholders (e.g., {{customer_name}})"},"format":{"type":"string","description":"Supported document formats."},"orientation":{"type":"string","enum":["portrait","landscape"],"description":"Page orientation for PDF generation"},"variables":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{},"description":"Data to pass to the template."},"current_version":{"type":"number","description":"Current version number of the template"},"owner_member_id":{"description":"Member who created the template, from the IAM registry. Absent on write responses.","anyOf":[{"type":"string"},{"type":"null"}]},"created_at":{"type":"string","description":"Timestamp when template was created"},"template_url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Signed URL to download the template file (pdf-form/excel only)"}},"required":["id","workspace_id","name","description","type","template","variables","current_version","created_at","template_url"],"additionalProperties":false},"post_v1_document_templates_document_template_id_mark_variable_Response":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the document template"},"workspace_id":{"type":"string","description":"ID of the workspace this template belongs to"},"name":{"type":"string","description":"Display name of the template"},"description":{"type":"string","description":"What the template produces, shown under its name in the library"},"type":{"type":"string","enum":["html","pdf-form","excel","word","email"],"description":"Template type: 'html' for HTML templates, 'pdf-form' for fillable PDF forms, 'excel' for Excel templates, 'word' for Word templates, 'email' for email HTML templates"},"template":{"type":"string","description":"Template content with variable placeholders (e.g., {{customer_name}})"},"format":{"type":"string","description":"Supported document formats."},"orientation":{"type":"string","enum":["portrait","landscape"],"description":"Page orientation for PDF generation"},"variables":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{},"description":"Data to pass to the template."},"current_version":{"type":"number","description":"Current version number of the template"},"owner_member_id":{"description":"Member who created the template, from the IAM registry. Absent on write responses.","anyOf":[{"type":"string"},{"type":"null"}]},"created_at":{"type":"string","description":"Timestamp when template was created"},"template_url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Signed URL to download the template file (pdf-form/excel only)"}},"required":["id","workspace_id","name","description","type","template","variables","current_version","created_at","template_url"],"additionalProperties":false},"post_v1_document_templates_document_template_id_unmark_conditional_region_Response":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the document template"},"workspace_id":{"type":"string","description":"ID of the workspace this template belongs to"},"name":{"type":"string","description":"Display name of the template"},"description":{"type":"string","description":"What the template produces, shown under its name in the library"},"type":{"type":"string","enum":["html","pdf-form","excel","word","email"],"description":"Template type: 'html' for HTML templates, 'pdf-form' for fillable PDF forms, 'excel' for Excel templates, 'word' for Word templates, 'email' for email HTML templates"},"template":{"type":"string","description":"Template content with variable placeholders (e.g., {{customer_name}})"},"format":{"type":"string","description":"Supported document formats."},"orientation":{"type":"string","enum":["portrait","landscape"],"description":"Page orientation for PDF generation"},"variables":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{},"description":"Data to pass to the template."},"current_version":{"type":"number","description":"Current version number of the template"},"owner_member_id":{"description":"Member who created the template, from the IAM registry. Absent on write responses.","anyOf":[{"type":"string"},{"type":"null"}]},"created_at":{"type":"string","description":"Timestamp when template was created"},"template_url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Signed URL to download the template file (pdf-form/excel only)"}},"required":["id","workspace_id","name","description","type","template","variables","current_version","created_at","template_url"],"additionalProperties":false},"post_v1_document_templates_document_template_id_unmark_loop_region_Response":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the document template"},"workspace_id":{"type":"string","description":"ID of the workspace this template belongs to"},"name":{"type":"string","description":"Display name of the template"},"description":{"type":"string","description":"What the template produces, shown under its name in the library"},"type":{"type":"string","enum":["html","pdf-form","excel","word","email"],"description":"Template type: 'html' for HTML templates, 'pdf-form' for fillable PDF forms, 'excel' for Excel templates, 'word' for Word templates, 'email' for email HTML templates"},"template":{"type":"string","description":"Template content with variable placeholders (e.g., {{customer_name}})"},"format":{"type":"string","description":"Supported document formats."},"orientation":{"type":"string","enum":["portrait","landscape"],"description":"Page orientation for PDF generation"},"variables":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{},"description":"Data to pass to the template."},"current_version":{"type":"number","description":"Current version number of the template"},"owner_member_id":{"description":"Member who created the template, from the IAM registry. Absent on write responses.","anyOf":[{"type":"string"},{"type":"null"}]},"created_at":{"type":"string","description":"Timestamp when template was created"},"template_url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Signed URL to download the template file (pdf-form/excel only)"}},"required":["id","workspace_id","name","description","type","template","variables","current_version","created_at","template_url"],"additionalProperties":false},"post_v1_document_templates_document_template_id_unmark_variable_Response":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the document template"},"workspace_id":{"type":"string","description":"ID of the workspace this template belongs to"},"name":{"type":"string","description":"Display name of the template"},"description":{"type":"string","description":"What the template produces, shown under its name in the library"},"type":{"type":"string","enum":["html","pdf-form","excel","word","email"],"description":"Template type: 'html' for HTML templates, 'pdf-form' for fillable PDF forms, 'excel' for Excel templates, 'word' for Word templates, 'email' for email HTML templates"},"template":{"type":"string","description":"Template content with variable placeholders (e.g., {{customer_name}})"},"format":{"type":"string","description":"Supported document formats."},"orientation":{"type":"string","enum":["portrait","landscape"],"description":"Page orientation for PDF generation"},"variables":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{},"description":"Data to pass to the template."},"current_version":{"type":"number","description":"Current version number of the template"},"owner_member_id":{"description":"Member who created the template, from the IAM registry. Absent on write responses.","anyOf":[{"type":"string"},{"type":"null"}]},"created_at":{"type":"string","description":"Timestamp when template was created"},"template_url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Signed URL to download the template file (pdf-form/excel only)"}},"required":["id","workspace_id","name","description","type","template","variables","current_version","created_at","template_url"],"additionalProperties":false},"patch_v1_document_templates_document_template_id_Response":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the document template"},"workspace_id":{"type":"string","description":"ID of the workspace this template belongs to"},"name":{"type":"string","description":"Display name of the template"},"description":{"type":"string","description":"What the template produces, shown under its name in the library"},"type":{"type":"string","enum":["html","pdf-form","excel","word","email"],"description":"Template type: 'html' for HTML templates, 'pdf-form' for fillable PDF forms, 'excel' for Excel templates, 'word' for Word templates, 'email' for email HTML templates"},"template":{"type":"string","description":"Template content with variable placeholders (e.g., {{customer_name}})"},"format":{"type":"string","description":"Supported document formats."},"orientation":{"type":"string","enum":["portrait","landscape"],"description":"Page orientation for PDF generation"},"variables":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{},"description":"Data to pass to the template."},"current_version":{"type":"number","description":"Current version number of the template"},"owner_member_id":{"description":"Member who created the template, from the IAM registry. Absent on write responses.","anyOf":[{"type":"string"},{"type":"null"}]},"created_at":{"type":"string","description":"Timestamp when template was created"},"template_url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Signed URL to download the template file (pdf-form/excel only)"}},"required":["id","workspace_id","name","description","type","template","variables","current_version","created_at","template_url"],"additionalProperties":false},"post_v1_apps_app_id_field_options_Response":{"type":"object","properties":{"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"object","properties":{"label":{"type":"string"},"options":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"label":{"type":"string"},"color":{"type":"string"}},"required":["key","label","color"],"additionalProperties":false}}},"required":["label","options"],"additionalProperties":false}}},"required":["fields"],"additionalProperties":false},"post_v1_content_installations_id_upgrade_Response":{"type":"object","properties":{"id":{"type":"string"},"workspace_id":{"type":"string"},"package_id":{"type":"string"},"package_version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"app_id":{"anyOf":[{"type":"string"},{"type":"null"}]},"binding":{"type":"object","properties":{"knowledge":{"default":{},"type":"object","propertyNames":{"type":"string","minLength":1},"additionalProperties":{"type":"string","minLength":1}},"templates":{"default":{},"type":"object","propertyNames":{"type":"string","minLength":1},"additionalProperties":{"type":"string","minLength":1}}},"required":["knowledge","templates"],"additionalProperties":false},"installed_by":{"anyOf":[{"type":"string"},{"type":"null"}]},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","workspace_id","package_id","package_version","app_id","binding","installed_by","created_at","updated_at"],"additionalProperties":false},"post_v1_apps_app_id_package_release_Response":{"type":"object","properties":{"package_id":{"type":"string"},"version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"added_aliases":{"type":"array","items":{"type":"string"}},"changed_artifacts":{"type":"array","items":{"type":"string"}},"knowledge":{"type":"object","properties":{"added":{"type":"array","items":{"type":"string"}},"removed":{"type":"array","items":{"type":"string"}},"changed":{"type":"array","items":{"type":"string"}}},"required":["added","removed","changed"],"additionalProperties":false},"config":{"type":"object","properties":{"added":{"type":"array","items":{"type":"string"}},"removed":{"type":"array","items":{"type":"string"}},"changed":{"type":"array","items":{"type":"string"}}},"required":["added","removed","changed"],"additionalProperties":false}},"required":["package_id","version","added_aliases","changed_artifacts","knowledge","config"],"additionalProperties":false},"post_v1_apps_app_id_package_upgrade_Response":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the app"},"name":{"type":"string","description":"Display name of the app"},"description":{"description":"Optional description of the app's purpose","anyOf":[{"type":"string"},{"type":"null"}]},"icon":{"description":"Icon name for the app (e.g., 'home', 'chart-bar')","anyOf":[{"type":"string"},{"type":"null"}]},"workspace_id":{"type":"string","description":"ID of the workspace this app belongs to"},"current_version_id":{"description":"Pointer to the currently-published app_versions row in R2. Set once the app has been deployed at least once via `lotics app deploy`; null before the first deploy.","anyOf":[{"type":"string"},{"type":"null"}]},"public_subdomain":{"type":"string","description":"DNS label for the app's public origin: `<public_subdomain>.lotics.app`. Server-generated, high-entropy, and distinct from `id` (app_ids are not valid DNS labels). Assigned at creation for every app."},"public_password_set":{"description":"Whether a shared password gates the public binding. True → anonymous visitors must authenticate at `/v1/apps/{app_id}/public/authenticate` before any publicAppAccess endpoint resolves. The hash itself is never sent over the wire; only this flag is exposed (and only on authenticated owner-side reads — the public by-subdomain response surfaces the same fact as `requires_password`).","type":"boolean"},"workflows":{"description":"Alias → workflow declaration map. Each alias resolves to a workflow_id and an optional typed inputs schema. Authored solely by `set_app_workflow` / `remove_app_workflow` (NOT by `lotics app deploy`, which never touches this map). The iframe SDK's useWorkflow(alias) resolves through this map; when an inputs schema is declared, the server validates payloads against it before invocation and the CLI codegen emits typed call-site signatures. The workflow always executes under the app's IAM principal.","anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"object","properties":{"workflow_id":{"type":"string","description":"ID of the workflow this alias resolves to"},"inputs":{"description":"Typed input schema for the workflow alias. Keys are input names; values declare type + constraints. The server validates payloads against this schema before invoking the workflow; CLI codegen emits typed `useWorkflow<alias>` signatures for the app side. Omit `inputs` for workflows that accept no inputs or whose shape isn't worth declaring.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"$ref":"#/components/schemas/AppWorkflowInput"}},"outputs":{"description":"Typed output schema for the data the workflow returns via `return({ data })`. Keys are field names; values declare type + (nested object/array) shape. The server validates the returned data against this schema at the app boundary and the workflow won't save unless its `return({ data })` matches; CLI codegen types `result.data`. Omit when the workflow returns no data, or pass it through untyped.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"$ref":"#/components/schemas/AppWorkflowOutput"}},"description":{"description":"What this workflow does, in one line — read by an agent choosing between the app's aliases, the same job a query's `description` does. `lotics app workflow set` sends it, so it lives beside the body in version control; omitted, the workflow keeps the description already on it.","type":"string"},"body_sha":{"description":"Fingerprint of the body currently bound to this alias, written by the server on every accepted `set_app_workflow`. Never sent by a caller — it is the value a caller's `expected_body_sha` is checked against, so that a push built on a stale copy of the body is refused instead of silently overwriting whatever replaced it. Absent on a binding last written before the field existed, where no comparison is possible.","type":"string"}},"required":["workflow_id"],"additionalProperties":false}},{"type":"null"}]},"queries":{"description":"Alias → query declaration map. Each alias resolves to a fixed query AST template with a typed param schema. Synced from the app's lotics.queries manifest on every `lotics app deploy`. The iframe SDK's useQuery(alias, params) resolves through this map; custom-code apps never send a raw AST. The query runs under the app's IAM principal.","anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"object","properties":{"ast":{"description":"Query AST template (a QueryNode). Validated server-side via parseQueryNode at deploy. May embed {{params.<name>}} tokens in filter value positions."},"params":{"description":"Typed param schema. Keys are param names referenced as {{params.<name>}} in the ast; values declare type + constraints. The server validates the caller's params payload against this before interpolating. Omit for queries that take no params.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"$ref":"#/components/schemas/AppWorkflowInput"}},"description":{"description":"What this query returns, in one line — read by an agent choosing between the app's aliases. An alias is a JS identifier, which names a query without saying what it covers. Capped at 300 characters.","type":"string"}},"required":["ast"],"additionalProperties":false}},{"type":"null"}]},"capabilities":{"description":"Opt-in app capabilities, declared in the manifest's `lotics.capabilities` and synced on every deploy. Capabilities are off unless declared — least ambient authority. `comments` gates the members-only `useComments` primitive: only an app that declares it can read/write record comments (each under the VIEWING member's own authority).","anyOf":[{"type":"object","properties":{"comments":{"description":"Enable the members-only `useComments` primitive. When true, the app may read/write record comments — each operation under the VIEWING member's own table access, row-scope, and author identity (never the app owner's). Default off.","type":"boolean"}},"additionalProperties":false},{"type":"null"}]},"agents":{"description":"Alias → agent declaration map. Each alias binds a streaming tool-loop agent the app runs via `useAgentRun(alias)` (an SSE stream), with declared tools, model, and typed inputs/outputs. Synced from the app's `lotics.agents` manifest on every deploy. The agent runs under the app's IAM principal; runs persist a flat history per session.","anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"object","properties":{"instructions":{"type":"string","minLength":1,"description":"System instructions for the agent — the task it performs per run."},"tool_names":{"type":"array","items":{"type":"string","minLength":1},"description":"Tools the agent may call, resolved against the shared registry minus the automation blacklist. The capability boundary — the run can use nothing else. May be empty for a pure-reasoning agent."},"knowledge_doc_ids":{"description":"Knowledge docs the agent may read, validated at declare time against the app owner's `use` access. Small docs are inlined into the agent's system prompt each run; a doc too large to inline requires the code tools (code_exec) in tool_names and is read by staging it into a code run. Omit for an agent that needs no knowledge.","type":"array","items":{"type":"string","minLength":1}},"query_aliases":{"description":"Named queries from this app's manifest the agent may run via `run_app_query`, validated at declare time against the app's own queries. This is the agent's ENTIRE read surface over workspace data — a template fixes the tables, filters, and projection, so it bounds rows and columns, not just tables. Omit for an agent that reads no records.","type":"array","items":{"type":"string","minLength":1}},"workflow_aliases":{"description":"Workflows from this app's manifest the agent may invoke via `run_app_workflow`, validated at declare time against the app's own workflows. This is the agent's ENTIRE write surface — the same declared mutation path the app's UI uses, so table hooks and side-effect harvesting apply. Omit for a read-only agent.","type":"array","items":{"type":"string","minLength":1}},"model_tier":{"description":"Model tier the agent runs on — `haiku`, `sonnet`, or `opus`. Omit to follow the platform default tier, resolved at run time: the preferred choice. A tier names capability, not a version, so the generation behind it moves with the platform and this declaration never needs a rewrite. Pin only a deliberate, tested choice.","type":"string","enum":["haiku","sonnet","opus"]},"effort_level":{"description":"Reasoning depth for adaptive-thinking tiers — one of the chosen tier's supported levels (validated against model_tier at declare time). Omit to use the model default; ignored on tiers without adaptive thinking.","type":"string","enum":["low","medium","high","xhigh","max"]},"prefix_cache_ttl":{"description":"How long this agent's prompt-cache prefix (tools + system block) is kept warm. Omit — the default (5m, Anthropic's own) is right for essentially every agent. \"1h\" doubles the write price (2x the input rate against 1.25x) to buy only the 5m..1h band, and an entry nothing re-reads inside the hour is paid for twice over; declining it still leaves the prefix cached at the default. Set it only from measured cadence, never a guess.","type":"string","enum":["5m","1h"]},"inputs":{"description":"Typed input schema for one run. Keys are input names; values declare type + constraints. The server validates the run payload against this before invoking; CLI codegen emits a typed `useAgentRun<alias>` signature. Omit for an untyped payload.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"$ref":"#/components/schemas/AppWorkflowInput"}},"outputs":{"description":"Typed output schema for the structured result the agent emits. Keys are field names; values declare type + (nested object/array) shape. When declared, the run must emit a result matching it — the server validates before persisting and the SDK types `run.output`. Omit for a free-text run whose output is the final message.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"$ref":"#/components/schemas/AppWorkflowOutput"}}},"required":["instructions","tool_names"],"additionalProperties":false}},{"type":"null"}]},"theme":{"description":"Theme settings for the app","anyOf":[{"type":"object","properties":{"color":{"description":"Theme color for the app","anyOf":[{"type":"string","enum":["red","orange","amber","yellow","lime","green","emerald","teal","cyan","sky","blue","indigo","violet","purple","fuchsia","pink","rose","slate","gray","zinc","neutral","stone"]},{"type":"null"}]}},"additionalProperties":false},{"type":"null"}]},"package_id":{"description":"App-package registry id this app was installed from; null for a bespoke app or after eject.","anyOf":[{"type":"string"},{"type":"null"}]},"package_version":{"description":"Installed package version (the upgrade pin); null for a bespoke app or after eject.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"binding":{"description":"App-package install join: per-namespace (entities/fields/options/templates/roles/workflows/knowledge) alias → concrete-id maps. Null for a bespoke app.","anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}}},{"type":"null"}]},"config":{"description":"Installation-level customization config values (the customization-ladder first rung). Null for a bespoke app.","anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"}]}},{"type":"null"}]},"ejected_at":{"description":"When the app was ejected from its package (severing upgrades); null if never ejected.","anyOf":[{"type":"string"},{"type":"null"}]},"created_at":{"type":"string","description":"Timestamp when app was created"},"updated_at":{"type":"string","description":"Timestamp of last update"}},"required":["id","name","workspace_id","public_subdomain","created_at","updated_at"],"additionalProperties":false},"post_v1_apps_app_id_public_authenticate_Response":{"type":"object","properties":{"session_token":{"type":"string"},"expires_at":{"type":"string"}},"required":["session_token","expires_at"],"additionalProperties":false},"post_v1_apps_app_id_authoring_begin_Response":{"type":"object","properties":{"chat_session_id":{"type":"string"},"preview_origin":{"type":"string"}},"required":["chat_session_id","preview_origin"],"additionalProperties":false},"post_v1_apps_app_id_agent_runs_run_id_cancel_Response":{"type":"object","properties":{"ok":{"type":"boolean","const":true}},"required":["ok"],"additionalProperties":false},"post_v1_apps_app_id_files_complete_Response":{"type":"object","properties":{"file":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the processed file"},"filename":{"type":"string","description":"Original filename of the uploaded file"},"mime_type":{"type":"string","description":"MIME type of the file (e.g., 'image/png', 'application/pdf')"},"url":{"description":"Stable file serving URL, resolved at serving time","type":"string"},"thumbnail_url":{"description":"Thumbnail URL for image files, resolved at serving time","type":"string"},"preview_url":{"description":"Preview URL for legacy Excel files, resolved at serving time","type":"string"},"provider":{"type":"string","description":"Storage provider name (e.g., 'aws', 'gcs')"},"file_storage_key":{"type":"string","description":"Storage key/path where the file is stored"},"workspace_id":{"type":"string","description":"ID of the workspace this file belongs to"},"size":{"description":"Byte size of the stored object (null until backfilled)","anyOf":[{"type":"number"},{"type":"null"}]},"created_at":{"type":"string","description":"Timestamp when file was uploaded"},"metadata":{"description":"Additional metadata about the file"},"data":{"description":"File-type-specific data (e.g., {width, height, orientation} for images)"}},"required":["id","filename","mime_type","provider","file_storage_key","workspace_id","created_at","metadata","data"],"additionalProperties":false}},"required":["file"],"additionalProperties":false},"post_v1_apps_Response":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the app"},"name":{"type":"string","description":"Display name of the app"},"description":{"description":"Optional description of the app's purpose","anyOf":[{"type":"string"},{"type":"null"}]},"icon":{"description":"Icon name for the app (e.g., 'home', 'chart-bar')","anyOf":[{"type":"string"},{"type":"null"}]},"workspace_id":{"type":"string","description":"ID of the workspace this app belongs to"},"current_version_id":{"description":"Pointer to the currently-published app_versions row in R2. Set once the app has been deployed at least once via `lotics app deploy`; null before the first deploy.","anyOf":[{"type":"string"},{"type":"null"}]},"public_subdomain":{"type":"string","description":"DNS label for the app's public origin: `<public_subdomain>.lotics.app`. Server-generated, high-entropy, and distinct from `id` (app_ids are not valid DNS labels). Assigned at creation for every app."},"public_password_set":{"description":"Whether a shared password gates the public binding. True → anonymous visitors must authenticate at `/v1/apps/{app_id}/public/authenticate` before any publicAppAccess endpoint resolves. The hash itself is never sent over the wire; only this flag is exposed (and only on authenticated owner-side reads — the public by-subdomain response surfaces the same fact as `requires_password`).","type":"boolean"},"workflows":{"description":"Alias → workflow declaration map. Each alias resolves to a workflow_id and an optional typed inputs schema. Authored solely by `set_app_workflow` / `remove_app_workflow` (NOT by `lotics app deploy`, which never touches this map). The iframe SDK's useWorkflow(alias) resolves through this map; when an inputs schema is declared, the server validates payloads against it before invocation and the CLI codegen emits typed call-site signatures. The workflow always executes under the app's IAM principal.","anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"object","properties":{"workflow_id":{"type":"string","description":"ID of the workflow this alias resolves to"},"inputs":{"description":"Typed input schema for the workflow alias. Keys are input names; values declare type + constraints. The server validates payloads against this schema before invoking the workflow; CLI codegen emits typed `useWorkflow<alias>` signatures for the app side. Omit `inputs` for workflows that accept no inputs or whose shape isn't worth declaring.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"$ref":"#/components/schemas/AppWorkflowInput"}},"outputs":{"description":"Typed output schema for the data the workflow returns via `return({ data })`. Keys are field names; values declare type + (nested object/array) shape. The server validates the returned data against this schema at the app boundary and the workflow won't save unless its `return({ data })` matches; CLI codegen types `result.data`. Omit when the workflow returns no data, or pass it through untyped.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"$ref":"#/components/schemas/AppWorkflowOutput"}},"description":{"description":"What this workflow does, in one line — read by an agent choosing between the app's aliases, the same job a query's `description` does. `lotics app workflow set` sends it, so it lives beside the body in version control; omitted, the workflow keeps the description already on it.","type":"string"},"body_sha":{"description":"Fingerprint of the body currently bound to this alias, written by the server on every accepted `set_app_workflow`. Never sent by a caller — it is the value a caller's `expected_body_sha` is checked against, so that a push built on a stale copy of the body is refused instead of silently overwriting whatever replaced it. Absent on a binding last written before the field existed, where no comparison is possible.","type":"string"}},"required":["workflow_id"],"additionalProperties":false}},{"type":"null"}]},"queries":{"description":"Alias → query declaration map. Each alias resolves to a fixed query AST template with a typed param schema. Synced from the app's lotics.queries manifest on every `lotics app deploy`. The iframe SDK's useQuery(alias, params) resolves through this map; custom-code apps never send a raw AST. The query runs under the app's IAM principal.","anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"object","properties":{"ast":{"description":"Query AST template (a QueryNode). Validated server-side via parseQueryNode at deploy. May embed {{params.<name>}} tokens in filter value positions."},"params":{"description":"Typed param schema. Keys are param names referenced as {{params.<name>}} in the ast; values declare type + constraints. The server validates the caller's params payload against this before interpolating. Omit for queries that take no params.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"$ref":"#/components/schemas/AppWorkflowInput"}},"description":{"description":"What this query returns, in one line — read by an agent choosing between the app's aliases. An alias is a JS identifier, which names a query without saying what it covers. Capped at 300 characters.","type":"string"}},"required":["ast"],"additionalProperties":false}},{"type":"null"}]},"capabilities":{"description":"Opt-in app capabilities, declared in the manifest's `lotics.capabilities` and synced on every deploy. Capabilities are off unless declared — least ambient authority. `comments` gates the members-only `useComments` primitive: only an app that declares it can read/write record comments (each under the VIEWING member's own authority).","anyOf":[{"type":"object","properties":{"comments":{"description":"Enable the members-only `useComments` primitive. When true, the app may read/write record comments — each operation under the VIEWING member's own table access, row-scope, and author identity (never the app owner's). Default off.","type":"boolean"}},"additionalProperties":false},{"type":"null"}]},"agents":{"description":"Alias → agent declaration map. Each alias binds a streaming tool-loop agent the app runs via `useAgentRun(alias)` (an SSE stream), with declared tools, model, and typed inputs/outputs. Synced from the app's `lotics.agents` manifest on every deploy. The agent runs under the app's IAM principal; runs persist a flat history per session.","anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"object","properties":{"instructions":{"type":"string","minLength":1,"description":"System instructions for the agent — the task it performs per run."},"tool_names":{"type":"array","items":{"type":"string","minLength":1},"description":"Tools the agent may call, resolved against the shared registry minus the automation blacklist. The capability boundary — the run can use nothing else. May be empty for a pure-reasoning agent."},"knowledge_doc_ids":{"description":"Knowledge docs the agent may read, validated at declare time against the app owner's `use` access. Small docs are inlined into the agent's system prompt each run; a doc too large to inline requires the code tools (code_exec) in tool_names and is read by staging it into a code run. Omit for an agent that needs no knowledge.","type":"array","items":{"type":"string","minLength":1}},"query_aliases":{"description":"Named queries from this app's manifest the agent may run via `run_app_query`, validated at declare time against the app's own queries. This is the agent's ENTIRE read surface over workspace data — a template fixes the tables, filters, and projection, so it bounds rows and columns, not just tables. Omit for an agent that reads no records.","type":"array","items":{"type":"string","minLength":1}},"workflow_aliases":{"description":"Workflows from this app's manifest the agent may invoke via `run_app_workflow`, validated at declare time against the app's own workflows. This is the agent's ENTIRE write surface — the same declared mutation path the app's UI uses, so table hooks and side-effect harvesting apply. Omit for a read-only agent.","type":"array","items":{"type":"string","minLength":1}},"model_tier":{"description":"Model tier the agent runs on — `haiku`, `sonnet`, or `opus`. Omit to follow the platform default tier, resolved at run time: the preferred choice. A tier names capability, not a version, so the generation behind it moves with the platform and this declaration never needs a rewrite. Pin only a deliberate, tested choice.","type":"string","enum":["haiku","sonnet","opus"]},"effort_level":{"description":"Reasoning depth for adaptive-thinking tiers — one of the chosen tier's supported levels (validated against model_tier at declare time). Omit to use the model default; ignored on tiers without adaptive thinking.","type":"string","enum":["low","medium","high","xhigh","max"]},"prefix_cache_ttl":{"description":"How long this agent's prompt-cache prefix (tools + system block) is kept warm. Omit — the default (5m, Anthropic's own) is right for essentially every agent. \"1h\" doubles the write price (2x the input rate against 1.25x) to buy only the 5m..1h band, and an entry nothing re-reads inside the hour is paid for twice over; declining it still leaves the prefix cached at the default. Set it only from measured cadence, never a guess.","type":"string","enum":["5m","1h"]},"inputs":{"description":"Typed input schema for one run. Keys are input names; values declare type + constraints. The server validates the run payload against this before invoking; CLI codegen emits a typed `useAgentRun<alias>` signature. Omit for an untyped payload.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"$ref":"#/components/schemas/AppWorkflowInput"}},"outputs":{"description":"Typed output schema for the structured result the agent emits. Keys are field names; values declare type + (nested object/array) shape. When declared, the run must emit a result matching it — the server validates before persisting and the SDK types `run.output`. Omit for a free-text run whose output is the final message.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"$ref":"#/components/schemas/AppWorkflowOutput"}}},"required":["instructions","tool_names"],"additionalProperties":false}},{"type":"null"}]},"theme":{"description":"Theme settings for the app","anyOf":[{"type":"object","properties":{"color":{"description":"Theme color for the app","anyOf":[{"type":"string","enum":["red","orange","amber","yellow","lime","green","emerald","teal","cyan","sky","blue","indigo","violet","purple","fuchsia","pink","rose","slate","gray","zinc","neutral","stone"]},{"type":"null"}]}},"additionalProperties":false},{"type":"null"}]},"package_id":{"description":"App-package registry id this app was installed from; null for a bespoke app or after eject.","anyOf":[{"type":"string"},{"type":"null"}]},"package_version":{"description":"Installed package version (the upgrade pin); null for a bespoke app or after eject.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"binding":{"description":"App-package install join: per-namespace (entities/fields/options/templates/roles/workflows/knowledge) alias → concrete-id maps. Null for a bespoke app.","anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}}},{"type":"null"}]},"config":{"description":"Installation-level customization config values (the customization-ladder first rung). Null for a bespoke app.","anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"}]}},{"type":"null"}]},"ejected_at":{"description":"When the app was ejected from its package (severing upgrades); null if never ejected.","anyOf":[{"type":"string"},{"type":"null"}]},"created_at":{"type":"string","description":"Timestamp when app was created"},"updated_at":{"type":"string","description":"Timestamp of last update"}},"required":["id","name","workspace_id","public_subdomain","created_at","updated_at"],"additionalProperties":false},"delete_v1_apps_app_id_Response":{"type":"object","properties":{"id":{"type":"string"},"deleted":{"type":"boolean","const":true}},"required":["id","deleted"],"additionalProperties":false},"delete_v1_content_installations_id_Response":{"type":"object","properties":{"installation_id":{"type":"string"},"archived_doc_ids":{"type":"array","items":{"type":"string"}},"archived_template_ids":{"type":"array","items":{"type":"string"}},"deleted":{"type":"boolean","const":true}},"required":["installation_id","archived_doc_ids","archived_template_ids","deleted"],"additionalProperties":false},"post_v1_apps_app_id_authoring_deploy_Response":{"type":"object","properties":{"version_id":{"type":"string"},"version_number":{"type":"number"},"public_subdomain":{"type":"string"},"warnings":{"type":"array","items":{"type":"string"}}},"required":["version_id","version_number","public_subdomain","warnings"],"additionalProperties":false},"post_v1_apps_app_id_authoring_discard_Response":{"type":"object","properties":{"app_id":{"type":"string"}},"required":["app_id"],"additionalProperties":false},"post_v1_apps_app_id_eject_Response":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the app"},"name":{"type":"string","description":"Display name of the app"},"description":{"description":"Optional description of the app's purpose","anyOf":[{"type":"string"},{"type":"null"}]},"icon":{"description":"Icon name for the app (e.g., 'home', 'chart-bar')","anyOf":[{"type":"string"},{"type":"null"}]},"workspace_id":{"type":"string","description":"ID of the workspace this app belongs to"},"current_version_id":{"description":"Pointer to the currently-published app_versions row in R2. Set once the app has been deployed at least once via `lotics app deploy`; null before the first deploy.","anyOf":[{"type":"string"},{"type":"null"}]},"public_subdomain":{"type":"string","description":"DNS label for the app's public origin: `<public_subdomain>.lotics.app`. Server-generated, high-entropy, and distinct from `id` (app_ids are not valid DNS labels). Assigned at creation for every app."},"public_password_set":{"description":"Whether a shared password gates the public binding. True → anonymous visitors must authenticate at `/v1/apps/{app_id}/public/authenticate` before any publicAppAccess endpoint resolves. The hash itself is never sent over the wire; only this flag is exposed (and only on authenticated owner-side reads — the public by-subdomain response surfaces the same fact as `requires_password`).","type":"boolean"},"workflows":{"description":"Alias → workflow declaration map. Each alias resolves to a workflow_id and an optional typed inputs schema. Authored solely by `set_app_workflow` / `remove_app_workflow` (NOT by `lotics app deploy`, which never touches this map). The iframe SDK's useWorkflow(alias) resolves through this map; when an inputs schema is declared, the server validates payloads against it before invocation and the CLI codegen emits typed call-site signatures. The workflow always executes under the app's IAM principal.","anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"object","properties":{"workflow_id":{"type":"string","description":"ID of the workflow this alias resolves to"},"inputs":{"description":"Typed input schema for the workflow alias. Keys are input names; values declare type + constraints. The server validates payloads against this schema before invoking the workflow; CLI codegen emits typed `useWorkflow<alias>` signatures for the app side. Omit `inputs` for workflows that accept no inputs or whose shape isn't worth declaring.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"$ref":"#/components/schemas/AppWorkflowInput"}},"outputs":{"description":"Typed output schema for the data the workflow returns via `return({ data })`. Keys are field names; values declare type + (nested object/array) shape. The server validates the returned data against this schema at the app boundary and the workflow won't save unless its `return({ data })` matches; CLI codegen types `result.data`. Omit when the workflow returns no data, or pass it through untyped.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"$ref":"#/components/schemas/AppWorkflowOutput"}},"description":{"description":"What this workflow does, in one line — read by an agent choosing between the app's aliases, the same job a query's `description` does. `lotics app workflow set` sends it, so it lives beside the body in version control; omitted, the workflow keeps the description already on it.","type":"string"},"body_sha":{"description":"Fingerprint of the body currently bound to this alias, written by the server on every accepted `set_app_workflow`. Never sent by a caller — it is the value a caller's `expected_body_sha` is checked against, so that a push built on a stale copy of the body is refused instead of silently overwriting whatever replaced it. Absent on a binding last written before the field existed, where no comparison is possible.","type":"string"}},"required":["workflow_id"],"additionalProperties":false}},{"type":"null"}]},"queries":{"description":"Alias → query declaration map. Each alias resolves to a fixed query AST template with a typed param schema. Synced from the app's lotics.queries manifest on every `lotics app deploy`. The iframe SDK's useQuery(alias, params) resolves through this map; custom-code apps never send a raw AST. The query runs under the app's IAM principal.","anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"object","properties":{"ast":{"description":"Query AST template (a QueryNode). Validated server-side via parseQueryNode at deploy. May embed {{params.<name>}} tokens in filter value positions."},"params":{"description":"Typed param schema. Keys are param names referenced as {{params.<name>}} in the ast; values declare type + constraints. The server validates the caller's params payload against this before interpolating. Omit for queries that take no params.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"$ref":"#/components/schemas/AppWorkflowInput"}},"description":{"description":"What this query returns, in one line — read by an agent choosing between the app's aliases. An alias is a JS identifier, which names a query without saying what it covers. Capped at 300 characters.","type":"string"}},"required":["ast"],"additionalProperties":false}},{"type":"null"}]},"capabilities":{"description":"Opt-in app capabilities, declared in the manifest's `lotics.capabilities` and synced on every deploy. Capabilities are off unless declared — least ambient authority. `comments` gates the members-only `useComments` primitive: only an app that declares it can read/write record comments (each under the VIEWING member's own authority).","anyOf":[{"type":"object","properties":{"comments":{"description":"Enable the members-only `useComments` primitive. When true, the app may read/write record comments — each operation under the VIEWING member's own table access, row-scope, and author identity (never the app owner's). Default off.","type":"boolean"}},"additionalProperties":false},{"type":"null"}]},"agents":{"description":"Alias → agent declaration map. Each alias binds a streaming tool-loop agent the app runs via `useAgentRun(alias)` (an SSE stream), with declared tools, model, and typed inputs/outputs. Synced from the app's `lotics.agents` manifest on every deploy. The agent runs under the app's IAM principal; runs persist a flat history per session.","anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"object","properties":{"instructions":{"type":"string","minLength":1,"description":"System instructions for the agent — the task it performs per run."},"tool_names":{"type":"array","items":{"type":"string","minLength":1},"description":"Tools the agent may call, resolved against the shared registry minus the automation blacklist. The capability boundary — the run can use nothing else. May be empty for a pure-reasoning agent."},"knowledge_doc_ids":{"description":"Knowledge docs the agent may read, validated at declare time against the app owner's `use` access. Small docs are inlined into the agent's system prompt each run; a doc too large to inline requires the code tools (code_exec) in tool_names and is read by staging it into a code run. Omit for an agent that needs no knowledge.","type":"array","items":{"type":"string","minLength":1}},"query_aliases":{"description":"Named queries from this app's manifest the agent may run via `run_app_query`, validated at declare time against the app's own queries. This is the agent's ENTIRE read surface over workspace data — a template fixes the tables, filters, and projection, so it bounds rows and columns, not just tables. Omit for an agent that reads no records.","type":"array","items":{"type":"string","minLength":1}},"workflow_aliases":{"description":"Workflows from this app's manifest the agent may invoke via `run_app_workflow`, validated at declare time against the app's own workflows. This is the agent's ENTIRE write surface — the same declared mutation path the app's UI uses, so table hooks and side-effect harvesting apply. Omit for a read-only agent.","type":"array","items":{"type":"string","minLength":1}},"model_tier":{"description":"Model tier the agent runs on — `haiku`, `sonnet`, or `opus`. Omit to follow the platform default tier, resolved at run time: the preferred choice. A tier names capability, not a version, so the generation behind it moves with the platform and this declaration never needs a rewrite. Pin only a deliberate, tested choice.","type":"string","enum":["haiku","sonnet","opus"]},"effort_level":{"description":"Reasoning depth for adaptive-thinking tiers — one of the chosen tier's supported levels (validated against model_tier at declare time). Omit to use the model default; ignored on tiers without adaptive thinking.","type":"string","enum":["low","medium","high","xhigh","max"]},"prefix_cache_ttl":{"description":"How long this agent's prompt-cache prefix (tools + system block) is kept warm. Omit — the default (5m, Anthropic's own) is right for essentially every agent. \"1h\" doubles the write price (2x the input rate against 1.25x) to buy only the 5m..1h band, and an entry nothing re-reads inside the hour is paid for twice over; declining it still leaves the prefix cached at the default. Set it only from measured cadence, never a guess.","type":"string","enum":["5m","1h"]},"inputs":{"description":"Typed input schema for one run. Keys are input names; values declare type + constraints. The server validates the run payload against this before invoking; CLI codegen emits a typed `useAgentRun<alias>` signature. Omit for an untyped payload.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"$ref":"#/components/schemas/AppWorkflowInput"}},"outputs":{"description":"Typed output schema for the structured result the agent emits. Keys are field names; values declare type + (nested object/array) shape. When declared, the run must emit a result matching it — the server validates before persisting and the SDK types `run.output`. Omit for a free-text run whose output is the final message.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"$ref":"#/components/schemas/AppWorkflowOutput"}}},"required":["instructions","tool_names"],"additionalProperties":false}},{"type":"null"}]},"theme":{"description":"Theme settings for the app","anyOf":[{"type":"object","properties":{"color":{"description":"Theme color for the app","anyOf":[{"type":"string","enum":["red","orange","amber","yellow","lime","green","emerald","teal","cyan","sky","blue","indigo","violet","purple","fuchsia","pink","rose","slate","gray","zinc","neutral","stone"]},{"type":"null"}]}},"additionalProperties":false},{"type":"null"}]},"package_id":{"description":"App-package registry id this app was installed from; null for a bespoke app or after eject.","anyOf":[{"type":"string"},{"type":"null"}]},"package_version":{"description":"Installed package version (the upgrade pin); null for a bespoke app or after eject.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"binding":{"description":"App-package install join: per-namespace (entities/fields/options/templates/roles/workflows/knowledge) alias → concrete-id maps. Null for a bespoke app.","anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}}},{"type":"null"}]},"config":{"description":"Installation-level customization config values (the customization-ladder first rung). Null for a bespoke app.","anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"}]}},{"type":"null"}]},"ejected_at":{"description":"When the app was ejected from its package (severing upgrades); null if never ejected.","anyOf":[{"type":"string"},{"type":"null"}]},"created_at":{"type":"string","description":"Timestamp when app was created"},"updated_at":{"type":"string","description":"Timestamp of last update"}},"required":["id","name","workspace_id","public_subdomain","created_at","updated_at"],"additionalProperties":false},"post_v1_apps_app_id_authoring_ensure_Response":{"type":"object","properties":{"preview_origin":{"type":"string"},"rebuilt":{"type":"boolean"}},"required":["preview_origin","rebuilt"],"additionalProperties":false},"post_v1_apps_app_id_workflows_alias_execute_Response":{"type":"object","properties":{"status":{"type":"string","enum":["success","error"],"description":"Status of the workflow execution"},"message":{"description":"Message returned from the workflow or fallback message","type":"string"},"files":{"description":"Files generated by the workflow","type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the processed file"},"filename":{"type":"string","description":"Original filename of the uploaded file"},"mime_type":{"type":"string","description":"MIME type of the file (e.g., 'image/png', 'application/pdf')"},"url":{"description":"Stable file serving URL, resolved at serving time","type":"string"},"thumbnail_url":{"description":"Thumbnail URL for image files, resolved at serving time","type":"string"},"preview_url":{"description":"Preview URL for legacy Excel files, resolved at serving time","type":"string"},"provider":{"type":"string","description":"Storage provider name (e.g., 'aws', 'gcs')"},"file_storage_key":{"type":"string","description":"Storage key/path where the file is stored"},"workspace_id":{"type":"string","description":"ID of the workspace this file belongs to"},"size":{"description":"Byte size of the stored object (null until backfilled)","anyOf":[{"type":"number"},{"type":"null"}]},"created_at":{"type":"string","description":"Timestamp when file was uploaded"},"metadata":{"description":"Additional metadata about the file"},"data":{"description":"File-type-specific data (e.g., {width, height, orientation} for images)"}},"required":["id","filename","mime_type","provider","file_storage_key","workspace_id","created_at","metadata","data"],"additionalProperties":false}},"data":{"description":"Structured data the workflow returned via `return({ data })`. Validated against the alias's declared `outputs` schema when present; passed through untyped otherwise. The wire shape is `unknown`; the SDK types it per alias from the declared outputs."},"side_effects":{"description":"Honest post-run harvest of the run's side effects (created records/files, irreversible calls, possible sub-workflows). Present on every terminal status.","type":"object","properties":{"created_records":{"type":"array","items":{"type":"object","properties":{"table_id":{"type":"string"},"record_ids":{"type":"array","items":{"type":"string"}}},"required":["table_id","record_ids"],"additionalProperties":false},"description":"Records the run created, grouped by table — deletable by id for cleanup."},"created_files":{"type":"array","items":{"type":"string"},"description":"File ids the run produced."},"irreversible_tool_calls":{"type":"array","items":{"type":"object","properties":{"tool_name":{"type":"string"},"step_id":{"type":"string"}},"required":["tool_name","step_id"],"additionalProperties":false},"description":"Tool calls whose effect cannot be undone — external integrations + notifications, plus record-creating calls that returned no ids to delete by."},"sub_workflows_possible":{"type":"boolean","description":"True when a write this run made could fan out into a descendant execution this summary does not capture — a created/updated/deleted record whose table has a matching after_* workflow, or a press_button that spawned its own execution."}},"required":["created_records","created_files","irreversible_tool_calls","sub_workflows_possible"],"additionalProperties":false}},"required":["status"],"additionalProperties":false},"post_v1_packages_package_id_fleet_upgrade_Response":{"type":"object","properties":{"package_id":{"type":"string"},"target_version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"installations":{"type":"array","items":{"type":"object","properties":{"app_id":{"type":"string"},"app_name":{"type":"string"},"workspace_id":{"type":"string"},"workspace_name":{"type":"string"},"from_version":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"outcome":{"type":"string","enum":["upgraded","up_to_date","skipped","failed"]},"blockers":{"type":"object","properties":{"breaking":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"drift":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"modified":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"knowledge":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["breaking","drift","modified","knowledge"],"additionalProperties":false},"message":{"type":"string"}},"required":["app_id","app_name","workspace_id","workspace_name","from_version","outcome"],"additionalProperties":false}}},"required":["package_id","target_version","installations"],"additionalProperties":false},"get_v1_apps_app_id_Response":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the app"},"name":{"type":"string","description":"Display name of the app"},"description":{"description":"Optional description of the app's purpose","anyOf":[{"type":"string"},{"type":"null"}]},"icon":{"description":"Icon name for the app (e.g., 'home', 'chart-bar')","anyOf":[{"type":"string"},{"type":"null"}]},"workspace_id":{"type":"string","description":"ID of the workspace this app belongs to"},"current_version_id":{"description":"Pointer to the currently-published app_versions row in R2. Set once the app has been deployed at least once via `lotics app deploy`; null before the first deploy.","anyOf":[{"type":"string"},{"type":"null"}]},"public_subdomain":{"type":"string","description":"DNS label for the app's public origin: `<public_subdomain>.lotics.app`. Server-generated, high-entropy, and distinct from `id` (app_ids are not valid DNS labels). Assigned at creation for every app."},"public_password_set":{"description":"Whether a shared password gates the public binding. True → anonymous visitors must authenticate at `/v1/apps/{app_id}/public/authenticate` before any publicAppAccess endpoint resolves. The hash itself is never sent over the wire; only this flag is exposed (and only on authenticated owner-side reads — the public by-subdomain response surfaces the same fact as `requires_password`).","type":"boolean"},"workflows":{"description":"Alias → workflow declaration map. Each alias resolves to a workflow_id and an optional typed inputs schema. Authored solely by `set_app_workflow` / `remove_app_workflow` (NOT by `lotics app deploy`, which never touches this map). The iframe SDK's useWorkflow(alias) resolves through this map; when an inputs schema is declared, the server validates payloads against it before invocation and the CLI codegen emits typed call-site signatures. The workflow always executes under the app's IAM principal.","anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"object","properties":{"workflow_id":{"type":"string","description":"ID of the workflow this alias resolves to"},"inputs":{"description":"Typed input schema for the workflow alias. Keys are input names; values declare type + constraints. The server validates payloads against this schema before invoking the workflow; CLI codegen emits typed `useWorkflow<alias>` signatures for the app side. Omit `inputs` for workflows that accept no inputs or whose shape isn't worth declaring.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"$ref":"#/components/schemas/AppWorkflowInput"}},"outputs":{"description":"Typed output schema for the data the workflow returns via `return({ data })`. Keys are field names; values declare type + (nested object/array) shape. The server validates the returned data against this schema at the app boundary and the workflow won't save unless its `return({ data })` matches; CLI codegen types `result.data`. Omit when the workflow returns no data, or pass it through untyped.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"$ref":"#/components/schemas/AppWorkflowOutput"}},"description":{"description":"What this workflow does, in one line — read by an agent choosing between the app's aliases, the same job a query's `description` does. `lotics app workflow set` sends it, so it lives beside the body in version control; omitted, the workflow keeps the description already on it.","type":"string"},"body_sha":{"description":"Fingerprint of the body currently bound to this alias, written by the server on every accepted `set_app_workflow`. Never sent by a caller — it is the value a caller's `expected_body_sha` is checked against, so that a push built on a stale copy of the body is refused instead of silently overwriting whatever replaced it. Absent on a binding last written before the field existed, where no comparison is possible.","type":"string"}},"required":["workflow_id"],"additionalProperties":false}},{"type":"null"}]},"queries":{"description":"Alias → query declaration map. Each alias resolves to a fixed query AST template with a typed param schema. Synced from the app's lotics.queries manifest on every `lotics app deploy`. The iframe SDK's useQuery(alias, params) resolves through this map; custom-code apps never send a raw AST. The query runs under the app's IAM principal.","anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"object","properties":{"ast":{"description":"Query AST template (a QueryNode). Validated server-side via parseQueryNode at deploy. May embed {{params.<name>}} tokens in filter value positions."},"params":{"description":"Typed param schema. Keys are param names referenced as {{params.<name>}} in the ast; values declare type + constraints. The server validates the caller's params payload against this before interpolating. Omit for queries that take no params.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"$ref":"#/components/schemas/AppWorkflowInput"}},"description":{"description":"What this query returns, in one line — read by an agent choosing between the app's aliases. An alias is a JS identifier, which names a query without saying what it covers. Capped at 300 characters.","type":"string"}},"required":["ast"],"additionalProperties":false}},{"type":"null"}]},"capabilities":{"description":"Opt-in app capabilities, declared in the manifest's `lotics.capabilities` and synced on every deploy. Capabilities are off unless declared — least ambient authority. `comments` gates the members-only `useComments` primitive: only an app that declares it can read/write record comments (each under the VIEWING member's own authority).","anyOf":[{"type":"object","properties":{"comments":{"description":"Enable the members-only `useComments` primitive. When true, the app may read/write record comments — each operation under the VIEWING member's own table access, row-scope, and author identity (never the app owner's). Default off.","type":"boolean"}},"additionalProperties":false},{"type":"null"}]},"agents":{"description":"Alias → agent declaration map. Each alias binds a streaming tool-loop agent the app runs via `useAgentRun(alias)` (an SSE stream), with declared tools, model, and typed inputs/outputs. Synced from the app's `lotics.agents` manifest on every deploy. The agent runs under the app's IAM principal; runs persist a flat history per session.","anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"object","properties":{"instructions":{"type":"string","minLength":1,"description":"System instructions for the agent — the task it performs per run."},"tool_names":{"type":"array","items":{"type":"string","minLength":1},"description":"Tools the agent may call, resolved against the shared registry minus the automation blacklist. The capability boundary — the run can use nothing else. May be empty for a pure-reasoning agent."},"knowledge_doc_ids":{"description":"Knowledge docs the agent may read, validated at declare time against the app owner's `use` access. Small docs are inlined into the agent's system prompt each run; a doc too large to inline requires the code tools (code_exec) in tool_names and is read by staging it into a code run. Omit for an agent that needs no knowledge.","type":"array","items":{"type":"string","minLength":1}},"query_aliases":{"description":"Named queries from this app's manifest the agent may run via `run_app_query`, validated at declare time against the app's own queries. This is the agent's ENTIRE read surface over workspace data — a template fixes the tables, filters, and projection, so it bounds rows and columns, not just tables. Omit for an agent that reads no records.","type":"array","items":{"type":"string","minLength":1}},"workflow_aliases":{"description":"Workflows from this app's manifest the agent may invoke via `run_app_workflow`, validated at declare time against the app's own workflows. This is the agent's ENTIRE write surface — the same declared mutation path the app's UI uses, so table hooks and side-effect harvesting apply. Omit for a read-only agent.","type":"array","items":{"type":"string","minLength":1}},"model_tier":{"description":"Model tier the agent runs on — `haiku`, `sonnet`, or `opus`. Omit to follow the platform default tier, resolved at run time: the preferred choice. A tier names capability, not a version, so the generation behind it moves with the platform and this declaration never needs a rewrite. Pin only a deliberate, tested choice.","type":"string","enum":["haiku","sonnet","opus"]},"effort_level":{"description":"Reasoning depth for adaptive-thinking tiers — one of the chosen tier's supported levels (validated against model_tier at declare time). Omit to use the model default; ignored on tiers without adaptive thinking.","type":"string","enum":["low","medium","high","xhigh","max"]},"prefix_cache_ttl":{"description":"How long this agent's prompt-cache prefix (tools + system block) is kept warm. Omit — the default (5m, Anthropic's own) is right for essentially every agent. \"1h\" doubles the write price (2x the input rate against 1.25x) to buy only the 5m..1h band, and an entry nothing re-reads inside the hour is paid for twice over; declining it still leaves the prefix cached at the default. Set it only from measured cadence, never a guess.","type":"string","enum":["5m","1h"]},"inputs":{"description":"Typed input schema for one run. Keys are input names; values declare type + constraints. The server validates the run payload against this before invoking; CLI codegen emits a typed `useAgentRun<alias>` signature. Omit for an untyped payload.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"$ref":"#/components/schemas/AppWorkflowInput"}},"outputs":{"description":"Typed output schema for the structured result the agent emits. Keys are field names; values declare type + (nested object/array) shape. When declared, the run must emit a result matching it — the server validates before persisting and the SDK types `run.output`. Omit for a free-text run whose output is the final message.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"$ref":"#/components/schemas/AppWorkflowOutput"}}},"required":["instructions","tool_names"],"additionalProperties":false}},{"type":"null"}]},"theme":{"description":"Theme settings for the app","anyOf":[{"type":"object","properties":{"color":{"description":"Theme color for the app","anyOf":[{"type":"string","enum":["red","orange","amber","yellow","lime","green","emerald","teal","cyan","sky","blue","indigo","violet","purple","fuchsia","pink","rose","slate","gray","zinc","neutral","stone"]},{"type":"null"}]}},"additionalProperties":false},{"type":"null"}]},"package_id":{"description":"App-package registry id this app was installed from; null for a bespoke app or after eject.","anyOf":[{"type":"string"},{"type":"null"}]},"package_version":{"description":"Installed package version (the upgrade pin); null for a bespoke app or after eject.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"binding":{"description":"App-package install join: per-namespace (entities/fields/options/templates/roles/workflows/knowledge) alias → concrete-id maps. Null for a bespoke app.","anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}}},{"type":"null"}]},"config":{"description":"Installation-level customization config values (the customization-ladder first rung). Null for a bespoke app.","anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"}]}},{"type":"null"}]},"ejected_at":{"description":"When the app was ejected from its package (severing upgrades); null if never ejected.","anyOf":[{"type":"string"},{"type":"null"}]},"created_at":{"type":"string","description":"Timestamp when app was created"},"updated_at":{"type":"string","description":"Timestamp of last update"}},"required":["id","name","workspace_id","public_subdomain","created_at","updated_at"],"additionalProperties":false},"get_v1_apps_app_id_agent_runs_run_id_Response":{"type":"object","properties":{"run":{"type":"object","properties":{"id":{"type":"string"},"app_id":{"type":"string"},"agent_alias":{"type":"string"},"session_id":{"type":"string"},"status":{"type":"string"},"input":{"anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"null"}]},"output":{"anyOf":[{"anyOf":[{"type":"string"},{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}]},{"type":"null"}]},"usage":{"anyOf":[{"type":"object","properties":{"input_tokens":{"type":"number"},"output_tokens":{"type":"number"}},"required":["input_tokens","output_tokens"],"additionalProperties":false},{"type":"null"}]},"error_message":{"anyOf":[{"type":"string"},{"type":"null"}]},"triggered_by_member_id":{"anyOf":[{"type":"string"},{"type":"null"}]},"started_at":{"type":"string"},"completed_at":{"anyOf":[{"type":"string"},{"type":"null"}]},"pending_interactive":{"type":"object","properties":{"tool_call_id":{"type":"string"},"tool_name":{"type":"string"},"input":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["tool_call_id","tool_name","input"],"additionalProperties":false}},"required":["id","app_id","agent_alias","session_id","status","input","output","usage","error_message","triggered_by_member_id","started_at","completed_at"],"additionalProperties":false}},"required":["run"],"additionalProperties":false},"get_v1_apps_app_id_authoring_Response":{"type":"object","properties":{"active":{"type":"boolean"},"is_mine":{"type":"boolean"},"editor_member_id":{"anyOf":[{"type":"string"},{"type":"null"}]},"chat_session_id":{"anyOf":[{"type":"string"},{"type":"null"}]},"preview_origin":{"anyOf":[{"type":"string"},{"type":"null"}]},"status":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["active"],"additionalProperties":false},"get_v1_apps_app_id_authoring_diff_Response":{"type":"object","properties":{"base":{"type":"string"},"diff":{"type":"string"},"truncated":{"type":"boolean"}},"required":["base","diff","truncated"],"additionalProperties":false},"get_v1_apps_app_id_binding_Response":{"type":"object","properties":{"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"options":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"roles":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}}},"required":["fields","options","roles"],"additionalProperties":false},"get_v1_apps_by_subdomain_subdomain_Response":{"type":"object","properties":{"app_id":{"type":"string"},"app_name":{"type":"string"},"workspace_id":{"type":"string"},"organization_id":{"type":"string"},"requires_password":{"type":"boolean"},"comments_enabled":{"type":"boolean"},"config":{"type":"object","propertyNames":{"type":"string","pattern":"^[a-z][a-z0-9_]*$"},"additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"}]}}},"required":["app_id","app_name","workspace_id","organization_id","requires_password","comments_enabled","config"],"additionalProperties":false},"get_v1_apps_app_id_embed_grant_Response":{"type":"object","properties":{"grant":{"type":"string"},"expires_at":{"type":"string"}},"required":["grant","expires_at"],"additionalProperties":false},"get_v1_apps_app_id_package_config_Response":{"type":"object","properties":{"entries":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"alias":{"type":"string","pattern":"^[a-z][a-z0-9_]*$","description":"Stable config alias, unique within the contract"},"label":{"type":"string","minLength":1},"description":{"type":"string"},"type":{"type":"string","const":"text"},"default":{"type":"string"}},"required":["alias","label","type","default"],"additionalProperties":false},{"type":"object","properties":{"alias":{"type":"string","pattern":"^[a-z][a-z0-9_]*$","description":"Stable config alias, unique within the contract"},"label":{"type":"string","minLength":1},"description":{"type":"string"},"type":{"type":"string","const":"boolean"},"default":{"type":"boolean"}},"required":["alias","label","type","default"],"additionalProperties":false},{"type":"object","properties":{"alias":{"type":"string","pattern":"^[a-z][a-z0-9_]*$","description":"Stable config alias, unique within the contract"},"label":{"type":"string","minLength":1},"description":{"type":"string"},"type":{"type":"string","const":"color"},"default":{"type":"string","enum":["red","orange","amber","yellow","lime","green","emerald","teal","cyan","sky","blue","indigo","violet","purple","fuchsia","pink","rose","slate","gray","zinc","neutral","stone"]}},"required":["alias","label","type","default"],"additionalProperties":false},{"type":"object","properties":{"alias":{"type":"string","pattern":"^[a-z][a-z0-9_]*$","description":"Stable config alias, unique within the contract"},"label":{"type":"string","minLength":1},"description":{"type":"string"},"type":{"type":"string","const":"number"},"default":{"type":"number"}},"required":["alias","label","type","default"],"additionalProperties":false},{"type":"object","properties":{"alias":{"type":"string","pattern":"^[a-z][a-z0-9_]*$","description":"Stable config alias, unique within the contract"},"label":{"type":"string","minLength":1},"description":{"type":"string"},"type":{"type":"string","const":"select"},"options":{"minItems":1,"type":"array","items":{"type":"object","properties":{"value":{"type":"string"},"label":{"type":"string","minLength":1}},"required":["value","label"],"additionalProperties":false}},"default":{"type":"string"}},"required":["alias","label","type","options","default"],"additionalProperties":false}]}},"config":{"type":"object","propertyNames":{"type":"string","pattern":"^[a-z][a-z0-9_]*$"},"additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"}]}}},"required":["entries","config"],"additionalProperties":false},"get_v1_apps_app_id_public_info_Response":{"type":"object","properties":{"app_id":{"type":"string"},"public_subdomain":{"type":"string"},"requires_password":{"type":"boolean"},"comments_enabled":{"type":"boolean"},"config":{"type":"object","propertyNames":{"type":"string","pattern":"^[a-z][a-z0-9_]*$"},"additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"}]}}},"required":["app_id","public_subdomain","requires_password","comments_enabled","config"],"additionalProperties":false},"get_v1_apps_app_id_versions_version_id_Response":{"type":"object","properties":{"id":{"type":"string"},"app_id":{"type":"string"},"version":{"type":"number"},"r2_prefix":{"type":"string"},"entry_html_path":{"type":"string"},"build_status":{"type":"string"},"bundle_size_bytes":{"anyOf":[{"type":"number"},{"type":"null"}]},"message":{"anyOf":[{"type":"string"},{"type":"null"}]},"created_at":{"type":"string"},"created_by":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","app_id","version","r2_prefix","entry_html_path","build_status","bundle_size_bytes","message","created_at","created_by"],"additionalProperties":false},"get_v1_apps_app_id_versions_version_id_source_Response":{"type":"object","properties":{"url":{"type":"string","description":"Presigned URL to download source.tar.gz from R2"}},"required":["url"],"additionalProperties":false},"post_v1_apps_app_id_workflows_alias_dts_Response":{"type":"object","properties":{"dts":{"type":"string","description":"Workspace .d.ts content the server typechecks the body against."},"envelope_prefix":{"type":"string","description":"Prefix that opens the __workflow wrapper the server compiles inside."},"envelope_suffix":{"type":"string","description":"Suffix that closes the __workflow wrapper."}},"required":["dts","envelope_prefix","envelope_suffix"],"additionalProperties":false},"get_v1_packages_package_id_Response":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"kind":{"type":"string","enum":["app","content"]},"latest_version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"is_official":{"type":"boolean"},"retired_at":{"anyOf":[{"type":"string"},{"type":"null"}]},"owned_by_caller":{"type":"boolean"},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","name","description","kind","latest_version","is_official","retired_at","owned_by_caller","created_at","updated_at"],"additionalProperties":false},"get_v1_apps_app_id_package_health_Response":{"type":"object","properties":{"app_id":{"type":"string"},"package_id":{"type":"string"},"package_name":{"type":"string"},"is_origin":{"type":"boolean"},"installed_version":{"type":"number"},"latest_version":{"type":"number"},"update_available":{"type":"boolean"},"drift":{"type":"array","items":{"type":"object","properties":{"namespace":{"type":"string","enum":["entities","fields","options","templates","roles"]},"alias":{"type":"string"},"id":{"type":"string","description":"The stale concrete id the alias was bound to"}},"required":["namespace","alias","id"],"additionalProperties":false}},"modified":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string","enum":["queries","workflows","agents","template"]},"alias":{"type":"string"},"baseline_unknown":{"type":"boolean"}},"required":["kind","alias"],"additionalProperties":false}},"knowledge_drift":{"type":"array","items":{"type":"object","properties":{"alias":{"type":"string"},"name":{"type":"string"},"doc_id":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["alias","name","doc_id"],"additionalProperties":false}},"knowledge_modified":{"type":"array","items":{"type":"object","properties":{"alias":{"type":"string"},"name":{"type":"string"},"doc_id":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["alias","name","doc_id"],"additionalProperties":false}},"missing_expected_docs":{"type":"array","items":{"type":"string"}},"orphan_duplicate_links":{"type":"array","items":{"type":"object","properties":{"field_id":{"type":"string"},"field_name":{"type":"string"},"table_id":{"type":"string"},"table_name":{"type":"string"},"target_table_id":{"type":"string"}},"required":["field_id","field_name","table_id","table_name","target_table_id"],"additionalProperties":false}}},"required":["app_id","package_id","package_name","is_origin","installed_version","latest_version","update_available","drift","modified","knowledge_drift","knowledge_modified","missing_expected_docs","orphan_duplicate_links"],"additionalProperties":false},"post_v1_packages_package_id_installations_Response":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","const":"app"},"app":{"$ref":"#/components/schemas/patch_v1_apps_app_id_Response"},"knowledge_warnings":{"type":"object","properties":{"missing_expected_docs":{"type":"array","items":{"type":"string"}}},"required":["missing_expected_docs"],"additionalProperties":false}},"required":["kind","app","knowledge_warnings"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"content"},"installation":{"$ref":"#/components/schemas/post_v1_content_installations_id_upgrade_Response"},"warnings":{"type":"object","properties":{"missing_expected_docs":{"type":"array","items":{"type":"string"}}},"required":["missing_expected_docs"],"additionalProperties":false}},"required":["kind","installation","warnings"],"additionalProperties":false}]},"get_v1_apps_app_id_agent_runs_Response":{"type":"object","properties":{"runs":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"app_id":{"type":"string"},"agent_alias":{"type":"string"},"session_id":{"type":"string"},"status":{"type":"string"},"input":{"anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"null"}]},"output":{"anyOf":[{"anyOf":[{"type":"string"},{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}]},{"type":"null"}]},"usage":{"anyOf":[{"type":"object","properties":{"input_tokens":{"type":"number"},"output_tokens":{"type":"number"}},"required":["input_tokens","output_tokens"],"additionalProperties":false},{"type":"null"}]},"error_message":{"anyOf":[{"type":"string"},{"type":"null"}]},"triggered_by_member_id":{"anyOf":[{"type":"string"},{"type":"null"}]},"started_at":{"type":"string"},"completed_at":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","app_id","agent_alias","session_id","status","input","output","usage","error_message","triggered_by_member_id","started_at","completed_at"],"additionalProperties":false}}},"required":["runs"],"additionalProperties":false},"get_v1_apps_app_id_members_Response":{"type":"object","properties":{"members":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"email":{"anyOf":[{"type":"string"},{"type":"null"}]},"image":{"anyOf":[{"type":"string"},{"type":"null"}]},"groups":{"type":"array","items":{"type":"string"}},"role":{"type":"string","enum":["owner","admin","member"]},"joined":{"type":"string"}},"required":["id","name","email","image","groups","role"],"additionalProperties":false}}},"required":["members"],"additionalProperties":false},"get_v1_apps_app_id_versions_Response":{"type":"object","properties":{"current_version_id":{"anyOf":[{"type":"string"},{"type":"null"}]},"versions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"version":{"type":"number"},"message":{"anyOf":[{"type":"string"},{"type":"null"}]},"build_status":{"type":"string"},"bundle_size_bytes":{"anyOf":[{"type":"number"},{"type":"null"}]},"created_at":{"type":"string"},"created_by":{"anyOf":[{"type":"string"},{"type":"null"}]},"created_by_name":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","version","message","build_status","bundle_size_bytes","created_at","created_by","created_by_name"],"additionalProperties":false}}},"required":["current_version_id","versions"],"additionalProperties":false},"get_v1_apps_Response":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the app"},"name":{"type":"string","description":"Display name of the app"},"description":{"description":"Optional description of the app's purpose","anyOf":[{"type":"string"},{"type":"null"}]},"icon":{"description":"Icon name for the app (e.g., 'home', 'chart-bar')","anyOf":[{"type":"string"},{"type":"null"}]},"workspace_id":{"type":"string","description":"ID of the workspace this app belongs to"},"current_version_id":{"description":"Pointer to the currently-published app_versions row in R2. Set once the app has been deployed at least once via `lotics app deploy`; null before the first deploy.","anyOf":[{"type":"string"},{"type":"null"}]},"public_subdomain":{"type":"string","description":"DNS label for the app's public origin: `<public_subdomain>.lotics.app`. Server-generated, high-entropy, and distinct from `id` (app_ids are not valid DNS labels). Assigned at creation for every app."},"public_password_set":{"description":"Whether a shared password gates the public binding. True → anonymous visitors must authenticate at `/v1/apps/{app_id}/public/authenticate` before any publicAppAccess endpoint resolves. The hash itself is never sent over the wire; only this flag is exposed (and only on authenticated owner-side reads — the public by-subdomain response surfaces the same fact as `requires_password`).","type":"boolean"},"workflows":{"description":"Alias → workflow declaration map. Each alias resolves to a workflow_id and an optional typed inputs schema. Authored solely by `set_app_workflow` / `remove_app_workflow` (NOT by `lotics app deploy`, which never touches this map). The iframe SDK's useWorkflow(alias) resolves through this map; when an inputs schema is declared, the server validates payloads against it before invocation and the CLI codegen emits typed call-site signatures. The workflow always executes under the app's IAM principal.","anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"object","properties":{"workflow_id":{"type":"string","description":"ID of the workflow this alias resolves to"},"inputs":{"description":"Typed input schema for the workflow alias. Keys are input names; values declare type + constraints. The server validates payloads against this schema before invoking the workflow; CLI codegen emits typed `useWorkflow<alias>` signatures for the app side. Omit `inputs` for workflows that accept no inputs or whose shape isn't worth declaring.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"$ref":"#/components/schemas/AppWorkflowInput"}},"outputs":{"description":"Typed output schema for the data the workflow returns via `return({ data })`. Keys are field names; values declare type + (nested object/array) shape. The server validates the returned data against this schema at the app boundary and the workflow won't save unless its `return({ data })` matches; CLI codegen types `result.data`. Omit when the workflow returns no data, or pass it through untyped.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"$ref":"#/components/schemas/AppWorkflowOutput"}},"description":{"description":"What this workflow does, in one line — read by an agent choosing between the app's aliases, the same job a query's `description` does. `lotics app workflow set` sends it, so it lives beside the body in version control; omitted, the workflow keeps the description already on it.","type":"string"},"body_sha":{"description":"Fingerprint of the body currently bound to this alias, written by the server on every accepted `set_app_workflow`. Never sent by a caller — it is the value a caller's `expected_body_sha` is checked against, so that a push built on a stale copy of the body is refused instead of silently overwriting whatever replaced it. Absent on a binding last written before the field existed, where no comparison is possible.","type":"string"}},"required":["workflow_id"],"additionalProperties":false}},{"type":"null"}]},"queries":{"description":"Alias → query declaration map. Each alias resolves to a fixed query AST template with a typed param schema. Synced from the app's lotics.queries manifest on every `lotics app deploy`. The iframe SDK's useQuery(alias, params) resolves through this map; custom-code apps never send a raw AST. The query runs under the app's IAM principal.","anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"object","properties":{"ast":{"description":"Query AST template (a QueryNode). Validated server-side via parseQueryNode at deploy. May embed {{params.<name>}} tokens in filter value positions."},"params":{"description":"Typed param schema. Keys are param names referenced as {{params.<name>}} in the ast; values declare type + constraints. The server validates the caller's params payload against this before interpolating. Omit for queries that take no params.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"$ref":"#/components/schemas/AppWorkflowInput"}},"description":{"description":"What this query returns, in one line — read by an agent choosing between the app's aliases. An alias is a JS identifier, which names a query without saying what it covers. Capped at 300 characters.","type":"string"}},"required":["ast"],"additionalProperties":false}},{"type":"null"}]},"capabilities":{"description":"Opt-in app capabilities, declared in the manifest's `lotics.capabilities` and synced on every deploy. Capabilities are off unless declared — least ambient authority. `comments` gates the members-only `useComments` primitive: only an app that declares it can read/write record comments (each under the VIEWING member's own authority).","anyOf":[{"type":"object","properties":{"comments":{"description":"Enable the members-only `useComments` primitive. When true, the app may read/write record comments — each operation under the VIEWING member's own table access, row-scope, and author identity (never the app owner's). Default off.","type":"boolean"}},"additionalProperties":false},{"type":"null"}]},"agents":{"description":"Alias → agent declaration map. Each alias binds a streaming tool-loop agent the app runs via `useAgentRun(alias)` (an SSE stream), with declared tools, model, and typed inputs/outputs. Synced from the app's `lotics.agents` manifest on every deploy. The agent runs under the app's IAM principal; runs persist a flat history per session.","anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"object","properties":{"instructions":{"type":"string","minLength":1,"description":"System instructions for the agent — the task it performs per run."},"tool_names":{"type":"array","items":{"type":"string","minLength":1},"description":"Tools the agent may call, resolved against the shared registry minus the automation blacklist. The capability boundary — the run can use nothing else. May be empty for a pure-reasoning agent."},"knowledge_doc_ids":{"description":"Knowledge docs the agent may read, validated at declare time against the app owner's `use` access. Small docs are inlined into the agent's system prompt each run; a doc too large to inline requires the code tools (code_exec) in tool_names and is read by staging it into a code run. Omit for an agent that needs no knowledge.","type":"array","items":{"type":"string","minLength":1}},"query_aliases":{"description":"Named queries from this app's manifest the agent may run via `run_app_query`, validated at declare time against the app's own queries. This is the agent's ENTIRE read surface over workspace data — a template fixes the tables, filters, and projection, so it bounds rows and columns, not just tables. Omit for an agent that reads no records.","type":"array","items":{"type":"string","minLength":1}},"workflow_aliases":{"description":"Workflows from this app's manifest the agent may invoke via `run_app_workflow`, validated at declare time against the app's own workflows. This is the agent's ENTIRE write surface — the same declared mutation path the app's UI uses, so table hooks and side-effect harvesting apply. Omit for a read-only agent.","type":"array","items":{"type":"string","minLength":1}},"model_tier":{"description":"Model tier the agent runs on — `haiku`, `sonnet`, or `opus`. Omit to follow the platform default tier, resolved at run time: the preferred choice. A tier names capability, not a version, so the generation behind it moves with the platform and this declaration never needs a rewrite. Pin only a deliberate, tested choice.","type":"string","enum":["haiku","sonnet","opus"]},"effort_level":{"description":"Reasoning depth for adaptive-thinking tiers — one of the chosen tier's supported levels (validated against model_tier at declare time). Omit to use the model default; ignored on tiers without adaptive thinking.","type":"string","enum":["low","medium","high","xhigh","max"]},"prefix_cache_ttl":{"description":"How long this agent's prompt-cache prefix (tools + system block) is kept warm. Omit — the default (5m, Anthropic's own) is right for essentially every agent. \"1h\" doubles the write price (2x the input rate against 1.25x) to buy only the 5m..1h band, and an entry nothing re-reads inside the hour is paid for twice over; declining it still leaves the prefix cached at the default. Set it only from measured cadence, never a guess.","type":"string","enum":["5m","1h"]},"inputs":{"description":"Typed input schema for one run. Keys are input names; values declare type + constraints. The server validates the run payload against this before invoking; CLI codegen emits a typed `useAgentRun<alias>` signature. Omit for an untyped payload.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"$ref":"#/components/schemas/AppWorkflowInput"}},"outputs":{"description":"Typed output schema for the structured result the agent emits. Keys are field names; values declare type + (nested object/array) shape. When declared, the run must emit a result matching it — the server validates before persisting and the SDK types `run.output`. Omit for a free-text run whose output is the final message.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"$ref":"#/components/schemas/AppWorkflowOutput"}}},"required":["instructions","tool_names"],"additionalProperties":false}},{"type":"null"}]},"theme":{"description":"Theme settings for the app","anyOf":[{"type":"object","properties":{"color":{"description":"Theme color for the app","anyOf":[{"type":"string","enum":["red","orange","amber","yellow","lime","green","emerald","teal","cyan","sky","blue","indigo","violet","purple","fuchsia","pink","rose","slate","gray","zinc","neutral","stone"]},{"type":"null"}]}},"additionalProperties":false},{"type":"null"}]},"package_id":{"description":"App-package registry id this app was installed from; null for a bespoke app or after eject.","anyOf":[{"type":"string"},{"type":"null"}]},"package_version":{"description":"Installed package version (the upgrade pin); null for a bespoke app or after eject.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"binding":{"description":"App-package install join: per-namespace (entities/fields/options/templates/roles/workflows/knowledge) alias → concrete-id maps. Null for a bespoke app.","anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}}},{"type":"null"}]},"config":{"description":"Installation-level customization config values (the customization-ladder first rung). Null for a bespoke app.","anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"}]}},{"type":"null"}]},"ejected_at":{"description":"When the app was ejected from its package (severing upgrades); null if never ejected.","anyOf":[{"type":"string"},{"type":"null"}]},"created_at":{"type":"string","description":"Timestamp when app was created"},"updated_at":{"type":"string","description":"Timestamp of last update"},"package_registry":{"anyOf":[{"type":"object","properties":{"name":{"type":"string"},"latest_version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"is_official":{"type":"boolean"},"update_available":{"type":"boolean"},"owned_by_caller":{"type":"boolean"},"installed_via":{"anyOf":[{"type":"string","enum":["install","adopt"]},{"type":"null"}]},"has_config":{"type":"boolean"}},"required":["name","latest_version","is_official","update_available","owned_by_caller","installed_via","has_config"],"additionalProperties":false},{"type":"null"}]}},"required":["id","name","workspace_id","public_subdomain","created_at","updated_at","package_registry"],"additionalProperties":false}},"get_v1_packages_package_id_versions_Response":{"type":"object","properties":{"versions":{"type":"array","items":{"type":"object","properties":{"version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"changelog":{"anyOf":[{"type":"string"},{"type":"null"}]},"channel":{"type":"string","enum":["release","dev"]},"yanked_at":{"anyOf":[{"type":"string"},{"type":"null"}]},"created_at":{"type":"string"}},"required":["version","changelog","channel","yanked_at","created_at"],"additionalProperties":false}}},"required":["versions"],"additionalProperties":false},"get_v1_workspaces_workspace_id_content_installations_Response":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"workspace_id":{"type":"string"},"package_id":{"type":"string"},"package_version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"app_id":{"anyOf":[{"type":"string"},{"type":"null"}]},"binding":{"type":"object","properties":{"knowledge":{"default":{},"type":"object","propertyNames":{"type":"string","minLength":1},"additionalProperties":{"type":"string","minLength":1}},"templates":{"default":{},"type":"object","propertyNames":{"type":"string","minLength":1},"additionalProperties":{"type":"string","minLength":1}}},"required":["knowledge","templates"],"additionalProperties":false},"installed_by":{"anyOf":[{"type":"string"},{"type":"null"}]},"created_at":{"type":"string"},"updated_at":{"type":"string"},"package_registry":{"anyOf":[{"type":"object","properties":{"name":{"type":"string"},"kind":{"type":"string","enum":["app","content"]},"is_official":{"type":"boolean"},"latest_version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"update_available":{"type":"boolean"}},"required":["name","kind","is_official","latest_version","update_available"],"additionalProperties":false},{"type":"null"}]}},"required":["id","workspace_id","package_id","package_version","app_id","binding","installed_by","created_at","updated_at","package_registry"],"additionalProperties":false}},"get_v1_content_installations_id_upgrade_Response":{"type":"object","properties":{"installation_id":{"type":"string"},"package_id":{"type":"string"},"from_version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"to_version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"changelog":{"anyOf":[{"type":"string"},{"type":"null"}]},"update_available":{"type":"boolean"},"entries":{"type":"array","items":{"type":"object","properties":{"alias":{"type":"string"},"name":{"type":"string","description":"The doc's display name — the target contract's name, or the live name for a drifted doc"},"change":{"type":"string","enum":["added","changed","removed","drifted"]},"modified":{"type":"boolean"},"doc_id":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["alias","name","change","modified","doc_id"],"additionalProperties":false}},"templates":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string","enum":["queries","workflows","agents","template"]},"alias":{"type":"string"},"baseline_unknown":{"type":"boolean"}},"required":["kind","alias"],"additionalProperties":false}}},"required":["installation_id","package_id","from_version","to_version","changelog","update_available","entries","templates"],"additionalProperties":false},"get_v1_apps_app_id_package_release_Response":{"type":"object","properties":{"package_id":{"type":"string"},"version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"added_aliases":{"type":"array","items":{"type":"string"}},"changed_artifacts":{"type":"array","items":{"type":"string"}},"knowledge":{"type":"object","properties":{"added":{"type":"array","items":{"type":"string"}},"removed":{"type":"array","items":{"type":"string"}},"changed":{"type":"array","items":{"type":"string"}}},"required":["added","removed","changed"],"additionalProperties":false},"config":{"type":"object","properties":{"added":{"type":"array","items":{"type":"string"}},"removed":{"type":"array","items":{"type":"string"}},"changed":{"type":"array","items":{"type":"string"}}},"required":["added","removed","changed"],"additionalProperties":false},"findings":{"type":"array","items":{"type":"object","properties":{"severity":{"type":"string","enum":["error","warning","info"]},"area":{"type":"string"},"message":{"type":"string"}},"required":["severity","area","message"],"additionalProperties":false}}},"required":["package_id","version","added_aliases","changed_artifacts","knowledge","config","findings"],"additionalProperties":false},"get_v1_apps_app_id_package_upgrade_Response":{"type":"object","properties":{"app_id":{"type":"string"},"package_id":{"type":"string"},"from_version":{"type":"number"},"to_version":{"type":"number"},"changelog":{"anyOf":[{"type":"string"},{"type":"null"}]},"diff":{"type":"object","properties":{"added":{"type":"object","properties":{"entities":{"type":"array","items":{"type":"object","properties":{"alias":{"type":"string"},"label":{"type":"string"}},"required":["alias","label"],"additionalProperties":false}},"fields":{"type":"array","items":{"type":"object","properties":{"entity":{"type":"string"},"alias":{"type":"string"},"label":{"type":"string"},"type":{"type":"string","enum":["text","number","date","boolean","select","select_member","select_record_link","files","formula","rollup","lookup","button","autonumber"]}},"required":["entity","alias","label","type"],"additionalProperties":false}},"options":{"type":"array","items":{"type":"object","properties":{"entity":{"type":"string"},"field":{"type":"string"},"alias":{"type":"string"},"label":{"type":"string"}},"required":["entity","field","alias","label"],"additionalProperties":false}},"templates":{"type":"array","items":{"type":"object","properties":{"alias":{"type":"string"},"label":{"type":"string"},"type":{"type":"string","enum":["html","pdf-form","excel","word","email"],"description":"Template type: 'html' for HTML templates, 'pdf-form' for fillable PDF forms, 'excel' for Excel templates, 'word' for Word templates, 'email' for email HTML templates"}},"required":["alias","label","type"],"additionalProperties":false}},"roles":{"type":"array","items":{"type":"object","properties":{"alias":{"type":"string"},"label":{"type":"string"}},"required":["alias","label"],"additionalProperties":false}},"config":{"type":"array","items":{"type":"object","properties":{"alias":{"type":"string"},"label":{"type":"string"}},"required":["alias","label"],"additionalProperties":false}},"queries":{"type":"array","items":{"type":"string"}},"workflows":{"type":"array","items":{"type":"string"}},"agents":{"type":"array","items":{"type":"string"}}},"required":["entities","fields","options","templates","roles","config","queries","workflows","agents"],"additionalProperties":false},"removed":{"type":"object","properties":{"entities":{"type":"array","items":{"type":"string"}},"fields":{"type":"array","items":{"type":"object","properties":{"entity":{"type":"string"},"alias":{"type":"string"}},"required":["entity","alias"],"additionalProperties":false}},"options":{"type":"array","items":{"type":"object","properties":{"entity":{"type":"string"},"field":{"type":"string"},"alias":{"type":"string"}},"required":["entity","field","alias"],"additionalProperties":false}},"templates":{"type":"array","items":{"type":"string"}},"roles":{"type":"array","items":{"type":"string"}},"config":{"type":"array","items":{"type":"string"}},"queries":{"type":"array","items":{"type":"string"}},"workflows":{"type":"array","items":{"type":"string"}},"agents":{"type":"array","items":{"type":"string"}}},"required":["entities","fields","options","templates","roles","config","queries","workflows","agents"],"additionalProperties":false},"breaking":{"type":"array","items":{"type":"object","properties":{"entity":{"type":"string"},"alias":{"type":"string"},"kind":{"type":"string","enum":["field_type","link_target"]},"from":{"type":"string"},"to":{"type":"string"}},"required":["entity","alias","kind","from","to"],"additionalProperties":false}},"changed":{"type":"object","properties":{"templates":{"type":"array","items":{"type":"string"}}},"required":["templates"],"additionalProperties":false}},"required":["added","removed","breaking","changed"],"additionalProperties":false},"drift":{"type":"array","items":{"type":"object","properties":{"namespace":{"type":"string","enum":["entities","fields","options","templates","roles"]},"alias":{"type":"string"},"id":{"type":"string","description":"The stale concrete id the alias was bound to"}},"required":["namespace","alias","id"],"additionalProperties":false}},"modified":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string","enum":["queries","workflows","agents","template"]},"alias":{"type":"string"},"baseline_unknown":{"type":"boolean"}},"required":["kind","alias"],"additionalProperties":false}},"knowledge":{"type":"array","items":{"type":"object","properties":{"alias":{"type":"string"},"name":{"type":"string","description":"The doc's display name — the target contract's name, or the live name for a drifted doc"},"change":{"type":"string","enum":["added","changed","removed","drifted"]},"modified":{"type":"boolean"},"doc_id":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["alias","name","change","modified","doc_id"],"additionalProperties":false}}},"required":["app_id","package_id","from_version","to_version","changelog","diff","drift","modified","knowledge"],"additionalProperties":false},"get_v1_apps_app_id_package_publish_Response":{"type":"object","properties":{"app_id":{"type":"string"},"package_name":{"type":"string"},"renamable_aliases":{"type":"object","properties":{"entities":{"type":"array","items":{"type":"string"}},"fields":{"type":"array","items":{"type":"string"}},"options":{"type":"array","items":{"type":"string"}},"roles":{"type":"array","items":{"type":"string"}},"templates":{"type":"array","items":{"type":"string"}},"workflows":{"type":"array","items":{"type":"string"}}},"required":["entities","fields","options","roles","templates","workflows"],"additionalProperties":false},"findings":{"type":"array","items":{"type":"object","properties":{"severity":{"type":"string","enum":["error","warning","info"]},"area":{"type":"string"},"message":{"type":"string"}},"required":["severity","area","message"],"additionalProperties":false}}},"required":["app_id","package_name","renamable_aliases","findings"],"additionalProperties":false},"post_v1_apps_app_id_package_publish_Response":{"type":"object","properties":{"package_id":{"type":"string"},"version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"app_id":{"type":"string"}},"required":["package_id","version","app_id"],"additionalProperties":false},"post_v1_apps_app_id_query_Response":{"type":"object","properties":{"rows":{"type":"array","items":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"columns":{"type":"array","items":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"source_fields_by_table_id":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{}}},"total":{"description":"Total rows in the filtered set. Present only when the request set `count: true`.","type":"number"},"next_cursor":{"description":"Cursor for the next page (keyset mode only). Null when this was the last page; absent for offset/count requests.","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["rows","columns","source_fields_by_table_id"],"additionalProperties":false},"post_v1_apps_reorder_Response":{"type":"object","properties":{"success":{"type":"boolean"}},"required":["success"],"additionalProperties":false},"post_v1_apps_app_id_authoring_preview_failure_Response":{"type":"object","properties":{"app_id":{"type":"string"},"vite_running":{"type":"boolean"}},"required":["app_id","vite_running"],"additionalProperties":false},"post_v1_apps_app_id_files_upload_url_Response":{"type":"object","properties":{"file_id":{"type":"string"},"file_storage_key":{"type":"string"},"upload_url":{"type":"string"}},"required":["file_id","file_storage_key","upload_url"],"additionalProperties":false},"post_v1_packages_package_id_retire_Response":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"kind":{"type":"string","enum":["app","content"]},"latest_version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"is_official":{"type":"boolean"},"retired_at":{"anyOf":[{"type":"string"},{"type":"null"}]},"owned_by_caller":{"type":"boolean"},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","name","description","kind","latest_version","is_official","retired_at","owned_by_caller","created_at","updated_at"],"additionalProperties":false},"get_v1_app_icons_Response":{"type":"object","properties":{"icons":{"type":"array","items":{"type":"string"}}},"required":["icons"],"additionalProperties":false},"put_v1_apps_app_id_public_password_Response":{"type":"object","properties":{"app_id":{"type":"string"},"public_password_set":{"type":"boolean"}},"required":["app_id","public_password_set"],"additionalProperties":false},"put_v1_apps_app_id_subdomain_Response":{"type":"object","properties":{"app_id":{"type":"string"},"public_subdomain":{"type":"string"}},"required":["app_id","public_subdomain"],"additionalProperties":false},"post_v1_apps_app_id_uninstall_Response":{"type":"object","properties":{"id":{"type":"string"},"uninstalled":{"type":"boolean","const":true},"archived_table_ids":{"type":"array","items":{"type":"string"}}},"required":["id","uninstalled","archived_table_ids"],"additionalProperties":false},"patch_v1_apps_app_id_Response":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the app"},"name":{"type":"string","description":"Display name of the app"},"description":{"description":"Optional description of the app's purpose","anyOf":[{"type":"string"},{"type":"null"}]},"icon":{"description":"Icon name for the app (e.g., 'home', 'chart-bar')","anyOf":[{"type":"string"},{"type":"null"}]},"workspace_id":{"type":"string","description":"ID of the workspace this app belongs to"},"current_version_id":{"description":"Pointer to the currently-published app_versions row in R2. Set once the app has been deployed at least once via `lotics app deploy`; null before the first deploy.","anyOf":[{"type":"string"},{"type":"null"}]},"public_subdomain":{"type":"string","description":"DNS label for the app's public origin: `<public_subdomain>.lotics.app`. Server-generated, high-entropy, and distinct from `id` (app_ids are not valid DNS labels). Assigned at creation for every app."},"public_password_set":{"description":"Whether a shared password gates the public binding. True → anonymous visitors must authenticate at `/v1/apps/{app_id}/public/authenticate` before any publicAppAccess endpoint resolves. The hash itself is never sent over the wire; only this flag is exposed (and only on authenticated owner-side reads — the public by-subdomain response surfaces the same fact as `requires_password`).","type":"boolean"},"workflows":{"description":"Alias → workflow declaration map. Each alias resolves to a workflow_id and an optional typed inputs schema. Authored solely by `set_app_workflow` / `remove_app_workflow` (NOT by `lotics app deploy`, which never touches this map). The iframe SDK's useWorkflow(alias) resolves through this map; when an inputs schema is declared, the server validates payloads against it before invocation and the CLI codegen emits typed call-site signatures. The workflow always executes under the app's IAM principal.","anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"object","properties":{"workflow_id":{"type":"string","description":"ID of the workflow this alias resolves to"},"inputs":{"description":"Typed input schema for the workflow alias. Keys are input names; values declare type + constraints. The server validates payloads against this schema before invoking the workflow; CLI codegen emits typed `useWorkflow<alias>` signatures for the app side. Omit `inputs` for workflows that accept no inputs or whose shape isn't worth declaring.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"$ref":"#/components/schemas/AppWorkflowInput"}},"outputs":{"description":"Typed output schema for the data the workflow returns via `return({ data })`. Keys are field names; values declare type + (nested object/array) shape. The server validates the returned data against this schema at the app boundary and the workflow won't save unless its `return({ data })` matches; CLI codegen types `result.data`. Omit when the workflow returns no data, or pass it through untyped.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"$ref":"#/components/schemas/AppWorkflowOutput"}},"description":{"description":"What this workflow does, in one line — read by an agent choosing between the app's aliases, the same job a query's `description` does. `lotics app workflow set` sends it, so it lives beside the body in version control; omitted, the workflow keeps the description already on it.","type":"string"},"body_sha":{"description":"Fingerprint of the body currently bound to this alias, written by the server on every accepted `set_app_workflow`. Never sent by a caller — it is the value a caller's `expected_body_sha` is checked against, so that a push built on a stale copy of the body is refused instead of silently overwriting whatever replaced it. Absent on a binding last written before the field existed, where no comparison is possible.","type":"string"}},"required":["workflow_id"],"additionalProperties":false}},{"type":"null"}]},"queries":{"description":"Alias → query declaration map. Each alias resolves to a fixed query AST template with a typed param schema. Synced from the app's lotics.queries manifest on every `lotics app deploy`. The iframe SDK's useQuery(alias, params) resolves through this map; custom-code apps never send a raw AST. The query runs under the app's IAM principal.","anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"object","properties":{"ast":{"description":"Query AST template (a QueryNode). Validated server-side via parseQueryNode at deploy. May embed {{params.<name>}} tokens in filter value positions."},"params":{"description":"Typed param schema. Keys are param names referenced as {{params.<name>}} in the ast; values declare type + constraints. The server validates the caller's params payload against this before interpolating. Omit for queries that take no params.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"$ref":"#/components/schemas/AppWorkflowInput"}},"description":{"description":"What this query returns, in one line — read by an agent choosing between the app's aliases. An alias is a JS identifier, which names a query without saying what it covers. Capped at 300 characters.","type":"string"}},"required":["ast"],"additionalProperties":false}},{"type":"null"}]},"capabilities":{"description":"Opt-in app capabilities, declared in the manifest's `lotics.capabilities` and synced on every deploy. Capabilities are off unless declared — least ambient authority. `comments` gates the members-only `useComments` primitive: only an app that declares it can read/write record comments (each under the VIEWING member's own authority).","anyOf":[{"type":"object","properties":{"comments":{"description":"Enable the members-only `useComments` primitive. When true, the app may read/write record comments — each operation under the VIEWING member's own table access, row-scope, and author identity (never the app owner's). Default off.","type":"boolean"}},"additionalProperties":false},{"type":"null"}]},"agents":{"description":"Alias → agent declaration map. Each alias binds a streaming tool-loop agent the app runs via `useAgentRun(alias)` (an SSE stream), with declared tools, model, and typed inputs/outputs. Synced from the app's `lotics.agents` manifest on every deploy. The agent runs under the app's IAM principal; runs persist a flat history per session.","anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"object","properties":{"instructions":{"type":"string","minLength":1,"description":"System instructions for the agent — the task it performs per run."},"tool_names":{"type":"array","items":{"type":"string","minLength":1},"description":"Tools the agent may call, resolved against the shared registry minus the automation blacklist. The capability boundary — the run can use nothing else. May be empty for a pure-reasoning agent."},"knowledge_doc_ids":{"description":"Knowledge docs the agent may read, validated at declare time against the app owner's `use` access. Small docs are inlined into the agent's system prompt each run; a doc too large to inline requires the code tools (code_exec) in tool_names and is read by staging it into a code run. Omit for an agent that needs no knowledge.","type":"array","items":{"type":"string","minLength":1}},"query_aliases":{"description":"Named queries from this app's manifest the agent may run via `run_app_query`, validated at declare time against the app's own queries. This is the agent's ENTIRE read surface over workspace data — a template fixes the tables, filters, and projection, so it bounds rows and columns, not just tables. Omit for an agent that reads no records.","type":"array","items":{"type":"string","minLength":1}},"workflow_aliases":{"description":"Workflows from this app's manifest the agent may invoke via `run_app_workflow`, validated at declare time against the app's own workflows. This is the agent's ENTIRE write surface — the same declared mutation path the app's UI uses, so table hooks and side-effect harvesting apply. Omit for a read-only agent.","type":"array","items":{"type":"string","minLength":1}},"model_tier":{"description":"Model tier the agent runs on — `haiku`, `sonnet`, or `opus`. Omit to follow the platform default tier, resolved at run time: the preferred choice. A tier names capability, not a version, so the generation behind it moves with the platform and this declaration never needs a rewrite. Pin only a deliberate, tested choice.","type":"string","enum":["haiku","sonnet","opus"]},"effort_level":{"description":"Reasoning depth for adaptive-thinking tiers — one of the chosen tier's supported levels (validated against model_tier at declare time). Omit to use the model default; ignored on tiers without adaptive thinking.","type":"string","enum":["low","medium","high","xhigh","max"]},"prefix_cache_ttl":{"description":"How long this agent's prompt-cache prefix (tools + system block) is kept warm. Omit — the default (5m, Anthropic's own) is right for essentially every agent. \"1h\" doubles the write price (2x the input rate against 1.25x) to buy only the 5m..1h band, and an entry nothing re-reads inside the hour is paid for twice over; declining it still leaves the prefix cached at the default. Set it only from measured cadence, never a guess.","type":"string","enum":["5m","1h"]},"inputs":{"description":"Typed input schema for one run. Keys are input names; values declare type + constraints. The server validates the run payload against this before invoking; CLI codegen emits a typed `useAgentRun<alias>` signature. Omit for an untyped payload.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"$ref":"#/components/schemas/AppWorkflowInput"}},"outputs":{"description":"Typed output schema for the structured result the agent emits. Keys are field names; values declare type + (nested object/array) shape. When declared, the run must emit a result matching it — the server validates before persisting and the SDK types `run.output`. Omit for a free-text run whose output is the final message.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"$ref":"#/components/schemas/AppWorkflowOutput"}}},"required":["instructions","tool_names"],"additionalProperties":false}},{"type":"null"}]},"theme":{"description":"Theme settings for the app","anyOf":[{"type":"object","properties":{"color":{"description":"Theme color for the app","anyOf":[{"type":"string","enum":["red","orange","amber","yellow","lime","green","emerald","teal","cyan","sky","blue","indigo","violet","purple","fuchsia","pink","rose","slate","gray","zinc","neutral","stone"]},{"type":"null"}]}},"additionalProperties":false},{"type":"null"}]},"package_id":{"description":"App-package registry id this app was installed from; null for a bespoke app or after eject.","anyOf":[{"type":"string"},{"type":"null"}]},"package_version":{"description":"Installed package version (the upgrade pin); null for a bespoke app or after eject.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"binding":{"description":"App-package install join: per-namespace (entities/fields/options/templates/roles/workflows/knowledge) alias → concrete-id maps. Null for a bespoke app.","anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}}},{"type":"null"}]},"config":{"description":"Installation-level customization config values (the customization-ladder first rung). Null for a bespoke app.","anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"}]}},{"type":"null"}]},"ejected_at":{"description":"When the app was ejected from its package (severing upgrades); null if never ejected.","anyOf":[{"type":"string"},{"type":"null"}]},"created_at":{"type":"string","description":"Timestamp when app was created"},"updated_at":{"type":"string","description":"Timestamp of last update"}},"required":["id","name","workspace_id","public_subdomain","created_at","updated_at"],"additionalProperties":false},"patch_v1_apps_app_id_package_config_Response":{"type":"object","properties":{"config":{"type":"object","propertyNames":{"type":"string","pattern":"^[a-z][a-z0-9_]*$"},"additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"}]}}},"required":["config"],"additionalProperties":false},"post_v1_apps_app_id_embed_grant_verify_Response":{"type":"object","properties":{"expires_at":{"type":"string"}},"required":["expires_at"],"additionalProperties":false},"post_v1_packages_package_id_versions_version_yank_Response":{"type":"object","properties":{"package_id":{"type":"string"},"version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"yanked_at":{"anyOf":[{"type":"string"},{"type":"null"}]},"latest_version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["package_id","version","yanked_at","latest_version"],"additionalProperties":false},"post_v1_apps_app_id_records_record_id_comments_Response":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the comment"},"record_id":{"type":"string","description":"ID of the record this comment belongs to"},"table_id":{"type":"string","description":"ID of the table this comment belongs to"},"member_id":{"type":"string","description":"ID of the member who created this comment"},"content":{"type":"string","minLength":0,"maxLength":10000,"description":"Comment text content (0-10,000 characters)"},"files":{"description":"Array of files attached to this comment","anyOf":[{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the file"},"file_storage_key":{"description":"Storage key for the file","type":"string"},"filename":{"type":"string","description":"Original filename"},"mime_type":{"type":"string","description":"MIME type of the file"},"url":{"description":"Public URL for the file, resolved at serving time","type":"string"},"thumbnail_url":{"description":"Thumbnail URL for image files, resolved at serving time","type":"string"},"preview_url":{"description":"Preview URL for legacy Excel files, resolved at serving time","type":"string"},"size":{"description":"Byte size, resolved at serving time from the file object (null/absent until backfilled)","anyOf":[{"type":"number"},{"type":"null"}]},"created_at":{"description":"Upload timestamp, resolved at serving time from the file object","type":"string"}},"required":["id","filename","mime_type"],"additionalProperties":false}},{"type":"null"}]},"workspace_id":{"type":"string","description":"ID of the workspace this comment belongs to"},"updated_at":{"type":"string","description":"Timestamp of last update"},"created_at":{"type":"string","description":"Timestamp when comment was created"}},"required":["id","record_id","table_id","member_id","content","workspace_id","updated_at","created_at"],"additionalProperties":false},"delete_v1_apps_app_id_records_record_id_comments_comment_id_Response":{"type":"object","properties":{"success":{"type":"boolean"}},"required":["success"],"additionalProperties":false},"get_v1_apps_app_id_records_record_id_comments_Response":{"type":"array","items":{"$ref":"#/components/schemas/patch_v1_apps_app_id_records_record_id_comments_comment_id_Response"}},"get_v1_apps_app_id_tables_table_id_comment_counts_Response":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"number"}},"patch_v1_apps_app_id_records_record_id_comments_comment_id_Response":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the comment"},"record_id":{"type":"string","description":"ID of the record this comment belongs to"},"table_id":{"type":"string","description":"ID of the table this comment belongs to"},"member_id":{"type":"string","description":"ID of the member who created this comment"},"content":{"type":"string","minLength":0,"maxLength":10000,"description":"Comment text content (0-10,000 characters)"},"files":{"description":"Array of files attached to this comment","anyOf":[{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the file"},"file_storage_key":{"description":"Storage key for the file","type":"string"},"filename":{"type":"string","description":"Original filename"},"mime_type":{"type":"string","description":"MIME type of the file"},"url":{"description":"Public URL for the file, resolved at serving time","type":"string"},"thumbnail_url":{"description":"Thumbnail URL for image files, resolved at serving time","type":"string"},"preview_url":{"description":"Preview URL for legacy Excel files, resolved at serving time","type":"string"},"size":{"description":"Byte size, resolved at serving time from the file object (null/absent until backfilled)","anyOf":[{"type":"number"},{"type":"null"}]},"created_at":{"description":"Upload timestamp, resolved at serving time from the file object","type":"string"}},"required":["id","filename","mime_type"],"additionalProperties":false}},{"type":"null"}]},"workspace_id":{"type":"string","description":"ID of the workspace this comment belongs to"},"updated_at":{"type":"string","description":"Timestamp of last update"},"created_at":{"type":"string","description":"Timestamp when comment was created"}},"required":["id","record_id","table_id","member_id","content","workspace_id","updated_at","created_at"],"additionalProperties":false},"post_v1_automations_Response":{"type":"object","properties":{"automation_id":{"type":"string","description":"The trigger ID."},"workflow_id":{"type":"string","description":"The associated workflow ID."},"type":{"type":"string","description":"The trigger type."},"webhook_url":{"description":"Public webhook URL (webhook type only).","type":"string"}},"required":["automation_id","workflow_id","type"],"additionalProperties":false},"delete_v1_automations_trigger_id_Response":{"type":"object","properties":{"trigger_id":{"type":"string"},"workflow_id":{"anyOf":[{"type":"string"},{"type":"null"}]},"deleted":{"type":"boolean","const":true}},"required":["trigger_id","deleted"],"additionalProperties":false},"get_v1_automations_Response":{"type":"array","items":{"type":"object","properties":{"trigger":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the trigger"},"enabled":{"type":"boolean","description":"Whether the trigger is enabled"},"workflow_id":{"description":"ID of the workflow this trigger dispatches to","anyOf":[{"type":"string"},{"type":"null"}]},"workspace_id":{"type":"string","description":"ID of the workspace this trigger belongs to"},"created_at":{"type":"string","description":"Timestamp when trigger was created"},"updated_at":{"type":"string","description":"Timestamp of last update"},"type":{"type":"string","const":"recurring_schedule","description":"Trigger type: runs on a recurring schedule"},"config":{"type":"object","properties":{"cron_expression":{"type":"string","description":"The cron expression defining the schedule."}},"required":["cron_expression"],"additionalProperties":false,"description":"Schedule configuration with cron expression"},"data":{"anyOf":[{"type":"object","properties":{"job_scheduler_id":{"type":"string","description":"ID of the scheduled job in the job queue system"}},"required":["job_scheduler_id"],"additionalProperties":false,"description":"Data needed to manage the scheduled job in the job scheduler service"},{"type":"null"}],"description":"Job scheduler data for managing the recurring schedule"}},"required":["id","enabled","workspace_id","created_at","updated_at","type","config","data"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the trigger"},"enabled":{"type":"boolean","description":"Whether the trigger is enabled"},"workflow_id":{"description":"ID of the workflow this trigger dispatches to","anyOf":[{"type":"string"},{"type":"null"}]},"workspace_id":{"type":"string","description":"ID of the workspace this trigger belongs to"},"created_at":{"type":"string","description":"Timestamp when trigger was created"},"updated_at":{"type":"string","description":"Timestamp of last update"},"type":{"type":"string","const":"receive_outlook_email","description":"Trigger type: receive Outlook email"},"config":{"type":"object","properties":{"filter":{"type":"object","properties":{"from":{"type":"array","items":{"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"description":"Email addresses to monitor (sender filter)"},"subject_containing":{"type":"string","minLength":3,"maxLength":100,"description":"Text that must appear in the email subject"}},"required":["from","subject_containing"],"additionalProperties":false,"description":"Filtering criteria for incoming emails"},"monitored_events":{"type":"array","items":{"type":"string","enum":["created","updated","deleted"]},"description":"The types of changes to monitor"},"connected_account_id":{"type":"string","description":"ID of the connected Outlook account to monitor"}},"required":["filter","monitored_events","connected_account_id"],"additionalProperties":false,"description":"Configuration for the receive Outlook email"},"data":{"anyOf":[{"type":"object","properties":{"email":{"type":"string","description":"Email address being monitored"},"subscription":{"type":"object","properties":{"id":{"type":"string","description":"Subscription identifier"},"subscriptionId":{"description":"Microsoft Graph subscription ID","type":"string"},"expirationDateTime":{"type":"string","description":"ISO 8601 date when subscription expires"},"clientState":{"type":"string","description":"Client state value for webhook validation"},"notificationUrl":{"type":"string","description":"URL for webhook notifications"},"resource":{"type":"string","description":"Microsoft Graph resource path being monitored"},"changeType":{"type":"string","description":"Types of changes being monitored (created, updated, deleted)"},"creatorId":{"description":"ID of the user who created the subscription","type":"string"}},"required":["id","expirationDateTime","clientState","notificationUrl","resource","changeType"],"additionalProperties":false,"description":"Microsoft Graph subscription details"},"last_checked_at":{"description":"Timestamp of last check for new emails"},"job_id":{"type":"string","description":"ID of the background job handling this trigger"}},"required":["email","subscription","last_checked_at","job_id"],"additionalProperties":false},{"type":"null"}],"description":"Data for the receive Outlook email"}},"required":["id","enabled","workspace_id","created_at","updated_at","type","config","data"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the trigger"},"enabled":{"type":"boolean","description":"Whether the trigger is enabled"},"workflow_id":{"description":"ID of the workflow this trigger dispatches to","anyOf":[{"type":"string"},{"type":"null"}]},"workspace_id":{"type":"string","description":"ID of the workspace this trigger belongs to"},"created_at":{"type":"string","description":"Timestamp when trigger was created"},"updated_at":{"type":"string","description":"Timestamp of last update"},"type":{"type":"string","const":"receive_gmail_email","description":"Trigger type: receive Gmail email"},"config":{"type":"object","properties":{"filter":{"type":"object","properties":{"from":{"type":"array","items":{"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"description":"Email addresses to monitor (sender filter)"},"subject_containing":{"type":"string","minLength":3,"maxLength":100,"description":"Text that must appear in the email subject"},"label_ids":{"type":"array","items":{"type":"string"},"description":"Gmail label IDs to monitor (e.g., 'INBOX', 'SENT')"}},"required":["from","subject_containing","label_ids"],"additionalProperties":false,"description":"Filtering criteria for incoming emails"},"connected_account_id":{"type":"string","description":"ID of the connected Gmail account to monitor"}},"required":["filter","connected_account_id"],"additionalProperties":false,"description":"Configuration for the receive Gmail email"},"data":{"anyOf":[{"type":"object","properties":{"history_id":{"type":"string","description":"Gmail history ID for tracking changes since last check"},"expiration":{"type":"string","description":"ISO 8601 date when Gmail push notification expires"},"job_id":{"type":"string","description":"ID of the background job handling this trigger"},"email":{"type":"string","description":"Email address being monitored"}},"required":["history_id","expiration","job_id","email"],"additionalProperties":false},{"type":"null"}],"description":"Data for the receive Gmail email"}},"required":["id","enabled","workspace_id","created_at","updated_at","type","config","data"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the trigger"},"enabled":{"type":"boolean","description":"Whether the trigger is enabled"},"workflow_id":{"description":"ID of the workflow this trigger dispatches to","anyOf":[{"type":"string"},{"type":"null"}]},"workspace_id":{"type":"string","description":"ID of the workspace this trigger belongs to"},"created_at":{"type":"string","description":"Timestamp when trigger was created"},"updated_at":{"type":"string","description":"Timestamp of last update"},"type":{"type":"string","const":"receive_webhook","description":"Trigger type: fires on incoming webhook"},"config":{"type":"object","properties":{"secret":{"description":"HMAC-SHA256 secret for signature verification","type":"string"}},"additionalProperties":false,"description":"Configuration for the webhook trigger"},"data":{"anyOf":[{"type":"object","properties":{"webhook_path":{"type":"string","description":"Cryptographically random path for the webhook endpoint"}},"required":["webhook_path"],"additionalProperties":false},{"type":"null"}],"description":"Webhook endpoint data including the random path"}},"required":["id","enabled","workspace_id","created_at","updated_at","type","config","data"],"additionalProperties":false}]},"workflow":{"$ref":"#/components/schemas/patch_v1_workflows_workflow_id_Response"}},"required":["trigger","workflow"],"additionalProperties":false}},"patch_v1_automations_trigger_id_Response":{"type":"object","properties":{"trigger":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the trigger"},"enabled":{"type":"boolean","description":"Whether the trigger is enabled"},"workflow_id":{"description":"ID of the workflow this trigger dispatches to","anyOf":[{"type":"string"},{"type":"null"}]},"workspace_id":{"type":"string","description":"ID of the workspace this trigger belongs to"},"created_at":{"type":"string","description":"Timestamp when trigger was created"},"updated_at":{"type":"string","description":"Timestamp of last update"},"type":{"type":"string","const":"recurring_schedule","description":"Trigger type: runs on a recurring schedule"},"config":{"type":"object","properties":{"cron_expression":{"type":"string","description":"The cron expression defining the schedule."}},"required":["cron_expression"],"additionalProperties":false,"description":"Schedule configuration with cron expression"},"data":{"anyOf":[{"type":"object","properties":{"job_scheduler_id":{"type":"string","description":"ID of the scheduled job in the job queue system"}},"required":["job_scheduler_id"],"additionalProperties":false,"description":"Data needed to manage the scheduled job in the job scheduler service"},{"type":"null"}],"description":"Job scheduler data for managing the recurring schedule"}},"required":["id","enabled","workspace_id","created_at","updated_at","type","config","data"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the trigger"},"enabled":{"type":"boolean","description":"Whether the trigger is enabled"},"workflow_id":{"description":"ID of the workflow this trigger dispatches to","anyOf":[{"type":"string"},{"type":"null"}]},"workspace_id":{"type":"string","description":"ID of the workspace this trigger belongs to"},"created_at":{"type":"string","description":"Timestamp when trigger was created"},"updated_at":{"type":"string","description":"Timestamp of last update"},"type":{"type":"string","const":"receive_outlook_email","description":"Trigger type: receive Outlook email"},"config":{"type":"object","properties":{"filter":{"type":"object","properties":{"from":{"type":"array","items":{"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"description":"Email addresses to monitor (sender filter)"},"subject_containing":{"type":"string","minLength":3,"maxLength":100,"description":"Text that must appear in the email subject"}},"required":["from","subject_containing"],"additionalProperties":false,"description":"Filtering criteria for incoming emails"},"monitored_events":{"type":"array","items":{"type":"string","enum":["created","updated","deleted"]},"description":"The types of changes to monitor"},"connected_account_id":{"type":"string","description":"ID of the connected Outlook account to monitor"}},"required":["filter","monitored_events","connected_account_id"],"additionalProperties":false,"description":"Configuration for the receive Outlook email"},"data":{"anyOf":[{"type":"object","properties":{"email":{"type":"string","description":"Email address being monitored"},"subscription":{"type":"object","properties":{"id":{"type":"string","description":"Subscription identifier"},"subscriptionId":{"description":"Microsoft Graph subscription ID","type":"string"},"expirationDateTime":{"type":"string","description":"ISO 8601 date when subscription expires"},"clientState":{"type":"string","description":"Client state value for webhook validation"},"notificationUrl":{"type":"string","description":"URL for webhook notifications"},"resource":{"type":"string","description":"Microsoft Graph resource path being monitored"},"changeType":{"type":"string","description":"Types of changes being monitored (created, updated, deleted)"},"creatorId":{"description":"ID of the user who created the subscription","type":"string"}},"required":["id","expirationDateTime","clientState","notificationUrl","resource","changeType"],"additionalProperties":false,"description":"Microsoft Graph subscription details"},"last_checked_at":{"description":"Timestamp of last check for new emails"},"job_id":{"type":"string","description":"ID of the background job handling this trigger"}},"required":["email","subscription","last_checked_at","job_id"],"additionalProperties":false},{"type":"null"}],"description":"Data for the receive Outlook email"}},"required":["id","enabled","workspace_id","created_at","updated_at","type","config","data"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the trigger"},"enabled":{"type":"boolean","description":"Whether the trigger is enabled"},"workflow_id":{"description":"ID of the workflow this trigger dispatches to","anyOf":[{"type":"string"},{"type":"null"}]},"workspace_id":{"type":"string","description":"ID of the workspace this trigger belongs to"},"created_at":{"type":"string","description":"Timestamp when trigger was created"},"updated_at":{"type":"string","description":"Timestamp of last update"},"type":{"type":"string","const":"receive_gmail_email","description":"Trigger type: receive Gmail email"},"config":{"type":"object","properties":{"filter":{"type":"object","properties":{"from":{"type":"array","items":{"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"description":"Email addresses to monitor (sender filter)"},"subject_containing":{"type":"string","minLength":3,"maxLength":100,"description":"Text that must appear in the email subject"},"label_ids":{"type":"array","items":{"type":"string"},"description":"Gmail label IDs to monitor (e.g., 'INBOX', 'SENT')"}},"required":["from","subject_containing","label_ids"],"additionalProperties":false,"description":"Filtering criteria for incoming emails"},"connected_account_id":{"type":"string","description":"ID of the connected Gmail account to monitor"}},"required":["filter","connected_account_id"],"additionalProperties":false,"description":"Configuration for the receive Gmail email"},"data":{"anyOf":[{"type":"object","properties":{"history_id":{"type":"string","description":"Gmail history ID for tracking changes since last check"},"expiration":{"type":"string","description":"ISO 8601 date when Gmail push notification expires"},"job_id":{"type":"string","description":"ID of the background job handling this trigger"},"email":{"type":"string","description":"Email address being monitored"}},"required":["history_id","expiration","job_id","email"],"additionalProperties":false},{"type":"null"}],"description":"Data for the receive Gmail email"}},"required":["id","enabled","workspace_id","created_at","updated_at","type","config","data"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the trigger"},"enabled":{"type":"boolean","description":"Whether the trigger is enabled"},"workflow_id":{"description":"ID of the workflow this trigger dispatches to","anyOf":[{"type":"string"},{"type":"null"}]},"workspace_id":{"type":"string","description":"ID of the workspace this trigger belongs to"},"created_at":{"type":"string","description":"Timestamp when trigger was created"},"updated_at":{"type":"string","description":"Timestamp of last update"},"type":{"type":"string","const":"receive_webhook","description":"Trigger type: fires on incoming webhook"},"config":{"type":"object","properties":{"secret":{"description":"HMAC-SHA256 secret for signature verification","type":"string"}},"additionalProperties":false,"description":"Configuration for the webhook trigger"},"data":{"anyOf":[{"type":"object","properties":{"webhook_path":{"type":"string","description":"Cryptographically random path for the webhook endpoint"}},"required":["webhook_path"],"additionalProperties":false},{"type":"null"}],"description":"Webhook endpoint data including the random path"}},"required":["id","enabled","workspace_id","created_at","updated_at","type","config","data"],"additionalProperties":false}]},"workflow":{"$ref":"#/components/schemas/patch_v1_workflows_workflow_id_Response"}},"required":["trigger","workflow"],"additionalProperties":false},"post_v1_skills_Response":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"content":{"type":"string"},"member_id":{"type":"string"},"disable_agent_invocation":{"type":"boolean"},"user_invocable":{"type":"boolean"},"active_by_default":{"type":"boolean"},"current_version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"source":{"type":"string"},"workspace_id":{"type":"string"},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","name","description","content","member_id","disable_agent_invocation","user_invocable","active_by_default","current_version","source","workspace_id","created_at","updated_at"],"additionalProperties":false},"delete_v1_skills_skill_id_Response":{"type":"object","properties":{"id":{"type":"string"}},"required":["id"],"additionalProperties":false},"get_v1_skills_skill_id_Response":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"content":{"type":"string"},"member_id":{"type":"string"},"disable_agent_invocation":{"type":"boolean"},"user_invocable":{"type":"boolean"},"active_by_default":{"type":"boolean"},"current_version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"source":{"type":"string"},"workspace_id":{"type":"string"},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","name","description","content","member_id","disable_agent_invocation","user_invocable","active_by_default","current_version","source","workspace_id","created_at","updated_at"],"additionalProperties":false},"get_v1_skills_Response":{"type":"array","items":{"$ref":"#/components/schemas/patch_v1_skills_skill_id_Response"}},"patch_v1_skills_skill_id_Response":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"content":{"type":"string"},"member_id":{"type":"string"},"disable_agent_invocation":{"type":"boolean"},"user_invocable":{"type":"boolean"},"active_by_default":{"type":"boolean"},"current_version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"source":{"type":"string"},"workspace_id":{"type":"string"},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","name","description","content","member_id","disable_agent_invocation","user_invocable","active_by_default","current_version","source","workspace_id","created_at","updated_at"],"additionalProperties":false},"post_v1_instructions_Response":{"type":"object","properties":{"id":{"type":"string"},"workspace_id":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"content":{"type":"string"},"scope":{"type":"string","enum":["workspace","member"]},"member_id":{"anyOf":[{"type":"string"},{"type":"null"}]},"table_id":{"anyOf":[{"type":"string"},{"type":"null"}]},"current_version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","workspace_id","name","description","content","scope","member_id","table_id","current_version","created_at","updated_at"],"additionalProperties":false},"delete_v1_instructions_instruction_id_Response":{"type":"object","properties":{"id":{"type":"string"}},"required":["id"],"additionalProperties":false},"get_v1_instructions_instruction_id_Response":{"type":"object","properties":{"id":{"type":"string"},"workspace_id":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"content":{"type":"string"},"scope":{"type":"string","enum":["workspace","member"]},"member_id":{"anyOf":[{"type":"string"},{"type":"null"}]},"table_id":{"anyOf":[{"type":"string"},{"type":"null"}]},"current_version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","workspace_id","name","description","content","scope","member_id","table_id","current_version","created_at","updated_at"],"additionalProperties":false},"get_v1_instructions_instruction_id_versions_Response":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"instruction_id":{"type":"string"},"version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"type":"string"},"description":{"type":"string"},"content":{"type":"string"},"created_by":{"anyOf":[{"type":"string"},{"type":"null"}]},"created_at":{"type":"string"}},"required":["id","instruction_id","version","name","description","content","created_by","created_at"],"additionalProperties":false}},"get_v1_instructions_Response":{"type":"array","items":{"$ref":"#/components/schemas/patch_v1_instructions_instruction_id_Response"}},"post_v1_instructions_instruction_id_restore_Response":{"type":"object","properties":{"id":{"type":"string"},"workspace_id":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"content":{"type":"string"},"scope":{"type":"string","enum":["workspace","member"]},"member_id":{"anyOf":[{"type":"string"},{"type":"null"}]},"table_id":{"anyOf":[{"type":"string"},{"type":"null"}]},"current_version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","workspace_id","name","description","content","scope","member_id","table_id","current_version","created_at","updated_at"],"additionalProperties":false},"patch_v1_instructions_instruction_id_Response":{"type":"object","properties":{"id":{"type":"string"},"workspace_id":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"content":{"type":"string"},"scope":{"type":"string","enum":["workspace","member"]},"member_id":{"anyOf":[{"type":"string"},{"type":"null"}]},"table_id":{"anyOf":[{"type":"string"},{"type":"null"}]},"current_version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","workspace_id","name","description","content","scope","member_id","table_id","current_version","created_at","updated_at"],"additionalProperties":false},"post_v1_member_instructions_Response":{"type":"object","properties":{"id":{"type":"string"},"workspace_id":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"content":{"type":"string"},"scope":{"type":"string","enum":["workspace","member"]},"member_id":{"anyOf":[{"type":"string"},{"type":"null"}]},"current_version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","workspace_id","name","description","content","scope","member_id","current_version","created_at","updated_at"],"additionalProperties":false},"delete_v1_member_instructions_instruction_id_Response":{"type":"object","properties":{"id":{"type":"string"}},"required":["id"],"additionalProperties":false},"get_v1_member_instructions_Response":{"type":"array","items":{"$ref":"#/components/schemas/patch_v1_member_instructions_instruction_id_Response"}},"patch_v1_member_instructions_instruction_id_Response":{"type":"object","properties":{"id":{"type":"string"},"workspace_id":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"content":{"type":"string"},"scope":{"type":"string","enum":["workspace","member"]},"member_id":{"anyOf":[{"type":"string"},{"type":"null"}]},"current_version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","workspace_id","name","description","content","scope","member_id","current_version","created_at","updated_at"],"additionalProperties":false},"post_v1_knowledge_docs_Response":{"type":"object","properties":{"id":{"type":"string"},"workspace_id":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"tags":{"type":"array","items":{"type":"string"}},"content":{"type":"string"},"content_sha":{"anyOf":[{"type":"string"},{"type":"null"}]},"files":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the file"},"file_storage_key":{"description":"Storage key for the file","type":"string"},"filename":{"type":"string","description":"Original filename"},"mime_type":{"type":"string","description":"MIME type of the file"},"url":{"description":"Public URL for the file, resolved at serving time","type":"string"},"thumbnail_url":{"description":"Thumbnail URL for image files, resolved at serving time","type":"string"},"preview_url":{"description":"Preview URL for legacy Excel files, resolved at serving time","type":"string"},"size":{"description":"Byte size, resolved at serving time from the file object (null/absent until backfilled)","anyOf":[{"type":"number"},{"type":"null"}]},"created_at":{"description":"Upload timestamp, resolved at serving time from the file object","type":"string"}},"required":["id","filename","mime_type"],"additionalProperties":false}},"owner_member_id":{"anyOf":[{"type":"string"},{"type":"null"}]},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","workspace_id","name","description","tags","content","content_sha","files","owner_member_id","created_at","updated_at"],"additionalProperties":false},"delete_v1_knowledge_docs_knowledge_doc_id_Response":{"type":"object","properties":{"id":{"type":"string"}},"required":["id"],"additionalProperties":false},"get_v1_knowledge_docs_knowledge_doc_id_Response":{"type":"object","properties":{"id":{"type":"string"},"workspace_id":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"tags":{"type":"array","items":{"type":"string"}},"content":{"type":"string"},"content_sha":{"anyOf":[{"type":"string"},{"type":"null"}]},"files":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the file"},"file_storage_key":{"description":"Storage key for the file","type":"string"},"filename":{"type":"string","description":"Original filename"},"mime_type":{"type":"string","description":"MIME type of the file"},"url":{"description":"Public URL for the file, resolved at serving time","type":"string"},"thumbnail_url":{"description":"Thumbnail URL for image files, resolved at serving time","type":"string"},"preview_url":{"description":"Preview URL for legacy Excel files, resolved at serving time","type":"string"},"size":{"description":"Byte size, resolved at serving time from the file object (null/absent until backfilled)","anyOf":[{"type":"number"},{"type":"null"}]},"created_at":{"description":"Upload timestamp, resolved at serving time from the file object","type":"string"}},"required":["id","filename","mime_type"],"additionalProperties":false}},"owner_member_id":{"anyOf":[{"type":"string"},{"type":"null"}]},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","workspace_id","name","description","tags","content","content_sha","files","owner_member_id","created_at","updated_at"],"additionalProperties":false},"get_v1_knowledge_docs_Response":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"workspace_id":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"tags":{"type":"array","items":{"type":"string"}},"content_sha":{"anyOf":[{"type":"string"},{"type":"null"}]},"files":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the file"},"file_storage_key":{"description":"Storage key for the file","type":"string"},"filename":{"type":"string","description":"Original filename"},"mime_type":{"type":"string","description":"MIME type of the file"},"url":{"description":"Public URL for the file, resolved at serving time","type":"string"},"thumbnail_url":{"description":"Thumbnail URL for image files, resolved at serving time","type":"string"},"preview_url":{"description":"Preview URL for legacy Excel files, resolved at serving time","type":"string"},"size":{"description":"Byte size, resolved at serving time from the file object (null/absent until backfilled)","anyOf":[{"type":"number"},{"type":"null"}]},"created_at":{"description":"Upload timestamp, resolved at serving time from the file object","type":"string"}},"required":["id","filename","mime_type"],"additionalProperties":false}},"owner_member_id":{"anyOf":[{"type":"string"},{"type":"null"}]},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","workspace_id","name","description","tags","content_sha","files","owner_member_id","created_at","updated_at"],"additionalProperties":false}},"patch_v1_knowledge_docs_knowledge_doc_id_Response":{"type":"object","properties":{"id":{"type":"string"},"workspace_id":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"tags":{"type":"array","items":{"type":"string"}},"content":{"type":"string"},"content_sha":{"anyOf":[{"type":"string"},{"type":"null"}]},"files":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the file"},"file_storage_key":{"description":"Storage key for the file","type":"string"},"filename":{"type":"string","description":"Original filename"},"mime_type":{"type":"string","description":"MIME type of the file"},"url":{"description":"Public URL for the file, resolved at serving time","type":"string"},"thumbnail_url":{"description":"Thumbnail URL for image files, resolved at serving time","type":"string"},"preview_url":{"description":"Preview URL for legacy Excel files, resolved at serving time","type":"string"},"size":{"description":"Byte size, resolved at serving time from the file object (null/absent until backfilled)","anyOf":[{"type":"number"},{"type":"null"}]},"created_at":{"description":"Upload timestamp, resolved at serving time from the file object","type":"string"}},"required":["id","filename","mime_type"],"additionalProperties":false}},"owner_member_id":{"anyOf":[{"type":"string"},{"type":"null"}]},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","workspace_id","name","description","tags","content","content_sha","files","owner_member_id","created_at","updated_at"],"additionalProperties":false},"post_v1_memories_Response":{"type":"object","properties":{"id":{"type":"string"},"key":{"type":"string"},"workspace_id":{"type":"string"},"member_id":{"type":"string"},"description":{"type":"string"},"content":{"type":"string"},"type":{"type":"string"},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","key","workspace_id","member_id","description","content","type","created_at","updated_at"],"additionalProperties":false},"delete_v1_memories_memory_id_Response":{"type":"object","properties":{"id":{"type":"string"}},"required":["id"],"additionalProperties":false},"get_v1_memories_Response":{"type":"array","items":{"$ref":"#/components/schemas/patch_v1_memories_memory_id_Response"}},"patch_v1_memories_memory_id_Response":{"type":"object","properties":{"id":{"type":"string"},"key":{"type":"string"},"workspace_id":{"type":"string"},"member_id":{"type":"string"},"description":{"type":"string"},"content":{"type":"string"},"type":{"type":"string"},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","key","workspace_id","member_id","description","content","type","created_at","updated_at"],"additionalProperties":false},"get_v1_search_Response":{"type":"object","properties":{"results":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","const":"table"},"id":{"type":"string"},"name":{"type":"string"},"score":{"type":"number"}},"required":["type","id","name","score"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"view"},"id":{"type":"string"},"name":{"type":"string"},"table_id":{"type":"string"},"table_name":{"type":"string"},"score":{"type":"number"}},"required":["type","id","name","table_id","table_name","score"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"record"},"id":{"type":"string"},"table_id":{"type":"string"},"table_name":{"type":"string"},"display_text":{"type":"string"},"view_id":{"type":"string"},"view_name":{"type":"string"},"score":{"type":"number"}},"required":["type","id","table_id","table_name","display_text","view_id","view_name","score"],"additionalProperties":false}]}}},"required":["results"],"additionalProperties":false},"post_v1_api_keys_Response":{"type":"object","properties":{"plaintext_key":{"type":"string","description":"The plaintext API key value. Returned once and never retrievable again."},"api_key":{"description":"Persisted metadata for the created API key","$ref":"#/components/schemas/patch_v1_api_keys_api_key_id_Response"}},"required":["plaintext_key","api_key"],"additionalProperties":false},"get_v1_api_keys_Response":{"type":"array","items":{"$ref":"#/components/schemas/patch_v1_api_keys_api_key_id_Response"}},"patch_v1_api_keys_api_key_id_Response":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the API key"},"organization_id":{"type":"string","description":"Organization ID this API key belongs to"},"name":{"type":"string","description":"Display name for this API key"},"key_prefix":{"type":"string","description":"Non-secret prefix used to identify the key"},"enabled":{"type":"boolean","description":"Whether this API key is active"},"last_used_at":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Timestamp when this key was last used"},"created_at":{"type":"string","description":"Timestamp when this API key was created"},"updated_at":{"type":"string","description":"Timestamp when this API key was last updated"}},"required":["id","organization_id","name","key_prefix","enabled","last_used_at","created_at","updated_at"],"additionalProperties":false},"post_v1_me_cancel_erasure_Response":{"type":"object","properties":{"ok":{"type":"boolean"}},"required":["ok"],"additionalProperties":false},"post_v1_me_claim_email_Response":{"type":"object","properties":{"ok":{"type":"boolean"}},"required":["ok"],"additionalProperties":false},"post_v1_me_confirm_email_claim_Response":{"type":"object","properties":{"email":{"type":"string"},"signed_out":{"type":"boolean","description":"True when this redemption revoked the caller's own session, so the page must send them to sign in rather than into the app"}},"required":["email","signed_out"],"additionalProperties":false},"post_v1_me_confirm_erasure_Response":{"type":"object","properties":{"erasure_scheduled_at":{"type":"string"}},"required":["erasure_scheduled_at"],"additionalProperties":false},"get_v1_me_export_Response":{"type":"object","properties":{"exported_at":{"type":"string"},"profile":{"type":"object","properties":{"user":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"member":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["user","member"],"additionalProperties":false},"sessions":{"type":"array","items":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"connected_accounts":{"type":"array","items":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"api_keys":{"type":"array","items":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"activity":{"type":"array","items":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}}},"required":["exported_at","profile","sessions","connected_accounts","api_keys","activity"],"additionalProperties":false},"get_v1_me_erasure_Response":{"type":"object","properties":{"scheduled_at":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["scheduled_at"],"additionalProperties":false},"get_v1_me_security_events_Response":{"type":"object","properties":{"events":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"user_id":{"anyOf":[{"type":"string"},{"type":"null"}]},"action":{"type":"string","enum":["session.login","session.login_failed","member.mfa_enrolled","member.mfa_disabled"]},"ip_address":{"anyOf":[{"type":"string"},{"type":"null"}]},"user_agent":{"anyOf":[{"type":"string"},{"type":"null"}]},"details":{"anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"null"}]},"created_at":{"type":"string"}},"required":["id","user_id","action","ip_address","user_agent","details","created_at"],"additionalProperties":false}}},"required":["events"],"additionalProperties":false},"get_v1_me_sessions_Response":{"type":"object","properties":{"sessions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"created_at":{"type":"string"},"expires_at":{"type":"string"},"ip_address":{"anyOf":[{"type":"string"},{"type":"null"}]},"user_agent":{"anyOf":[{"type":"string"},{"type":"null"}]},"is_current":{"type":"boolean"}},"required":["id","created_at","expires_at","ip_address","user_agent","is_current"],"additionalProperties":false}}},"required":["sessions"],"additionalProperties":false},"post_v1_me_request_erasure_Response":{"type":"object","properties":{"ok":{"type":"boolean"}},"required":["ok"],"additionalProperties":false},"delete_v1_me_sessions_Response":{"type":"object","properties":{"revoked":{"type":"number"}},"required":["revoked"],"additionalProperties":false},"delete_v1_me_sessions_session_id_Response":{"type":"object","properties":{"id":{"type":"string"}},"required":["id"],"additionalProperties":false},"post_v1_approval_requests_locked_record_change_Response":{"oneOf":[{"type":"object","properties":{"id":{"type":"string"},"workspace_id":{"type":"string"},"organization_id":{"type":"string"},"approvers":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","const":"member","description":"Principal type: individual member"},"id":{"type":"string","description":"Member ID"}},"required":["type","id"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"member_group","description":"Principal type: group of members"},"id":{"type":"string","description":"Member group ID"}},"required":["type","id"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"organization","description":"Principal type: all members in organization"},"id":{"type":"string","description":"Organization ID"}},"required":["type","id"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"public","description":"Principal type: anyone, including unauthenticated visitors"},"id":{"type":"string","const":"public","description":"Always the `public` sentinel — no entity"}},"required":["type","id"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"invitation","description":"Principal type: pending invitation (not yet accepted)"},"id":{"type":"string","description":"Invitation ID"}},"required":["type","id"],"additionalProperties":false}]}},"target_member_ids":{"type":"array","items":{"type":"string"}},"prompt":{"type":"string"},"status":{"type":"string","enum":["pending","approved","rejected","timed_out","cancelled"]},"decided_by":{"anyOf":[{"type":"string"},{"type":"null"}]},"decided_at":{"anyOf":[{"type":"string"},{"type":"null"}]},"decision_comment":{"anyOf":[{"type":"string"},{"type":"null"}]},"timeout_in_minutes":{"anyOf":[{"type":"number"},{"type":"null"}]},"created_at":{"type":"string"},"updated_at":{"type":"string"},"type":{"type":"string","const":"workflow_step"},"payload":{"type":"object","properties":{"workflow_execution_id":{"type":"string"},"execution_step_id":{"type":"string"},"waiting_step_id":{"type":"string"},"workflow_name":{"type":"string"}},"required":["workflow_execution_id","execution_step_id","waiting_step_id","workflow_name"],"additionalProperties":false}},"required":["id","workspace_id","organization_id","approvers","target_member_ids","prompt","status","decided_by","decided_at","decision_comment","timeout_in_minutes","created_at","updated_at","type","payload"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string"},"workspace_id":{"type":"string"},"organization_id":{"type":"string"},"approvers":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","const":"member","description":"Principal type: individual member"},"id":{"type":"string","description":"Member ID"}},"required":["type","id"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"member_group","description":"Principal type: group of members"},"id":{"type":"string","description":"Member group ID"}},"required":["type","id"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"organization","description":"Principal type: all members in organization"},"id":{"type":"string","description":"Organization ID"}},"required":["type","id"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"public","description":"Principal type: anyone, including unauthenticated visitors"},"id":{"type":"string","const":"public","description":"Always the `public` sentinel — no entity"}},"required":["type","id"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"invitation","description":"Principal type: pending invitation (not yet accepted)"},"id":{"type":"string","description":"Invitation ID"}},"required":["type","id"],"additionalProperties":false}]}},"target_member_ids":{"type":"array","items":{"type":"string"}},"prompt":{"type":"string"},"status":{"type":"string","enum":["pending","approved","rejected","timed_out","cancelled"]},"decided_by":{"anyOf":[{"type":"string"},{"type":"null"}]},"decided_at":{"anyOf":[{"type":"string"},{"type":"null"}]},"decision_comment":{"anyOf":[{"type":"string"},{"type":"null"}]},"timeout_in_minutes":{"anyOf":[{"type":"number"},{"type":"null"}]},"created_at":{"type":"string"},"updated_at":{"type":"string"},"type":{"type":"string","const":"locked_record_change"},"payload":{"type":"object","properties":{"table_id":{"type":"string"},"table_name":{"type":"string"},"record_id":{"type":"string"},"changes":{"minItems":1,"type":"array","items":{"type":"object","properties":{"field_key":{"type":"string"},"field_name":{"type":"string"},"old_value":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"array","items":{"type":"string"}},{"type":"null"}]},"new_value":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"array","items":{"type":"string"}},{"type":"null"}]},"old_value_display":{"type":"string"},"new_value_display":{"type":"string"}},"required":["field_key","field_name","old_value","new_value","old_value_display","new_value_display"],"additionalProperties":false}},"reason":{"type":"string"},"requested_by_member_id":{"type":"string"}},"required":["table_id","table_name","record_id","changes","reason","requested_by_member_id"],"additionalProperties":false}},"required":["id","workspace_id","organization_id","approvers","target_member_ids","prompt","status","decided_by","decided_at","decision_comment","timeout_in_minutes","created_at","updated_at","type","payload"],"additionalProperties":false}]},"get_v1_approval_requests_approval_request_id_Response":{"oneOf":[{"type":"object","properties":{"id":{"type":"string"},"workspace_id":{"type":"string"},"organization_id":{"type":"string"},"approvers":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","const":"member","description":"Principal type: individual member"},"id":{"type":"string","description":"Member ID"}},"required":["type","id"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"member_group","description":"Principal type: group of members"},"id":{"type":"string","description":"Member group ID"}},"required":["type","id"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"organization","description":"Principal type: all members in organization"},"id":{"type":"string","description":"Organization ID"}},"required":["type","id"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"public","description":"Principal type: anyone, including unauthenticated visitors"},"id":{"type":"string","const":"public","description":"Always the `public` sentinel — no entity"}},"required":["type","id"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"invitation","description":"Principal type: pending invitation (not yet accepted)"},"id":{"type":"string","description":"Invitation ID"}},"required":["type","id"],"additionalProperties":false}]}},"target_member_ids":{"type":"array","items":{"type":"string"}},"prompt":{"type":"string"},"status":{"type":"string","enum":["pending","approved","rejected","timed_out","cancelled"]},"decided_by":{"anyOf":[{"type":"string"},{"type":"null"}]},"decided_at":{"anyOf":[{"type":"string"},{"type":"null"}]},"decision_comment":{"anyOf":[{"type":"string"},{"type":"null"}]},"timeout_in_minutes":{"anyOf":[{"type":"number"},{"type":"null"}]},"created_at":{"type":"string"},"updated_at":{"type":"string"},"type":{"type":"string","const":"workflow_step"},"payload":{"type":"object","properties":{"workflow_execution_id":{"type":"string"},"execution_step_id":{"type":"string"},"waiting_step_id":{"type":"string"},"workflow_name":{"type":"string"}},"required":["workflow_execution_id","execution_step_id","waiting_step_id","workflow_name"],"additionalProperties":false}},"required":["id","workspace_id","organization_id","approvers","target_member_ids","prompt","status","decided_by","decided_at","decision_comment","timeout_in_minutes","created_at","updated_at","type","payload"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string"},"workspace_id":{"type":"string"},"organization_id":{"type":"string"},"approvers":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","const":"member","description":"Principal type: individual member"},"id":{"type":"string","description":"Member ID"}},"required":["type","id"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"member_group","description":"Principal type: group of members"},"id":{"type":"string","description":"Member group ID"}},"required":["type","id"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"organization","description":"Principal type: all members in organization"},"id":{"type":"string","description":"Organization ID"}},"required":["type","id"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"public","description":"Principal type: anyone, including unauthenticated visitors"},"id":{"type":"string","const":"public","description":"Always the `public` sentinel — no entity"}},"required":["type","id"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"invitation","description":"Principal type: pending invitation (not yet accepted)"},"id":{"type":"string","description":"Invitation ID"}},"required":["type","id"],"additionalProperties":false}]}},"target_member_ids":{"type":"array","items":{"type":"string"}},"prompt":{"type":"string"},"status":{"type":"string","enum":["pending","approved","rejected","timed_out","cancelled"]},"decided_by":{"anyOf":[{"type":"string"},{"type":"null"}]},"decided_at":{"anyOf":[{"type":"string"},{"type":"null"}]},"decision_comment":{"anyOf":[{"type":"string"},{"type":"null"}]},"timeout_in_minutes":{"anyOf":[{"type":"number"},{"type":"null"}]},"created_at":{"type":"string"},"updated_at":{"type":"string"},"type":{"type":"string","const":"locked_record_change"},"payload":{"type":"object","properties":{"table_id":{"type":"string"},"table_name":{"type":"string"},"record_id":{"type":"string"},"changes":{"minItems":1,"type":"array","items":{"type":"object","properties":{"field_key":{"type":"string"},"field_name":{"type":"string"},"old_value":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"array","items":{"type":"string"}},{"type":"null"}]},"new_value":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"array","items":{"type":"string"}},{"type":"null"}]},"old_value_display":{"type":"string"},"new_value_display":{"type":"string"}},"required":["field_key","field_name","old_value","new_value","old_value_display","new_value_display"],"additionalProperties":false}},"reason":{"type":"string"},"requested_by_member_id":{"type":"string"}},"required":["table_id","table_name","record_id","changes","reason","requested_by_member_id"],"additionalProperties":false}},"required":["id","workspace_id","organization_id","approvers","target_member_ids","prompt","status","decided_by","decided_at","decision_comment","timeout_in_minutes","created_at","updated_at","type","payload"],"additionalProperties":false}]},"get_v1_approval_requests_Response":{"type":"array","items":{"$ref":"#/components/schemas/get_v1_approval_requests_approval_request_id_Response"}},"post_v1_approval_requests_approval_request_id_respond_Response":{"oneOf":[{"type":"object","properties":{"id":{"type":"string"},"workspace_id":{"type":"string"},"organization_id":{"type":"string"},"approvers":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","const":"member","description":"Principal type: individual member"},"id":{"type":"string","description":"Member ID"}},"required":["type","id"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"member_group","description":"Principal type: group of members"},"id":{"type":"string","description":"Member group ID"}},"required":["type","id"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"organization","description":"Principal type: all members in organization"},"id":{"type":"string","description":"Organization ID"}},"required":["type","id"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"public","description":"Principal type: anyone, including unauthenticated visitors"},"id":{"type":"string","const":"public","description":"Always the `public` sentinel — no entity"}},"required":["type","id"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"invitation","description":"Principal type: pending invitation (not yet accepted)"},"id":{"type":"string","description":"Invitation ID"}},"required":["type","id"],"additionalProperties":false}]}},"target_member_ids":{"type":"array","items":{"type":"string"}},"prompt":{"type":"string"},"status":{"type":"string","enum":["pending","approved","rejected","timed_out","cancelled"]},"decided_by":{"anyOf":[{"type":"string"},{"type":"null"}]},"decided_at":{"anyOf":[{"type":"string"},{"type":"null"}]},"decision_comment":{"anyOf":[{"type":"string"},{"type":"null"}]},"timeout_in_minutes":{"anyOf":[{"type":"number"},{"type":"null"}]},"created_at":{"type":"string"},"updated_at":{"type":"string"},"type":{"type":"string","const":"workflow_step"},"payload":{"type":"object","properties":{"workflow_execution_id":{"type":"string"},"execution_step_id":{"type":"string"},"waiting_step_id":{"type":"string"},"workflow_name":{"type":"string"}},"required":["workflow_execution_id","execution_step_id","waiting_step_id","workflow_name"],"additionalProperties":false},"workflow_messages":{"type":"array","items":{"type":"object","properties":{"table_workflow_id":{"type":"string","description":"tbw_* binding that emitted the message."},"workflow_name":{"type":"string","description":"Human name of the workflow at execution time."},"event":{"type":"string","enum":["before_create","after_create","before_update","after_update","before_delete","after_delete"],"description":"Lifecycle event that produced the message. Only before_* events can surface here."},"record_id":{"type":"string","description":"Record that triggered the workflow. Lets the UI scope the message to a specific row in bulk responses."},"message":{"type":"string","description":"Author-provided text from the workflow's return.message."}},"required":["table_workflow_id","workflow_name","event","record_id","message"],"additionalProperties":false},"description":"Non-blocking messages emitted by before_update workflows that fired when this approval applied the locked-record change. Empty when no workflow returned a message (or when the request was rejected)."}},"required":["id","workspace_id","organization_id","approvers","target_member_ids","prompt","status","decided_by","decided_at","decision_comment","timeout_in_minutes","created_at","updated_at","type","payload","workflow_messages"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string"},"workspace_id":{"type":"string"},"organization_id":{"type":"string"},"approvers":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","const":"member","description":"Principal type: individual member"},"id":{"type":"string","description":"Member ID"}},"required":["type","id"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"member_group","description":"Principal type: group of members"},"id":{"type":"string","description":"Member group ID"}},"required":["type","id"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"organization","description":"Principal type: all members in organization"},"id":{"type":"string","description":"Organization ID"}},"required":["type","id"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"public","description":"Principal type: anyone, including unauthenticated visitors"},"id":{"type":"string","const":"public","description":"Always the `public` sentinel — no entity"}},"required":["type","id"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"invitation","description":"Principal type: pending invitation (not yet accepted)"},"id":{"type":"string","description":"Invitation ID"}},"required":["type","id"],"additionalProperties":false}]}},"target_member_ids":{"type":"array","items":{"type":"string"}},"prompt":{"type":"string"},"status":{"type":"string","enum":["pending","approved","rejected","timed_out","cancelled"]},"decided_by":{"anyOf":[{"type":"string"},{"type":"null"}]},"decided_at":{"anyOf":[{"type":"string"},{"type":"null"}]},"decision_comment":{"anyOf":[{"type":"string"},{"type":"null"}]},"timeout_in_minutes":{"anyOf":[{"type":"number"},{"type":"null"}]},"created_at":{"type":"string"},"updated_at":{"type":"string"},"type":{"type":"string","const":"locked_record_change"},"payload":{"type":"object","properties":{"table_id":{"type":"string"},"table_name":{"type":"string"},"record_id":{"type":"string"},"changes":{"minItems":1,"type":"array","items":{"type":"object","properties":{"field_key":{"type":"string"},"field_name":{"type":"string"},"old_value":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"array","items":{"type":"string"}},{"type":"null"}]},"new_value":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"array","items":{"type":"string"}},{"type":"null"}]},"old_value_display":{"type":"string"},"new_value_display":{"type":"string"}},"required":["field_key","field_name","old_value","new_value","old_value_display","new_value_display"],"additionalProperties":false}},"reason":{"type":"string"},"requested_by_member_id":{"type":"string"}},"required":["table_id","table_name","record_id","changes","reason","requested_by_member_id"],"additionalProperties":false},"workflow_messages":{"type":"array","items":{"type":"object","properties":{"table_workflow_id":{"type":"string","description":"tbw_* binding that emitted the message."},"workflow_name":{"type":"string","description":"Human name of the workflow at execution time."},"event":{"type":"string","enum":["before_create","after_create","before_update","after_update","before_delete","after_delete"],"description":"Lifecycle event that produced the message. Only before_* events can surface here."},"record_id":{"type":"string","description":"Record that triggered the workflow. Lets the UI scope the message to a specific row in bulk responses."},"message":{"type":"string","description":"Author-provided text from the workflow's return.message."}},"required":["table_workflow_id","workflow_name","event","record_id","message"],"additionalProperties":false},"description":"Non-blocking messages emitted by before_update workflows that fired when this approval applied the locked-record change. Empty when no workflow returned a message (or when the request was rejected)."}},"required":["id","workspace_id","organization_id","approvers","target_member_ids","prompt","status","decided_by","decided_at","decision_comment","timeout_in_minutes","created_at","updated_at","type","payload","workflow_messages"],"additionalProperties":false}]},"get_v1_audit_logs_Response":{"type":"object","properties":{"logs":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"organization_id":{"type":"string"},"workspace_id":{"anyOf":[{"type":"string"},{"type":"null"}]},"action":{"type":"string","enum":["record.create","record.update","record.delete","record.delete_permanent","record.restore","record.lock","record.unlock","record.comment.create","record.comment.update","record.comment.delete","table.create","table.update","table.archive","table.restore","field.create","field.update","field.delete","view.create","view.update","view.archive","view.restore","iam.role_binding.assign","iam.role_binding.update","iam.role_binding.remove","iam.ownership.transfer","iam.group.create","iam.group.update","iam.group.delete","iam.member.create_managed","iam.member.reset_password","iam.member.update_name","iam.invitation.revoke","iam.invitation.update","app.create","app.update","app.archive","app.install","app.uninstall","app.upgrade","app.eject","app.adopt","app.rebind_role","app.reset","app.config_update","app.public_password.set","app.public_password.clear","package.publish","package.set_official","package.yank","package.retire","package.content_install","package.content_upgrade","package.content_uninstall","skill.create","skill.update","skill.archive","automation.create","automation.update","automation.archive","document_template.create","document_template.update","document_template.archive","instruction.create","instruction.update","instruction.archive","instruction.restore","knowledge_doc.create","knowledge_doc.update","knowledge_doc.archive","knowledge_doc.restore","plan_period.create","plan_period.activate","plan_period.upgrade","plan_period.renew","plan_period.cancel_renewal","plan_period.resume_renewal","plan_period.set_overage","plan_period.downgrade","plan_period.expire","plan_period.trial","plan_period.suspend","plan_period.unsuspend","scheduled_change.create","scheduled_change.cancel","scheduled_change.apply","credit_grant.create","credit_grant.revoke","billing_invoice.attach","billing_invoice.remove","billing_invoice.set_buyer","billing_party.set","api_key.create","api_key.update","api_key.revoke","member.data_export","member.erasure_requested","member.erasure_cancelled","member.erasure_executed","organization.renamed","member.invited","member.accepted","member.removed","member.restored","member.role_changed","member.email_claimed","session.revoked","support.access"]},"actor_type":{"type":"string","enum":["member","api_key","system","public"]},"actor_id":{"type":"string"},"resource_type":{"type":"string","enum":["record","table","field","view","role_binding","group","organization","member","invitation","app","package","skill","automation","document_template","instruction","knowledge_doc","plan_period","scheduled_plan_change","credit_grant","billing_invoice","billing_party","api_key","session"]},"resource_id":{"type":"string"},"parent_resource_type":{"anyOf":[{"type":"string","enum":["record","table","field","view","role_binding","group","organization","member","invitation","app","package","skill","automation","document_template","instruction","knowledge_doc","plan_period","scheduled_plan_change","credit_grant","billing_invoice","billing_party","api_key","session"]},{"type":"null"}]},"parent_resource_id":{"anyOf":[{"type":"string"},{"type":"null"}]},"change_origin":{"anyOf":[{"oneOf":[{"type":"object","properties":{"type":{"type":"string","const":"member","description":"Change originated from a member"},"member_id":{"type":"string","description":"Member ID of the user who modified"},"member_session_id":{"description":"Session ID of the member at the time of modification","type":"string"},"app_id":{"description":"ID of the app through which the member acted","type":"string"}},"required":["type","member_id"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"chat_agent","description":"Change originated from chat agent"},"on_behalf_member_id":{"type":"string","description":"ID of the member on whose behalf the chat agent acted"},"tool_call_id":{"description":"ID of the tool call that the chat agent performed","type":"string"}},"required":["type","on_behalf_member_id"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"button","description":"Change originated from a button click"},"table_id":{"type":"string","description":"ID of the table containing the button"},"record_id":{"type":"string","description":"ID of the record where the button was clicked"},"field_key":{"type":"string","description":"Key of the button field"},"clicked_by":{"type":"string","description":"ID of the member who clicked the button"},"workflow_id":{"description":"ID of the workflow that executed","type":"string"},"workflow_execution_id":{"description":"ID of the workflow execution instance","type":"string"}},"required":["type","table_id","record_id","field_key","clicked_by"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"submit_record","description":"Change originated from a draft record submission"},"table_id":{"type":"string","description":"ID of the table containing the record"},"record_id":{"type":"string","description":"ID of the record being submitted"},"submitted_by":{"type":"string","description":"ID of the member who submitted"},"workflow_id":{"description":"ID of the workflow that executed","type":"string"},"workflow_execution_id":{"description":"ID of the workflow execution instance","type":"string"}},"required":["type","table_id","record_id","submitted_by"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"app_action","description":"Change originated from an app action"},"app_id":{"type":"string","description":"ID of the app containing the action"},"action_id":{"type":"string","description":"ID of the action that was triggered"},"triggered_by":{"type":"string","description":"ID of the member who triggered the action"},"workflow_id":{"description":"ID of the workflow that executed","type":"string"},"workflow_execution_id":{"description":"ID of the workflow execution instance","type":"string"}},"required":["type","app_id","action_id","triggered_by"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"app_workflow","description":"Change originated from a custom-code app calling useWorkflow(alias). The alias resolves through apps.workflows under the app's IAM principal — no ui.actions[] lookup, no record-level button binding."},"app_id":{"type":"string","description":"ID of the app that called the workflow"},"alias":{"type":"string","description":"Alias used in the app's manifest"},"triggered_by":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"ID of the member who triggered the call. Null when an anonymous visitor triggered it through a publicly-shared app — there is no member."},"workflow_id":{"description":"ID of the workflow that executed","type":"string"},"workflow_execution_id":{"description":"ID of the workflow execution instance","type":"string"}},"required":["type","app_id","alias","triggered_by"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"app_agent","description":"Change originated from a custom-code app running an agent via useAgentRun(alias). The alias resolves through apps.agents under the app's IAM principal; the agent's tools mutate records under that authority, distinct from a run-to-completion app_workflow."},"app_id":{"type":"string","description":"ID of the app that ran the agent"},"alias":{"type":"string","description":"Agent alias in the app's manifest"},"triggered_by":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"ID of the member who started the run. Null when an anonymous visitor started it through a publicly-shared app — there is no member."},"run_id":{"description":"ID of the app_agent_runs row for this run","type":"string"}},"required":["type","app_id","alias","triggered_by"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"automation","description":"Change originated from an automation (trigger + workflow)"},"trigger_type":{"description":"Type of the trigger that initiated this automation","type":"string"},"trigger_id":{"description":"ID of the trigger that initiated this automation","type":"string"},"workflow_id":{"description":"ID of the workflow that executed","type":"string"},"workflow_execution_id":{"description":"ID of the workflow execution instance","type":"string"},"automation_id":{"description":"[Legacy] Use trigger_id instead","type":"string"},"automation_execution_id":{"description":"[Legacy] Use workflow_execution_id instead","type":"string"}},"required":["type"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"system","description":"Change originated from system (Human system administrator/engineer)"},"author":{"type":"string","description":"Name of the system administrator/engineer"}},"required":["type","author"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"table_workflow","description":"Change originated from a table workflow execution"},"table_id":{"type":"string","description":"ID of the table whose workflow fired"},"table_workflow_id":{"type":"string","description":"ID of the binding entry on the table"},"event":{"type":"string","description":"Lifecycle event that fired the workflow (before_create, after_update, etc.)"},"triggered_by_member_id":{"description":"Member who initiated the write that fired this workflow (or the head of the chain when fired by another workflow). Null when fired from a non-member origin (recurring schedule, system).","anyOf":[{"type":"string"},{"type":"null"}]},"workflow_id":{"description":"ID of the workflow procedure that executed","type":"string"},"workflow_execution_id":{"description":"ID of the workflow execution instance","type":"string"}},"required":["type","table_id","table_workflow_id","event"],"additionalProperties":false}]},{"type":"null"}]},"details":{"anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"null"}]},"ip_address":{"anyOf":[{"type":"string"},{"type":"null"}]},"user_agent":{"anyOf":[{"type":"string"},{"type":"null"}]},"request_id":{"anyOf":[{"type":"string"},{"type":"null"}]},"session_id":{"anyOf":[{"type":"string"},{"type":"null"}]},"created_at":{"type":"string"}},"required":["id","organization_id","workspace_id","action","actor_type","actor_id","resource_type","resource_id","parent_resource_type","parent_resource_id","change_origin","details","ip_address","user_agent","request_id","session_id","created_at"],"additionalProperties":false}},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["logs","next_cursor"],"additionalProperties":false},"get_v1_agent_context_activations_Response":{"type":"array","items":{"$ref":"#/components/schemas/put_v1_agent_context_activations_resource_type_resource_id_Response"}},"put_v1_agent_context_activations_resource_type_resource_id_Response":{"type":"object","properties":{"member_id":{"type":"string"},"resource_type":{"type":"string","enum":["skill"],"description":"The kind of resource whose activation is being read or set."},"resource_id":{"type":"string"},"enabled":{"type":"boolean"}},"required":["member_id","resource_type","resource_id","enabled"],"additionalProperties":false},"post_v1_voice_sessions_session_id_complete_Response":{"type":"object","properties":{"session_id":{"type":"string"},"status":{"type":"string"}},"required":["session_id","status"],"additionalProperties":false},"delete_v1_voice_sessions_session_id_Response":{"type":"object","properties":{"id":{"type":"string"}},"required":["id"],"additionalProperties":false},"post_v1_voice_sessions_session_id_urls_Response":{"type":"object","properties":{"presigned_urls":{"type":"array","items":{"type":"object","properties":{"index":{"type":"number"},"url":{"type":"string"}},"required":["index","url"],"additionalProperties":false}}},"required":["presigned_urls"],"additionalProperties":false},"get_v1_voice_sessions_pending_Response":{"type":"array","items":{"$ref":"#/components/schemas/get_v1_voice_sessions_session_id_Response"}},"get_v1_voice_sessions_session_id_Response":{"type":"object","properties":{"session_id":{"type":"string"},"chat_session_id":{"anyOf":[{"type":"string"},{"type":"null"}]},"status":{"type":"string"},"mime_type":{"type":"string"},"audio_source":{"type":"string","enum":["microphone","system","system_video"]},"capture_audio":{"type":"string","enum":["mic","system","both"]},"capture_screen":{"type":"boolean"},"duration_seconds":{"anyOf":[{"type":"number"},{"type":"null"}]},"chunk_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"audio_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"video_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"video_width":{"anyOf":[{"type":"number"},{"type":"null"}]},"video_height":{"anyOf":[{"type":"number"},{"type":"null"}]},"video_mime_type":{"anyOf":[{"type":"string"},{"type":"null"}]},"video_chunk_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"video_quality":{"anyOf":[{"type":"string","enum":["original","1080p","720p","480p"]},{"type":"null"}]},"transcript_text":{"anyOf":[{"type":"string"},{"type":"null"}]},"speaker_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"error":{"anyOf":[{"type":"string"},{"type":"null"}]},"created_at":{"type":"string"}},"required":["session_id","chat_session_id","status","mime_type","audio_source","capture_audio","capture_screen","duration_seconds","chunk_count","audio_url","video_url","video_width","video_height","video_mime_type","video_chunk_count","video_quality","transcript_text","speaker_count","error","created_at"],"additionalProperties":false},"post_v1_voice_sessions_init_Response":{"type":"object","properties":{"session_id":{"type":"string"},"presigned_urls":{"type":"array","items":{"type":"object","properties":{"index":{"type":"number"},"url":{"type":"string"}},"required":["index","url"],"additionalProperties":false}},"video_presigned_urls":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"index":{"type":"number"},"url":{"type":"string"}},"required":["index","url"],"additionalProperties":false}},{"type":"null"}]}},"required":["session_id","presigned_urls","video_presigned_urls"],"additionalProperties":false},"post_v1_voice_sessions_session_id_retry_Response":{"type":"object","properties":{"session_id":{"type":"string"},"status":{"type":"string"}},"required":["session_id","status"],"additionalProperties":false},"get_v1_usage_credit_balance_Response":{"type":"object","properties":{"plan_id":{"type":"string"},"credit_quota":{"anyOf":[{"type":"number"},{"type":"null"}]},"credits_used":{"type":"number"},"grant_credits_remaining":{"type":"number"},"credits_remaining":{"anyOf":[{"type":"number"},{"type":"null"}]},"in_overage":{"type":"boolean"},"overage_credits":{"type":"number"}},"required":["plan_id","credit_quota","credits_used","grant_credits_remaining","credits_remaining","in_overage","overage_credits"],"additionalProperties":false},"get_v1_usage_credit_statement_Response":{"type":"object","properties":{"period_start":{"type":"string"},"period_end":{"type":"string"},"plan_id":{"anyOf":[{"type":"string"},{"type":"null"}]},"credit_quota":{"anyOf":[{"type":"number"},{"type":"null"}]},"credits_charged":{"type":"number"},"tasks_not_charged":{"type":"number"},"by_source":{"type":"array","items":{"type":"object","properties":{"credit_source":{"anyOf":[{"type":"string"},{"type":"null"}]},"credits_consumed":{"type":"number"}},"required":["credit_source","credits_consumed"],"additionalProperties":false}},"lines":{"type":"array","items":{"type":"object","properties":{"service":{"type":"string"},"event_type":{"type":"string"},"model_id":{"anyOf":[{"type":"string"},{"type":"null"}]},"task_count":{"type":"number"},"uncharged_task_count":{"type":"number"},"input_tokens":{"type":"number"},"output_tokens":{"type":"number"},"cache_read_tokens":{"type":"number"},"cache_write_tokens":{"type":"number"},"audio_duration_seconds":{"type":"number"},"credits_consumed":{"type":"number"}},"required":["service","event_type","model_id","task_count","uncharged_task_count","input_tokens","output_tokens","cache_read_tokens","cache_write_tokens","audio_duration_seconds","credits_consumed"],"additionalProperties":false}}},"required":["period_start","period_end","plan_id","credit_quota","credits_charged","tasks_not_charged","by_source","lines"],"additionalProperties":false},"get_v1_usage_plan_Response":{"anyOf":[{"type":"object","properties":{"plan_id":{"type":"string"},"billing_cycle_day":{"type":"number"},"credit_quota":{"anyOf":[{"type":"number"},{"type":"null"}]},"document_quota":{"anyOf":[{"type":"number"},{"type":"null"}]},"storage_gb":{"anyOf":[{"type":"number"},{"type":"null"}]},"grant_credits_remaining":{"type":"number"},"grant_credits_total":{"type":"number"},"overage_allowed":{"type":"boolean"},"overage_rate_usd":{"anyOf":[{"type":"string"},{"type":"null"}]},"effective_start":{"type":"string"},"term_months":{"anyOf":[{"type":"number"},{"type":"null"}]},"term_amount":{"anyOf":[{"type":"string"},{"type":"null"}]},"term_currency":{"anyOf":[{"type":"string"},{"type":"null"}]},"term_end_at":{"anyOf":[{"type":"string"},{"type":"null"}]},"auto_renew":{"type":"boolean"},"pending_change":{"anyOf":[{"type":"object","properties":{"kind":{"type":"string","enum":["downgrade","activation","renewal"]},"target_plan_id":{"type":"string"},"scheduled_for":{"type":"string"}},"required":["kind","target_plan_id","scheduled_for"],"additionalProperties":false},{"type":"null"}]},"created_at":{"type":"string"}},"required":["plan_id","billing_cycle_day","credit_quota","document_quota","storage_gb","grant_credits_remaining","grant_credits_total","overage_allowed","overage_rate_usd","effective_start","term_months","term_amount","term_currency","term_end_at","auto_renew","pending_change","created_at"],"additionalProperties":false},{"type":"null"}]},"get_v1_usage_plan_history_Response":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"plan_id":{"type":"string"},"credit_quota":{"anyOf":[{"type":"number"},{"type":"null"}]},"overage_allowed":{"type":"boolean"},"billing_cycle_day":{"type":"number"},"effective_start":{"type":"string"},"effective_end":{"anyOf":[{"type":"string"},{"type":"null"}]},"ended_by":{"anyOf":[{"type":"string"},{"type":"null"}]},"created_at":{"type":"string"}},"required":["id","plan_id","credit_quota","overage_allowed","billing_cycle_day","effective_start","effective_end","ended_by","created_at"],"additionalProperties":false}},"get_v1_usage_events_Response":{"type":"object","properties":{"events":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"service":{"type":"string"},"event_type":{"type":"string"},"model_id":{"anyOf":[{"type":"string"},{"type":"null"}]},"member_id":{"anyOf":[{"type":"string"},{"type":"null"}]},"input_tokens":{"anyOf":[{"type":"number"},{"type":"null"}]},"output_tokens":{"anyOf":[{"type":"number"},{"type":"null"}]},"audio_duration_seconds":{"anyOf":[{"type":"string"},{"type":"null"}]},"price_usd":{"type":"string"},"created_at":{"type":"string"}},"required":["id","service","event_type","model_id","member_id","input_tokens","output_tokens","audio_duration_seconds","price_usd","created_at"],"additionalProperties":false}},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["events","next_cursor"],"additionalProperties":false},"get_v1_usage_member_detail_Response":{"type":"object","properties":{"lines":{"type":"array","items":{"type":"object","properties":{"service":{"type":"string"},"event_type":{"type":"string"},"model_id":{"anyOf":[{"type":"string"},{"type":"null"}]},"task_count":{"type":"number"},"uncharged_task_count":{"type":"number"},"audio_duration_seconds":{"type":"number"},"credits_consumed":{"type":"number"}},"required":["service","event_type","model_id","task_count","uncharged_task_count","audio_duration_seconds","credits_consumed"],"additionalProperties":false}}},"required":["lines"],"additionalProperties":false},"get_v1_usage_model_detail_Response":{"type":"object","properties":{"daily":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string"},"input_tokens":{"type":"number"},"output_tokens":{"type":"number"},"cost_usd":{"type":"string"}},"required":["date","input_tokens","output_tokens","cost_usd"],"additionalProperties":false}}},"required":["daily"],"additionalProperties":false},"get_v1_usage_summary_Response":{"type":"object","properties":{"period_start":{"type":"string"},"period_end":{"type":"string"},"plan":{"anyOf":[{"type":"object","properties":{"plan_id":{"type":"string"},"credit_quota":{"anyOf":[{"type":"number"},{"type":"null"}]},"grant_credits_remaining":{"type":"number"},"overage_allowed":{"type":"boolean"},"document_quota":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["plan_id","credit_quota","grant_credits_remaining","overage_allowed","document_quota"],"additionalProperties":false},{"type":"null"}]},"credits_used":{"type":"number"},"documents_generated":{"type":"number"},"ai":{"type":"object","properties":{"total_input_tokens":{"type":"number"},"total_output_tokens":{"type":"number"},"total_cost_usd":{"type":"string"},"by_model":{"type":"array","items":{"type":"object","properties":{"model_id":{"type":"string"},"input_tokens":{"type":"number"},"output_tokens":{"type":"number"},"cost_usd":{"type":"string"}},"required":["model_id","input_tokens","output_tokens","cost_usd"],"additionalProperties":false}}},"required":["total_input_tokens","total_output_tokens","total_cost_usd","by_model"],"additionalProperties":false},"transcription":{"type":"object","properties":{"total_duration_seconds":{"type":"number"},"total_cost_usd":{"type":"string"}},"required":["total_duration_seconds","total_cost_usd"],"additionalProperties":false},"by_member":{"type":"array","items":{"type":"object","properties":{"member_id":{"type":"string"},"ai_input_tokens":{"type":"number"},"ai_output_tokens":{"type":"number"},"transcription_duration_seconds":{"type":"number"},"total_cost_usd":{"type":"string"}},"required":["member_id","ai_input_tokens","ai_output_tokens","transcription_duration_seconds","total_cost_usd"],"additionalProperties":false}}},"required":["period_start","period_end","plan","credits_used","documents_generated","ai","transcription","by_member"],"additionalProperties":false},"get_v1_billing_party_Response":{"type":"object","properties":{"party":{"anyOf":[{"type":"object","properties":{"legal_name":{"type":"string","minLength":1,"maxLength":300},"tax_id":{"type":"string","minLength":1,"maxLength":50},"address":{"type":"string","minLength":1,"maxLength":500},"email":{"anyOf":[{"type":"string","maxLength":320,"format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},{"type":"null"}]}},"required":["legal_name","tax_id","address","email"],"additionalProperties":false},{"type":"null"}]}},"required":["party"],"additionalProperties":false},"get_v1_billing_invoices_Response":{"type":"object","properties":{"invoices":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"number":{"type":"string","description":"Số hóa đơn"},"issued_at":{"type":"string"},"period_start":{"type":"string"},"period_end":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"},"filename":{"type":"string"},"mime_type":{"type":"string"},"size":{"type":"number"},"buyer":{"anyOf":[{"type":"object","properties":{"legal_name":{"type":"string","minLength":1,"maxLength":300},"tax_id":{"type":"string","minLength":1,"maxLength":50},"address":{"type":"string","minLength":1,"maxLength":500},"email":{"anyOf":[{"type":"string","maxLength":320,"format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},{"type":"null"}]}},"required":["legal_name","tax_id","address","email"],"additionalProperties":false},{"type":"null"}]},"note":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","number","issued_at","period_start","period_end","amount","currency","filename","mime_type","size","buyer","note"],"additionalProperties":false}}},"required":["invoices"],"additionalProperties":false},"put_v1_billing_party_Response":{"type":"object","properties":{"party":{"type":"object","properties":{"legal_name":{"type":"string","minLength":1,"maxLength":300},"tax_id":{"type":"string","minLength":1,"maxLength":50},"address":{"type":"string","minLength":1,"maxLength":500},"email":{"anyOf":[{"type":"string","maxLength":320,"format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},{"type":"null"}]}},"required":["legal_name","tax_id","address","email"],"additionalProperties":false}},"required":["party"],"additionalProperties":false},"post_v1_workflow_executions_execution_id_cancel_Response":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string","const":"cancelled"}},"required":["id","status"],"additionalProperties":false},"get_v1_workflow_executions_execution_id_Response":{"type":"object","properties":{"id":{"type":"string"},"workflow_id":{"type":"string"},"workspace_id":{"type":"string"},"status":{"type":"string","enum":["running","completed","failed","waiting","cancelled","returned"]},"error_message":{"anyOf":[{"type":"string"},{"type":"null"}]},"return_status":{"anyOf":[{"type":"string","enum":["success","error"]},{"type":"null"}]},"return_message":{"anyOf":[{"type":"string"},{"type":"null"}]},"started_at":{"type":"string"},"completed_at":{"anyOf":[{"type":"string"},{"type":"null"}]},"triggered_by_member_id":{"anyOf":[{"type":"string"},{"type":"null"}]},"return_data":{"anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"null"}]},"workflow_version":{"anyOf":[{"type":"number"},{"type":"null"}]},"steps":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"step_id":{"type":"string"},"step_type":{"type":"string"},"status":{"type":"string","enum":["running","completed","failed","waiting","skipped"]},"input":{"anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"null"}]},"output":{"anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"null"}]},"error_message":{"anyOf":[{"type":"string"},{"type":"null"}]},"started_at":{"type":"string"},"completed_at":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","step_id","step_type","status","input","output","error_message","started_at","completed_at"],"additionalProperties":false}}},"required":["id","workflow_id","workspace_id","status","error_message","return_status","return_message","started_at","completed_at","triggered_by_member_id","return_data","workflow_version","steps"],"additionalProperties":false},"get_v1_workflow_executions_Response":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"workflow_id":{"type":"string"},"workspace_id":{"type":"string"},"status":{"type":"string","enum":["running","completed","failed","waiting","cancelled","returned"]},"error_message":{"anyOf":[{"type":"string"},{"type":"null"}]},"return_status":{"anyOf":[{"type":"string","enum":["success","error"]},{"type":"null"}]},"return_message":{"anyOf":[{"type":"string"},{"type":"null"}]},"started_at":{"type":"string"},"completed_at":{"anyOf":[{"type":"string"},{"type":"null"}]},"triggered_by_member_id":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","workflow_id","workspace_id","status","error_message","return_status","return_message","started_at","completed_at","triggered_by_member_id"],"additionalProperties":false}},"post_v1_browser_agent_sessions_session_id_archive_Response":{"type":"object","properties":{"id":{"type":"string"}},"required":["id"],"additionalProperties":false},"get_v1_browser_agent_session_id_messages_Response":{"type":"array","items":{}},"get_v1_browser_agent_sessions_Response":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","title","created_at","updated_at"],"additionalProperties":false}},"post_v1_realtime_token_Response":{"type":"object","properties":{"url":{"type":"string"},"expires_in":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["url","expires_in"],"additionalProperties":false},"post_v1_iam_resources_resource_type_resource_id_role_bindings_Body":{"type":"object","properties":{"principal":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","const":"member","description":"Principal type: individual member"},"id":{"type":"string","description":"Member ID"}},"required":["type","id"]},{"type":"object","properties":{"type":{"type":"string","const":"member_group","description":"Principal type: group of members"},"id":{"type":"string","description":"Member group ID"}},"required":["type","id"]},{"type":"object","properties":{"type":{"type":"string","const":"organization","description":"Principal type: all members in organization"},"id":{"type":"string","description":"Organization ID"}},"required":["type","id"]},{"type":"object","properties":{"type":{"type":"string","const":"public","description":"Principal type: anyone, including unauthenticated visitors"},"id":{"type":"string","const":"public","description":"Always the `public` sentinel — no entity"}},"required":["type","id"]},{"type":"object","properties":{"type":{"type":"string","const":"invitation","description":"Principal type: pending invitation (not yet accepted)"},"id":{"type":"string","description":"Invitation ID"}},"required":["type","id"]}]},"role":{"type":"string"}},"required":["principal","role"]},"post_v1_iam_member_groups_Body":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":255},"description":{"type":"string"},"member_ids":{"type":"array","items":{"type":"string"}},"invitation_ids":{"type":"array","items":{"type":"string"}}},"required":["name","member_ids"]},"post_v1_iam_resources_resource_type_resource_id_transfer_ownership_Body":{"type":"object","properties":{"member_id":{"type":"string"}},"required":["member_id"]},"put_v1_iam_member_groups_group_id_Body":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":255},"description":{"type":"string"},"member_ids":{"type":"array","items":{"type":"string"}},"invitation_ids":{"type":"array","items":{"type":"string"}}}},"patch_v1_members_member_id_Body":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":255}},"required":["name"]},"patch_v1_iam_invitations_invitation_id_Body":{"type":"object","properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["name"]},"patch_v1_iam_role_bindings_binding_id_Body":{"type":"object","properties":{"role":{"type":"string"}},"required":["role"]},"post_v1_system_agents_chat_session_id_messages_save_Body":{"type":"object","properties":{"messages":{}},"required":["messages"]},"post_v1_system_agents_chat_session_id_messages_Body":{"type":"object","properties":{"messages":{},"web_search_enabled":{"type":"boolean"},"enabled_connectors":{"type":"array","items":{"type":"string"}},"model_tier":{"type":"string","enum":["haiku","sonnet","opus"]},"model_id":{"type":"string","minLength":1},"effort_level":{"type":"string","enum":["low","medium","high","xhigh","max"]},"app_context_app_id":{"type":"string"},"source":{"type":"string","enum":["chat","app_authoring"]}},"required":["messages"]},"post_v1_connected_accounts_Body":{"oneOf":[{"type":"object","properties":{"provider":{"type":"string","const":"wininvoice"},"name":{"type":"string"},"scheme":{"type":"string","const":"basic"},"credentials":{"type":"object","properties":{"client_id":{"type":"string","description":"WinInvoice client ID"},"client_secret":{"type":"string","description":"WinInvoice client secret"}},"required":["client_id","client_secret"]}},"required":["provider","scheme","credentials"]},{"type":"object","properties":{"provider":{"type":"string","const":"payos"},"name":{"type":"string"},"scheme":{"type":"string","const":"basic"},"credentials":{"type":"object","properties":{"client_id":{"type":"string","description":"PayOS client ID"},"api_key":{"type":"string","description":"PayOS API key"},"checksum_key":{"type":"string","description":"PayOS checksum key for signature verification"}},"required":["client_id","api_key","checksum_key"]}},"required":["provider","scheme","credentials"]},{"type":"object","properties":{"provider":{"type":"string","const":"misa"},"name":{"type":"string"},"scheme":{"type":"string","const":"api_key"},"credentials":{"type":"object","properties":{"access_code":{"type":"string","description":"Connection code generated in AMIS Settings → API Connection"},"org_company_code":{"type":"string","description":"Customer's MISA organization/domain identifier"}},"required":["access_code","org_company_code"]}},"required":["provider","scheme","credentials"]},{"type":"object","properties":{"provider":{"type":"string","const":"lark"},"name":{"type":"string"},"scheme":{"type":"string","const":"api_key"},"credentials":{"type":"object","properties":{"app_id":{"type":"string","description":"Lark custom-app App ID (cli_...)"},"app_secret":{"type":"string","description":"Lark custom-app App Secret"},"region":{"type":"string","enum":["larksuite","feishu"],"description":"larksuite (international) or feishu (China)"}},"required":["app_id","app_secret","region"]}},"required":["provider","scheme","credentials"]},{"type":"object","properties":{"provider":{"type":"string","const":"fedex"},"name":{"type":"string"},"scheme":{"type":"string","const":"oauth2"},"credentials":{"type":"object","properties":{"client_id":{"type":"string","description":"FedEx API key (OAuth client ID)"},"client_secret":{"type":"string","description":"FedEx secret key (OAuth client secret)"},"account_number":{"type":"string","description":"FedEx shipping account number"},"environment":{"type":"string","enum":["sandbox","production"],"description":"sandbox or production"}},"required":["client_id","client_secret","account_number","environment"]}},"required":["provider","scheme","credentials"]}]},"patch_v1_connected_accounts_connected_account_id_Body":{"oneOf":[{"type":"object","properties":{"name":{"type":"string"},"provider":{"type":"string","const":"wininvoice"},"credentials":{"type":"object","properties":{"client_id":{"type":"string","description":"WinInvoice client ID"},"client_secret":{"type":"string","description":"WinInvoice client secret"}},"required":["client_id","client_secret"]}},"required":["provider","credentials"]},{"type":"object","properties":{"name":{"type":"string"},"provider":{"type":"string","const":"payos"},"credentials":{"type":"object","properties":{"client_id":{"type":"string","description":"PayOS client ID"},"api_key":{"type":"string","description":"PayOS API key"},"checksum_key":{"type":"string","description":"PayOS checksum key for signature verification"}},"required":["client_id","api_key","checksum_key"]}},"required":["provider","credentials"]},{"type":"object","properties":{"name":{"type":"string"},"provider":{"type":"string","const":"misa"},"credentials":{"type":"object","properties":{"access_code":{"type":"string","description":"Connection code generated in AMIS Settings → API Connection"},"org_company_code":{"type":"string","description":"Customer's MISA organization/domain identifier"}},"required":["access_code","org_company_code"]}},"required":["provider","credentials"]},{"type":"object","properties":{"name":{"type":"string"},"provider":{"type":"string","const":"lark"},"credentials":{"type":"object","properties":{"app_id":{"type":"string","description":"Lark custom-app App ID (cli_...)"},"app_secret":{"type":"string","description":"Lark custom-app App Secret"},"region":{"type":"string","enum":["larksuite","feishu"],"description":"larksuite (international) or feishu (China)"}},"required":["app_id","app_secret","region"]}},"required":["provider","credentials"]},{"type":"object","properties":{"name":{"type":"string"},"provider":{"type":"string","const":"fedex"},"credentials":{"type":"object","properties":{"client_id":{"type":"string","description":"FedEx API key (OAuth client ID)"},"client_secret":{"type":"string","description":"FedEx secret key (OAuth client secret)"},"account_number":{"type":"string","description":"FedEx shipping account number"},"environment":{"type":"string","enum":["sandbox","production"],"description":"sandbox or production"}},"required":["client_id","client_secret","account_number","environment"]}},"required":["provider","credentials"]}]},"post_v1_tables_table_id_clone_Body":{"type":"object","properties":{"name":{"type":"string"},"include_data":{"type":"boolean"},"include_views":{"type":"boolean"},"include_workflows":{"type":"boolean"}},"required":["name"]},"post_v1_views_view_id_clone_Body":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"filters":{"anyOf":[{"$ref":"#/components/schemas/TableRecordFilters"},{"type":"null"}]},"sort":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"field_key":{"type":"string","description":"Field key to sort by"},"order":{"anyOf":[{"type":"string","enum":["asc","desc"]},{"type":"null"}],"description":"Sort order: 'asc' for ascending, 'desc' for descending"},"blank_position":{"description":"Blank position: 'top' for top, 'bottom' for bottom","type":"string","enum":["top","bottom"]}},"required":["field_key","order"]}},{"type":"null"}]},"field_config":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"description":"Field key"},"visibility":{"type":"string","enum":["visible","hidden"],"description":"Field visibility state: 'visible' = shown to everyone, 'hidden' = not shown by default but members can toggle"},"width":{"type":"number"}},"required":["key","visibility"]}}}},"post_v1_tables_table_id_draft_records_Body":{"type":"object","properties":{"records":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"data":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["data"]}}},"required":["records"]},"post_v1_tables_table_id_records_comments_Body":{"type":"object","properties":{"comments":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"record_id":{"type":"string"},"content":{"type":"string"},"file_ids":{"type":"array","items":{"type":"string"}}},"required":["record_id","content"]}}},"required":["comments"]},"post_v1_tables_table_id_record_data_templates_Body":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"data":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["name","description","data"]},"post_v1_tables_Body":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"fields":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"key":{"type":"string","description":"Unique field key"},"name":{"type":"string","description":"Display name"},"description":{"type":"string","description":"Field description"},"confirm_before_update":{"description":"Show confirmation before AI updates","type":"boolean"},"type":{"type":"string","const":"number"},"format":{"type":"string","enum":["number","currency","percentage"]},"currency":{"description":"ISO 4217 code","type":"string"},"default_value":{"description":"Value pre-filled into a new record when none is supplied for this field. Applied on create only — existing records are never backfilled. null clears it.","anyOf":[{"type":"number"},{"type":"null"}]}},"required":["key","name","description","type","format"]},{"type":"object","properties":{"key":{"type":"string","description":"Unique field key"},"name":{"type":"string","description":"Display name"},"description":{"type":"string","description":"Field description"},"confirm_before_update":{"description":"Show confirmation before AI updates","type":"boolean"},"type":{"type":"string","const":"text"},"unique":{"description":"Unique values required","type":"boolean"},"format":{"type":"string","enum":["text","link","markdown"]},"default_value":{"description":"Value pre-filled into a new record when none is supplied for this field. Applied on create only — existing records are never backfilled. null clears it.","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["key","name","description","type"]},{"type":"object","properties":{"key":{"type":"string","description":"Unique field key"},"name":{"type":"string","description":"Display name"},"description":{"type":"string","description":"Field description"},"confirm_before_update":{"description":"Show confirmation before AI updates","type":"boolean"},"type":{"type":"string","const":"date"},"format":{"type":"string","enum":["date","datetime","date_range","datetime_range"]},"timezone":{"description":"IANA timezone","type":"string"},"derive_from":{"description":"Auto-populate from the row's system timestamp. `created_at` stamps once at insert time; `updated_at` re-stamps on every record edit. Derived fields are read-only — user-supplied values are silently ignored at write time, matching the formula/rollup/lookup pattern. Replaces the per-table after_create workflow pattern.","type":"string","enum":["created_at","updated_at"]},"default_value":{"description":"Value pre-filled into a new record when none is supplied for this field. Applied on create only — existing records are never backfilled. null clears it. A date string in the field's format.","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["key","name","description","type"]},{"type":"object","properties":{"key":{"type":"string","description":"Unique field key"},"name":{"type":"string","description":"Display name"},"description":{"type":"string","description":"Field description"},"confirm_before_update":{"description":"Show confirmation before AI updates","type":"boolean"},"type":{"type":"string","const":"boolean"},"default_value":{"description":"Value pre-filled into a new record when none is supplied for this field. Applied on create only — existing records are never backfilled. null clears it.","anyOf":[{"type":"boolean"},{"type":"null"}]}},"required":["key","name","description","type"]},{"type":"object","properties":{"key":{"type":"string","description":"Unique field key"},"name":{"type":"string","description":"Display name"},"description":{"type":"string","description":"Field description"},"confirm_before_update":{"description":"Show confirmation before AI updates","type":"boolean"},"type":{"type":"string","const":"select"},"options":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"},"color":{"type":"string","enum":["red","orange","amber","yellow","lime","green","emerald","teal","cyan","sky","blue","indigo","violet","purple","fuchsia","pink","rose","slate","gray","zinc","neutral","stone"]}},"required":["key","name","color"]}},"multi":{"description":"Allow multiple selections","type":"boolean"},"default_value":{"description":"Value pre-filled into a new record when none is supplied for this field. Applied on create only — existing records are never backfilled. null clears it. Option key(s) — one for single-select.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]}},"required":["key","name","description","type","options"]},{"type":"object","properties":{"key":{"type":"string","description":"Unique field key"},"name":{"type":"string","description":"Display name"},"description":{"type":"string","description":"Field description"},"confirm_before_update":{"description":"Show confirmation before AI updates","type":"boolean"},"type":{"type":"string","const":"select_member"},"multi":{"description":"Allow multiple selections","type":"boolean"},"default_value":{"description":"Value pre-filled into a new record when none is supplied for this field. Applied on create only — existing records are never backfilled. null clears it. Member ID(s) — one for single-select.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]}},"required":["key","name","description","type"]},{"type":"object","properties":{"key":{"type":"string","description":"Unique field key"},"name":{"type":"string","description":"Display name"},"description":{"type":"string","description":"Field description"},"confirm_before_update":{"description":"Show confirmation before AI updates","type":"boolean"},"type":{"type":"string","const":"select_record_link","description":"Field type for linking to records in another table"},"table_id":{"type":"string","description":"ID of the target table that records can be linked to"},"display_field_keys":{"default":[],"description":"Field keys of the linked table shown as the link's display text and as the columns in the record picker. If empty, the picker shows all fields.","type":"array","items":{"type":"string"}},"display_field_widths":{"description":"Per-column widths in pixels for the record picker, keyed by linked-table field key. Missing keys fall back to the default column width.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"paired_field_key":{"description":"Key of the paired link field in the linked table. If set to a string, this indicates a bidirectional link where both tables can reference each other and data synchronizes in both directions. Both fields have paired_field_key pointing to each other. If set to null, explicitly disconnects the bidirectional link (clears paired_field_key on both sides). If undefined, no change is made to the existing paired_field_key.","type":"string"},"cardinality":{"description":"How many linked records this field can hold. Default 'many' (multi-select). 'one' = single-select; this side holds exactly one link to the partner. Requires paired_field_key. Two paired sides cannot both be 'one'.","type":"string","enum":["one","many"]}},"required":["key","name","description","type","table_id"]},{"type":"object","properties":{"key":{"type":"string","description":"Unique field key"},"name":{"type":"string","description":"Display name"},"description":{"type":"string","description":"Field description"},"confirm_before_update":{"description":"Show confirmation before AI updates","type":"boolean"},"type":{"type":"string","const":"rollup","description":"Field type for aggregating values from linked records (sum, avg, filled, earliest, etc.)"},"source_field_key":{"type":"string","description":"The field key of the select_record_link field to rollup from"},"aggregate_option":{"anyOf":[{"type":"object","properties":{"operation":{"type":"string","const":"count"},"field_key":{"type":"string"}},"required":["operation"]},{"type":"object","properties":{"operation":{"type":"string","enum":["empty","filled","percent_empty","percent_filled","unique","percent_unique"]},"field_key":{"type":"string"}},"required":["operation","field_key"]},{"type":"object","properties":{"operation":{"type":"string","enum":["empty","filled","percent_empty","percent_filled","unique","percent_unique","sum","avg","median","min","max","range"]},"field_key":{"type":"string"}},"required":["operation","field_key"]},{"type":"object","properties":{"operation":{"type":"string","enum":["empty","filled","percent_empty","percent_filled","unique","percent_unique","earliest","latest","date_range"]},"field_key":{"type":"string"}},"required":["operation","field_key"]},{"type":"object","properties":{"operation":{"type":"string","enum":["empty","filled","percent_empty","percent_filled","unique","percent_unique"]},"field_key":{"type":"string"}},"required":["operation","field_key"]},{"type":"object","properties":{"operation":{"type":"string","enum":["empty","filled","percent_empty","percent_filled","unique","percent_unique"]},"field_key":{"type":"string"}},"required":["operation","field_key"]},{"type":"object","properties":{"operation":{"type":"string","enum":["empty","filled","percent_empty","percent_filled"]},"field_key":{"type":"string"}},"required":["operation","field_key"]},{"type":"object","properties":{"operation":{"type":"string","enum":["checked","unchecked","percent_checked","percent_unchecked"]},"field_key":{"type":"string"}},"required":["operation","field_key"]},{"type":"object","properties":{"operation":{"type":"string","enum":["empty","filled","percent_empty","percent_filled"]},"field_key":{"type":"string"}},"required":["operation","field_key"]},{"type":"object","properties":{"operation":{"type":"string","enum":["empty","filled","percent_empty","percent_filled","unique","percent_unique","sum","avg","median","min","max","range"]},"field_key":{"type":"string"}},"required":["operation","field_key"]},{"type":"object","properties":{"operation":{"type":"string","enum":["empty","filled","percent_empty","percent_filled","unique","percent_unique","sum","avg","median","min","max","range","earliest","latest","date_range"]},"field_key":{"type":"string"}},"required":["operation","field_key"]}],"description":"The field aggregation function to apply (e.g., sum, avg, filled, earliest)"},"filter":{"description":"Optional filter to apply to linked records before aggregation. Only records matching the filter conditions will be included in the rollup calculation.","$ref":"#/components/schemas/TableRecordFiltersGroup"},"aggregate_field_type":{"description":"What this rollup's CELL holds — 'date' for earliest/latest, 'number' for every other operation (counts, sums, percentages). Derived from the operation, not from the aggregated field: a 'filled' count over a files column is a number. Server-derived at write time; ignored on input.","type":"string","enum":["text","number","date","boolean","select","select_member","select_record_link","files","formula","rollup","lookup","button","autonumber"]},"aggregate_field_format":{"description":"The format of this rollup's own value. Operations that preserve the aggregated value's unit (sum/avg/median/min/max/range/earliest/latest) inherit the target field's format; counting operations are 'number', percentages 'percentage'. Server-derived at write time; ignored on input.","type":"string"},"aggregate_field_currency":{"description":"The currency code of this rollup's own value (e.g. 'USD', 'VND'), inherited from the aggregated field only when the operation preserves its unit — a COUNT of a currency column carries no currency. Server-derived at write time; ignored on input.","type":"string"}},"required":["key","name","description","type","source_field_key","aggregate_option"]},{"type":"object","properties":{"key":{"type":"string","description":"Unique field key"},"name":{"type":"string","description":"Display name"},"description":{"type":"string","description":"Field description"},"confirm_before_update":{"description":"Show confirmation before AI updates","type":"boolean"},"type":{"type":"string","const":"lookup","description":"Field type for displaying values from fields in linked records"},"source_field_key":{"type":"string","description":"The field key of the select_record_link field to lookup from"},"lookup_field_key":{"type":"string","description":"The field key from the linked records to display"},"lookup_field_type":{"description":"The type of the target lookup field (e.g. 'text', 'number', 'date'). Resolved from the linked table's field definition at read time.","type":"string","enum":["text","number","date","boolean","select","select_member","select_record_link","files","formula","rollup","lookup","button","autonumber"]},"lookup_field_format":{"description":"The format of the target lookup field (e.g. 'currency', 'percentage', 'datetime'). Resolved from the linked table's field definition at read time.","type":"string"},"lookup_field_currency":{"description":"The currency code of the target lookup field (e.g. 'USD', 'VND'). Resolved from the linked table's field definition at read time.","type":"string"},"lookup_field_options":{"description":"Options for select-type lookup fields. Synced from the source select field's options.","type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"},"color":{"type":"string"}},"required":["key","name"]}},"order_by":{"description":"When set, sort the linked records by this field on the linked table and return ONLY the picked field from the single extreme record (desc=latest, asc=earliest), as a one-element array. Omit to return every linked record's value as an array. field_key must be a field on the linked table.","type":"object","properties":{"field_key":{"type":"string"},"direction":{"type":"string","enum":["asc","desc"]}},"required":["field_key","direction"]}},"required":["key","name","description","type","source_field_key","lookup_field_key"]},{"type":"object","properties":{"key":{"type":"string","description":"Unique field key"},"name":{"type":"string","description":"Display name"},"description":{"type":"string","description":"Field description"},"confirm_before_update":{"description":"Show confirmation before AI updates","type":"boolean"},"type":{"type":"string","const":"files","description":"Field type for file attachments (images, PDFs, documents)"}},"required":["key","name","description","type"]},{"type":"object","properties":{"key":{"type":"string","description":"Unique field key"},"name":{"type":"string","description":"Display name"},"description":{"type":"string","description":"Field description"},"confirm_before_update":{"description":"Show confirmation before AI updates","type":"boolean"},"type":{"type":"string","const":"formula","description":"Field type for calculated values based on expressions"},"formula":{"type":"object","properties":{"expression":{"type":"string","description":"JavaScript expression. Uses {Field Name} for field references."},"format":{"description":"Display format. 'number' / 'currency' / 'percentage' for numeric results; 'link' for text-output formulas that return a URL — renders the result as a clickable link.","type":"string","enum":["number","currency","percentage","link"]},"currency":{"description":"ISO 4217 currency code, e.g. USD, VND, EUR","type":"string"},"output_type":{"description":"Output type of the formula. Inferred by the backend from the expression — read-only on input. `datetime` when the result carries a time of day (references a datetime field or a time-bearing helper).","type":"string","enum":["number","text","date","datetime","boolean"]},"volatile":{"description":"Whether the formula's result depends on `now()` or other non-deterministic helpers. Inferred by the backend — read-only on input.","type":"boolean"}},"required":["expression"],"description":"Formula configuration and expression"}},"required":["key","name","description","type","formula"]},{"type":"object","properties":{"key":{"type":"string","description":"Unique field key"},"name":{"type":"string","description":"Display name"},"description":{"type":"string","description":"Field description"},"confirm_before_update":{"description":"Show confirmation before AI updates","type":"boolean"},"type":{"type":"string","const":"button","description":"Field type for action buttons"},"text":{"type":"string","description":"Button label text displayed to users"},"workflow_id":{"description":"ID of the workflow the button presses trigger. Null means no action configured — pressing the button is a no-op. Button authoring is retired: existing bindings keep running, but nothing sets a new one.","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["key","name","description","type","text"]},{"type":"object","properties":{"key":{"type":"string","description":"Unique field key"},"name":{"type":"string","description":"Display name"},"description":{"type":"string","description":"Field description"},"confirm_before_update":{"description":"Show confirmation before AI updates","type":"boolean"},"type":{"type":"string","const":"autonumber"},"prefix":{"description":"Literal prefix prepended to every display value (e.g. 'KH-' → 'KH-001'). Ignored when `template` is set.","type":"string"},"padding":{"description":"Zero-pad the integer to this width. Default 1 (no padding). 3 → '001', '012', '123', '1234' (overflow uses the actual width). Ignored when `template` is set.","type":"integer","minimum":1,"maximum":20},"template":{"description":"Format template with placeholder tokens evaluated at insert time. Tokens: {N} (raw integer), {N:W} (zero-padded to width W, e.g. {N:3} → 001), {YEAR} (4-digit year), {YEAR:2} (2-digit year), {MONTH} (2-digit month), {DAY} (2-digit day). Date tokens use the workspace timezone. Example: 'HM-{YEAR}-{N:3}' yields 'HM-2026-001'. Stored as the composed string; subsequent template edits do NOT re-format existing rows (date tokens would lose the original creation date).","type":"string"}},"required":["key","name","description","type"]}]}},"position":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["name","fields"]},"post_v1_tables_table_id_fields_Body":{"type":"object","properties":{"field":{"oneOf":[{"type":"object","properties":{"key":{"type":"string","description":"Unique field key"},"name":{"type":"string","description":"Display name"},"description":{"type":"string","description":"Field description"},"confirm_before_update":{"description":"Show confirmation before AI updates","type":"boolean"},"type":{"type":"string","const":"number"},"format":{"type":"string","enum":["number","currency","percentage"]},"currency":{"description":"ISO 4217 code","type":"string"},"default_value":{"description":"Value pre-filled into a new record when none is supplied for this field. Applied on create only — existing records are never backfilled. null clears it.","anyOf":[{"type":"number"},{"type":"null"}]}},"required":["key","name","description","type","format"]},{"type":"object","properties":{"key":{"type":"string","description":"Unique field key"},"name":{"type":"string","description":"Display name"},"description":{"type":"string","description":"Field description"},"confirm_before_update":{"description":"Show confirmation before AI updates","type":"boolean"},"type":{"type":"string","const":"text"},"unique":{"description":"Unique values required","type":"boolean"},"format":{"type":"string","enum":["text","link","markdown"]},"default_value":{"description":"Value pre-filled into a new record when none is supplied for this field. Applied on create only — existing records are never backfilled. null clears it.","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["key","name","description","type"]},{"type":"object","properties":{"key":{"type":"string","description":"Unique field key"},"name":{"type":"string","description":"Display name"},"description":{"type":"string","description":"Field description"},"confirm_before_update":{"description":"Show confirmation before AI updates","type":"boolean"},"type":{"type":"string","const":"date"},"format":{"type":"string","enum":["date","datetime","date_range","datetime_range"]},"timezone":{"description":"IANA timezone","type":"string"},"derive_from":{"description":"Auto-populate from the row's system timestamp. `created_at` stamps once at insert time; `updated_at` re-stamps on every record edit. Derived fields are read-only — user-supplied values are silently ignored at write time, matching the formula/rollup/lookup pattern. Replaces the per-table after_create workflow pattern.","type":"string","enum":["created_at","updated_at"]},"default_value":{"description":"Value pre-filled into a new record when none is supplied for this field. Applied on create only — existing records are never backfilled. null clears it. A date string in the field's format.","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["key","name","description","type"]},{"type":"object","properties":{"key":{"type":"string","description":"Unique field key"},"name":{"type":"string","description":"Display name"},"description":{"type":"string","description":"Field description"},"confirm_before_update":{"description":"Show confirmation before AI updates","type":"boolean"},"type":{"type":"string","const":"boolean"},"default_value":{"description":"Value pre-filled into a new record when none is supplied for this field. Applied on create only — existing records are never backfilled. null clears it.","anyOf":[{"type":"boolean"},{"type":"null"}]}},"required":["key","name","description","type"]},{"type":"object","properties":{"key":{"type":"string","description":"Unique field key"},"name":{"type":"string","description":"Display name"},"description":{"type":"string","description":"Field description"},"confirm_before_update":{"description":"Show confirmation before AI updates","type":"boolean"},"type":{"type":"string","const":"select"},"options":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"},"color":{"type":"string","enum":["red","orange","amber","yellow","lime","green","emerald","teal","cyan","sky","blue","indigo","violet","purple","fuchsia","pink","rose","slate","gray","zinc","neutral","stone"]}},"required":["key","name","color"]}},"multi":{"description":"Allow multiple selections","type":"boolean"},"default_value":{"description":"Value pre-filled into a new record when none is supplied for this field. Applied on create only — existing records are never backfilled. null clears it. Option key(s) — one for single-select.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]}},"required":["key","name","description","type","options"]},{"type":"object","properties":{"key":{"type":"string","description":"Unique field key"},"name":{"type":"string","description":"Display name"},"description":{"type":"string","description":"Field description"},"confirm_before_update":{"description":"Show confirmation before AI updates","type":"boolean"},"type":{"type":"string","const":"select_member"},"multi":{"description":"Allow multiple selections","type":"boolean"},"default_value":{"description":"Value pre-filled into a new record when none is supplied for this field. Applied on create only — existing records are never backfilled. null clears it. Member ID(s) — one for single-select.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]}},"required":["key","name","description","type"]},{"type":"object","properties":{"key":{"type":"string","description":"Unique field key"},"name":{"type":"string","description":"Display name"},"description":{"type":"string","description":"Field description"},"confirm_before_update":{"description":"Show confirmation before AI updates","type":"boolean"},"type":{"type":"string","const":"select_record_link"},"table_id":{"type":"string","description":"Linked table ID"},"display_field_keys":{"description":"Field keys of the linked table shown as the link's display text and as the columns in the record picker. If omitted, auto-selects the first text field.","type":"array","items":{"type":"string"}},"display_field_widths":{"description":"Per-column widths in pixels for the record picker, keyed by linked-table field key. Missing keys fall back to the default column width.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"sync_both_ways":{"description":"Enable bidirectional link sync. If the target table has exactly one existing unpaired link field pointing back, pairs with it instead of creating a new field.","type":"boolean"},"paired_field_display_field_keys":{"description":"Display fields for paired link","type":"array","items":{"type":"string"}},"paired_field_name":{"description":"Name for the auto-created paired field on the target table when sync_both_ways=true. If omitted, falls back to the source table's name (auto-uniquified with a numeric suffix on collision). Rejected as a conflict if a field with this name already exists on the target.","type":"string"},"cardinality":{"description":"How many linked records this field can hold. Default 'many' (multi-select). 'one' = single-select; this side holds exactly one link to the partner. Requires sync_both_ways/paired_field_key. Setting 'one' on both paired sides is rejected.","type":"string","enum":["one","many"]}},"required":["key","name","description","type","table_id"]},{"type":"object","properties":{"key":{"type":"string","description":"Unique field key"},"name":{"type":"string","description":"Display name"},"description":{"type":"string","description":"Field description"},"confirm_before_update":{"description":"Show confirmation before AI updates","type":"boolean"},"type":{"type":"string","const":"rollup","description":"Field type for aggregating values from linked records (sum, avg, filled, earliest, etc.)"},"source_field_key":{"type":"string","description":"The field key of the select_record_link field to rollup from"},"aggregate_option":{"anyOf":[{"type":"object","properties":{"operation":{"type":"string","const":"count"},"field_key":{"type":"string"}},"required":["operation"]},{"type":"object","properties":{"operation":{"type":"string","enum":["empty","filled","percent_empty","percent_filled","unique","percent_unique"]},"field_key":{"type":"string"}},"required":["operation","field_key"]},{"type":"object","properties":{"operation":{"type":"string","enum":["empty","filled","percent_empty","percent_filled","unique","percent_unique","sum","avg","median","min","max","range"]},"field_key":{"type":"string"}},"required":["operation","field_key"]},{"type":"object","properties":{"operation":{"type":"string","enum":["empty","filled","percent_empty","percent_filled","unique","percent_unique","earliest","latest","date_range"]},"field_key":{"type":"string"}},"required":["operation","field_key"]},{"type":"object","properties":{"operation":{"type":"string","enum":["empty","filled","percent_empty","percent_filled","unique","percent_unique"]},"field_key":{"type":"string"}},"required":["operation","field_key"]},{"type":"object","properties":{"operation":{"type":"string","enum":["empty","filled","percent_empty","percent_filled","unique","percent_unique"]},"field_key":{"type":"string"}},"required":["operation","field_key"]},{"type":"object","properties":{"operation":{"type":"string","enum":["empty","filled","percent_empty","percent_filled"]},"field_key":{"type":"string"}},"required":["operation","field_key"]},{"type":"object","properties":{"operation":{"type":"string","enum":["checked","unchecked","percent_checked","percent_unchecked"]},"field_key":{"type":"string"}},"required":["operation","field_key"]},{"type":"object","properties":{"operation":{"type":"string","enum":["empty","filled","percent_empty","percent_filled"]},"field_key":{"type":"string"}},"required":["operation","field_key"]},{"type":"object","properties":{"operation":{"type":"string","enum":["empty","filled","percent_empty","percent_filled","unique","percent_unique","sum","avg","median","min","max","range"]},"field_key":{"type":"string"}},"required":["operation","field_key"]},{"type":"object","properties":{"operation":{"type":"string","enum":["empty","filled","percent_empty","percent_filled","unique","percent_unique","sum","avg","median","min","max","range","earliest","latest","date_range"]},"field_key":{"type":"string"}},"required":["operation","field_key"]}],"description":"The field aggregation function to apply (e.g., sum, avg, filled, earliest)"},"filter":{"description":"Optional filter to apply to linked records before aggregation. Only records matching the filter conditions will be included in the rollup calculation.","$ref":"#/components/schemas/TableRecordFiltersGroup"},"aggregate_field_type":{"description":"What this rollup's CELL holds — 'date' for earliest/latest, 'number' for every other operation (counts, sums, percentages). Derived from the operation, not from the aggregated field: a 'filled' count over a files column is a number. Server-derived at write time; ignored on input.","type":"string","enum":["text","number","date","boolean","select","select_member","select_record_link","files","formula","rollup","lookup","button","autonumber"]},"aggregate_field_format":{"description":"The format of this rollup's own value. Operations that preserve the aggregated value's unit (sum/avg/median/min/max/range/earliest/latest) inherit the target field's format; counting operations are 'number', percentages 'percentage'. Server-derived at write time; ignored on input.","type":"string"},"aggregate_field_currency":{"description":"The currency code of this rollup's own value (e.g. 'USD', 'VND'), inherited from the aggregated field only when the operation preserves its unit — a COUNT of a currency column carries no currency. Server-derived at write time; ignored on input.","type":"string"}},"required":["key","name","description","type","source_field_key","aggregate_option"]},{"type":"object","properties":{"key":{"type":"string","description":"Unique field key"},"name":{"type":"string","description":"Display name"},"description":{"type":"string","description":"Field description"},"confirm_before_update":{"description":"Show confirmation before AI updates","type":"boolean"},"type":{"type":"string","const":"lookup","description":"Field type for displaying values from fields in linked records"},"source_field_key":{"type":"string","description":"The field key of the select_record_link field to lookup from"},"lookup_field_key":{"type":"string","description":"The field key from the linked records to display"},"lookup_field_type":{"description":"The type of the target lookup field (e.g. 'text', 'number', 'date'). Resolved from the linked table's field definition at read time.","type":"string","enum":["text","number","date","boolean","select","select_member","select_record_link","files","formula","rollup","lookup","button","autonumber"]},"lookup_field_format":{"description":"The format of the target lookup field (e.g. 'currency', 'percentage', 'datetime'). Resolved from the linked table's field definition at read time.","type":"string"},"lookup_field_currency":{"description":"The currency code of the target lookup field (e.g. 'USD', 'VND'). Resolved from the linked table's field definition at read time.","type":"string"},"lookup_field_options":{"description":"Options for select-type lookup fields. Synced from the source select field's options.","type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"},"color":{"type":"string"}},"required":["key","name"]}},"order_by":{"description":"When set, sort the linked records by this field on the linked table and return ONLY the picked field from the single extreme record (desc=latest, asc=earliest), as a one-element array. Omit to return every linked record's value as an array. field_key must be a field on the linked table.","type":"object","properties":{"field_key":{"type":"string"},"direction":{"type":"string","enum":["asc","desc"]}},"required":["field_key","direction"]}},"required":["key","name","description","type","source_field_key","lookup_field_key"]},{"type":"object","properties":{"key":{"type":"string","description":"Unique field key"},"name":{"type":"string","description":"Display name"},"description":{"type":"string","description":"Field description"},"confirm_before_update":{"description":"Show confirmation before AI updates","type":"boolean"},"type":{"type":"string","const":"files","description":"Field type for file attachments (images, PDFs, documents)"}},"required":["key","name","description","type"]},{"type":"object","properties":{"key":{"type":"string","description":"Unique field key"},"name":{"type":"string","description":"Display name"},"description":{"type":"string","description":"Field description"},"confirm_before_update":{"description":"Show confirmation before AI updates","type":"boolean"},"type":{"type":"string","const":"formula","description":"Field type for calculated values based on expressions"},"formula":{"type":"object","properties":{"expression":{"type":"string","description":"JavaScript expression. Uses {Field Name} for field references."},"format":{"description":"Display format. 'number' / 'currency' / 'percentage' for numeric results; 'link' for text-output formulas that return a URL — renders the result as a clickable link.","type":"string","enum":["number","currency","percentage","link"]},"currency":{"description":"ISO 4217 currency code, e.g. USD, VND, EUR","type":"string"},"output_type":{"description":"Output type of the formula. Inferred by the backend from the expression — read-only on input. `datetime` when the result carries a time of day (references a datetime field or a time-bearing helper).","type":"string","enum":["number","text","date","datetime","boolean"]},"volatile":{"description":"Whether the formula's result depends on `now()` or other non-deterministic helpers. Inferred by the backend — read-only on input.","type":"boolean"}},"required":["expression"],"description":"Formula configuration and expression"}},"required":["key","name","description","type","formula"]},{"type":"object","properties":{"key":{"type":"string","description":"Unique field key"},"name":{"type":"string","description":"Display name"},"description":{"type":"string","description":"Field description"},"confirm_before_update":{"description":"Show confirmation before AI updates","type":"boolean"},"type":{"type":"string","const":"button","description":"Field type for action buttons"},"text":{"type":"string","description":"Button label text displayed to users"},"workflow_id":{"description":"ID of the workflow the button presses trigger. Null means no action configured — pressing the button is a no-op. Button authoring is retired: existing bindings keep running, but nothing sets a new one.","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["key","name","description","type","text"]},{"type":"object","properties":{"key":{"type":"string","description":"Unique field key"},"name":{"type":"string","description":"Display name"},"description":{"type":"string","description":"Field description"},"confirm_before_update":{"description":"Show confirmation before AI updates","type":"boolean"},"type":{"type":"string","const":"autonumber"},"prefix":{"description":"Literal prefix prepended to every display value (e.g. 'KH-' → 'KH-001'). Ignored when `template` is set.","type":"string"},"padding":{"description":"Zero-pad the integer to this width. Default 1 (no padding). 3 → '001', '012', '123', '1234' (overflow uses the actual width). Ignored when `template` is set.","type":"integer","minimum":1,"maximum":20},"template":{"description":"Format template with placeholder tokens evaluated at insert time. Tokens: {N} (raw integer), {N:W} (zero-padded to width W, e.g. {N:3} → 001), {YEAR} (4-digit year), {YEAR:2} (2-digit year), {MONTH} (2-digit month), {DAY} (2-digit day). Date tokens use the workspace timezone. Example: 'HM-{YEAR}-{N:3}' yields 'HM-2026-001'. Stored as the composed string; subsequent template edits do NOT re-format existing rows (date tokens would lose the original creation date).","type":"string"}},"required":["key","name","description","type"]}]},"add_to_views":{"description":"View IDs where the new field should be visible. Fields are hidden in all views by default.","type":"array","items":{"type":"string"}}},"required":["field"]},"post_v1_tables_table_id_records_Body":{"type":"object","properties":{"records":{"maxItems":100,"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"data":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{},"description":"Record data keyed by field key."}},"required":["data"]}}},"required":["records"]},"post_v1_tables_table_id_views_Body":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"frozen_columns":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"summary":{"anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"anyOf":[{"type":"object","properties":{"operation":{"type":"string","description":"Operation to perform on the field"},"field_key":{"type":"string","description":"Field key to display in the summary row"}},"required":["operation","field_key"]},{"type":"null"}]}},{"type":"null"}]},"sort":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"field_key":{"type":"string","description":"Field key to sort by"},"order":{"anyOf":[{"type":"string","enum":["asc","desc"]},{"type":"null"}],"description":"Sort order: 'asc' for ascending, 'desc' for descending"},"blank_position":{"description":"Blank position: 'top' for top, 'bottom' for bottom","type":"string","enum":["top","bottom"]}},"required":["field_key","order"]}},{"type":"null"}]},"filters":{"anyOf":[{"$ref":"#/components/schemas/TableRecordFilters"},{"type":"null"}]},"field_config":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"description":"Field key"},"visibility":{"type":"string","enum":["visible","hidden"],"description":"Field visibility state: 'visible' = shown to everyone, 'hidden' = not shown by default but members can toggle"},"width":{"type":"number"}},"required":["key","visibility"]}},"position":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"visible_to":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["member","group"],"description":"Principal kind that may see the view: an individual member or a member group"},"id":{"type":"string","description":"Member ID (type=member) or member-group ID (type=group)"}},"required":["type","id"]}},{"type":"null"}]}},"required":["name"]},"delete_v1_tables_table_id_records_Body":{"type":"object","properties":{"record_ids":{"type":"array","items":{"type":"string"},"description":"Array of record IDs to soft-delete."}},"required":["record_ids"]},"post_v1_views_view_id_export_csv_Body":{"type":"object","properties":{"search":{"anyOf":[{"type":"string"},{"type":"null"}]},"filters":{"anyOf":[{"$ref":"#/components/schemas/TableRecordFilters"},{"type":"null"}]},"sort":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"field_key":{"type":"string","description":"Field key to sort by"},"order":{"anyOf":[{"type":"string","enum":["asc","desc"]},{"type":"null"}],"description":"Sort order: 'asc' for ascending, 'desc' for descending"},"blank_position":{"description":"Blank position: 'top' for top, 'bottom' for bottom","type":"string","enum":["top","bottom"]}},"required":["field_key","order"]}},{"type":"null"}]}}},"post_table_table_id_export_excel_Body":{"type":"object","properties":{"search":{"anyOf":[{"type":"string"},{"type":"null"}]},"filters":{"anyOf":[{"$ref":"#/components/schemas/TableRecordFilters"},{"type":"null"}]},"sort":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"field_key":{"type":"string","description":"Field key to sort by"},"order":{"anyOf":[{"type":"string","enum":["asc","desc"]},{"type":"null"}],"description":"Sort order: 'asc' for ascending, 'desc' for descending"},"blank_position":{"description":"Blank position: 'top' for top, 'bottom' for bottom","type":"string","enum":["top","bottom"]}},"required":["field_key","order"]}},{"type":"null"}]},"field_keys":{"minItems":1,"type":"array","items":{"type":"string"}},"export_name":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["field_keys"]},"post_v1_views_view_id_export_xlsx_Body":{"type":"object","properties":{"search":{"anyOf":[{"type":"string"},{"type":"null"}]},"filters":{"anyOf":[{"$ref":"#/components/schemas/TableRecordFilters"},{"type":"null"}]},"sort":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"field_key":{"type":"string","description":"Field key to sort by"},"order":{"anyOf":[{"type":"string","enum":["asc","desc"]},{"type":"null"}],"description":"Sort order: 'asc' for ascending, 'desc' for descending"},"blank_position":{"description":"Blank position: 'top' for top, 'bottom' for bottom","type":"string","enum":["top","bottom"]}},"required":["field_key","order"]}},{"type":"null"}]}}},"post_v1_tables_table_id_records_find_position_Body":{"type":"object","properties":{"record_id":{"type":"string"},"view_id":{"type":"string"},"search":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["record_id","view_id"]},"post_v1_tables_table_id_records_by_ids_Body":{"type":"object","properties":{"record_ids":{"type":"array","items":{"type":"string"},"description":"Array of record IDs to fetch."},"include_drafts":{"description":"Include draft records in results.","type":"boolean"}},"required":["record_ids"]},"post_v1_tables_table_id_views_view_id_summary_Body":{"type":"object","properties":{"summary":{"type":"object","propertyNames":{"type":"string","pattern":"^[a-zA-Z0-9_]+$"},"additionalProperties":{"type":"object","properties":{"operation":{"type":"string"},"field_key":{"type":"string"}},"required":["operation","field_key"]}},"filters":{"anyOf":[{"$ref":"#/components/schemas/TableRecordFilters"},{"type":"null"}]},"search":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["summary"]},"post_v1_tables_table_id_records_lock_Body":{"type":"object","properties":{"record_ids":{"type":"array","items":{"type":"string"}}},"required":["record_ids"]},"post_v1_tables_table_id_records_purge_Body":{"type":"object","properties":{"record_ids":{"type":"array","items":{"type":"string"},"description":"Archived record IDs to permanently delete."}},"required":["record_ids"]},"post_v1_tables_table_id_records_query_Body":{"type":"object","properties":{"filters":{"anyOf":[{"$ref":"#/components/schemas/TableRecordFilters"},{"type":"null"}]},"sort":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"field_key":{"type":"string","description":"Field key to sort by"},"order":{"anyOf":[{"type":"string","enum":["asc","desc"]},{"type":"null"}],"description":"Sort order: 'asc' for ascending, 'desc' for descending"},"blank_position":{"description":"Blank position: 'top' for top, 'bottom' for bottom","type":"string","enum":["top","bottom"]}},"required":["field_key","order"]}},{"type":"null"}]},"search":{"anyOf":[{"type":"string"},{"type":"null"}]},"field_keys":{"description":"Return only these fields in record data. Omit to return all fields.","type":"array","items":{"type":"string"}},"limit":{"description":"Max records to return (0-200). Set 0 for count only.","type":"number","minimum":0,"maximum":200},"offset":{"description":"Number of records to skip for pagination.","type":"number","minimum":0},"archived_only":{"description":"When true, return records in the trash (archived but not yet permanently deleted), ordered by archive recency.","type":"boolean"}}},"post_v1_tables_reorder_Body":{"type":"object","properties":{"table_ids":{"type":"array","items":{"type":"string"},"description":"Ordered array of table IDs defining the new order"}},"required":["table_ids"]},"post_v1_tables_table_id_views_reorder_Body":{"type":"object","properties":{"view_ids":{"type":"array","items":{"type":"string"},"description":"Ordered array of view IDs defining the new order"}},"required":["view_ids"]},"post_v1_tables_table_id_fields_field_key_repoint_Body":{"type":"object","properties":{"to_field_key":{"type":"string","minLength":1}},"required":["to_field_key"]},"post_v1_records_resolve_Body":{"type":"object","properties":{"record_ids":{"minItems":1,"maxItems":100,"type":"array","items":{"type":"string"}}},"required":["record_ids"]},"post_v1_tables_table_id_records_restore_Body":{"type":"object","properties":{"record_ids":{"type":"array","items":{"type":"string"}}},"required":["record_ids"]},"post_v1_tables_table_id_draft_records_submit_Body":{"type":"object","properties":{"record_ids":{"type":"array","items":{"type":"string"}}},"required":["record_ids"]},"post_v1_tables_table_id_records_unlock_Body":{"type":"object","properties":{"record_ids":{"type":"array","items":{"type":"string"}}},"required":["record_ids"]},"patch_v1_records_record_id_comments_comment_id_Body":{"type":"object","properties":{"content":{"type":"string","maxLength":10000},"file_ids":{"type":"array","items":{"type":"string"}},"files":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"file_storage_key":{"type":"string"},"filename":{"type":"string"},"mime_type":{"type":"string"}},"required":["id","file_storage_key","filename","mime_type"]}}},"required":["content"]},"patch_v1_record_data_templates_record_data_template_id_Body":{"type":"object","properties":{"name":{"type":"string"},"data":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}}},"patch_v1_tables_table_id_Body":{"type":"object","properties":{"name":{"type":"string"},"fields":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"key":{"type":"string","description":"Unique field key"},"name":{"type":"string","description":"Display name"},"description":{"type":"string","description":"Field description"},"confirm_before_update":{"description":"Show confirmation before AI updates","type":"boolean"},"type":{"type":"string","const":"number"},"format":{"type":"string","enum":["number","currency","percentage"]},"currency":{"description":"ISO 4217 code","type":"string"},"default_value":{"description":"Value pre-filled into a new record when none is supplied for this field. Applied on create only — existing records are never backfilled. null clears it.","anyOf":[{"type":"number"},{"type":"null"}]}},"required":["key","name","description","type","format"]},{"type":"object","properties":{"key":{"type":"string","description":"Unique field key"},"name":{"type":"string","description":"Display name"},"description":{"type":"string","description":"Field description"},"confirm_before_update":{"description":"Show confirmation before AI updates","type":"boolean"},"type":{"type":"string","const":"text"},"unique":{"description":"Unique values required","type":"boolean"},"format":{"type":"string","enum":["text","link","markdown"]},"default_value":{"description":"Value pre-filled into a new record when none is supplied for this field. Applied on create only — existing records are never backfilled. null clears it.","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["key","name","description","type"]},{"type":"object","properties":{"key":{"type":"string","description":"Unique field key"},"name":{"type":"string","description":"Display name"},"description":{"type":"string","description":"Field description"},"confirm_before_update":{"description":"Show confirmation before AI updates","type":"boolean"},"type":{"type":"string","const":"date"},"format":{"type":"string","enum":["date","datetime","date_range","datetime_range"]},"timezone":{"description":"IANA timezone","type":"string"},"derive_from":{"description":"Auto-populate from the row's system timestamp. `created_at` stamps once at insert time; `updated_at` re-stamps on every record edit. Derived fields are read-only — user-supplied values are silently ignored at write time, matching the formula/rollup/lookup pattern. Replaces the per-table after_create workflow pattern.","type":"string","enum":["created_at","updated_at"]},"default_value":{"description":"Value pre-filled into a new record when none is supplied for this field. Applied on create only — existing records are never backfilled. null clears it. A date string in the field's format.","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["key","name","description","type"]},{"type":"object","properties":{"key":{"type":"string","description":"Unique field key"},"name":{"type":"string","description":"Display name"},"description":{"type":"string","description":"Field description"},"confirm_before_update":{"description":"Show confirmation before AI updates","type":"boolean"},"type":{"type":"string","const":"boolean"},"default_value":{"description":"Value pre-filled into a new record when none is supplied for this field. Applied on create only — existing records are never backfilled. null clears it.","anyOf":[{"type":"boolean"},{"type":"null"}]}},"required":["key","name","description","type"]},{"type":"object","properties":{"key":{"type":"string","description":"Unique field key"},"name":{"type":"string","description":"Display name"},"description":{"type":"string","description":"Field description"},"confirm_before_update":{"description":"Show confirmation before AI updates","type":"boolean"},"type":{"type":"string","const":"select"},"options":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"},"color":{"type":"string","enum":["red","orange","amber","yellow","lime","green","emerald","teal","cyan","sky","blue","indigo","violet","purple","fuchsia","pink","rose","slate","gray","zinc","neutral","stone"]}},"required":["key","name","color"]}},"multi":{"description":"Allow multiple selections","type":"boolean"},"default_value":{"description":"Value pre-filled into a new record when none is supplied for this field. Applied on create only — existing records are never backfilled. null clears it. Option key(s) — one for single-select.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]}},"required":["key","name","description","type","options"]},{"type":"object","properties":{"key":{"type":"string","description":"Unique field key"},"name":{"type":"string","description":"Display name"},"description":{"type":"string","description":"Field description"},"confirm_before_update":{"description":"Show confirmation before AI updates","type":"boolean"},"type":{"type":"string","const":"select_member"},"multi":{"description":"Allow multiple selections","type":"boolean"},"default_value":{"description":"Value pre-filled into a new record when none is supplied for this field. Applied on create only — existing records are never backfilled. null clears it. Member ID(s) — one for single-select.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]}},"required":["key","name","description","type"]},{"type":"object","properties":{"key":{"type":"string","description":"Unique field key"},"name":{"type":"string","description":"Display name"},"description":{"type":"string","description":"Field description"},"confirm_before_update":{"description":"Show confirmation before AI updates","type":"boolean"},"type":{"type":"string","const":"select_record_link","description":"Field type for linking to records in another table"},"table_id":{"type":"string","description":"ID of the target table that records can be linked to"},"display_field_keys":{"default":[],"description":"Field keys of the linked table shown as the link's display text and as the columns in the record picker. If empty, the picker shows all fields.","type":"array","items":{"type":"string"}},"display_field_widths":{"description":"Per-column widths in pixels for the record picker, keyed by linked-table field key. Missing keys fall back to the default column width.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"paired_field_key":{"description":"Key of the paired link field in the linked table. If set to a string, this indicates a bidirectional link where both tables can reference each other and data synchronizes in both directions. Both fields have paired_field_key pointing to each other. If set to null, explicitly disconnects the bidirectional link (clears paired_field_key on both sides). If undefined, no change is made to the existing paired_field_key.","type":"string"},"cardinality":{"description":"How many linked records this field can hold. Default 'many' (multi-select). 'one' = single-select; this side holds exactly one link to the partner. Requires paired_field_key. Two paired sides cannot both be 'one'.","type":"string","enum":["one","many"]}},"required":["key","name","description","type","table_id"]},{"type":"object","properties":{"key":{"type":"string","description":"Unique field key"},"name":{"type":"string","description":"Display name"},"description":{"type":"string","description":"Field description"},"confirm_before_update":{"description":"Show confirmation before AI updates","type":"boolean"},"type":{"type":"string","const":"rollup","description":"Field type for aggregating values from linked records (sum, avg, filled, earliest, etc.)"},"source_field_key":{"type":"string","description":"The field key of the select_record_link field to rollup from"},"aggregate_option":{"anyOf":[{"type":"object","properties":{"operation":{"type":"string","const":"count"},"field_key":{"type":"string"}},"required":["operation"]},{"type":"object","properties":{"operation":{"type":"string","enum":["empty","filled","percent_empty","percent_filled","unique","percent_unique"]},"field_key":{"type":"string"}},"required":["operation","field_key"]},{"type":"object","properties":{"operation":{"type":"string","enum":["empty","filled","percent_empty","percent_filled","unique","percent_unique","sum","avg","median","min","max","range"]},"field_key":{"type":"string"}},"required":["operation","field_key"]},{"type":"object","properties":{"operation":{"type":"string","enum":["empty","filled","percent_empty","percent_filled","unique","percent_unique","earliest","latest","date_range"]},"field_key":{"type":"string"}},"required":["operation","field_key"]},{"type":"object","properties":{"operation":{"type":"string","enum":["empty","filled","percent_empty","percent_filled","unique","percent_unique"]},"field_key":{"type":"string"}},"required":["operation","field_key"]},{"type":"object","properties":{"operation":{"type":"string","enum":["empty","filled","percent_empty","percent_filled","unique","percent_unique"]},"field_key":{"type":"string"}},"required":["operation","field_key"]},{"type":"object","properties":{"operation":{"type":"string","enum":["empty","filled","percent_empty","percent_filled"]},"field_key":{"type":"string"}},"required":["operation","field_key"]},{"type":"object","properties":{"operation":{"type":"string","enum":["checked","unchecked","percent_checked","percent_unchecked"]},"field_key":{"type":"string"}},"required":["operation","field_key"]},{"type":"object","properties":{"operation":{"type":"string","enum":["empty","filled","percent_empty","percent_filled"]},"field_key":{"type":"string"}},"required":["operation","field_key"]},{"type":"object","properties":{"operation":{"type":"string","enum":["empty","filled","percent_empty","percent_filled","unique","percent_unique","sum","avg","median","min","max","range"]},"field_key":{"type":"string"}},"required":["operation","field_key"]},{"type":"object","properties":{"operation":{"type":"string","enum":["empty","filled","percent_empty","percent_filled","unique","percent_unique","sum","avg","median","min","max","range","earliest","latest","date_range"]},"field_key":{"type":"string"}},"required":["operation","field_key"]}],"description":"The field aggregation function to apply (e.g., sum, avg, filled, earliest)"},"filter":{"description":"Optional filter to apply to linked records before aggregation. Only records matching the filter conditions will be included in the rollup calculation.","$ref":"#/components/schemas/TableRecordFiltersGroup"},"aggregate_field_type":{"description":"What this rollup's CELL holds — 'date' for earliest/latest, 'number' for every other operation (counts, sums, percentages). Derived from the operation, not from the aggregated field: a 'filled' count over a files column is a number. Server-derived at write time; ignored on input.","type":"string","enum":["text","number","date","boolean","select","select_member","select_record_link","files","formula","rollup","lookup","button","autonumber"]},"aggregate_field_format":{"description":"The format of this rollup's own value. Operations that preserve the aggregated value's unit (sum/avg/median/min/max/range/earliest/latest) inherit the target field's format; counting operations are 'number', percentages 'percentage'. Server-derived at write time; ignored on input.","type":"string"},"aggregate_field_currency":{"description":"The currency code of this rollup's own value (e.g. 'USD', 'VND'), inherited from the aggregated field only when the operation preserves its unit — a COUNT of a currency column carries no currency. Server-derived at write time; ignored on input.","type":"string"}},"required":["key","name","description","type","source_field_key","aggregate_option"]},{"type":"object","properties":{"key":{"type":"string","description":"Unique field key"},"name":{"type":"string","description":"Display name"},"description":{"type":"string","description":"Field description"},"confirm_before_update":{"description":"Show confirmation before AI updates","type":"boolean"},"type":{"type":"string","const":"lookup","description":"Field type for displaying values from fields in linked records"},"source_field_key":{"type":"string","description":"The field key of the select_record_link field to lookup from"},"lookup_field_key":{"type":"string","description":"The field key from the linked records to display"},"lookup_field_type":{"description":"The type of the target lookup field (e.g. 'text', 'number', 'date'). Resolved from the linked table's field definition at read time.","type":"string","enum":["text","number","date","boolean","select","select_member","select_record_link","files","formula","rollup","lookup","button","autonumber"]},"lookup_field_format":{"description":"The format of the target lookup field (e.g. 'currency', 'percentage', 'datetime'). Resolved from the linked table's field definition at read time.","type":"string"},"lookup_field_currency":{"description":"The currency code of the target lookup field (e.g. 'USD', 'VND'). Resolved from the linked table's field definition at read time.","type":"string"},"lookup_field_options":{"description":"Options for select-type lookup fields. Synced from the source select field's options.","type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"},"color":{"type":"string"}},"required":["key","name"]}},"order_by":{"description":"When set, sort the linked records by this field on the linked table and return ONLY the picked field from the single extreme record (desc=latest, asc=earliest), as a one-element array. Omit to return every linked record's value as an array. field_key must be a field on the linked table.","type":"object","properties":{"field_key":{"type":"string"},"direction":{"type":"string","enum":["asc","desc"]}},"required":["field_key","direction"]}},"required":["key","name","description","type","source_field_key","lookup_field_key"]},{"type":"object","properties":{"key":{"type":"string","description":"Unique field key"},"name":{"type":"string","description":"Display name"},"description":{"type":"string","description":"Field description"},"confirm_before_update":{"description":"Show confirmation before AI updates","type":"boolean"},"type":{"type":"string","const":"files","description":"Field type for file attachments (images, PDFs, documents)"}},"required":["key","name","description","type"]},{"type":"object","properties":{"key":{"type":"string","description":"Unique field key"},"name":{"type":"string","description":"Display name"},"description":{"type":"string","description":"Field description"},"confirm_before_update":{"description":"Show confirmation before AI updates","type":"boolean"},"type":{"type":"string","const":"formula","description":"Field type for calculated values based on expressions"},"formula":{"type":"object","properties":{"expression":{"type":"string","description":"JavaScript expression. Uses {Field Name} for field references."},"format":{"description":"Display format. 'number' / 'currency' / 'percentage' for numeric results; 'link' for text-output formulas that return a URL — renders the result as a clickable link.","type":"string","enum":["number","currency","percentage","link"]},"currency":{"description":"ISO 4217 currency code, e.g. USD, VND, EUR","type":"string"},"output_type":{"description":"Output type of the formula. Inferred by the backend from the expression — read-only on input. `datetime` when the result carries a time of day (references a datetime field or a time-bearing helper).","type":"string","enum":["number","text","date","datetime","boolean"]},"volatile":{"description":"Whether the formula's result depends on `now()` or other non-deterministic helpers. Inferred by the backend — read-only on input.","type":"boolean"}},"required":["expression"],"description":"Formula configuration and expression"}},"required":["key","name","description","type","formula"]},{"type":"object","properties":{"key":{"type":"string","description":"Unique field key"},"name":{"type":"string","description":"Display name"},"description":{"type":"string","description":"Field description"},"confirm_before_update":{"description":"Show confirmation before AI updates","type":"boolean"},"type":{"type":"string","const":"button","description":"Field type for action buttons"},"text":{"type":"string","description":"Button label text displayed to users"},"workflow_id":{"description":"ID of the workflow the button presses trigger. Null means no action configured — pressing the button is a no-op. Button authoring is retired: existing bindings keep running, but nothing sets a new one.","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["key","name","description","type","text"]},{"type":"object","properties":{"key":{"type":"string","description":"Unique field key"},"name":{"type":"string","description":"Display name"},"description":{"type":"string","description":"Field description"},"confirm_before_update":{"description":"Show confirmation before AI updates","type":"boolean"},"type":{"type":"string","const":"autonumber"},"prefix":{"description":"Literal prefix prepended to every display value (e.g. 'KH-' → 'KH-001'). Ignored when `template` is set.","type":"string"},"padding":{"description":"Zero-pad the integer to this width. Default 1 (no padding). 3 → '001', '012', '123', '1234' (overflow uses the actual width). Ignored when `template` is set.","type":"integer","minimum":1,"maximum":20},"template":{"description":"Format template with placeholder tokens evaluated at insert time. Tokens: {N} (raw integer), {N:W} (zero-padded to width W, e.g. {N:3} → 001), {YEAR} (4-digit year), {YEAR:2} (2-digit year), {MONTH} (2-digit month), {DAY} (2-digit day). Date tokens use the workspace timezone. Example: 'HM-{YEAR}-{N:3}' yields 'HM-2026-001'. Stored as the composed string; subsequent template edits do NOT re-format existing rows (date tokens would lose the original creation date).","type":"string"}},"required":["key","name","description","type"]}]}},"position":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"private_filters":{"anyOf":[{"$ref":"#/components/schemas/TableRecordFiltersGroup"},{"type":"null"}]},"colors":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"filters":{"anyOf":[{"$ref":"#/components/schemas/TableRecordFiltersGroup"},{"type":"null"}],"description":"The filter conditions that determine when this color rule applies. Null means no filtering."},"color":{"type":"string","enum":["red","orange","amber","yellow","lime","green","emerald","teal","cyan","sky","blue","indigo","violet","purple","fuchsia","pink","rose","slate","gray","zinc","neutral","stone"],"description":"The color to apply to records matching the filters."}},"required":["filters","color"]}},{"type":"null"}]},"approvers":{"anyOf":[{"type":"array","items":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","const":"member","description":"Principal type: individual member"},"id":{"type":"string","description":"Member ID"}},"required":["type","id"]},{"type":"object","properties":{"type":{"type":"string","const":"member_group","description":"Principal type: group of members"},"id":{"type":"string","description":"Member group ID"}},"required":["type","id"]},{"type":"object","properties":{"type":{"type":"string","const":"organization","description":"Principal type: all members in organization"},"id":{"type":"string","description":"Organization ID"}},"required":["type","id"]},{"type":"object","properties":{"type":{"type":"string","const":"public","description":"Principal type: anyone, including unauthenticated visitors"},"id":{"type":"string","const":"public","description":"Always the `public` sentinel — no entity"}},"required":["type","id"]},{"type":"object","properties":{"type":{"type":"string","const":"invitation","description":"Principal type: pending invitation (not yet accepted)"},"id":{"type":"string","description":"Invitation ID"}},"required":["type","id"]}]}},{"type":"null"}]}}},"patch_v1_tables_table_id_fields_field_key_Body":{"type":"object","properties":{"field":{"oneOf":[{"type":"object","properties":{"key":{"type":"string","description":"Unique field key"},"name":{"type":"string","description":"Display name"},"description":{"type":"string","description":"Field description"},"confirm_before_update":{"description":"Show confirmation before AI updates","type":"boolean"},"type":{"type":"string","const":"number"},"format":{"type":"string","enum":["number","currency","percentage"]},"currency":{"description":"ISO 4217 code","type":"string"},"default_value":{"description":"Value pre-filled into a new record when none is supplied for this field. Applied on create only — existing records are never backfilled. null clears it.","anyOf":[{"type":"number"},{"type":"null"}]}},"required":["key","name","description","type","format"]},{"type":"object","properties":{"key":{"type":"string","description":"Unique field key"},"name":{"type":"string","description":"Display name"},"description":{"type":"string","description":"Field description"},"confirm_before_update":{"description":"Show confirmation before AI updates","type":"boolean"},"type":{"type":"string","const":"text"},"unique":{"description":"Unique values required","type":"boolean"},"format":{"type":"string","enum":["text","link","markdown"]},"default_value":{"description":"Value pre-filled into a new record when none is supplied for this field. Applied on create only — existing records are never backfilled. null clears it.","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["key","name","description","type"]},{"type":"object","properties":{"key":{"type":"string","description":"Unique field key"},"name":{"type":"string","description":"Display name"},"description":{"type":"string","description":"Field description"},"confirm_before_update":{"description":"Show confirmation before AI updates","type":"boolean"},"type":{"type":"string","const":"date"},"format":{"type":"string","enum":["date","datetime","date_range","datetime_range"]},"timezone":{"description":"IANA timezone","type":"string"},"derive_from":{"description":"Auto-populate from the row's system timestamp. `created_at` stamps once at insert time; `updated_at` re-stamps on every record edit. Derived fields are read-only — user-supplied values are silently ignored at write time, matching the formula/rollup/lookup pattern. Replaces the per-table after_create workflow pattern.","type":"string","enum":["created_at","updated_at"]},"default_value":{"description":"Value pre-filled into a new record when none is supplied for this field. Applied on create only — existing records are never backfilled. null clears it. A date string in the field's format.","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["key","name","description","type"]},{"type":"object","properties":{"key":{"type":"string","description":"Unique field key"},"name":{"type":"string","description":"Display name"},"description":{"type":"string","description":"Field description"},"confirm_before_update":{"description":"Show confirmation before AI updates","type":"boolean"},"type":{"type":"string","const":"boolean"},"default_value":{"description":"Value pre-filled into a new record when none is supplied for this field. Applied on create only — existing records are never backfilled. null clears it.","anyOf":[{"type":"boolean"},{"type":"null"}]}},"required":["key","name","description","type"]},{"type":"object","properties":{"key":{"type":"string","description":"Unique field key"},"name":{"type":"string","description":"Display name"},"description":{"type":"string","description":"Field description"},"confirm_before_update":{"description":"Show confirmation before AI updates","type":"boolean"},"type":{"type":"string","const":"select"},"options":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"},"color":{"type":"string","enum":["red","orange","amber","yellow","lime","green","emerald","teal","cyan","sky","blue","indigo","violet","purple","fuchsia","pink","rose","slate","gray","zinc","neutral","stone"]}},"required":["key","name","color"]}},"multi":{"description":"Allow multiple selections","type":"boolean"},"default_value":{"description":"Value pre-filled into a new record when none is supplied for this field. Applied on create only — existing records are never backfilled. null clears it. Option key(s) — one for single-select.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]}},"required":["key","name","description","type","options"]},{"type":"object","properties":{"key":{"type":"string","description":"Unique field key"},"name":{"type":"string","description":"Display name"},"description":{"type":"string","description":"Field description"},"confirm_before_update":{"description":"Show confirmation before AI updates","type":"boolean"},"type":{"type":"string","const":"select_member"},"multi":{"description":"Allow multiple selections","type":"boolean"},"default_value":{"description":"Value pre-filled into a new record when none is supplied for this field. Applied on create only — existing records are never backfilled. null clears it. Member ID(s) — one for single-select.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]}},"required":["key","name","description","type"]},{"type":"object","properties":{"key":{"type":"string","description":"Unique field key"},"name":{"type":"string","description":"Display name"},"description":{"type":"string","description":"Field description"},"confirm_before_update":{"description":"Show confirmation before AI updates","type":"boolean"},"type":{"type":"string","const":"select_record_link"},"table_id":{"type":"string","description":"Linked table ID"},"display_field_keys":{"description":"Field keys of the linked table shown as the link's display text and as the columns in the record picker. If omitted, auto-selects the first text field.","type":"array","items":{"type":"string"}},"display_field_widths":{"description":"Per-column widths in pixels for the record picker, keyed by linked-table field key. Missing keys fall back to the default column width.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"sync_both_ways":{"description":"Enable bidirectional link sync. If the target table has exactly one existing unpaired link field pointing back, pairs with it instead of creating a new field.","type":"boolean"},"paired_field_display_field_keys":{"description":"Display fields for paired link","type":"array","items":{"type":"string"}},"paired_field_name":{"description":"Name for the auto-created paired field on the target table when sync_both_ways=true. If omitted, falls back to the source table's name (auto-uniquified with a numeric suffix on collision). Rejected as a conflict if a field with this name already exists on the target.","type":"string"},"cardinality":{"description":"How many linked records this field can hold. Default 'many' (multi-select). 'one' = single-select; this side holds exactly one link to the partner. Requires sync_both_ways/paired_field_key. Setting 'one' on both paired sides is rejected.","type":"string","enum":["one","many"]}},"required":["key","name","description","type","table_id"]},{"type":"object","properties":{"key":{"type":"string","description":"Unique field key"},"name":{"type":"string","description":"Display name"},"description":{"type":"string","description":"Field description"},"confirm_before_update":{"description":"Show confirmation before AI updates","type":"boolean"},"type":{"type":"string","const":"rollup","description":"Field type for aggregating values from linked records (sum, avg, filled, earliest, etc.)"},"source_field_key":{"type":"string","description":"The field key of the select_record_link field to rollup from"},"aggregate_option":{"anyOf":[{"type":"object","properties":{"operation":{"type":"string","const":"count"},"field_key":{"type":"string"}},"required":["operation"]},{"type":"object","properties":{"operation":{"type":"string","enum":["empty","filled","percent_empty","percent_filled","unique","percent_unique"]},"field_key":{"type":"string"}},"required":["operation","field_key"]},{"type":"object","properties":{"operation":{"type":"string","enum":["empty","filled","percent_empty","percent_filled","unique","percent_unique","sum","avg","median","min","max","range"]},"field_key":{"type":"string"}},"required":["operation","field_key"]},{"type":"object","properties":{"operation":{"type":"string","enum":["empty","filled","percent_empty","percent_filled","unique","percent_unique","earliest","latest","date_range"]},"field_key":{"type":"string"}},"required":["operation","field_key"]},{"type":"object","properties":{"operation":{"type":"string","enum":["empty","filled","percent_empty","percent_filled","unique","percent_unique"]},"field_key":{"type":"string"}},"required":["operation","field_key"]},{"type":"object","properties":{"operation":{"type":"string","enum":["empty","filled","percent_empty","percent_filled","unique","percent_unique"]},"field_key":{"type":"string"}},"required":["operation","field_key"]},{"type":"object","properties":{"operation":{"type":"string","enum":["empty","filled","percent_empty","percent_filled"]},"field_key":{"type":"string"}},"required":["operation","field_key"]},{"type":"object","properties":{"operation":{"type":"string","enum":["checked","unchecked","percent_checked","percent_unchecked"]},"field_key":{"type":"string"}},"required":["operation","field_key"]},{"type":"object","properties":{"operation":{"type":"string","enum":["empty","filled","percent_empty","percent_filled"]},"field_key":{"type":"string"}},"required":["operation","field_key"]},{"type":"object","properties":{"operation":{"type":"string","enum":["empty","filled","percent_empty","percent_filled","unique","percent_unique","sum","avg","median","min","max","range"]},"field_key":{"type":"string"}},"required":["operation","field_key"]},{"type":"object","properties":{"operation":{"type":"string","enum":["empty","filled","percent_empty","percent_filled","unique","percent_unique","sum","avg","median","min","max","range","earliest","latest","date_range"]},"field_key":{"type":"string"}},"required":["operation","field_key"]}],"description":"The field aggregation function to apply (e.g., sum, avg, filled, earliest)"},"filter":{"description":"Optional filter to apply to linked records before aggregation. Only records matching the filter conditions will be included in the rollup calculation.","$ref":"#/components/schemas/TableRecordFiltersGroup"},"aggregate_field_type":{"description":"What this rollup's CELL holds — 'date' for earliest/latest, 'number' for every other operation (counts, sums, percentages). Derived from the operation, not from the aggregated field: a 'filled' count over a files column is a number. Server-derived at write time; ignored on input.","type":"string","enum":["text","number","date","boolean","select","select_member","select_record_link","files","formula","rollup","lookup","button","autonumber"]},"aggregate_field_format":{"description":"The format of this rollup's own value. Operations that preserve the aggregated value's unit (sum/avg/median/min/max/range/earliest/latest) inherit the target field's format; counting operations are 'number', percentages 'percentage'. Server-derived at write time; ignored on input.","type":"string"},"aggregate_field_currency":{"description":"The currency code of this rollup's own value (e.g. 'USD', 'VND'), inherited from the aggregated field only when the operation preserves its unit — a COUNT of a currency column carries no currency. Server-derived at write time; ignored on input.","type":"string"}},"required":["key","name","description","type","source_field_key","aggregate_option"]},{"type":"object","properties":{"key":{"type":"string","description":"Unique field key"},"name":{"type":"string","description":"Display name"},"description":{"type":"string","description":"Field description"},"confirm_before_update":{"description":"Show confirmation before AI updates","type":"boolean"},"type":{"type":"string","const":"lookup","description":"Field type for displaying values from fields in linked records"},"source_field_key":{"type":"string","description":"The field key of the select_record_link field to lookup from"},"lookup_field_key":{"type":"string","description":"The field key from the linked records to display"},"lookup_field_type":{"description":"The type of the target lookup field (e.g. 'text', 'number', 'date'). Resolved from the linked table's field definition at read time.","type":"string","enum":["text","number","date","boolean","select","select_member","select_record_link","files","formula","rollup","lookup","button","autonumber"]},"lookup_field_format":{"description":"The format of the target lookup field (e.g. 'currency', 'percentage', 'datetime'). Resolved from the linked table's field definition at read time.","type":"string"},"lookup_field_currency":{"description":"The currency code of the target lookup field (e.g. 'USD', 'VND'). Resolved from the linked table's field definition at read time.","type":"string"},"lookup_field_options":{"description":"Options for select-type lookup fields. Synced from the source select field's options.","type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"},"color":{"type":"string"}},"required":["key","name"]}},"order_by":{"description":"When set, sort the linked records by this field on the linked table and return ONLY the picked field from the single extreme record (desc=latest, asc=earliest), as a one-element array. Omit to return every linked record's value as an array. field_key must be a field on the linked table.","type":"object","properties":{"field_key":{"type":"string"},"direction":{"type":"string","enum":["asc","desc"]}},"required":["field_key","direction"]}},"required":["key","name","description","type","source_field_key","lookup_field_key"]},{"type":"object","properties":{"key":{"type":"string","description":"Unique field key"},"name":{"type":"string","description":"Display name"},"description":{"type":"string","description":"Field description"},"confirm_before_update":{"description":"Show confirmation before AI updates","type":"boolean"},"type":{"type":"string","const":"files","description":"Field type for file attachments (images, PDFs, documents)"}},"required":["key","name","description","type"]},{"type":"object","properties":{"key":{"type":"string","description":"Unique field key"},"name":{"type":"string","description":"Display name"},"description":{"type":"string","description":"Field description"},"confirm_before_update":{"description":"Show confirmation before AI updates","type":"boolean"},"type":{"type":"string","const":"formula","description":"Field type for calculated values based on expressions"},"formula":{"type":"object","properties":{"expression":{"type":"string","description":"JavaScript expression. Uses {Field Name} for field references."},"format":{"description":"Display format. 'number' / 'currency' / 'percentage' for numeric results; 'link' for text-output formulas that return a URL — renders the result as a clickable link.","type":"string","enum":["number","currency","percentage","link"]},"currency":{"description":"ISO 4217 currency code, e.g. USD, VND, EUR","type":"string"},"output_type":{"description":"Output type of the formula. Inferred by the backend from the expression — read-only on input. `datetime` when the result carries a time of day (references a datetime field or a time-bearing helper).","type":"string","enum":["number","text","date","datetime","boolean"]},"volatile":{"description":"Whether the formula's result depends on `now()` or other non-deterministic helpers. Inferred by the backend — read-only on input.","type":"boolean"}},"required":["expression"],"description":"Formula configuration and expression"}},"required":["key","name","description","type","formula"]},{"type":"object","properties":{"key":{"type":"string","description":"Unique field key"},"name":{"type":"string","description":"Display name"},"description":{"type":"string","description":"Field description"},"confirm_before_update":{"description":"Show confirmation before AI updates","type":"boolean"},"type":{"type":"string","const":"button","description":"Field type for action buttons"},"text":{"type":"string","description":"Button label text displayed to users"},"workflow_id":{"description":"ID of the workflow the button presses trigger. Null means no action configured — pressing the button is a no-op. Button authoring is retired: existing bindings keep running, but nothing sets a new one.","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["key","name","description","type","text"]},{"type":"object","properties":{"key":{"type":"string","description":"Unique field key"},"name":{"type":"string","description":"Display name"},"description":{"type":"string","description":"Field description"},"confirm_before_update":{"description":"Show confirmation before AI updates","type":"boolean"},"type":{"type":"string","const":"autonumber"},"prefix":{"description":"Literal prefix prepended to every display value (e.g. 'KH-' → 'KH-001'). Ignored when `template` is set.","type":"string"},"padding":{"description":"Zero-pad the integer to this width. Default 1 (no padding). 3 → '001', '012', '123', '1234' (overflow uses the actual width). Ignored when `template` is set.","type":"integer","minimum":1,"maximum":20},"template":{"description":"Format template with placeholder tokens evaluated at insert time. Tokens: {N} (raw integer), {N:W} (zero-padded to width W, e.g. {N:3} → 001), {YEAR} (4-digit year), {YEAR:2} (2-digit year), {MONTH} (2-digit month), {DAY} (2-digit day). Date tokens use the workspace timezone. Example: 'HM-{YEAR}-{N:3}' yields 'HM-2026-001'. Stored as the composed string; subsequent template edits do NOT re-format existing rows (date tokens would lose the original creation date).","type":"string"}},"required":["key","name","description","type"]}]}},"required":["field"]},"patch_v1_tables_table_id_records_Body":{"type":"object","properties":{"records":{"maxItems":100,"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"data":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{},"description":"Partial record data — only included fields are changed."}},"required":["id","data"]}},"bypass_locked_fields":{"description":"Admin-only: bypass locked field protection.","type":"boolean"}},"required":["records"]},"patch_v1_tables_table_id_views_view_id_Body":{"type":"object","properties":{"name":{"type":"string"},"frozen_columns":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"summary":{"anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"anyOf":[{"type":"object","properties":{"operation":{"type":"string","description":"Operation to perform on the field"},"field_key":{"type":"string","description":"Field key to display in the summary row"}},"required":["operation","field_key"]},{"type":"null"}]}},{"type":"null"}]},"sort":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"field_key":{"type":"string","description":"Field key to sort by"},"order":{"anyOf":[{"type":"string","enum":["asc","desc"]},{"type":"null"}],"description":"Sort order: 'asc' for ascending, 'desc' for descending"},"blank_position":{"description":"Blank position: 'top' for top, 'bottom' for bottom","type":"string","enum":["top","bottom"]}},"required":["field_key","order"]}},{"type":"null"}]},"default_record_data_template_id":{"anyOf":[{"type":"string"},{"type":"null"}]},"filters":{"anyOf":[{"$ref":"#/components/schemas/TableRecordFilters"},{"type":"null"}]},"field_config":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"description":"Field key"},"visibility":{"type":"string","enum":["visible","hidden"],"description":"Field visibility state: 'visible' = shown to everyone, 'hidden' = not shown by default but members can toggle"},"width":{"type":"number"}},"required":["key","visibility"]}},"position":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"visible_to":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["member","group"],"description":"Principal kind that may see the view: an individual member or a member group"},"id":{"type":"string","description":"Member ID (type=member) or member-group ID (type=group)"}},"required":["type","id"]}},{"type":"null"}]}}},"patch_v1_tables_table_id_workflows_table_workflow_id_Body":{"type":"object","properties":{"name":{"type":"string"},"description":{"type":"string"},"enabled":{"type":"boolean"},"event":{"type":"string","enum":["before_create","after_create","before_update","after_update","before_delete","after_delete"]},"source":{"type":"string"},"if_source":{"type":"string"}}},"patch_v1_views_view_id_Body":{"type":"object","properties":{"name":{"type":"string"},"frozen_columns":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"summary":{"anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"anyOf":[{"type":"object","properties":{"operation":{"type":"string","description":"Operation to perform on the field"},"field_key":{"type":"string","description":"Field key to display in the summary row"}},"required":["operation","field_key"]},{"type":"null"}]}},{"type":"null"}]},"sort":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"field_key":{"type":"string","description":"Field key to sort by"},"order":{"anyOf":[{"type":"string","enum":["asc","desc"]},{"type":"null"}],"description":"Sort order: 'asc' for ascending, 'desc' for descending"},"blank_position":{"description":"Blank position: 'top' for top, 'bottom' for bottom","type":"string","enum":["top","bottom"]}},"required":["field_key","order"]}},{"type":"null"}]},"default_record_data_template_id":{"anyOf":[{"type":"string"},{"type":"null"}]},"filters":{"anyOf":[{"$ref":"#/components/schemas/TableRecordFilters"},{"type":"null"}]},"field_config":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"description":"Field key"},"visibility":{"type":"string","enum":["visible","hidden"],"description":"Field visibility state: 'visible' = shown to everyone, 'hidden' = not shown by default but members can toggle"},"width":{"type":"number"}},"required":["key","visibility"]}},"position":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"visible_to":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["member","group"],"description":"Principal kind that may see the view: an individual member or a member group"},"id":{"type":"string","description":"Member ID (type=member) or member-group ID (type=group)"}},"required":["type","id"]}},{"type":"null"}]}}},"post_v1_workspaces_Body":{"type":"object","properties":{"name":{"type":"string","minLength":1},"timezone":{"type":"string"}},"required":["name"]},"patch_v1_workspace_Body":{"type":"object","properties":{"name":{"type":"string","minLength":1},"default_currency":{"type":"string"},"timezone":{"type":"string"}},"required":["name","default_currency","timezone"]},"post_v1_notifications_Body":{"type":"object","properties":{"title":{"type":"string"},"body":{"type":"string"},"level":{"type":"string","enum":["urgent","warning","info","success"]}},"required":["title","body"]},"post_v1_files_multipart_abort_Body":{"type":"object","properties":{"upload_id":{"type":"string"},"file_storage_key":{"type":"string"}},"required":["upload_id","file_storage_key"]},"post_v1_files_direct_complete_Body":{"type":"object","properties":{"file_id":{"type":"string"},"file_storage_key":{"type":"string"},"filename":{"type":"string"},"mime_type":{"type":"string"},"original_file_id":{"description":"When set, this upload becomes a new version of the original file. The server resolves the current latest, links the new row via source_file_id, and bumps the original's latest_version_id pointer.","type":"string"}},"required":["file_id","file_storage_key","filename","mime_type"]},"post_v1_files_multipart_complete_Body":{"type":"object","properties":{"file_id":{"type":"string"},"upload_id":{"type":"string"},"file_storage_key":{"type":"string"},"filename":{"type":"string"},"mime_type":{"type":"string"},"parts":{"type":"array","items":{"type":"object","properties":{"part_number":{"type":"number"},"etag":{"type":"string"}},"required":["part_number","etag"]}},"original_file_id":{"description":"When set, this upload becomes a new version of the original file. The server resolves the current latest, links the new row via source_file_id, and bumps the original's latest_version_id pointer.","type":"string"}},"required":["file_id","upload_id","file_storage_key","filename","mime_type","parts"]},"post_v1_files_download_zip_Body":{"type":"object","properties":{"file_ids":{"minItems":1,"type":"array","items":{"type":"string"}},"filename":{"type":"string"},"size":{"type":"string","enum":["original","small"]}},"required":["file_ids"]},"post_v1_files_direct_init_Body":{"type":"object","properties":{"file_id":{"type":"string"},"filename":{"type":"string"},"mime_type":{"type":"string"},"file_size":{"type":"integer","exclusiveMinimum":0,"maximum":2147483648}},"required":["filename","mime_type","file_size"]},"post_v1_files_multipart_init_Body":{"type":"object","properties":{"file_id":{"type":"string"},"filename":{"type":"string"},"mime_type":{"type":"string"},"file_size":{"type":"integer","exclusiveMinimum":0,"maximum":2147483648},"network_effective_type":{"type":"string","enum":["slow-2g","2g","3g","4g"]},"network_rtt_ms":{"type":"number","minimum":0}},"required":["filename","mime_type","file_size"]},"post_v1_workflows_dry_run_Body":{"type":"object","properties":{"source":{"type":"string"},"attachment":{"type":"object","properties":{"trigger_type":{"type":"string"},"table_id":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["trigger_type","table_id"]},"trigger_payload":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"prev_data":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"changes":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"object","properties":{"prev_value":{"description":"Value of the field before the change"},"next_value":{"description":"Value of the field after the change"}}},"description":"Map of changed fields with their previous and new values. Keys are field keys."}},"required":["source","attachment"]},"patch_v1_workflows_workflow_id_Body":{"type":"object","properties":{"name":{"description":"Updated name of the workflow","type":"string"},"description":{"description":"Updated description of the workflow","type":"string"},"steps":{"description":"Updated workflow steps (v2 AST; replaces all existing steps). Validated by validateV2StepTree after body parse."}}},"post_v1_document_templates_Body":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"description":{"description":"What the template produces.","type":"string"},"type":{"type":"string","enum":["html","pdf-form","excel","word","email"],"description":"Template type: 'html' for HTML templates, 'pdf-form' for fillable PDF forms, 'excel' for Excel templates, 'word' for Word templates, 'email' for email HTML templates"},"template":{"type":"string"},"format":{"default":"A4","type":"string"},"orientation":{"default":"portrait","type":"string","enum":["portrait","landscape"]},"variables":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["name","type"]},"post_v1_document_templates_document_template_id_find_text_Body":{"type":"object","properties":{"query":{"type":"string","minLength":1}},"required":["query"]},"post_v1_document_templates_document_template_id_mark_conditional_region_Body":{"type":"object","properties":{"variable_name":{"type":"string","minLength":1,"pattern":"^[a-z][a-z0-9_]*$"},"region":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","const":"table_rows"},"element_index":{"type":"integer","minimum":0,"maximum":9007199254740991},"start_row":{"type":"integer","minimum":0,"maximum":9007199254740991},"end_row":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["type","element_index","start_row","end_row"]},{"type":"object","properties":{"type":{"type":"string","const":"paragraphs"},"start_index":{"type":"integer","minimum":0,"maximum":9007199254740991},"end_index":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["type","start_index","end_index"]}]},"expected_version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["variable_name","region"]},"post_v1_document_templates_document_template_id_mark_loop_region_Body":{"type":"object","properties":{"variable_name":{"type":"string","minLength":1,"pattern":"^[a-z][a-z0-9_]*$"},"loop_variable":{"type":"string","minLength":1,"pattern":"^[a-z][a-z0-9_]*$"},"region":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","const":"table_rows"},"element_index":{"type":"integer","minimum":0,"maximum":9007199254740991},"start_row":{"type":"integer","minimum":0,"maximum":9007199254740991},"end_row":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["type","element_index","start_row","end_row"]},{"type":"object","properties":{"type":{"type":"string","const":"paragraphs"},"start_index":{"type":"integer","minimum":0,"maximum":9007199254740991},"end_index":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["type","start_index","end_index"]}]},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"expected_version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["variable_name","loop_variable","region"]},"post_v1_document_templates_document_template_id_mark_variable_Body":{"type":"object","properties":{"selected_text":{"type":"string","minLength":1},"variable_name":{"type":"string","minLength":1,"pattern":"^[a-z][a-z0-9_]*$"},"variable_type":{"default":"string","type":"string","enum":["string","array","image"]},"occurrence_index":{"type":"integer","minimum":0,"maximum":9007199254740991},"expected_version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["selected_text","variable_name","occurrence_index"]},"post_v1_document_templates_document_template_id_unmark_conditional_region_Body":{"type":"object","properties":{"variable_name":{"type":"string","minLength":1},"expected_version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["variable_name"]},"post_v1_document_templates_document_template_id_unmark_loop_region_Body":{"type":"object","properties":{"variable_name":{"type":"string","minLength":1},"expected_version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["variable_name"]},"post_v1_document_templates_document_template_id_unmark_variable_Body":{"type":"object","properties":{"variable_name":{"type":"string","minLength":1},"expected_version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["variable_name"]},"patch_v1_document_templates_document_template_id_Body":{"type":"object","properties":{"name":{"type":"string"},"description":{"type":"string"},"template":{"type":"string"},"format":{"type":"string"},"orientation":{"type":"string","enum":["portrait","landscape"]},"variables":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"expected_version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}}},"post_v1_apps_app_id_field_options_Body":{"type":"object","properties":{"alias":{"type":"string","description":"Named query alias whose select columns' full option sets to resolve"},"draft":{"description":"Preview-only: resolve against the in-progress draft manifest. Honored solely for the app's active authoring editor; ignored for everyone else.","type":"boolean"}},"required":["alias"]},"post_v1_content_installations_id_upgrade_Body":{"type":"object","properties":{"version":{"description":"Target version to upgrade to; omitted upgrades to the latest published version.","type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"resolutions":{"description":"ONE namespaced map for both content namespaces. `knowledge.<alias>`: a modified change → apply|keep, a modified removal → archive|keep, a drift → recreate|unbind, or { bind_to: \"<kdc_id>\" } to adopt a same-named doc for a created/recreated alias. `template.<alias>` → revert|keep: a template the target changed whose live content was locally edited. Required for every consent-requiring entry in either namespace.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"anyOf":[{"anyOf":[{"type":"string","const":"recreate"},{"type":"object","properties":{"bind_to":{"type":"string","minLength":1}},"required":["bind_to"]}]},{"anyOf":[{"type":"string","const":"revert"},{"type":"string","const":"keep"}]},{"type":"string","enum":["apply","keep","archive","recreate","unbind"]}]}}}},"post_v1_apps_app_id_package_release_Body":{"type":"object","properties":{"changelog":{"type":"string","minLength":1,"description":"Non-empty release changelog — the version's -m message."},"knowledge":{"type":"array","items":{"type":"object","properties":{"alias":{"type":"string"},"doc_id":{"type":"string"}},"required":["alias","doc_id"]}},"config":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"alias":{"type":"string","pattern":"^[a-z][a-z0-9_]*$","description":"Stable config alias, unique within the contract"},"label":{"type":"string","minLength":1},"description":{"type":"string"},"type":{"type":"string","const":"text"},"default":{"type":"string"}},"required":["alias","label","type","default"]},{"type":"object","properties":{"alias":{"type":"string","pattern":"^[a-z][a-z0-9_]*$","description":"Stable config alias, unique within the contract"},"label":{"type":"string","minLength":1},"description":{"type":"string"},"type":{"type":"string","const":"boolean"},"default":{"type":"boolean"}},"required":["alias","label","type","default"]},{"type":"object","properties":{"alias":{"type":"string","pattern":"^[a-z][a-z0-9_]*$","description":"Stable config alias, unique within the contract"},"label":{"type":"string","minLength":1},"description":{"type":"string"},"type":{"type":"string","const":"color"},"default":{"type":"string","enum":["red","orange","amber","yellow","lime","green","emerald","teal","cyan","sky","blue","indigo","violet","purple","fuchsia","pink","rose","slate","gray","zinc","neutral","stone"]}},"required":["alias","label","type","default"]},{"type":"object","properties":{"alias":{"type":"string","pattern":"^[a-z][a-z0-9_]*$","description":"Stable config alias, unique within the contract"},"label":{"type":"string","minLength":1},"description":{"type":"string"},"type":{"type":"string","const":"number"},"default":{"type":"number"}},"required":["alias","label","type","default"]},{"type":"object","properties":{"alias":{"type":"string","pattern":"^[a-z][a-z0-9_]*$","description":"Stable config alias, unique within the contract"},"label":{"type":"string","minLength":1},"description":{"type":"string"},"type":{"type":"string","const":"select"},"options":{"minItems":1,"type":"array","items":{"type":"object","properties":{"value":{"type":"string"},"label":{"type":"string","minLength":1}},"required":["value","label"]}},"default":{"type":"string"}},"required":["alias","label","type","options","default"]}]}}},"required":["changelog"]},"post_v1_apps_app_id_package_upgrade_Body":{"type":"object","properties":{"version":{"description":"Target version to upgrade to; omitted upgrades to the latest published version.","type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"resolutions":{"description":"ONE map, one grammar, one entry per preview finding, required in full: a drifted binding entry (keyed \"<namespace>.<alias>\") takes \"recreate\" or { bind_to: \"<id>\" }; a modified-core artifact (keyed \"<kind>.<alias>\") takes \"revert\" or \"keep\"; a bundled knowledge doc (keyed \"knowledge.<alias>\") takes apply|keep|archive|recreate|unbind or { bind_to: \"<kdc_id>\" } (adopt a same-named doc); \"roles.<alias>\" = { bind_to: \"<grp_id>\" } re-points a LIVE role.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"anyOf":[{"anyOf":[{"type":"string","const":"recreate"},{"type":"object","properties":{"bind_to":{"type":"string","minLength":1}},"required":["bind_to"]}]},{"anyOf":[{"type":"string","const":"revert"},{"type":"string","const":"keep"}]},{"type":"string","enum":["apply","keep","archive","recreate","unbind"]}]}}}},"post_v1_apps_app_id_public_authenticate_Body":{"type":"object","properties":{"password":{"type":"string"}},"required":["password"]},"post_v1_apps_app_id_authoring_begin_Body":{"type":"object","properties":{"chat_session_id":{"type":"string"}},"required":["chat_session_id"]},"post_v1_apps_app_id_files_complete_Body":{"type":"object","properties":{"file_id":{"type":"string"},"file_storage_key":{"type":"string"},"filename":{"type":"string"}},"required":["file_id","file_storage_key","filename"]},"post_v1_apps_app_id_agent_runs_run_id_continue_Body":{"type":"object","properties":{"tool_call_id":{"type":"string","minLength":1},"output":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"draft":{"description":"Preview-only: resolve the alias against the in-progress draft manifest. Honored solely for the app's active authoring editor; ignored for everyone else.","type":"boolean"}},"required":["tool_call_id","output"]},"post_v1_apps_Body":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"icon":{"anyOf":[{"type":"string"},{"type":"null"}]},"theme":{"anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"null"}]}},"required":["name"]},"post_v1_apps_app_id_authoring_deploy_Body":{"type":"object","properties":{"message":{"anyOf":[{"type":"string"},{"type":"null"}]}}},"post_v1_apps_app_id_agents_alias_runs_Body":{"type":"object","properties":{"session_id":{"type":"string","minLength":1,"description":"App-minted key grouping this run's session thread."},"input":{"description":"Declared input values for the run (validated against the alias's inputs schema).","type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"draft":{"description":"Preview-only: resolve the alias against the in-progress draft manifest. Honored solely for the app's active authoring editor; ignored for everyone else.","type":"boolean"}},"required":["session_id"]},"post_v1_apps_app_id_workflows_alias_execute_Body":{"type":"object","properties":{"inputs":{"description":"Input values forwarded into the workflow's initial context","type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"draft":{"description":"Preview-only: resolve the alias against the in-progress draft manifest. Honored solely for the app's active authoring editor; ignored for everyone else.","type":"boolean"}}},"post_v1_packages_package_id_fleet_upgrade_Body":{"type":"object","properties":{"version":{"description":"Target version; omitted targets the latest published version.","type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}}},"post_v1_apps_app_id_workflows_alias_dts_Body":{"type":"object","properties":{"declaration":{"description":"The package.json#lotics.workflows.<alias> declaration (inputs/outputs). Used to generate the dts/envelope for an alias NOT yet bound to a workflow — the local `app workflow check` before its first deploy. Ignored when the alias is bound.","type":"object","properties":{"inputs":{"description":"Typed input schema for the workflow alias. Keys are input names; values declare type + constraints. The server validates payloads against this schema before invoking the workflow; CLI codegen emits typed `useWorkflow<alias>` signatures for the app side. Omit `inputs` for workflows that accept no inputs or whose shape isn't worth declaring.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"$ref":"#/components/schemas/AppWorkflowInput"}},"outputs":{"description":"Typed output schema for the data the workflow returns via `return({ data })`. Keys are field names; values declare type + (nested object/array) shape. The server validates the returned data against this schema at the app boundary and the workflow won't save unless its `return({ data })` matches; CLI codegen types `result.data`. Omit when the workflow returns no data, or pass it through untyped.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"$ref":"#/components/schemas/AppWorkflowOutput"}}}}}},"post_v1_packages_package_id_installations_Body":{"type":"object","properties":{"version":{"description":"Package version to install; omitted installs the latest published version.","type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"bind_to":{"description":"alias → existing kdc_ id: consent to adopt a same-named workspace doc as package-managed, resolving a knowledge name collision (its content is left as-is) — standalone content corpora and app-bundled corpora alike.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"config":{"description":"App-kind only. Per-knob config overrides applied over the contract defaults at install. Validated against the version's contract — an unknown alias, a type mismatch, or an out-of-set select value is rejected.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"}]}}}},"post_v1_apps_app_id_package_publish_Body":{"type":"object","properties":{"renames":{"type":"array","items":{"type":"object","properties":{"from":{"type":"string"},"to":{"type":"string"}},"required":["from","to"]}},"changelog":{"anyOf":[{"type":"string"},{"type":"null"}]},"knowledge":{"type":"array","items":{"type":"object","properties":{"alias":{"type":"string"},"doc_id":{"type":"string"}},"required":["alias","doc_id"]}},"config":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"alias":{"type":"string","pattern":"^[a-z][a-z0-9_]*$","description":"Stable config alias, unique within the contract"},"label":{"type":"string","minLength":1},"description":{"type":"string"},"type":{"type":"string","const":"text"},"default":{"type":"string"}},"required":["alias","label","type","default"]},{"type":"object","properties":{"alias":{"type":"string","pattern":"^[a-z][a-z0-9_]*$","description":"Stable config alias, unique within the contract"},"label":{"type":"string","minLength":1},"description":{"type":"string"},"type":{"type":"string","const":"boolean"},"default":{"type":"boolean"}},"required":["alias","label","type","default"]},{"type":"object","properties":{"alias":{"type":"string","pattern":"^[a-z][a-z0-9_]*$","description":"Stable config alias, unique within the contract"},"label":{"type":"string","minLength":1},"description":{"type":"string"},"type":{"type":"string","const":"color"},"default":{"type":"string","enum":["red","orange","amber","yellow","lime","green","emerald","teal","cyan","sky","blue","indigo","violet","purple","fuchsia","pink","rose","slate","gray","zinc","neutral","stone"]}},"required":["alias","label","type","default"]},{"type":"object","properties":{"alias":{"type":"string","pattern":"^[a-z][a-z0-9_]*$","description":"Stable config alias, unique within the contract"},"label":{"type":"string","minLength":1},"description":{"type":"string"},"type":{"type":"string","const":"number"},"default":{"type":"number"}},"required":["alias","label","type","default"]},{"type":"object","properties":{"alias":{"type":"string","pattern":"^[a-z][a-z0-9_]*$","description":"Stable config alias, unique within the contract"},"label":{"type":"string","minLength":1},"description":{"type":"string"},"type":{"type":"string","const":"select"},"options":{"minItems":1,"type":"array","items":{"type":"object","properties":{"value":{"type":"string"},"label":{"type":"string","minLength":1}},"required":["value","label"]}},"default":{"type":"string"}},"required":["alias","label","type","options","default"]}]}}}},"post_v1_apps_app_id_query_Body":{"type":"object","properties":{"alias":{"type":"string","description":"Named query alias declared in the app's lotics.queries manifest"},"params":{"description":"Param values filling the query template's declared {{params.x}} holes","type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"limit":{"description":"Max rows to return; clamped to the server cap","type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"offset":{"description":"Row offset for pagination","type":"integer","minimum":0,"maximum":9007199254740991},"keyset":{"description":"Opt into cursor (seek) pagination for load-more: pass the previous page's `next_cursor` as `cursor`. The server keysets a single sortable key (or the id-only default) and falls back to offset transparently for multi-key sorts. Numbered-page callers use `offset`/`count` instead.","type":"boolean"},"cursor":{"description":"Opaque pagination cursor from a prior page's `next_cursor` (keyset mode).","type":"string"},"sort":{"description":"Runtime sort applied over the query's OUTPUT columns. field_keys must be columns the named query projects.","type":"array","items":{"type":"object","properties":{"field_key":{"type":"string","description":"Field key to sort by"},"order":{"anyOf":[{"type":"string","enum":["asc","desc"]},{"type":"null"}],"description":"Sort order: 'asc' for ascending, 'desc' for descending"},"blank_position":{"description":"Blank position: 'top' for top, 'bottom' for bottom","type":"string","enum":["top","bottom"]}},"required":["field_key","order"]}},"filter":{"description":"Runtime filter applied over the query's OUTPUT columns. field_keys must be columns the named query projects (an un-projected field is rejected) — this bounds dynamic filtering to what the query already exposes.","$ref":"#/components/schemas/TableRecordFilters"},"count":{"description":"When true, return only `total` (a COUNT over the filtered set, ignoring sort/limit/offset) instead of rows — for paginated tables rendering 'Page 1 of N'.","type":"boolean"},"draft":{"description":"Preview-only: resolve against the in-progress draft manifest. Honored solely for the app's active authoring editor; ignored for everyone else.","type":"boolean"}},"required":["alias"]},"post_v1_apps_reorder_Body":{"type":"object","properties":{"app_ids":{"type":"array","items":{"type":"string"},"description":"Ordered array of app IDs defining the calling member's apps-list order"}},"required":["app_ids"]},"post_v1_apps_app_id_authoring_preview_failure_Body":{"type":"object","properties":{"elapsed_ms":{"type":"number"},"attempt":{"type":"number"}},"required":["elapsed_ms","attempt"]},"post_v1_apps_app_id_files_upload_url_Body":{"type":"object","properties":{"filename":{"type":"string"},"mime_type":{"type":"string"},"file_size":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["filename","mime_type","file_size"]},"post_v1_packages_package_id_retire_Body":{"type":"object","properties":{"undo":{"default":false,"description":"Clear the retirement instead of setting it (un-retire).","type":"boolean"}}},"put_v1_apps_app_id_public_password_Body":{"type":"object","properties":{"password":{"anyOf":[{"type":"string","minLength":6,"maxLength":256},{"type":"null"}]}},"required":["password"]},"put_v1_apps_app_id_subdomain_Body":{"type":"object","properties":{"public_subdomain":{"type":"string"}},"required":["public_subdomain"]},"post_v1_apps_app_id_uninstall_Body":{"type":"object","properties":{"archive_tables":{"default":false,"description":"Also archive the package's scaffolded entity tables. Refused unless this installation created them (provenance) and no other artifact references them.","type":"boolean"}}},"patch_v1_apps_app_id_Body":{"type":"object","properties":{"name":{"type":"string"},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"icon":{"anyOf":[{"type":"string"},{"type":"null"}]},"theme":{"anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"null"}]}}},"patch_v1_apps_app_id_package_config_Body":{"type":"object","properties":{"config":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"}]},"description":"Partial map of config overrides — only the provided keys change."}},"required":["config"]},"post_v1_apps_app_id_embed_grant_verify_Body":{"type":"object","properties":{"grant":{"type":"string"}},"required":["grant"]},"post_v1_packages_package_id_versions_version_yank_Body":{"type":"object","properties":{"yanked":{"type":"boolean","description":"true = yank (refuse new installs/upgrades), false = restore"}},"required":["yanked"]},"post_v1_apps_app_id_records_record_id_comments_Body":{"type":"object","properties":{"content":{"type":"string","maxLength":10000},"file_ids":{"type":"array","items":{"type":"string"}}},"required":["content"]},"patch_v1_apps_app_id_records_record_id_comments_comment_id_Body":{"type":"object","properties":{"content":{"type":"string","maxLength":10000},"file_ids":{"type":"array","items":{"type":"string"}},"files":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"file_storage_key":{"type":"string"},"filename":{"type":"string"},"mime_type":{"type":"string"}},"required":["id","file_storage_key","filename","mime_type"]}}},"required":["content"]},"post_v1_automations_Body":{"type":"object","properties":{"name":{"type":"string","description":"Automation name."},"description":{"type":"string","description":"What this automation does."},"type":{"type":"string","enum":["recurring_schedule","receive_outlook_email","receive_gmail_email","receive_webhook"],"description":"Trigger type."},"enabled":{"description":"Whether the automation is active. Defaults to true.","type":"boolean"},"steps":{"description":"Workflow steps (v2 AST). Validated by validateV2StepTree after body parse."},"trigger_config":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{},"description":"Trigger-specific config. Required keys depend on `type` — the trigger adapter enforces presence and shape (e.g. `cron_expression` for recurring_schedule, `connected_account_id` for email triggers)."}},"required":["name","description","type","trigger_config"]},"patch_v1_automations_trigger_id_Body":{"type":"object","properties":{"enabled":{"description":"Enable or disable the automation","type":"boolean"},"config":{"description":"Trigger config (type-specific)","type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"steps":{"description":"Workflow steps (v2 AST; replaces all existing steps). Validated by validateV2StepTree after body parse."}}},"post_v1_skills_Body":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100,"description":"Name of the skill"},"description":{"type":"string","description":"Brief description of what the skill does"},"content":{"type":"string","description":"Detailed instructions/content of the skill"},"disable_agent_invocation":{"description":"When true, agent cannot auto-invoke this skill. Useful for prompt templates with $ARGUMENTS.","type":"boolean"},"user_invocable":{"description":"When false, skill is hidden from the composer picker. Useful for background knowledge.","type":"boolean"},"source":{"description":"Which agent surface this skill belongs to. Defaults to 'chat'.","type":"string","enum":["chat","browser_extension"]}},"required":["name","description","content"]},"patch_v1_skills_skill_id_Body":{"type":"object","properties":{"name":{"description":"Updated name","type":"string","minLength":1,"maxLength":100},"description":{"description":"Updated description","type":"string"},"content":{"description":"Updated content","type":"string"},"disable_agent_invocation":{"description":"Updated agent invocation flag","type":"boolean"},"user_invocable":{"description":"Updated user invocable flag","type":"boolean"},"active_by_default":{"description":"When true, skill is active for all members by default. Admin only.","type":"boolean"},"source":{"description":"Which agent surface this skill belongs to.","type":"string","enum":["chat","browser_extension"]},"expected_version":{"description":"Expected current version for optimistic concurrency control","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}}},"post_v1_instructions_Body":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200,"description":"Name of the instruction"},"description":{"type":"string","description":"Brief description of when this instruction applies"},"content":{"type":"string","description":"The instruction content the agent must follow"},"scope":{"type":"string","enum":["workspace"],"description":"Instruction scope"},"table_id":{"description":"Table to scope this instruction to","type":"string"}},"required":["name","description","content","scope"]},"post_v1_instructions_instruction_id_restore_Body":{"type":"object","properties":{"version":{"type":"integer","minimum":1,"maximum":9007199254740991,"description":"Version number to restore"}},"required":["version"]},"patch_v1_instructions_instruction_id_Body":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200},"description":{"type":"string"},"content":{"type":"string"}}},"post_v1_member_instructions_Body":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200,"description":"Name of the instruction"},"description":{"type":"string","description":"Brief description of when this instruction applies"},"content":{"type":"string","description":"The instruction content the agent must follow"}},"required":["name","description","content"]},"patch_v1_member_instructions_instruction_id_Body":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200},"description":{"type":"string"},"content":{"type":"string"}}},"post_v1_knowledge_docs_Body":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200,"description":"Name of the knowledge doc"},"description":{"type":"string","description":"Brief description of what this document covers"},"content":{"type":"string","maxLength":10000000,"description":"The knowledge doc content"},"tags":{"description":"Labels to classify the doc, e.g. [\"Hồ sơ NOXH\", \"Khoản 13\"]. Omit for untagged.","maxItems":20,"type":"array","items":{"type":"string","maxLength":60}},"files":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"object","properties":{"id":{"type":"string"}},"required":["id"],"additionalProperties":{}}]}}},"required":["name","description","content"]},"patch_v1_knowledge_docs_knowledge_doc_id_Body":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200},"description":{"type":"string"},"content":{"type":"string","maxLength":10000000},"tags":{"description":"Replace the doc's labels. The array is the new set, not an addition.","maxItems":20,"type":"array","items":{"type":"string","maxLength":60}},"files":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"object","properties":{"id":{"type":"string"}},"required":["id"],"additionalProperties":{}}]}},"expected_content_sha":{"anyOf":[{"type":"string"},{"type":"null"}]}}},"post_v1_memories_Body":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":50,"pattern":"^[a-z][a-z0-9_]*$"},"description":{"type":"string","minLength":1,"maxLength":500},"content":{"type":"string"}},"required":["key","description","content"]},"patch_v1_memories_memory_id_Body":{"type":"object","properties":{"description":{"type":"string","minLength":1,"maxLength":500},"content":{"type":"string"}}},"post_v1_api_keys_Body":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120,"description":"Display name for the API key"}},"required":["name"]},"patch_v1_api_keys_api_key_id_Body":{"type":"object","properties":{"name":{"description":"Updated display name","type":"string","minLength":1,"maxLength":120},"enabled":{"description":"Enable or disable this API key","type":"boolean"}}},"post_v1_me_claim_email_Body":{"type":"object","properties":{"email":{"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"password":{"type":"string","minLength":1}},"required":["email","password"]},"post_v1_me_confirm_email_claim_Body":{"type":"object","properties":{"token":{"type":"string","minLength":1}},"required":["token"]},"post_v1_me_confirm_erasure_Body":{"type":"object","properties":{"token":{"type":"string","minLength":1}},"required":["token"]},"post_v1_approval_requests_locked_record_change_Body":{"type":"object","properties":{"table_id":{"type":"string"},"record_id":{"type":"string"},"changes":{"minItems":1,"type":"array","items":{"type":"object","properties":{"field_key":{"type":"string"},"new_value":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"array","items":{"type":"string"}},{"type":"null"}]}},"required":["field_key","new_value"]}},"reason":{"type":"string","minLength":1,"maxLength":10000}},"required":["table_id","record_id","changes","reason"]},"post_v1_approval_requests_approval_request_id_respond_Body":{"type":"object","properties":{"decision":{"type":"string","enum":["approved","rejected"]},"comment":{"type":"string","maxLength":10000}},"required":["decision"]},"put_v1_agent_context_activations_resource_type_resource_id_Body":{"type":"object","properties":{"enabled":{"type":"boolean"}},"required":["enabled"]},"post_v1_voice_sessions_session_id_complete_Body":{"type":"object","properties":{"chunk_count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"duration_seconds":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"video_chunk_count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"video_width":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"video_height":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"video_frame_rate":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"display_surface":{"type":"string","enum":["browser","window","monitor"]}},"required":["duration_seconds"]},"post_v1_voice_sessions_session_id_urls_Body":{"type":"object","properties":{"next_index":{"type":"number"},"kind":{"type":"string","enum":["audio","video"]}},"required":["next_index"]},"post_v1_voice_sessions_init_Body":{"type":"object","properties":{"mime_type":{"type":"string","enum":["audio/webm","audio/mp4"]},"audio_source":{"type":"string","enum":["microphone","system","system_video"]},"capture_audio":{"type":"string","enum":["mic","system","both"]},"capture_screen":{"type":"boolean"},"language":{"anyOf":[{"type":"string"},{"type":"null"}]},"chat_session_id":{"anyOf":[{"type":"string"},{"type":"null"}]},"video":{"type":"object","properties":{"mime_type":{"type":"string","enum":["video/webm","video/mp4"]},"quality":{"type":"string","enum":["original","1080p","720p","480p"]}},"required":["mime_type","quality"]}},"required":["mime_type"]},"put_v1_billing_party_Body":{"type":"object","properties":{"party":{"type":"object","properties":{"legal_name":{"type":"string","minLength":1,"maxLength":300},"tax_id":{"type":"string","minLength":1,"maxLength":50},"address":{"type":"string","minLength":1,"maxLength":500},"email":{"anyOf":[{"type":"string","maxLength":320,"format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},{"type":"null"}]}},"required":["legal_name","tax_id","address","email"]}},"required":["party"]},"post_v1_browser_agent_session_id_messages_Body":{"type":"object","properties":{"messages":{},"parent_session_id":{"anyOf":[{"type":"string"},{"type":"null"}]},"model_tier":{"type":"string","enum":["haiku","sonnet","opus"]},"model_id":{"type":"string","minLength":1},"effort_level":{"type":"string","enum":["low","medium","high","xhigh","max"]}},"required":["messages"]},"Error":{"type":"object","description":"Error body returned by every non-2xx response. Branch on `code`, which is stable; `message` is human prose and may be reworded.","properties":{"code":{"type":"string","description":"Stable machine-readable error class, e.g. `not_found`, `forbidden`, `rate_limited`."},"message":{"type":"string","description":"Human-readable explanation of what failed."},"hint":{"type":"string","description":"Actionable next step, when the failure has one. Absent otherwise."}},"required":["code","message"]}}}}