{"openapi":"3.1.0","info":{"title":"Interloom REST API","version":"preview"},"paths":{"/api/v1/public/spaces":{"get":{"tags":["Spaces"],"summary":"List Spaces Endpoint","operationId":"listSpaces","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Maximum number of spaces to return.","default":30,"title":"Limit"},"description":"Maximum number of spaces to return."},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque pagination cursor from next_cursor in a previous response.","title":"Cursor"},"description":"Opaque pagination cursor from next_cursor in a previous response."},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListSpacesResponse"}}}},"401":{"description":"Missing or invalid authentication token.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"unauthorized","message":"Missing or invalid authentication token."}}}}},"429":{"description":"Too many requests. Try again later.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"rate_limit_exceeded","message":"Too many requests. Try again later."}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"400":{"description":"Cursor is invalid.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"invalid_cursor","message":"Cursor is invalid."}}}}}}},"post":{"tags":["Spaces"],"summary":"Create Space Endpoint","operationId":"createSpace","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSpaceRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Space"}}}},"401":{"description":"Missing or invalid authentication token.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"unauthorized","message":"Missing or invalid authentication token."}}}}},"429":{"description":"Too many requests. Try again later.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"rate_limit_exceeded","message":"Too many requests. Try again later."}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"404":{"description":"Space not found.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"space_not_found","message":"Space not found."}}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"examples":{"empty_space_name":{"summary":"Name cannot be empty string.","value":{"error":{"code":"empty_space_name","message":"Name cannot be empty string."}}},"invalid_space_request":{"summary":"The space request is invalid.","value":{"error":{"code":"invalid_space_request","message":"The space request is invalid."}}}}}}}}}},"/api/v1/public/spaces/{space_id}":{"get":{"tags":["Spaces"],"summary":"Space Endpoint","operationId":"getSpace","parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","title":"Space Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Space"}}}},"401":{"description":"Missing or invalid authentication token.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"unauthorized","message":"Missing or invalid authentication token."}}}}},"429":{"description":"Too many requests. Try again later.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"rate_limit_exceeded","message":"Too many requests. Try again later."}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"404":{"description":"Space not found.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"space_not_found","message":"Space not found."}}}}}}},"patch":{"tags":["Spaces"],"summary":"Update Space Endpoint","operationId":"updateSpace","parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","title":"Space Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateSpaceRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Space"}}}},"401":{"description":"Missing or invalid authentication token.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"unauthorized","message":"Missing or invalid authentication token."}}}}},"429":{"description":"Too many requests. Try again later.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"rate_limit_exceeded","message":"Too many requests. Try again later."}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"404":{"description":"Space not found.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"space_not_found","message":"Space not found."}}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"examples":{"empty_space_name":{"summary":"Name cannot be empty string.","value":{"error":{"code":"empty_space_name","message":"Name cannot be empty string."}}},"invalid_space_request":{"summary":"The space request is invalid.","value":{"error":{"code":"invalid_space_request","message":"The space request is invalid."}}}}}}}}},"delete":{"tags":["Spaces"],"summary":"Delete Space Endpoint","operationId":"deleteSpace","parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","title":"Space Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"responses":{"204":{"description":"Successful Response"},"401":{"description":"Missing or invalid authentication token.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"unauthorized","message":"Missing or invalid authentication token."}}}}},"429":{"description":"Too many requests. Try again later.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"rate_limit_exceeded","message":"Too many requests. Try again later."}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"404":{"description":"Space not found.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"space_not_found","message":"Space not found."}}}}}}}},"/api/v1/public/spaces/{space_id}/relationships":{"get":{"tags":["Spaces"],"summary":"List Space Relationships Endpoint","operationId":"listSpaceRelationships","parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","title":"Space Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":30,"title":"Limit"}},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRelationshipsResponse"}}}},"401":{"description":"Missing or invalid authentication token.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"unauthorized","message":"Missing or invalid authentication token."}}}}},"429":{"description":"Too many requests. Try again later.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"rate_limit_exceeded","message":"Too many requests. Try again later."}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"400":{"description":"Cursor is invalid.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"invalid_cursor","message":"Cursor is invalid."}}}}},"404":{"description":"Space not found.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"space_not_found","message":"Space not found."}}}}}}}},"/api/v1/public/spaces/{space_id}/members":{"get":{"tags":["Spaces"],"summary":"List Space Members Endpoint","operationId":"listSpaceMembers","parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","title":"Space Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Maximum number of space members to return.","default":30,"title":"Limit"},"description":"Maximum number of space members to return."},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque pagination cursor from next_cursor in a previous response.","title":"Cursor"},"description":"Opaque pagination cursor from next_cursor in a previous response."},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListSpaceMembersResponse"}}}},"401":{"description":"Missing or invalid authentication token.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"unauthorized","message":"Missing or invalid authentication token."}}}}},"429":{"description":"Too many requests. Try again later.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"rate_limit_exceeded","message":"Too many requests. Try again later."}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"400":{"description":"Cursor is invalid.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"invalid_cursor","message":"Cursor is invalid."}}}}},"404":{"description":"Space not found.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"space_not_found","message":"Space not found."}}}}}}}},"/api/v1/public/spaces/{space_id}/members/{user_id}":{"put":{"tags":["Spaces"],"summary":"Upsert Space Member Endpoint","operationId":"upsertSpaceMember","parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","title":"Space Id"}},{"name":"user_id","in":"path","required":true,"schema":{"type":"string","title":"User Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpsertSpaceMemberRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpaceMember"}}}},"401":{"description":"Missing or invalid authentication token.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"unauthorized","message":"Missing or invalid authentication token."}}}}},"429":{"description":"Too many requests. Try again later.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"rate_limit_exceeded","message":"Too many requests. Try again later."}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"400":{"description":"The space membership request is invalid.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"invalid_space_membership_request","message":"The space membership request is invalid."}}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"examples":{"space_not_found":{"summary":"Space not found.","value":{"error":{"code":"space_not_found","message":"Space not found."}}},"user_not_found":{"summary":"User not found.","value":{"error":{"code":"user_not_found","message":"User not found."}}}}}}}}},"delete":{"tags":["Spaces"],"summary":"Remove Space Member Endpoint","operationId":"removeSpaceMember","parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","title":"Space Id"}},{"name":"user_id","in":"path","required":true,"schema":{"type":"string","title":"User Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"responses":{"204":{"description":"Successful Response"},"401":{"description":"Missing or invalid authentication token.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"unauthorized","message":"Missing or invalid authentication token."}}}}},"429":{"description":"Too many requests. Try again later.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"rate_limit_exceeded","message":"Too many requests. Try again later."}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"400":{"description":"The space membership request is invalid.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"invalid_space_membership_request","message":"The space membership request is invalid."}}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"examples":{"space_not_found":{"summary":"Space not found.","value":{"error":{"code":"space_not_found","message":"Space not found."}}},"user_not_found":{"summary":"User not found.","value":{"error":{"code":"user_not_found","message":"User not found."}}}}}}}}}},"/api/v1/public/spaces/{space_id}/trigger":{"get":{"tags":["Spaces"],"summary":"Get Space Trigger Endpoint","operationId":"getSpaceTrigger","parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","title":"Space Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/AssigneeSpaceTrigger"},{"$ref":"#/components/schemas/ReferenceTaskSpaceTrigger"},{"$ref":"#/components/schemas/ApplyProcedureSpaceTrigger"},{"$ref":"#/components/schemas/DisabledSpaceTrigger"}],"discriminator":{"propertyName":"trigger_type","mapping":{"assignee":"#/components/schemas/AssigneeSpaceTrigger","reference_task":"#/components/schemas/ReferenceTaskSpaceTrigger","apply_procedure":"#/components/schemas/ApplyProcedureSpaceTrigger"}},"example":{"trigger_type":"apply_procedure","procedure_id":"0196d3b9-0c9d-7cf2-9c36-2a8f0bb0f3ac"},"title":"Response Getspacetrigger"}}}},"401":{"description":"Missing or invalid authentication token.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"unauthorized","message":"Missing or invalid authentication token."}}}}},"429":{"description":"Too many requests. Try again later.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"rate_limit_exceeded","message":"Too many requests. Try again later."}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"404":{"description":"Space not found.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"space_not_found","message":"Space not found."}}}}}}},"patch":{"tags":["Spaces"],"summary":"Update Space Trigger Endpoint","operationId":"updateSpaceTrigger","parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","title":"Space Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/AssigneeSpaceTrigger"},{"$ref":"#/components/schemas/ReferenceTaskSpaceTrigger"},{"$ref":"#/components/schemas/ApplyProcedureSpaceTrigger"},{"$ref":"#/components/schemas/DisabledSpaceTrigger"}],"discriminator":{"propertyName":"trigger_type","mapping":{"assignee":"#/components/schemas/AssigneeSpaceTrigger","reference_task":"#/components/schemas/ReferenceTaskSpaceTrigger","apply_procedure":"#/components/schemas/ApplyProcedureSpaceTrigger"}},"example":{"trigger_type":"apply_procedure","procedure_id":"0196d3b9-0c9d-7cf2-9c36-2a8f0bb0f3ac"},"title":"Request"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/AssigneeSpaceTrigger"},{"$ref":"#/components/schemas/ReferenceTaskSpaceTrigger"},{"$ref":"#/components/schemas/ApplyProcedureSpaceTrigger"},{"$ref":"#/components/schemas/DisabledSpaceTrigger"}],"discriminator":{"propertyName":"trigger_type","mapping":{"assignee":"#/components/schemas/AssigneeSpaceTrigger","reference_task":"#/components/schemas/ReferenceTaskSpaceTrigger","apply_procedure":"#/components/schemas/ApplyProcedureSpaceTrigger"}},"example":{"trigger_type":"apply_procedure","procedure_id":"0196d3b9-0c9d-7cf2-9c36-2a8f0bb0f3ac"},"title":"Response Updatespacetrigger"}}}},"401":{"description":"Missing or invalid authentication token.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"unauthorized","message":"Missing or invalid authentication token."}}}}},"429":{"description":"Too many requests. Try again later.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"rate_limit_exceeded","message":"Too many requests. Try again later."}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"400":{"description":"The space request is invalid.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"invalid_space_request","message":"The space request is invalid."}}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"examples":{"space_not_found":{"summary":"Space not found.","value":{"error":{"code":"space_not_found","message":"Space not found."}}},"assignee_not_found":{"summary":"Assignee not found.","value":{"error":{"code":"assignee_not_found","message":"Assignee not found."}}},"case_not_found":{"summary":"Case not found.","value":{"error":{"code":"case_not_found","message":"Case not found."}}},"procedure_not_found":{"summary":"Procedure not found.","value":{"error":{"code":"procedure_not_found","message":"Procedure not found."}}}}}}}}}},"/api/v1/public/cases":{"get":{"tags":["Cases"],"summary":"List Cases Endpoint","operationId":"listCases","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Maximum number of cases to return.","default":30,"title":"Limit"},"description":"Maximum number of cases to return."},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque pagination cursor from next_cursor in a previous response. Use it with the same filters and sort options as the request that returned it.","title":"Cursor"},"description":"Opaque pagination cursor from next_cursor in a previous response. Use it with the same filters and sort options as the request that returned it."},{"name":"space_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Return root cases directly under this Space.","title":"Space Id"},"description":"Return root cases directly under this Space."},{"name":"parent_case_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Return child cases directly under this parent Case.","title":"Parent Case Id"},"description":"Return child cases directly under this parent Case."},{"name":"assignee_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Return cases assigned to this User.","title":"Assignee Id"},"description":"Return cases assigned to this User."},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"description":"Return cases with any of these statuses. Repeat status for multiple values. Supported values are open, started, completed, cancelled, and blocked; unsupported values match no cases.","title":"Status"},"description":"Return cases with any of these statuses. Repeat status for multiple values. Supported values are open, started, completed, cancelled, and blocked; unsupported values match no cases."},{"name":"sort","in":"query","required":false,"schema":{"enum":["position","created_at","updated_at"],"type":"string","description":"Field to sort by. Use position, created_at, or updated_at.","default":"created_at","title":"Sort"},"description":"Field to sort by. Use position, created_at, or updated_at."},{"name":"direction","in":"query","required":false,"schema":{"enum":["asc","desc"],"type":"string","description":"Sort direction. Use asc or desc.","default":"desc","title":"Direction"},"description":"Sort direction. Use asc or desc."},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListCasesResponse"}}}},"401":{"description":"Missing or invalid authentication token.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"unauthorized","message":"Missing or invalid authentication token."}}}}},"429":{"description":"Too many requests. Try again later.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"rate_limit_exceeded","message":"Too many requests. Try again later."}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"examples":{"invalid_case_filters":{"summary":"The case filters are invalid.","value":{"error":{"code":"invalid_case_filters","message":"The case filters are invalid."}}},"invalid_cursor":{"summary":"Cursor is invalid.","value":{"error":{"code":"invalid_cursor","message":"Cursor is invalid."}}}}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"examples":{"parent_case_not_found":{"summary":"Parent case not found.","value":{"error":{"code":"parent_case_not_found","message":"Parent case not found."}}},"space_not_found":{"summary":"Space not found.","value":{"error":{"code":"space_not_found","message":"Space not found."}}},"user_not_found":{"summary":"User not found.","value":{"error":{"code":"user_not_found","message":"User not found."}}}}}}}}},"post":{"tags":["Cases"],"summary":"Create Case Endpoint","operationId":"createCase","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCaseRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Case"}}}},"401":{"description":"Missing or invalid authentication token.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"unauthorized","message":"Missing or invalid authentication token."}}}}},"429":{"description":"Too many requests. Try again later.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"rate_limit_exceeded","message":"Too many requests. Try again later."}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"examples":{"attached_files_not_found":{"summary":"One or more attached files were not found.","value":{"error":{"code":"attached_files_not_found","message":"One or more attached files were not found."}}},"case_not_found":{"summary":"Case not found.","value":{"error":{"code":"case_not_found","message":"Case not found."}}},"parent_case_not_found":{"summary":"Parent case not found.","value":{"error":{"code":"parent_case_not_found","message":"Parent case not found."}}},"space_not_found":{"summary":"Space not found.","value":{"error":{"code":"space_not_found","message":"Space not found."}}},"user_not_found":{"summary":"User not found.","value":{"error":{"code":"user_not_found","message":"User not found."}}}}}}},"409":{"description":"A case with this external_id already exists in the space.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"case_external_id_conflict","message":"A case with this external_id already exists in the space."}}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"examples":{"invalid_case_parent":{"summary":"Exactly one of space_id or parent_case_id must be provided.","value":{"error":{"code":"invalid_case_parent","message":"Exactly one of space_id or parent_case_id must be provided."}}},"empty_case_tag_name":{"summary":"Tag name cannot be empty.","value":{"error":{"code":"empty_case_tag_name","message":"Tag name cannot be empty."}}},"empty_case_title":{"summary":"Title cannot be empty string.","value":{"error":{"code":"empty_case_title","message":"Title cannot be empty string."}}},"invalid_case_request":{"summary":"The case request is invalid.","value":{"error":{"code":"invalid_case_request","message":"The case request is invalid."}}},"file_thread_mismatch":{"summary":"File belongs to another thread.","value":{"error":{"code":"file_thread_mismatch","message":"File belongs to another thread."}}}}}}}}}},"/api/v1/public/cases/{case_id}":{"get":{"tags":["Cases"],"summary":"Case Endpoint","operationId":"getCase","parameters":[{"name":"case_id","in":"path","required":true,"schema":{"type":"string","title":"Case Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Case"}}}},"401":{"description":"Missing or invalid authentication token.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"unauthorized","message":"Missing or invalid authentication token."}}}}},"429":{"description":"Too many requests. Try again later.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"rate_limit_exceeded","message":"Too many requests. Try again later."}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"404":{"description":"Case not found.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"case_not_found","message":"Case not found."}}}}}}},"patch":{"tags":["Cases"],"summary":"Update Case Endpoint","operationId":"updateCase","parameters":[{"name":"case_id","in":"path","required":true,"schema":{"type":"string","title":"Case Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateCaseRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Case"}}}},"401":{"description":"Missing or invalid authentication token.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"unauthorized","message":"Missing or invalid authentication token."}}}}},"429":{"description":"Too many requests. Try again later.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"rate_limit_exceeded","message":"Too many requests. Try again later."}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"examples":{"case_not_found":{"summary":"Case not found.","value":{"error":{"code":"case_not_found","message":"Case not found."}}},"parent_case_not_found":{"summary":"Parent case not found.","value":{"error":{"code":"parent_case_not_found","message":"Parent case not found."}}},"space_not_found":{"summary":"Space not found.","value":{"error":{"code":"space_not_found","message":"Space not found."}}},"user_not_found":{"summary":"User not found.","value":{"error":{"code":"user_not_found","message":"User not found."}}}}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"examples":{"invalid_case_parent":{"summary":"Exactly one of space_id or parent_case_id must be provided.","value":{"error":{"code":"invalid_case_parent","message":"Exactly one of space_id or parent_case_id must be provided."}}},"case_cannot_parent_itself":{"summary":"A case cannot be its own parent.","value":{"error":{"code":"case_cannot_parent_itself","message":"A case cannot be its own parent."}}},"case_parent_cycle":{"summary":"Cannot move a case under one of its descendants.","value":{"error":{"code":"case_parent_cycle","message":"Cannot move a case under one of its descendants."}}},"empty_case_tag_name":{"summary":"Tag name cannot be empty.","value":{"error":{"code":"empty_case_tag_name","message":"Tag name cannot be empty."}}},"empty_case_title":{"summary":"Title cannot be empty string.","value":{"error":{"code":"empty_case_title","message":"Title cannot be empty string."}}},"invalid_case_request":{"summary":"The case request is invalid.","value":{"error":{"code":"invalid_case_request","message":"The case request is invalid."}}}}}}}}},"delete":{"tags":["Cases"],"summary":"Delete Case Endpoint","operationId":"deleteCase","parameters":[{"name":"case_id","in":"path","required":true,"schema":{"type":"string","title":"Case Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"responses":{"204":{"description":"Successful Response"},"401":{"description":"Missing or invalid authentication token.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"unauthorized","message":"Missing or invalid authentication token."}}}}},"429":{"description":"Too many requests. Try again later.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"rate_limit_exceeded","message":"Too many requests. Try again later."}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"404":{"description":"Case not found.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"case_not_found","message":"Case not found."}}}}}}}},"/api/v1/public/cases/{case_id}/relationships":{"get":{"tags":["Cases"],"summary":"List Case Relationships Endpoint","operationId":"listCaseRelationships","parameters":[{"name":"case_id","in":"path","required":true,"schema":{"type":"string","title":"Case Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":30,"title":"Limit"}},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRelationshipsResponse"}}}},"401":{"description":"Missing or invalid authentication token.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"unauthorized","message":"Missing or invalid authentication token."}}}}},"429":{"description":"Too many requests. Try again later.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"rate_limit_exceeded","message":"Too many requests. Try again later."}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"400":{"description":"Cursor is invalid.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"invalid_cursor","message":"Cursor is invalid."}}}}},"404":{"description":"Case not found.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"case_not_found","message":"Case not found."}}}}}}}},"/api/v1/public/cases/{case_id}/similar-cases":{"get":{"tags":["Cases"],"summary":"Similar Cases Endpoint","description":"Find historical cases using the same retrieval behavior as get_similar_tasks.\n\nWhen task-b32f-memory-rank-case-matching is enabled, combine semantic and\nshared-object matches against the containing root case. Otherwise use semantic\nmatching against the requested case. Includes cases without subtasks. Scores\nare not confidence estimates or comparable across requests. No pagination.","operationId":"getSimilarCases","parameters":[{"name":"case_id","in":"path","required":true,"schema":{"type":"string","title":"Case Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":30,"minimum":1,"description":"Maximum number of ranked cases to return. Does not change scores.","default":10,"title":"Limit"},"description":"Maximum number of ranked cases to return. Does not change scores."},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SimilarCasesResponse"}}}},"401":{"description":"Missing or invalid authentication token.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"unauthorized","message":"Missing or invalid authentication token."}}}}},"429":{"description":"Too many requests. Try again later.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"rate_limit_exceeded","message":"Too many requests. Try again later."}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"404":{"description":"Case not found.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"case_not_found","message":"Case not found."}}}}},"500":{"description":"Unable to retrieve case recommendations.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"internal_error","message":"Unable to retrieve case recommendations."}}}}}}}},"/api/v1/public/cases/{case_id}/relevant-objects":{"get":{"tags":["Cases"],"summary":"Relevant Objects Endpoint","description":"Find objects to inspect for the containing root case, without their contents.\n\nRequires task-b32f-memory-rank-case-matching to be enabled. Returns the same\nranked objects and stored source-case links as get_relevant_objects. Scores\nare not confidence estimates or comparable across requests. No pagination.","operationId":"getRelevantObjects","parameters":[{"name":"case_id","in":"path","required":true,"schema":{"type":"string","title":"Case Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Maximum number of ranked objects to return. Does not change scores.","default":20,"title":"Limit"},"description":"Maximum number of ranked objects to return. Does not change scores."},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RelevantObjectsResponse"}}}},"401":{"description":"Missing or invalid authentication token.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"unauthorized","message":"Missing or invalid authentication token."}}}}},"429":{"description":"Too many requests. Try again later.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"rate_limit_exceeded","message":"Too many requests. Try again later."}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"examples":{"case_not_found":{"summary":"Case not found.","value":{"error":{"code":"case_not_found","message":"Case not found."}}},"feature_not_enabled":{"summary":"Relevant object retrieval is not enabled.","value":{"error":{"code":"feature_not_enabled","message":"Relevant object retrieval is not enabled."}}}}}}},"500":{"description":"Unable to retrieve case recommendations.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"internal_error","message":"Unable to retrieve case recommendations."}}}}}}}},"/api/v1/public/case-ingestions":{"post":{"tags":["Case Ingestion"],"summary":"Create Case Ingestion Batch Endpoint","operationId":"createCaseIngestion","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/CreateCaseIngestionRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CaseIngestion"}}}},"401":{"description":"Missing or invalid authentication token.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"unauthorized","message":"Missing or invalid authentication token."}}}}},"429":{"description":"Too many requests. Try again later.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"rate_limit_exceeded","message":"Too many requests. Try again later."}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"400":{"description":"Manifest validation failed.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"invalid_case_ingestion_manifest","message":"Manifest validation failed."}}}}},"404":{"description":"Space not found.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"space_not_found","message":"Space not found."}}}}},"503":{"description":"Failed to start case ingestion workflow.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"case_ingestion_workflow_unavailable","message":"Failed to start case ingestion workflow."}}}}}}}},"/api/v1/public/case-ingestions/{case_ingestion_id}":{"get":{"tags":["Case Ingestion"],"summary":"Case Ingestion Batch Endpoint","operationId":"getCaseIngestion","parameters":[{"name":"case_ingestion_id","in":"path","required":true,"schema":{"type":"string","title":"Case Ingestion Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CaseIngestion"}}}},"401":{"description":"Missing or invalid authentication token.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"unauthorized","message":"Missing or invalid authentication token."}}}}},"429":{"description":"Too many requests. Try again later.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"rate_limit_exceeded","message":"Too many requests. Try again later."}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"404":{"description":"Case ingestion not found.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"case_ingestion_not_found","message":"Case ingestion not found."}}}}}}}},"/api/v1/public/case-ingestions/{case_ingestion_id}/errors":{"get":{"tags":["Case Ingestion"],"summary":"List Case Ingestion Batch Errors Endpoint","operationId":"listCaseIngestionErrors","parameters":[{"name":"case_ingestion_id","in":"path","required":true,"schema":{"type":"string","title":"Case Ingestion Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Maximum number of failed entries to return.","default":30,"title":"Limit"},"description":"Maximum number of failed entries to return."},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque pagination cursor from next_cursor in a previous response.","title":"Cursor"},"description":"Opaque pagination cursor from next_cursor in a previous response."},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListCaseIngestionErrorsResponse"}}}},"401":{"description":"Missing or invalid authentication token.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"unauthorized","message":"Missing or invalid authentication token."}}}}},"429":{"description":"Too many requests. Try again later.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"rate_limit_exceeded","message":"Too many requests. Try again later."}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"404":{"description":"Case ingestion not found.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"case_ingestion_not_found","message":"Case ingestion not found."}}}}},"400":{"description":"Cursor is invalid.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"invalid_cursor","message":"Cursor is invalid."}}}}}}}},"/api/v1/public/models":{"get":{"tags":["Models"],"summary":"List Models Endpoint","operationId":"listModels","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListModelsResponse"}}}},"401":{"description":"Missing or invalid authentication token.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"unauthorized","message":"Missing or invalid authentication token."}}}}},"429":{"description":"Too many requests. Try again later.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"rate_limit_exceeded","message":"Too many requests. Try again later."}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}}}}},"/api/v1/public/agents":{"get":{"tags":["Agents"],"summary":"List Agents Endpoint","operationId":"listAgents","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Maximum number of agents to return.","default":30,"title":"Limit"},"description":"Maximum number of agents to return."},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque pagination cursor from next_cursor in a previous response.","title":"Cursor"},"description":"Opaque pagination cursor from next_cursor in a previous response."},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListAgentsResponse"}}}},"401":{"description":"Missing or invalid authentication token.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"unauthorized","message":"Missing or invalid authentication token."}}}}},"429":{"description":"Too many requests. Try again later.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"rate_limit_exceeded","message":"Too many requests. Try again later."}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"400":{"description":"Cursor is invalid.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"invalid_cursor","message":"Cursor is invalid."}}}}}}},"post":{"tags":["Agents"],"summary":"Create Agent Endpoint","operationId":"createAgent","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAgentRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Agent"}}}},"401":{"description":"Missing or invalid authentication token.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"unauthorized","message":"Missing or invalid authentication token."}}}}},"429":{"description":"Too many requests. Try again later.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"rate_limit_exceeded","message":"Too many requests. Try again later."}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"404":{"description":"Agent not found.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"agent_not_found","message":"Agent not found."}}}}},"400":{"description":"The agent request is invalid.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"invalid_agent_request","message":"The agent request is invalid."}}}}}}}},"/api/v1/public/agents/{agent_id}":{"get":{"tags":["Agents"],"summary":"Agent Endpoint","operationId":"getAgent","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Agent"}}}},"401":{"description":"Missing or invalid authentication token.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"unauthorized","message":"Missing or invalid authentication token."}}}}},"429":{"description":"Too many requests. Try again later.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"rate_limit_exceeded","message":"Too many requests. Try again later."}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"404":{"description":"Agent not found.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"agent_not_found","message":"Agent not found."}}}}}}},"patch":{"tags":["Agents"],"summary":"Update Agent Endpoint","operationId":"updateAgent","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateAgentRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Agent"}}}},"401":{"description":"Missing or invalid authentication token.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"unauthorized","message":"Missing or invalid authentication token."}}}}},"429":{"description":"Too many requests. Try again later.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"rate_limit_exceeded","message":"Too many requests. Try again later."}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"404":{"description":"Agent not found.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"agent_not_found","message":"Agent not found."}}}}},"400":{"description":"The agent request is invalid.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"invalid_agent_request","message":"The agent request is invalid."}}}}}}}},"/api/v1/public/agents/{agent_id}/relationships":{"get":{"tags":["Agents"],"summary":"List Agent Relationships Endpoint","operationId":"listAgentRelationships","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":30,"title":"Limit"}},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRelationshipsResponse"}}}},"401":{"description":"Missing or invalid authentication token.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"unauthorized","message":"Missing or invalid authentication token."}}}}},"429":{"description":"Too many requests. Try again later.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"rate_limit_exceeded","message":"Too many requests. Try again later."}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"400":{"description":"Cursor is invalid.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"invalid_cursor","message":"Cursor is invalid."}}}}},"404":{"description":"Agent not found.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"agent_not_found","message":"Agent not found."}}}}}}}},"/api/v1/public/agents/{agent_id}/tools":{"get":{"tags":["Agents"],"summary":"List Agent Tools Endpoint","operationId":"listAgentTools","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AgentToolLink"},"title":"Response Listagenttools"}}}},"401":{"description":"Missing or invalid authentication token.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"unauthorized","message":"Missing or invalid authentication token."}}}}},"429":{"description":"Too many requests. Try again later.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"rate_limit_exceeded","message":"Too many requests. Try again later."}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"404":{"description":"Agent not found.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"agent_not_found","message":"Agent not found."}}}}}}},"put":{"tags":["Agents"],"summary":"Replace Agent Tools Endpoint","operationId":"replaceAgentTools","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReplaceAgentToolsRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AgentToolLink"},"title":"Response Replaceagenttools"}}}},"401":{"description":"Missing or invalid authentication token.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"unauthorized","message":"Missing or invalid authentication token."}}}}},"429":{"description":"Too many requests. Try again later.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"rate_limit_exceeded","message":"Too many requests. Try again later."}}}}},"422":{"description":"Invalid tool IDs or request validation error.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/InvalidToolIdsResponse"},{"$ref":"#/components/schemas/ValidationErrorResponse"}],"title":"Response 422 Replaceagenttools"}}}},"404":{"description":"Agent not found.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"agent_not_found","message":"Agent not found."}}}}},"403":{"description":"You do not have permission to update this agent's tools.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"agent_tools_forbidden","message":"You do not have permission to update this agent's tools."}}}}}}}},"/api/v1/public/tools":{"post":{"tags":["Tools"],"summary":"Create Tool Endpoint","operationId":"createTool","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateToolRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Tool"}}}},"401":{"description":"Missing or invalid authentication token.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"unauthorized","message":"Missing or invalid authentication token."}}}}},"429":{"description":"Too many requests. Try again later.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"rate_limit_exceeded","message":"Too many requests. Try again later."}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"400":{"description":"The tool request is invalid.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"invalid_tool_request","message":"The tool request is invalid."}}}}},"404":{"description":"Secret not found.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"secret_not_found","message":"Secret not found."}}}}},"409":{"description":"Tool already exists.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"tool_already_exists","message":"Tool already exists."}}}}}}},"get":{"tags":["Tools"],"summary":"List Tools Endpoint","operationId":"listTools","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Maximum number of tools to return.","default":30,"title":"Limit"},"description":"Maximum number of tools to return."},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque pagination cursor from next_cursor in a previous response.","title":"Cursor"},"description":"Opaque pagination cursor from next_cursor in a previous response."},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListToolsResponse"}}}},"401":{"description":"Missing or invalid authentication token.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"unauthorized","message":"Missing or invalid authentication token."}}}}},"429":{"description":"Too many requests. Try again later.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"rate_limit_exceeded","message":"Too many requests. Try again later."}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"400":{"description":"Cursor is invalid.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"invalid_cursor","message":"Cursor is invalid."}}}}}}}},"/api/v1/public/tools/{tool_id}":{"get":{"tags":["Tools"],"summary":"Get Tool Endpoint","operationId":"getTool","parameters":[{"name":"tool_id","in":"path","required":true,"schema":{"type":"string","title":"Tool Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Tool"}}}},"401":{"description":"Missing or invalid authentication token.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"unauthorized","message":"Missing or invalid authentication token."}}}}},"429":{"description":"Too many requests. Try again later.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"rate_limit_exceeded","message":"Too many requests. Try again later."}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"404":{"description":"Tool not found.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"tool_not_found","message":"Tool not found."}}}}}}},"patch":{"tags":["Tools"],"summary":"Update Tool Endpoint","operationId":"updateTool","parameters":[{"name":"tool_id","in":"path","required":true,"schema":{"type":"string","title":"Tool Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateToolRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Tool"}}}},"401":{"description":"Missing or invalid authentication token.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"unauthorized","message":"Missing or invalid authentication token."}}}}},"429":{"description":"Too many requests. Try again later.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"rate_limit_exceeded","message":"Too many requests. Try again later."}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"examples":{"tool_not_found":{"summary":"Tool not found.","value":{"error":{"code":"tool_not_found","message":"Tool not found."}}},"secret_not_found":{"summary":"Secret not found.","value":{"error":{"code":"secret_not_found","message":"Secret not found."}}},"user_not_found":{"summary":"User not found.","value":{"error":{"code":"user_not_found","message":"User not found."}}}}}}},"400":{"description":"The tool request is invalid.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"invalid_tool_request","message":"The tool request is invalid."}}}}},"409":{"description":"Tool already exists.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"tool_already_exists","message":"Tool already exists."}}}}}}}},"/api/v1/public/outbound-networks":{"get":{"tags":["Outbound Networks"],"summary":"List Outbound Networks Endpoint","description":"List the outbound networks that custom tool sandboxes can use.","operationId":"listOutboundNetworks","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListOutboundNetworksResponse"}}}},"401":{"description":"Missing or invalid authentication token.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"unauthorized","message":"Missing or invalid authentication token."}}}}},"429":{"description":"Too many requests. Try again later.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"rate_limit_exceeded","message":"Too many requests. Try again later."}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}}}}},"/api/v1/public/files":{"get":{"tags":["Files"],"summary":"List Files Endpoint","operationId":"listFiles","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Maximum number of files to return.","default":30,"title":"Limit"},"description":"Maximum number of files to return."},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque pagination cursor from next_cursor in a previous response. Use it with the same filters and sort options as the request that returned it.","title":"Cursor"},"description":"Opaque pagination cursor from next_cursor in a previous response. Use it with the same filters and sort options as the request that returned it."},{"name":"space_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Return files directly under this Space.","title":"Space Id"},"description":"Return files directly under this Space."},{"name":"case_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Return files directly attached to this Case.","title":"Case Id"},"description":"Return files directly attached to this Case."},{"name":"sort","in":"query","required":false,"schema":{"enum":["created_at","updated_at"],"type":"string","description":"Field to sort by. Use created_at or updated_at.","default":"created_at","title":"Sort"},"description":"Field to sort by. Use created_at or updated_at."},{"name":"direction","in":"query","required":false,"schema":{"enum":["asc","desc"],"type":"string","description":"Sort direction. Use asc or desc.","default":"desc","title":"Direction"},"description":"Sort direction. Use asc or desc."},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListFilesResponse"}}}},"401":{"description":"Missing or invalid authentication token.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"unauthorized","message":"Missing or invalid authentication token."}}}}},"429":{"description":"Too many requests. Try again later.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"rate_limit_exceeded","message":"Too many requests. Try again later."}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"examples":{"invalid_cursor":{"summary":"Cursor is invalid.","value":{"error":{"code":"invalid_cursor","message":"Cursor is invalid."}}},"invalid_file_parent":{"summary":"Provide at most one of space_id or case_id.","value":{"error":{"code":"invalid_file_parent","message":"Provide at most one of space_id or case_id."}}}}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"examples":{"space_not_found":{"summary":"Space not found.","value":{"error":{"code":"space_not_found","message":"Space not found."}}},"case_not_found":{"summary":"Case not found.","value":{"error":{"code":"case_not_found","message":"Case not found."}}}}}}}}},"post":{"tags":["Files"],"summary":"Upload File Endpoint","operationId":"createFile","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/CreateFileRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/File"}}}},"401":{"description":"Missing or invalid authentication token.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"unauthorized","message":"Missing or invalid authentication token."}}}}},"429":{"description":"Too many requests. Try again later.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"rate_limit_exceeded","message":"Too many requests. Try again later."}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"examples":{"file_too_large":{"summary":"File size exceeds maximum limit.","value":{"error":{"code":"file_too_large","message":"File size exceeds maximum limit."}}},"invalid_file_parent":{"summary":"Provide at most one of space_id or case_id.","value":{"error":{"code":"invalid_file_parent","message":"Provide at most one of space_id or case_id."}}},"invalid_file_request":{"summary":"The file request is invalid.","value":{"error":{"code":"invalid_file_request","message":"The file request is invalid."}}}}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"examples":{"space_not_found":{"summary":"Space not found.","value":{"error":{"code":"space_not_found","message":"Space not found."}}},"case_not_found":{"summary":"Case not found.","value":{"error":{"code":"case_not_found","message":"Case not found."}}}}}}}}}},"/api/v1/public/files/{file_id}":{"get":{"tags":["Files"],"summary":"File Endpoint","operationId":"getFile","parameters":[{"name":"file_id","in":"path","required":true,"schema":{"type":"string","title":"File Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/File"}}}},"401":{"description":"Missing or invalid authentication token.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"unauthorized","message":"Missing or invalid authentication token."}}}}},"429":{"description":"Too many requests. Try again later.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"rate_limit_exceeded","message":"Too many requests. Try again later."}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"404":{"description":"File not found.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"file_not_found","message":"File not found."}}}}}}},"patch":{"tags":["Files"],"summary":"Update File Endpoint","operationId":"updateFile","parameters":[{"name":"file_id","in":"path","required":true,"schema":{"type":"string","title":"File Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateFileRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/File"}}}},"401":{"description":"Missing or invalid authentication token.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"unauthorized","message":"Missing or invalid authentication token."}}}}},"429":{"description":"Too many requests. Try again later.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"rate_limit_exceeded","message":"Too many requests. Try again later."}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"examples":{"file_not_found":{"summary":"File not found.","value":{"error":{"code":"file_not_found","message":"File not found."}}},"space_not_found":{"summary":"Space not found.","value":{"error":{"code":"space_not_found","message":"Space not found."}}},"case_not_found":{"summary":"Case not found.","value":{"error":{"code":"case_not_found","message":"Case not found."}}}}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"examples":{"invalid_file_parent":{"summary":"Provide at most one of space_id or case_id.","value":{"error":{"code":"invalid_file_parent","message":"Provide at most one of space_id or case_id."}}},"invalid_file_request":{"summary":"The file request is invalid.","value":{"error":{"code":"invalid_file_request","message":"The file request is invalid."}}},"invalid_tag_name":{"summary":"Tag name cannot be empty.","value":{"error":{"code":"invalid_tag_name","message":"Tag name cannot be empty."}}}}}}}}},"delete":{"tags":["Files"],"summary":"Delete File Endpoint","operationId":"deleteFile","parameters":[{"name":"file_id","in":"path","required":true,"schema":{"type":"string","title":"File Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"responses":{"204":{"description":"Successful Response"},"401":{"description":"Missing or invalid authentication token.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"unauthorized","message":"Missing or invalid authentication token."}}}}},"429":{"description":"Too many requests. Try again later.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"rate_limit_exceeded","message":"Too many requests. Try again later."}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"404":{"description":"File not found.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"file_not_found","message":"File not found."}}}}}}}},"/api/v1/public/files/{file_id}/relationships":{"get":{"tags":["Files"],"summary":"List File Relationships Endpoint","operationId":"listFileRelationships","parameters":[{"name":"file_id","in":"path","required":true,"schema":{"type":"string","title":"File Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":30,"title":"Limit"}},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRelationshipsResponse"}}}},"401":{"description":"Missing or invalid authentication token.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"unauthorized","message":"Missing or invalid authentication token."}}}}},"429":{"description":"Too many requests. Try again later.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"rate_limit_exceeded","message":"Too many requests. Try again later."}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"400":{"description":"Cursor is invalid.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"invalid_cursor","message":"Cursor is invalid."}}}}},"404":{"description":"File not found.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"file_not_found","message":"File not found."}}}}}}}},"/api/v1/public/procedures":{"get":{"tags":["Procedures"],"summary":"List Procedures Endpoint","operationId":"listProcedures","parameters":[{"name":"space_id","in":"query","required":true,"schema":{"type":"string","format":"uuid","description":"Return procedures owned by this Space.","title":"Space Id"},"description":"Return procedures owned by this Space."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Maximum number of procedures to return.","default":30,"title":"Limit"},"description":"Maximum number of procedures to return."},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque pagination cursor from next_cursor in a previous response. Use it with the same space_id as the request that returned it.","title":"Cursor"},"description":"Opaque pagination cursor from next_cursor in a previous response. Use it with the same space_id as the request that returned it."},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListProceduresResponse"}}}},"401":{"description":"Missing or invalid authentication token.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"unauthorized","message":"Missing or invalid authentication token."}}}}},"429":{"description":"Too many requests. Try again later.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"rate_limit_exceeded","message":"Too many requests. Try again later."}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"400":{"description":"Cursor is invalid.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"invalid_cursor","message":"Cursor is invalid."}}}}},"404":{"description":"Space not found.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"space_not_found","message":"Space not found."}}}}}}},"post":{"tags":["Procedures"],"summary":"Create Procedure Endpoint","operationId":"createProcedure","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateProcedureRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Procedure"}}}},"401":{"description":"Missing or invalid authentication token.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"unauthorized","message":"Missing or invalid authentication token."}}}}},"429":{"description":"Too many requests. Try again later.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"rate_limit_exceeded","message":"Too many requests. Try again later."}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"404":{"description":"Space not found.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"space_not_found","message":"Space not found."}}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"examples":{"empty_procedure_title":{"summary":"Title cannot be empty string.","value":{"error":{"code":"empty_procedure_title","message":"Title cannot be empty string."}}},"invalid_procedure_request":{"summary":"The procedure request is invalid.","value":{"error":{"code":"invalid_procedure_request","message":"The procedure request is invalid."}}}}}}}}}},"/api/v1/public/procedures/{procedure_id}":{"get":{"tags":["Procedures"],"summary":"Procedure Endpoint","operationId":"getProcedure","parameters":[{"name":"procedure_id","in":"path","required":true,"schema":{"type":"string","title":"Procedure Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Procedure"}}}},"401":{"description":"Missing or invalid authentication token.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"unauthorized","message":"Missing or invalid authentication token."}}}}},"429":{"description":"Too many requests. Try again later.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"rate_limit_exceeded","message":"Too many requests. Try again later."}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"404":{"description":"Procedure not found.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"procedure_not_found","message":"Procedure not found."}}}}}}},"patch":{"tags":["Procedures"],"summary":"Update Procedure Endpoint","operationId":"updateProcedure","parameters":[{"name":"procedure_id","in":"path","required":true,"schema":{"type":"string","title":"Procedure Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateProcedureRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Procedure"}}}},"401":{"description":"Missing or invalid authentication token.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"unauthorized","message":"Missing or invalid authentication token."}}}}},"429":{"description":"Too many requests. Try again later.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"rate_limit_exceeded","message":"Too many requests. Try again later."}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"404":{"description":"Procedure not found.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"procedure_not_found","message":"Procedure not found."}}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"examples":{"empty_procedure_title":{"summary":"Title cannot be empty string.","value":{"error":{"code":"empty_procedure_title","message":"Title cannot be empty string."}}},"invalid_procedure_request":{"summary":"The procedure request is invalid.","value":{"error":{"code":"invalid_procedure_request","message":"The procedure request is invalid."}}}}}}}}},"delete":{"tags":["Procedures"],"summary":"Delete Procedure Endpoint","operationId":"deleteProcedure","parameters":[{"name":"procedure_id","in":"path","required":true,"schema":{"type":"string","title":"Procedure Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"responses":{"204":{"description":"Successful Response"},"401":{"description":"Missing or invalid authentication token.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"unauthorized","message":"Missing or invalid authentication token."}}}}},"429":{"description":"Too many requests. Try again later.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"rate_limit_exceeded","message":"Too many requests. Try again later."}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"404":{"description":"Procedure not found.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"procedure_not_found","message":"Procedure not found."}}}}}}}},"/api/v1/public/procedures/{procedure_id}/relationships":{"get":{"tags":["Procedures"],"summary":"List Procedure Relationships Endpoint","operationId":"listProcedureRelationships","parameters":[{"name":"procedure_id","in":"path","required":true,"schema":{"type":"string","title":"Procedure Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":30,"title":"Limit"}},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRelationshipsResponse"}}}},"401":{"description":"Missing or invalid authentication token.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"unauthorized","message":"Missing or invalid authentication token."}}}}},"429":{"description":"Too many requests. Try again later.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"rate_limit_exceeded","message":"Too many requests. Try again later."}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"400":{"description":"Cursor is invalid.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"invalid_cursor","message":"Cursor is invalid."}}}}},"404":{"description":"Procedure not found.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"procedure_not_found","message":"Procedure not found."}}}}}}}},"/api/v1/public/secrets":{"get":{"tags":["Secrets"],"summary":"List Secrets Endpoint","operationId":"listSecrets","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Maximum number of secrets to return.","default":30,"title":"Limit"},"description":"Maximum number of secrets to return."},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque pagination cursor from next_cursor in a previous response.","title":"Cursor"},"description":"Opaque pagination cursor from next_cursor in a previous response."},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListSecretsResponse"}}}},"401":{"description":"Missing or invalid authentication token.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"unauthorized","message":"Missing or invalid authentication token."}}}}},"429":{"description":"Too many requests. Try again later.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"rate_limit_exceeded","message":"Too many requests. Try again later."}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"400":{"description":"Cursor is invalid.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"invalid_cursor","message":"Cursor is invalid."}}}}}}},"post":{"tags":["Secrets"],"summary":"Create Secret Endpoint","operationId":"createSecret","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSecretRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Secret"}}}},"401":{"description":"Missing or invalid authentication token.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"unauthorized","message":"Missing or invalid authentication token."}}}}},"429":{"description":"Too many requests. Try again later.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"rate_limit_exceeded","message":"Too many requests. Try again later."}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"examples":{"invalid_secret_name":{"summary":"Secret names can only contain alphanumeric characters ([a-z], [A-Z], [0-9]) or underscores (_). Spaces are not allowed. Must start with a letter ([a-z], [A-Z]) or underscores (_).","value":{"error":{"code":"invalid_secret_name","message":"Secret names can only contain alphanumeric characters ([a-z], [A-Z], [0-9]) or underscores (_). Spaces are not allowed. Must start with a letter ([a-z], [A-Z]) or underscores (_)."}}},"empty_secret_value":{"summary":"Secret value cannot be empty string.","value":{"error":{"code":"empty_secret_value","message":"Secret value cannot be empty string."}}}}}}},"409":{"description":"Secret already exists.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"secret_already_exists","message":"Secret already exists."}}}}}}}},"/api/v1/public/secrets/{secret_id}":{"delete":{"tags":["Secrets"],"summary":"Delete Secret Endpoint","operationId":"deleteSecret","parameters":[{"name":"secret_id","in":"path","required":true,"schema":{"type":"string","title":"Secret Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"responses":{"204":{"description":"Successful Response"},"401":{"description":"Missing or invalid authentication token.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"unauthorized","message":"Missing or invalid authentication token."}}}}},"429":{"description":"Too many requests. Try again later.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"rate_limit_exceeded","message":"Too many requests. Try again later."}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"404":{"description":"Secret not found.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"secret_not_found","message":"Secret not found."}}}}}}}},"/api/v1/public/notes":{"get":{"tags":["Notes"],"summary":"List Notes Endpoint","operationId":"listNotes","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Maximum number of notes to return.","default":30,"title":"Limit"},"description":"Maximum number of notes to return."},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque pagination cursor from next_cursor in a previous response. Use it with the same filters as the request that returned it.","title":"Cursor"},"description":"Opaque pagination cursor from next_cursor in a previous response. Use it with the same filters as the request that returned it."},{"name":"space_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Return notes directly under this Space.","title":"Space Id"},"description":"Return notes directly under this Space."},{"name":"case_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Return notes directly under this Case.","title":"Case Id"},"description":"Return notes directly under this Case."},{"name":"thread_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Return notes directly under this Thread.","title":"Thread Id"},"description":"Return notes directly under this Thread."},{"name":"sort","in":"query","required":false,"schema":{"enum":["created_at","updated_at"],"type":"string","description":"Field to sort by. Use created_at or updated_at.","default":"created_at","title":"Sort"},"description":"Field to sort by. Use created_at or updated_at."},{"name":"direction","in":"query","required":false,"schema":{"enum":["asc","desc"],"type":"string","description":"Sort direction. Use asc or desc.","default":"desc","title":"Direction"},"description":"Sort direction. Use asc or desc."},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListNotesResponse"}}}},"401":{"description":"Missing or invalid authentication token.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"unauthorized","message":"Missing or invalid authentication token."}}}}},"429":{"description":"Too many requests. Try again later.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"rate_limit_exceeded","message":"Too many requests. Try again later."}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"examples":{"invalid_cursor":{"summary":"Cursor is invalid.","value":{"error":{"code":"invalid_cursor","message":"Cursor is invalid."}}},"invalid_note_filters":{"summary":"The note filters are invalid.","value":{"error":{"code":"invalid_note_filters","message":"The note filters are invalid."}}}}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"examples":{"space_not_found":{"summary":"Space not found.","value":{"error":{"code":"space_not_found","message":"Space not found."}}},"case_not_found":{"summary":"Case not found.","value":{"error":{"code":"case_not_found","message":"Case not found."}}}}}}}}},"post":{"tags":["Notes"],"summary":"Create Note Endpoint","operationId":"createNote","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateNoteRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Note"}}}},"401":{"description":"Missing or invalid authentication token.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"unauthorized","message":"Missing or invalid authentication token."}}}}},"429":{"description":"Too many requests. Try again later.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"rate_limit_exceeded","message":"Too many requests. Try again later."}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"examples":{"case_not_found":{"summary":"Case not found.","value":{"error":{"code":"case_not_found","message":"Case not found."}}},"space_not_found":{"summary":"Space not found.","value":{"error":{"code":"space_not_found","message":"Space not found."}}}}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"examples":{"invalid_note_parent":{"summary":"Exactly one of space_id or case_id must be provided.","value":{"error":{"code":"invalid_note_parent","message":"Exactly one of space_id or case_id must be provided."}}},"invalid_tag_name":{"summary":"Tag name cannot be empty.","value":{"error":{"code":"invalid_tag_name","message":"Tag name cannot be empty."}}},"empty_note_title":{"summary":"Title cannot be empty string.","value":{"error":{"code":"empty_note_title","message":"Title cannot be empty string."}}},"invalid_note_request":{"summary":"The note request is invalid.","value":{"error":{"code":"invalid_note_request","message":"The note request is invalid."}}}}}}}}}},"/api/v1/public/notes/{note_id}":{"get":{"tags":["Notes"],"summary":"Note Endpoint","operationId":"getNote","parameters":[{"name":"note_id","in":"path","required":true,"schema":{"type":"string","title":"Note Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Note"}}}},"401":{"description":"Missing or invalid authentication token.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"unauthorized","message":"Missing or invalid authentication token."}}}}},"429":{"description":"Too many requests. Try again later.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"rate_limit_exceeded","message":"Too many requests. Try again later."}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"404":{"description":"Note not found.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"note_not_found","message":"Note not found."}}}}}}},"patch":{"tags":["Notes"],"summary":"Update Note Endpoint","operationId":"updateNote","parameters":[{"name":"note_id","in":"path","required":true,"schema":{"type":"string","title":"Note Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateNoteRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Note"}}}},"401":{"description":"Missing or invalid authentication token.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"unauthorized","message":"Missing or invalid authentication token."}}}}},"429":{"description":"Too many requests. Try again later.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"rate_limit_exceeded","message":"Too many requests. Try again later."}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"examples":{"note_not_found":{"summary":"Note not found.","value":{"error":{"code":"note_not_found","message":"Note not found."}}},"case_not_found":{"summary":"Case not found.","value":{"error":{"code":"case_not_found","message":"Case not found."}}},"space_not_found":{"summary":"Space not found.","value":{"error":{"code":"space_not_found","message":"Space not found."}}}}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"examples":{"invalid_note_parent":{"summary":"Exactly one of space_id or case_id must be provided.","value":{"error":{"code":"invalid_note_parent","message":"Exactly one of space_id or case_id must be provided."}}},"invalid_tag_name":{"summary":"Tag name cannot be empty.","value":{"error":{"code":"invalid_tag_name","message":"Tag name cannot be empty."}}},"empty_note_title":{"summary":"Title cannot be empty string.","value":{"error":{"code":"empty_note_title","message":"Title cannot be empty string."}}},"invalid_note_request":{"summary":"The note request is invalid.","value":{"error":{"code":"invalid_note_request","message":"The note request is invalid."}}}}}}}}},"delete":{"tags":["Notes"],"summary":"Delete Note Endpoint","operationId":"deleteNote","parameters":[{"name":"note_id","in":"path","required":true,"schema":{"type":"string","title":"Note Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"responses":{"204":{"description":"Successful Response"},"401":{"description":"Missing or invalid authentication token.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"unauthorized","message":"Missing or invalid authentication token."}}}}},"429":{"description":"Too many requests. Try again later.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"rate_limit_exceeded","message":"Too many requests. Try again later."}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"404":{"description":"Note not found.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"note_not_found","message":"Note not found."}}}}}}}},"/api/v1/public/notes/{note_id}/relationships":{"get":{"tags":["Notes"],"summary":"List Note Relationships Endpoint","operationId":"listNoteRelationships","parameters":[{"name":"note_id","in":"path","required":true,"schema":{"type":"string","title":"Note Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":30,"title":"Limit"}},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRelationshipsResponse"}}}},"401":{"description":"Missing or invalid authentication token.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"unauthorized","message":"Missing or invalid authentication token."}}}}},"429":{"description":"Too many requests. Try again later.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"rate_limit_exceeded","message":"Too many requests. Try again later."}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"400":{"description":"Cursor is invalid.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"invalid_cursor","message":"Cursor is invalid."}}}}},"404":{"description":"Note not found.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"note_not_found","message":"Note not found."}}}}}}}},"/api/v1/public/users":{"get":{"tags":["Users"],"summary":"List Users Endpoint","operationId":"listUsers","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Maximum number of users to return.","default":30,"title":"Limit"},"description":"Maximum number of users to return."},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque pagination cursor from next_cursor in a previous response.","title":"Cursor"},"description":"Opaque pagination cursor from next_cursor in a previous response."},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListUsersResponse"}}}},"401":{"description":"Missing or invalid authentication token.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"unauthorized","message":"Missing or invalid authentication token."}}}}},"429":{"description":"Too many requests. Try again later.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"rate_limit_exceeded","message":"Too many requests. Try again later."}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"400":{"description":"Cursor is invalid.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"invalid_cursor","message":"Cursor is invalid."}}}}}}}},"/api/v1/public/users/me":{"get":{"tags":["Users"],"summary":"Current User Endpoint","operationId":"getCurrentUser","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CurrentUser"}}}},"401":{"description":"Missing or invalid authentication token.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"unauthorized","message":"Missing or invalid authentication token."}}}}},"429":{"description":"Too many requests. Try again later.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"rate_limit_exceeded","message":"Too many requests. Try again later."}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}}}}},"/api/v1/public/users/{user_id}":{"get":{"tags":["Users"],"summary":"User Endpoint","operationId":"getUser","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","title":"User Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/User"}}}},"401":{"description":"Missing or invalid authentication token.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"unauthorized","message":"Missing or invalid authentication token."}}}}},"429":{"description":"Too many requests. Try again later.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"rate_limit_exceeded","message":"Too many requests. Try again later."}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"404":{"description":"User not found.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"user_not_found","message":"User not found."}}}}}}}},"/api/v1/public/users/{user_id}/relationships":{"get":{"tags":["Users"],"summary":"List User Relationships Endpoint","operationId":"listUserRelationships","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","title":"User Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":30,"title":"Limit"}},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRelationshipsResponse"}}}},"401":{"description":"Missing or invalid authentication token.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"unauthorized","message":"Missing or invalid authentication token."}}}}},"429":{"description":"Too many requests. Try again later.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"rate_limit_exceeded","message":"Too many requests. Try again later."}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"400":{"description":"Cursor is invalid.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"invalid_cursor","message":"Cursor is invalid."}}}}},"404":{"description":"User not found.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"user_not_found","message":"User not found."}}}}}}}},"/api/v1/public/threads/{thread_id}":{"get":{"tags":["Threads"],"summary":"Thread Endpoint","operationId":"getThread","parameters":[{"name":"thread_id","in":"path","required":true,"schema":{"type":"string","title":"Thread Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Thread"}}}},"401":{"description":"Missing or invalid authentication token.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"unauthorized","message":"Missing or invalid authentication token."}}}}},"429":{"description":"Too many requests. Try again later.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"rate_limit_exceeded","message":"Too many requests. Try again later."}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"404":{"description":"Thread not found.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"thread_not_found","message":"Thread not found."}}}}}}}},"/api/v1/public/threads/{thread_id}/messages":{"post":{"tags":["Threads"],"summary":"Create Thread Message Endpoint","operationId":"createThreadMessage","parameters":[{"name":"thread_id","in":"path","required":true,"schema":{"type":"string","title":"Thread Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateMessageRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ThreadEvent"}}}},"401":{"description":"Missing or invalid authentication token.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"unauthorized","message":"Missing or invalid authentication token."}}}}},"429":{"description":"Too many requests. Try again later.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"rate_limit_exceeded","message":"Too many requests. Try again later."}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"examples":{"thread_not_found":{"summary":"Thread not found.","value":{"error":{"code":"thread_not_found","message":"Thread not found."}}},"attached_files_not_found":{"summary":"One or more attached files were not found.","value":{"error":{"code":"attached_files_not_found","message":"One or more attached files were not found."}}}}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"examples":{"file_thread_mismatch":{"summary":"File belongs to another thread.","value":{"error":{"code":"file_thread_mismatch","message":"File belongs to another thread."}}},"invalid_message_request":{"summary":"The message request is invalid.","value":{"error":{"code":"invalid_message_request","message":"The message request is invalid."}}}}}}}}}},"/api/v1/public/threads/{thread_id}/events":{"get":{"tags":["Threads"],"summary":"List Thread Events Endpoint","operationId":"listThreadEvents","parameters":[{"name":"thread_id","in":"path","required":true,"schema":{"type":"string","title":"Thread Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Maximum number of thread events to return.","default":30,"title":"Limit"},"description":"Maximum number of thread events to return."},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque pagination cursor from next_cursor in a previous response.","title":"Cursor"},"description":"Opaque pagination cursor from next_cursor in a previous response."},{"name":"direction","in":"query","required":false,"schema":{"enum":["asc","desc"],"type":"string","description":"Sort direction by event creation time. Use asc or desc.","default":"asc","title":"Direction"},"description":"Sort direction by event creation time. Use asc or desc."},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListThreadEventsResponse"}}}},"401":{"description":"Missing or invalid authentication token.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"unauthorized","message":"Missing or invalid authentication token."}}}}},"429":{"description":"Too many requests. Try again later.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"rate_limit_exceeded","message":"Too many requests. Try again later."}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"404":{"description":"Thread not found.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"thread_not_found","message":"Thread not found."}}}}},"400":{"description":"Cursor is invalid.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"invalid_cursor","message":"Cursor is invalid."}}}}}}}},"/api/v1/public/invocations/{invocation_id}":{"get":{"tags":["Invocations"],"summary":"Get Invocation Endpoint","description":"Inspect an agent execution discovered through thread events. An invocation is not an individual LLM turn. Internal trace IDs and provider state are excluded.","operationId":"getInvocation","parameters":[{"name":"invocation_id","in":"path","required":true,"schema":{"type":"string","title":"Invocation Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Invocation"}}}},"401":{"description":"Missing or invalid authentication token.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"unauthorized","message":"Missing or invalid authentication token."}}}}},"429":{"description":"Too many requests. Try again later.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"rate_limit_exceeded","message":"Too many requests. Try again later."}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"404":{"description":"Invocation not found.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"invocation_not_found","message":"Invocation not found."}}}}}}}},"/api/v1/public/invocations/{invocation_id}/steps":{"get":{"tags":["Invocations"],"summary":"List Invocation Steps Endpoint","description":"List recorded tool-call, thinking, and reasoning-summary steps, ordered by creation time and ID. These are not individual LLM turns. Raw tool inputs and outputs are available to callers with invocation read access and may contain sensitive data. Thinking/reasoning content is withheld. Final responses remain available as thread messages. Per-step token counts are allocated shares of one LLM response, with cache counts included in input tokens. Metrics arrive asynchronously, and excluded final or unsaved steps mean visible sums may not equal invocation totals. Costs and internal metrics metadata are not exposed.","operationId":"listInvocationSteps","parameters":[{"name":"invocation_id","in":"path","required":true,"schema":{"type":"string","title":"Invocation Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":30,"title":"Limit"}},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque next_cursor.","title":"Cursor"},"description":"Opaque next_cursor."},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedResponse_Annotated_Union_ToolCallStep__PrivateContentStep___FieldInfo_annotation_NoneType__required_True__discriminator__type____"}}}},"401":{"description":"Missing or invalid authentication token.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"unauthorized","message":"Missing or invalid authentication token."}}}}},"429":{"description":"Too many requests. Try again later.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"rate_limit_exceeded","message":"Too many requests. Try again later."}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"404":{"description":"Invocation not found.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"invocation_not_found","message":"Invocation not found."}}}}},"400":{"description":"Cursor is invalid.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"invalid_cursor","message":"Cursor is invalid."}}}}}}}},"/api/v1/public/cases/{case_id}/usage":{"get":{"tags":["Usage"],"summary":"Get Case Usage","description":"All-time aggregate usage; no date filter is currently available. Metrics are eventually consistent. With no recorded metrics, counts are zero and token totals and averages are null. Existing aggregation treats unknown counts within recorded metrics as zero. Cache reads are included in input tokens. Interactions count distinct LLM calls plus tool-call steps. Costs are recorded customer costs in EUR from applicable Interloom price sheets, available only when customer pricing is enabled. Costs can be partial; averages use invocations with priced usage. Provider/computed costs are never exposed. Case totals include descendants.","operationId":"getCaseUsage","parameters":[{"name":"case_id","in":"path","required":true,"schema":{"type":"string","title":"Case Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicUsageTotals"}}}},"401":{"description":"Missing or invalid authentication token.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"unauthorized","message":"Missing or invalid authentication token."}}}}},"429":{"description":"Too many requests. Try again later.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"rate_limit_exceeded","message":"Too many requests. Try again later."}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"404":{"description":"Case not found.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"case_not_found","message":"Case not found."}}}}}}}},"/api/v1/public/spaces/{space_id}/usage":{"get":{"tags":["Usage"],"summary":"Get Space Usage","description":"All-time aggregate usage; no date filter is currently available. Metrics are eventually consistent. With no recorded metrics, counts are zero and token totals and averages are null. Existing aggregation treats unknown counts within recorded metrics as zero. Cache reads are included in input tokens. Interactions count distinct LLM calls plus tool-call steps. Costs are recorded customer costs in EUR from applicable Interloom price sheets, available only when customer pricing is enabled. Costs can be partial; averages use invocations with priced usage. Provider/computed costs are never exposed. Requires space owner or manager access. Space totals use the invocation's recorded space.","operationId":"getSpaceUsage","parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","title":"Space Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicUsageTotals"}}}},"401":{"description":"Missing or invalid authentication token.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"unauthorized","message":"Missing or invalid authentication token."}}}}},"429":{"description":"Too many requests. Try again later.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"rate_limit_exceeded","message":"Too many requests. Try again later."}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"404":{"description":"Space not found.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"space_not_found","message":"Space not found."}}}}}}}},"/api/v1/public/spaces/{space_id}/usage/breakdowns":{"get":{"tags":["Usage"],"summary":"List Space Usage Breakdowns","description":"All-time aggregate usage; no date filter is currently available. Metrics are eventually consistent. With no recorded metrics, counts are zero and token totals and averages are null. Existing aggregation treats unknown counts within recorded metrics as zero. Cache reads are included in input tokens. Interactions count distinct LLM calls plus tool-call steps. Costs are recorded customer costs in EUR from applicable Interloom price sheets, available only when customer pricing is enabled. Costs can be partial; averages use invocations with priced usage. Provider/computed costs are never exposed. Requires space owner or manager access. Case groups use the recorded root case and root-case space; model and agent groups use the invocation's recorded space. These scopes can produce different totals. Groups remain visible when the referenced case or agent was deleted. Groups are ordered by group key. All groups are returned unless limit is specified; the limit is applied in the database.","operationId":"listSpaceUsageBreakdowns","parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","title":"Space Id"}},{"name":"group_by","in":"query","required":true,"schema":{"enum":["case","model","agent"],"type":"string","title":"Group By"}},{"name":"limit","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","minimum":1},{"type":"null"}],"description":"Maximum groups to return. Omit for all groups.","title":"Limit"},"description":"Maximum groups to return. Omit for all groups."},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UsageBreakdownsResponse"}}}},"401":{"description":"Missing or invalid authentication token.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"unauthorized","message":"Missing or invalid authentication token."}}}}},"429":{"description":"Too many requests. Try again later.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"rate_limit_exceeded","message":"Too many requests. Try again later."}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"404":{"description":"Space not found.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"space_not_found","message":"Space not found."}}}}}}}},"/api/v1/public/databases":{"post":{"tags":["Databases"],"summary":"Create Database Endpoint","description":"Create a Database or retrieve the compatible Database with the same space-local key.\n\nRequires write permission in the explicit owning space. The API key's user is\nthe creator; caller-supplied identities are rejected. Returns HTTP 200 with\nthe same canonical metadata and schema as describe. New Databases have\nrevision 0 and row count 0. Compatible retries preserve the existing title,\ndata, and revision; conflicting schemas return database_schema_conflict.\nMissing and unwritable spaces return the same space_not_found error.","operationId":"createDatabase","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDatabaseRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DatabaseDescription"}}}},"401":{"description":"Missing or invalid authentication token.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"unauthorized","message":"Missing or invalid authentication token."}}}}},"429":{"description":"Too many requests. Try again later.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"rate_limit_exceeded","message":"Too many requests. Try again later."}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"409":{"description":"A database with this key already exists with a different schema.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"database_schema_conflict","message":"A database with this key already exists with a different schema."}}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"examples":{"invalid_database_schema":{"summary":"Database schema definition is invalid.","value":{"error":{"code":"invalid_database_schema","message":"Database schema definition is invalid."}}},"invalid_database_request":{"summary":"Database request is invalid.","value":{"error":{"code":"invalid_database_request","message":"Database request is invalid."}}}}}}},"404":{"description":"Space not found.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"space_not_found","message":"Space not found."}}}}}}},"get":{"tags":["Databases"],"summary":"List Databases Endpoint","description":"List accessible Databases in one space, newest first, without loading rows.\n\nMissing or inaccessible spaces return an empty page. Use next_cursor with the\nsame space_id to continue; cursors are limited to 128 characters.","operationId":"listDatabases","parameters":[{"name":"space_id","in":"query","required":true,"schema":{"type":"string","format":"uuid","description":"Space UUID to list Databases in.","title":"Space Id"},"description":"Space UUID to list Databases in."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Maximum number of Databases to return.","default":30,"title":"Limit"},"description":"Maximum number of Databases to return."},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque next_cursor from the previous page in this space.","title":"Cursor"},"description":"Opaque next_cursor from the previous page in this space."},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedResponse_DatabaseListItem_"}}}},"401":{"description":"Missing or invalid authentication token.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"unauthorized","message":"Missing or invalid authentication token."}}}}},"429":{"description":"Too many requests. Try again later.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"rate_limit_exceeded","message":"Too many requests. Try again later."}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"400":{"description":"Cursor is invalid.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"invalid_cursor","message":"Cursor is invalid."}}}}}}}},"/api/v1/public/databases/{database_id}":{"get":{"tags":["Databases"],"summary":"Describe Database Endpoint","description":"Describe one permitted Database without loading rows.\n\nReturns canonical owning-space metadata and the complete immutable schema.\nMissing and inaccessible Database UUIDs return the same database_not_found\nerror.","operationId":"describeDatabase","parameters":[{"name":"database_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Database Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DatabaseDescription"}}}},"401":{"description":"Missing or invalid authentication token.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"unauthorized","message":"Missing or invalid authentication token."}}}}},"429":{"description":"Too many requests. Try again later.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"rate_limit_exceeded","message":"Too many requests. Try again later."}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"404":{"description":"Database not found.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"database_not_found","message":"Database not found."}}}}}}},"delete":{"tags":["Databases"],"summary":"Delete Database Endpoint","description":"Permanently delete a Database, its rows, and its write-idempotency records.\n\nRequires edit permission in the canonical owning space. Accepts no request\nbody or revision precondition and returns HTTP 204 with an empty body.\nMissing, already deleted, inaccessible, and non-writable Databases return\nthe same database_not_found error. Retrying a successful deletion returns\nthat error without changing state. The space-local key can later be reused\nby a new Database with a new UUID.","operationId":"deleteDatabase","parameters":[{"name":"database_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Database Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"responses":{"204":{"description":"Database permanently deleted. Empty response body."},"401":{"description":"Missing or invalid authentication token.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"unauthorized","message":"Missing or invalid authentication token."}}}}},"429":{"description":"Too many requests. Try again later.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"rate_limit_exceeded","message":"Too many requests. Try again later."}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"404":{"description":"Database not found.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"database_not_found","message":"Database not found."}}}}}}}},"/api/v1/public/databases/{database_id}/upsert":{"post":{"tags":["Databases"],"summary":"Upsert Database Rows Endpoint","description":"Add new rows or fully replace existing rows in a database.\n\nFetch the database's schema and revision first. Each row must include its key\nand all required columns, with no unknown columns. Omitted optional values\nbecome null. Send decimals, timestamps, and UUIDs as strings; timestamps need\na timezone.\n\nAim for 100–250 rows per batch. Limits are 1,000 rows per request, 64 KiB per\nrow, and 5 MiB per batch, measured as compact UTF-8 JSON after normalization.\nA database can hold up to 100,000 rows.\n\nPass the observed revision as expected_revision. Each new batch, even an empty\none, advances the revision once. The response includes row counts and a\ncommitted_revision to use for the next batch.\n\nIf you lose the response, retry the same rows with the original expected_revision\nto get the original result, even after later writes. On write_conflict, read\nthe latest data and revise the batch before trying again. Missing databases\nand those you cannot write to both return database_not_found.","operationId":"upsertDatabaseRows","parameters":[{"name":"database_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Database Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpsertDatabaseRowsRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpsertDatabaseRowsResponse"}}}},"401":{"description":"Missing or invalid authentication token.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"unauthorized","message":"Missing or invalid authentication token."}}}}},"429":{"description":"Too many requests. Try again later.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"rate_limit_exceeded","message":"Too many requests. Try again later."}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"404":{"description":"Database not found.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"database_not_found","message":"Database not found."}}}}},"409":{"description":"Database revision does not match expected revision.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"write_conflict","message":"Database revision does not match expected revision."}}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"examples":{"invalid_row":{"summary":"Database row is invalid.","value":{"error":{"code":"invalid_row","message":"Database row is invalid."}}},"row_limit_exceeded":{"summary":"Database would exceed its current-row limit.","value":{"error":{"code":"row_limit_exceeded","message":"Database would exceed its current-row limit."}}}}}}}}}},"/api/v1/public/databases/{database_id}/query":{"post":{"tags":["Databases"],"summary":"Query Database Endpoint","description":"Query a bounded page of selected columns from one permitted Database.\n\nUses exact typed equality filters and at most one scalar sort. Continuations\nmust match the Database, selected columns, filters, and sort of the original\nquery. Any Database revision change returns stale_cursor; restart without a\ncursor. Queries retain the five-second statement timeout and 100-row page cap.","operationId":"queryDatabase","parameters":[{"name":"database_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Database Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/QueryDatabaseRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QueryDatabaseResponse"}}}},"401":{"description":"Missing or invalid authentication token.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"unauthorized","message":"Missing or invalid authentication token."}}}}},"429":{"description":"Too many requests. Try again later.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"rate_limit_exceeded","message":"Too many requests. Try again later."}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"404":{"description":"Database not found.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"database_not_found","message":"Database not found."}}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"examples":{"invalid_query":{"summary":"Database query is invalid.","value":{"error":{"code":"invalid_query","message":"Database query is invalid."}}},"query_too_expensive":{"summary":"Database query exceeded the interactive time limit.","value":{"error":{"code":"query_too_expensive","message":"Database query exceeded the interactive time limit."}}}}}}},"409":{"description":"Cursor is stale because the database revision changed.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"stale_cursor","message":"Cursor is stale because the database revision changed."}}}}}}}},"/api/v1/public/databases/{database_id}/aggregate":{"post":{"tags":["Databases"],"summary":"Aggregate Database Endpoint","description":"Calculate counts, totals, averages, and minimum or maximum values for a database.\n\nRequest 1–10 results, each with a unique name and a function: count, sum, avg,\nmin, or max. You can add up to five equality filters to choose which rows to\ninclude. A row must match every filter.\n\nCount without a column counts matching rows. With a column, it counts only\nrows that have a non-null value in that column. Sum and avg work on integer\nand decimal columns; min and max work on any supported column type.\n\nNull values are ignored. When there are no values to calculate, count returns\nzero and the other functions return null. Sums, averages, and decimal minimum\nor maximum values are returned as decimal strings to preserve precision.\n\nThe response contains the named results and observed_revision, which identifies\nthe database version used for all calculations in this request. Each request\nreads independently, so separate requests may see changes made between them.\n\nRequests and responses are limited to 1 MiB of compact UTF-8 JSON, and queries\nmust finish within five seconds. A database that does not exist and one you\ncannot access both return database_not_found.","operationId":"aggregateDatabase","parameters":[{"name":"database_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Database Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AggregateDatabaseRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AggregateDatabaseResponse"}}}},"401":{"description":"Missing or invalid authentication token.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"unauthorized","message":"Missing or invalid authentication token."}}}}},"429":{"description":"Too many requests. Try again later.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"rate_limit_exceeded","message":"Too many requests. Try again later."}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"404":{"description":"Database not found.","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"example":{"error":{"code":"database_not_found","message":"Database not found."}}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"title":"ApiError","type":"object","required":["error"],"properties":{"error":{"title":"ApiErrorDetail","type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}}}}},"examples":{"invalid_query":{"summary":"Database query is invalid.","value":{"error":{"code":"invalid_query","message":"Database query is invalid."}}},"query_too_expensive":{"summary":"Database query exceeded the interactive time limit.","value":{"error":{"code":"query_too_expensive","message":"Database query exceeded the interactive time limit."}}}}}}}}}}},"components":{"schemas":{"AdditionalMetadata":{"properties":{},"additionalProperties":true,"type":"object","title":"AdditionalMetadata"},"Agent":{"properties":{"id":{"type":"string","format":"uuid","title":"Id","description":"Unique identifier for the object."},"type":{"type":"string","const":"AGENT","title":"Type","description":"Public resource type for the agent.","default":"AGENT"},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"Timestamp when the object was created."},"updated_at":{"type":"string","format":"date-time","title":"Updated At","description":"Timestamp when the object was last updated."},"parent":{"anyOf":[{"$ref":"#/components/schemas/ResourceLink"},{"type":"null"}],"description":"Parent object link, or null when the object has no public parent."},"name":{"type":"string","title":"Name","description":"Human-readable agent name."},"job_description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Job Description","description":"Optional job description used when the agent acts."},"model":{"type":"string","title":"Model","description":"Effective model used by the agent. If the stored model is null, the configured default model is used."},"reasoning_effort":{"anyOf":[{"$ref":"#/components/schemas/ReasoningEffort"},{"type":"null"}],"description":"Stored reasoning effort for the agent, or null when unset or unsupported by the model."}},"type":"object","required":["id","created_at","updated_at","name","model"],"title":"Agent","example":{"created_at":"2026-06-02T12:32:17.908Z","id":"0196d3b9-0c9d-7cf2-9c36-2a8f0bb0f3ab","job_description":"Review uploaded contracts for missing clauses.","model":"openaieu/gpt-5.4","name":"Contract Review Agent","reasoning_effort":"MEDIUM","type":"AGENT","updated_at":"2026-06-02T12:32:17.908Z"}},"AgentInvocationOutcome":{"type":"string","enum":["succeeded","failed","cancelled"],"title":"AgentInvocationOutcome"},"AgentInvocationPayload":{"properties":{"payload_type":{"type":"string","const":"agent_invocation","title":"Payload Type","default":"agent_invocation"},"invocation":{"$ref":"#/components/schemas/ResourceLink","example":{"id":"0196d3bb-4e10-7bc4-b852-8e38aab931b6","type":"INVOCATION","url":"/api/v1/public/invocations/0196d3bb-4e10-7bc4-b852-8e38aab931b6"}}},"type":"object","required":["invocation"],"title":"AgentInvocationPayload"},"AgentListItem":{"properties":{"id":{"type":"string","format":"uuid","title":"Id","description":"Unique identifier for the object."},"type":{"type":"string","const":"AGENT","title":"Type","description":"Public resource type for the agent.","default":"AGENT"},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"Timestamp when the object was created."},"updated_at":{"type":"string","format":"date-time","title":"Updated At","description":"Timestamp when the object was last updated."},"parent":{"anyOf":[{"$ref":"#/components/schemas/ResourceLink"},{"type":"null"}],"description":"Parent object link, or null when the object has no public parent."},"name":{"type":"string","title":"Name","description":"Human-readable agent name."},"model":{"type":"string","title":"Model","description":"Effective model used by the agent. If the stored model is null, the configured default model is used."},"reasoning_effort":{"anyOf":[{"$ref":"#/components/schemas/ReasoningEffort"},{"type":"null"}],"description":"Stored reasoning effort for the agent, or null when unset or unsupported by the model."}},"type":"object","required":["id","created_at","updated_at","name","model"],"title":"AgentListItem","example":{"created_at":"2026-06-02T12:32:17.908Z","id":"0196d3b9-0c9d-7cf2-9c36-2a8f0bb0f3ab","model":"openaieu/gpt-5.4","name":"Contract Review Agent","reasoning_effort":"MEDIUM","type":"AGENT","updated_at":"2026-06-02T12:32:17.908Z"}},"AgentToolLink":{"properties":{"id":{"type":"string","format":"uuid","title":"Id","description":"Unique identifier for the assigned tool."},"type":{"type":"string","enum":["custom","internal"],"title":"Type","description":"Whether the assigned tool is custom or built into Interloom."},"name":{"type":"string","title":"Name","description":"Human-readable tool name."},"url":{"type":"string","title":"Url","description":"Canonical public REST URL for the assigned tool.","readOnly":true}},"type":"object","required":["id","type","name","url"],"title":"AgentToolLink","example":{"id":"019db1c6-2ad0-75c6-9c24-fc1586551f5f","name":"list_tasks","type":"internal","url":"/api/v1/public/tools/019db1c6-2ad0-75c6-9c24-fc1586551f5f"}},"AgentUsageBreakdown":{"properties":{"group_by":{"type":"string","const":"agent","title":"Group By","default":"agent"},"agent":{"$ref":"#/components/schemas/ResourceLink","example":{"id":"0196d3b9-0c9d-7cf2-9c36-2a8f0bb0f3ab","type":"AGENT","url":"/api/v1/public/agents/0196d3b9-0c9d-7cf2-9c36-2a8f0bb0f3ab"}},"totals":{"$ref":"#/components/schemas/PublicUsageTotals"}},"type":"object","required":["agent","totals"],"title":"AgentUsageBreakdown"},"AggregateDatabaseRequest":{"properties":{"expressions":{"items":{"$ref":"#/components/schemas/DatabaseAggregateExpression"},"type":"array","maxItems":10,"minItems":1,"title":"Expressions","description":"Up to ten uniquely named ungrouped aggregate expressions."},"filters":{"anyOf":[{"items":{"$ref":"#/components/schemas/DatabaseEqualityFilter"},"type":"array","maxItems":5},{"type":"null"}],"title":"Filters","description":"Up to five exact equality filters, combined with AND."}},"additionalProperties":false,"type":"object","required":["expressions"],"title":"AggregateDatabaseRequest"},"AggregateDatabaseResponse":{"properties":{"database":{"$ref":"#/components/schemas/DatabaseIdentity"},"observed_revision":{"type":"integer","title":"Observed Revision","description":"Database revision observed by the aggregate statement."},"values":{"additionalProperties":{"$ref":"#/components/schemas/DatabaseRowValue"},"type":"object","title":"Values","description":"Scalar results keyed by expression name. Decimal results are canonical strings."}},"type":"object","required":["database","observed_revision","values"],"title":"AggregateDatabaseResponse"},"ApplyProcedureSpaceTrigger":{"properties":{"trigger_type":{"type":"string","const":"apply_procedure","title":"Trigger Type"},"procedure_id":{"type":"string","format":"uuid","title":"Procedure Id","description":"ID of the procedure applied to new cases in the space."}},"additionalProperties":false,"type":"object","required":["trigger_type","procedure_id"],"title":"ApplyProcedureSpaceTrigger","example":{"procedure_id":"0196d3b9-0c9d-7cf2-9c36-2a8f0bb0f3ac","trigger_type":"apply_procedure"}},"AssigneeSpaceTrigger":{"properties":{"trigger_type":{"type":"string","const":"assignee","title":"Trigger Type"},"assignee_id":{"type":"string","format":"uuid","title":"Assignee Id","description":"ID of the person or agent assigned to new cases in the space."}},"additionalProperties":false,"type":"object","required":["trigger_type","assignee_id"],"title":"AssigneeSpaceTrigger","example":{"assignee_id":"0196d3b9-0c9d-7cf2-9c36-2a8f0bb0f3aa","trigger_type":"assignee"}},"Case":{"properties":{"id":{"type":"string","format":"uuid","title":"Id","description":"Unique identifier for the object."},"type":{"type":"string","const":"CASE","title":"Type","description":"Public resource type for the case.","default":"CASE"},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"Timestamp when the object was created."},"updated_at":{"type":"string","format":"date-time","title":"Updated At","description":"Timestamp when the object was last updated."},"parent":{"anyOf":[{"$ref":"#/components/schemas/ResourceLink"},{"type":"null"}],"description":"Parent object link, or null when the object has no public parent."},"title":{"type":"string","title":"Title","description":"Human-readable case name."},"status":{"$ref":"#/components/schemas/CaseStatus","description":"Current lifecycle status of the case."},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Optional detailed description or instructions for the case."},"completed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Completed At","description":"Timestamp when the case was completed, if completed."},"due_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Due At","description":"Optional deadline for the case."},"summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Summary","description":"Optional generated or user-provided case summary."},"external_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"External Id","description":"Optional caller-provided identifier for linking to an external system."},"tags":{"items":{"type":"string"},"type":"array","title":"Tags","description":"Tags assigned to the case, represented as simple names."},"assignee":{"anyOf":[{"$ref":"#/components/schemas/ResourceLink"},{"type":"null"}],"description":"User assigned to the case, or null when unassigned."},"files":{"items":{"$ref":"#/components/schemas/ResourceLink"},"type":"array","title":"Files","description":"Files attached to the case, represented as public File links."},"thread":{"$ref":"#/components/schemas/ResourceLink","description":"Thread associated with the case."}},"type":"object","required":["id","created_at","updated_at","title","status","thread"],"title":"Case","example":{"assignee":{"id":"0196d3ba-2d25-71f2-8940-5828391ad888","type":"USER","url":"/api/v1/public/users/0196d3ba-2d25-71f2-8940-5828391ad888"},"created_at":"2026-06-02T12:32:17.908Z","description":"The ship's coffee machine started brewing decaf during lightspeed.","due_at":"2026-06-09T12:32:17.908Z","external_id":"case-42","files":[{"id":"0196d3bb-4e10-7bc4-b852-8e38aab931b6","type":"FILE","url":"/api/v1/public/files/0196d3bb-4e10-7bc4-b852-8e38aab931b6"}],"id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","parent":{"id":"0196d3b9-0c9d-7cf2-9c36-2a8f0bb0f3aa","type":"SPACE","url":"/api/v1/public/spaces/0196d3b9-0c9d-7cf2-9c36-2a8f0bb0f3aa"},"status":"open","summary":"Engineering is checking whether the motivator or beans are at fault.","tags":["urgent"],"thread":{"id":"0197f1bc-7369-7343-ae04-31dc04cb204d","type":"THREAD","url":"/api/v1/public/threads/0197f1bc-7369-7343-ae04-31dc04cb204d"},"title":"Investigate hyperspace coffee machine","type":"CASE","updated_at":"2026-06-02T12:32:17.908Z"}},"CaseIngestion":{"properties":{"id":{"type":"string","format":"uuid","title":"Id","description":"Unique identifier for the case ingestion."},"space":{"$ref":"#/components/schemas/ResourceLink","description":"Target Space for imported cases."},"status":{"type":"string","enum":["pending","processing","completed","failed"],"title":"Status","description":"Case ingestion processing status."},"total_count":{"type":"integer","title":"Total Count","description":"Total manifest entries accepted for import."},"processed_count":{"type":"integer","title":"Processed Count","description":"Manifest entries processed so far."},"success_count":{"type":"integer","title":"Success Count","description":"Manifest entries that created cases."},"error_count":{"type":"integer","title":"Error Count","description":"Manifest entries that failed processing."},"started_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Started At","description":"Timestamp when processing started, or null before processing."},"ended_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Ended At","description":"Timestamp when processing ended, or null while unfinished."},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"Timestamp when the batch was created."}},"type":"object","required":["id","space","status","total_count","processed_count","success_count","error_count","created_at"],"title":"CaseIngestion","example":{"created_at":"2026-06-02T12:32:17.908Z","error_count":4,"id":"0196d3b9-0c9d-7cf2-9c36-2a8f0bb0f3aa","processed_count":100,"space":{"id":"0196d3b9-0c9d-7cf2-9c36-2a8f0bb0f3ab","type":"SPACE","url":"/api/v1/public/spaces/0196d3b9-0c9d-7cf2-9c36-2a8f0bb0f3ab"},"started_at":"2026-06-02T12:33:17.908Z","status":"processing","success_count":96,"total_count":250}},"CaseIngestionEntryError":{"properties":{"id":{"type":"string","format":"uuid","title":"Id","description":"Unique identifier for this entry error."},"error":{"type":"string","title":"Error","description":"Human-readable failure message."},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"Timestamp when the error was recorded."}},"type":"object","required":["id","error","created_at"],"title":"CaseIngestionEntryError"},"CaseIngestionFailedEntry":{"properties":{"id":{"type":"string","format":"uuid","title":"Id","description":"Unique identifier for this manifest entry result."},"line_number":{"type":"integer","title":"Line Number","description":"1-indexed line number in the manifest."},"external_id":{"type":"string","title":"External Id","description":"Manifest external_id for the failed case."},"status":{"type":"string","enum":["success","skipped","failed"],"title":"Status","description":"Entry processing status."},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"Timestamp when the entry was recorded."},"errors":{"items":{"$ref":"#/components/schemas/CaseIngestionEntryError"},"type":"array","title":"Errors","description":"Errors recorded for this manifest entry."}},"type":"object","required":["id","line_number","external_id","status","created_at","errors"],"title":"CaseIngestionFailedEntry","example":{"created_at":"2026-06-02T12:34:17.908Z","errors":[{"created_at":"2026-06-02T12:34:18.908Z","error":"Failed to fetch file https://example.com/private.pdf: blocked","id":"0196d3bc-63de-7f02-8df9-27d395c13df2"}],"external_id":"crm-123","id":"0196d3bb-4e10-7bc4-b852-8e38aab931b6","line_number":12,"status":"failed"}},"CaseLink":{"properties":{"id":{"type":"string","format":"uuid","title":"Id","description":"Unique identifier for the linked object."},"type":{"type":"string","const":"CASE","title":"Type","default":"CASE"},"url":{"type":"string","title":"Url","description":"Canonical public REST URL for the linked resource.","readOnly":true}},"type":"object","required":["id","type","url"],"title":"CaseLink"},"CaseListItem":{"properties":{"id":{"type":"string","format":"uuid","title":"Id","description":"Unique identifier for the object."},"type":{"type":"string","const":"CASE","title":"Type","description":"Public resource type for the case.","default":"CASE"},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"Timestamp when the object was created."},"updated_at":{"type":"string","format":"date-time","title":"Updated At","description":"Timestamp when the object was last updated."},"parent":{"anyOf":[{"$ref":"#/components/schemas/ResourceLink"},{"type":"null"}],"description":"Parent object link, or null when the object has no public parent."},"title":{"type":"string","title":"Title","description":"Human-readable case name."},"status":{"$ref":"#/components/schemas/CaseStatus","description":"Current lifecycle status of the case."},"completed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Completed At","description":"Timestamp when the case was completed, if completed."},"due_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Due At","description":"Optional deadline for the case."},"external_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"External Id","description":"Optional caller-provided identifier for linking to an external system."},"tags":{"items":{"type":"string"},"type":"array","title":"Tags","description":"Tags assigned to the case, represented as simple names."},"assignee":{"anyOf":[{"$ref":"#/components/schemas/ResourceLink"},{"type":"null"}],"description":"User assigned to the case, or null when unassigned."}},"type":"object","required":["id","created_at","updated_at","title","status"],"title":"CaseListItem","example":{"assignee":{"id":"0196d3ba-2d25-71f2-8940-5828391ad888","type":"USER","url":"/api/v1/public/users/0196d3ba-2d25-71f2-8940-5828391ad888"},"created_at":"2026-06-02T12:32:17.908Z","due_at":"2026-06-09T12:32:17.908Z","external_id":"case-42","id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","parent":{"id":"0196d3b9-0c9d-7cf2-9c36-2a8f0bb0f3aa","type":"SPACE","url":"/api/v1/public/spaces/0196d3b9-0c9d-7cf2-9c36-2a8f0bb0f3aa"},"status":"open","tags":["urgent"],"title":"Investigate hyperspace coffee machine","type":"CASE","updated_at":"2026-06-02T12:32:17.908Z"}},"CaseStatus":{"type":"string","enum":["open","started","completed","cancelled","blocked"],"title":"TaskStatus"},"CaseUsageBreakdown":{"properties":{"group_by":{"type":"string","const":"case","title":"Group By","default":"case"},"case":{"$ref":"#/components/schemas/ResourceLink","example":{"id":"0196d3b9-0c9d-7cf2-9c36-2a8f0bb0f3aa","type":"CASE","url":"/api/v1/public/cases/0196d3b9-0c9d-7cf2-9c36-2a8f0bb0f3aa"}},"totals":{"$ref":"#/components/schemas/PublicUsageTotals"}},"type":"object","required":["case","totals"],"title":"CaseUsageBreakdown"},"CreateAgentRequest":{"properties":{"name":{"type":"string","title":"Name"},"job_description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Job Description"},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model","description":"Optional model used by the agent. Set to null or omit to use the configured default model. Use GET /models to discover available model ids."},"reasoning_effort":{"anyOf":[{"$ref":"#/components/schemas/ReasoningEffort"},{"type":"null"}],"description":"Optional reasoning effort stored for the agent. Rejected when unsupported by the selected model."}},"additionalProperties":false,"type":"object","required":["name"],"title":"CreateAgentRequest"},"CreateCaseIngestionRequest":{"properties":{"space_id":{"type":"string","format":"uuid","title":"Space Id","description":"Target Space ID for imported root cases."},"manifest":{"type":"string","contentMediaType":"application/octet-stream","title":"Manifest","description":"JSONL manifest file. Each non-blank line describes one case."}},"type":"object","required":["space_id","manifest"],"title":"CreateCaseIngestionRequest"},"CreateCaseRequest":{"properties":{"space_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Space Id","description":"Target Space ID for a root case. Provide exactly one of space_id or parent_case_id."},"parent_case_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Parent Case Id","description":"Parent Case ID for a child case. Provide exactly one of space_id or parent_case_id."},"title":{"type":"string","title":"Title"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"external_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"External Id"},"assignee_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Assignee Id"},"due_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Due At"},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tags"},"attached_file_ids":{"anyOf":[{"items":{"type":"string","format":"uuid"},"type":"array"},{"type":"null"}],"title":"Attached File Ids"}},"type":"object","required":["title"],"title":"CreateCaseRequest"},"CreateDatabaseRequest":{"properties":{"space_id":{"type":"string","format":"uuid","title":"Space Id","description":"Explicit UUID of the space to write to."},"key":{"type":"string","title":"Key","description":"Stable lower-case identifier unique within the space, at most 100 characters."},"title":{"type":"string","title":"Title","description":"Non-empty human-readable Database title."},"schema":{"$ref":"#/components/schemas/DatabaseSchemaInput","description":"Immutable schema of at most 100 columns, with one declared non-nullable string row-key column."}},"additionalProperties":false,"type":"object","required":["space_id","key","title","schema"],"title":"CreateDatabaseRequest"},"CreateFileRequest":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File","description":"File to upload."},"space_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Space Id","description":"Target Space ID for a space-owned file. Provide at most one of space_id or case_id."},"case_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Case Id","description":"Target Case ID for a case-owned file. Provide at most one of space_id or case_id."}},"type":"object","required":["file"],"title":"CreateFileRequest"},"CreateMessageRequest":{"properties":{"text":{"type":"string","title":"Text"},"file_ids":{"anyOf":[{"items":{"type":"string","format":"uuid"},"type":"array","maxItems":100},{"type":"null"}],"title":"File Ids","description":"Optional File IDs to attach to the created thread event."}},"type":"object","required":["text"],"title":"CreateMessageRequest","example":{"file_ids":["0197f1bd-1917-72db-a52d-e459e6a85acc"],"text":"Please review the attached contract."}},"CreateNoteRequest":{"properties":{"space_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Space Id","description":"Target Space ID. Provide exactly one of space_id or case_id."},"case_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Case Id","description":"Target Case ID. Provide exactly one of space_id or case_id."},"title":{"type":"string","title":"Title"},"body":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Body"},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tags"}},"type":"object","required":["title"],"title":"CreateNoteRequest"},"CreateProcedureRequest":{"properties":{"space_id":{"type":"string","format":"uuid","title":"Space Id","description":"Space ID that owns the procedure."},"title":{"type":"string","title":"Title","description":"Human-readable procedure name."}},"type":"object","required":["space_id","title"],"title":"CreateProcedureRequest"},"CreateSecretRequest":{"properties":{"name":{"type":"string","title":"Name","description":"Name used to reference the secret."},"value":{"type":"string","title":"Value","description":"Sensitive value to encrypt and store."}},"type":"object","required":["name","value"],"title":"CreateSecretRequest"},"CreateSpaceRequest":{"properties":{"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"is_public":{"type":"boolean","title":"Is Public","description":"Whether everyone in the organization has access and is automatically a member. Defaults to private. Visibility cannot be changed after creation.","default":false}},"type":"object","required":["name"],"title":"CreateSpaceRequest"},"CreateToolRequest":{"properties":{"name":{"type":"string","title":"Name","description":"Unique name used to call the custom tool."},"description":{"type":"string","title":"Description","description":"Human-readable tool description."},"script":{"type":"string","title":"Script","description":"Python script executed by the custom tool."},"input_schema":{"additionalProperties":true,"type":"object","title":"Input Schema","description":"JSON Schema describing the custom tool input."},"secret_ids":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Secret Ids","description":"Secret IDs to associate with the custom tool."},"outbound_network":{"type":"string","title":"Outbound Network","description":"Outbound network id of the tool sandbox: \"internet\", \"disabled\", or an egress lane key. Use GET /outbound-networks to discover ids.","default":"internet"}},"additionalProperties":false,"type":"object","required":["name","description","script","input_schema"],"title":"CreateToolRequest","example":{"description":"Search managed contracts by customer name.","input_schema":{"additionalProperties":false,"properties":{"customer_name":{"description":"Customer name to search for.","type":"string"}},"required":["customer_name"],"type":"object"},"name":"search_contracts","script":"import requests\n\ndef invoke(customer_name, interloom):\n    token = interloom[\"secrets\"][\"CONTRACTS_API_KEY\"]\n    response = requests.get(\n        \"https://contracts.example.com/api/contracts\",\n        params={\"customer\": customer_name},\n        headers={\"Authorization\": f\"Bearer {token}\"},\n        timeout=20,\n    )\n    response.raise_for_status()\n    return response.json()\n","secret_ids":["0196d3b9-0c9d-7cf2-9c36-2a8f0bb0f3ac"]}},"CurrentUser":{"properties":{"id":{"type":"string","format":"uuid","title":"Id","description":"Unique identifier for the user."},"type":{"type":"string","const":"USER","title":"Type","description":"Public resource type for the user.","default":"USER"},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"Timestamp when the user was created."},"updated_at":{"type":"string","format":"date-time","title":"Updated At","description":"Timestamp when the user was last updated."},"name":{"type":"string","title":"Name","description":"Display name for the user."},"is_pending":{"type":"boolean","title":"Is Pending","description":"True when the user has been invited but has not yet signed in via Zitadel."},"is_deactivated":{"type":"boolean","title":"Is Deactivated","description":"True when the user's organization membership is archived."},"organization":{"$ref":"#/components/schemas/Organization","description":"Current organization for the API key."}},"type":"object","required":["id","created_at","updated_at","name","is_pending","is_deactivated","organization"],"title":"CurrentUser","example":{"created_at":"2026-06-02T12:32:17.908Z","id":"0196d3b9-0c9d-7cf2-9c36-2a8f0bb0f3ad","is_deactivated":false,"is_pending":false,"name":"Ada Lovelace","organization":{"id":"0196d3b8-b2cf-75f7-bf36-8fe6b4da1b19","name":"Acme Inc.","slug":"acme-inc"},"type":"USER","updated_at":"2026-06-02T12:32:17.908Z"}},"DatabaseAggregateExpression":{"properties":{"name":{"type":"string","maxLength":100,"minLength":1,"title":"Name","description":"Unique name for this aggregate result."},"function":{"type":"string","enum":["count","sum","avg","min","max"],"title":"Function"},"column":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Column","description":"Declared column to aggregate. Only count may omit the column or use null to count matching rows."}},"additionalProperties":false,"type":"object","required":["name","function"],"title":"DatabaseAggregateExpression"},"DatabaseColumn":{"properties":{"name":{"type":"string","title":"Name"},"type":{"$ref":"#/components/schemas/DatabaseColumnType"},"nullable":{"type":"boolean","title":"Nullable","default":false},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"}},"type":"object","required":["name","type"],"title":"DatabaseColumn"},"DatabaseColumnInput":{"properties":{"name":{"type":"string","title":"Name","description":"Lower-case column identifier."},"type":{"$ref":"#/components/schemas/DatabaseColumnType","description":"Scalar column type: string, integer, decimal, boolean, timestamp, or uuid."},"nullable":{"type":"boolean","title":"Nullable","description":"Whether the column may contain null values.","default":false},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Optional concise description of the column."}},"additionalProperties":false,"type":"object","required":["name","type"],"title":"DatabaseColumnInput"},"DatabaseColumnType":{"type":"string","enum":["string","integer","decimal","boolean","timestamp","uuid"],"title":"DatabaseColumnType"},"DatabaseDescription":{"properties":{"id":{"type":"string","format":"uuid","title":"Id","description":"Stable Database UUID."},"key":{"type":"string","title":"Key","description":"Stable key unique within the owning space."},"title":{"type":"string","title":"Title"},"revision":{"type":"integer","title":"Revision","description":"Current Database revision."},"row_count":{"type":"integer","title":"Row Count","description":"Exact current row count; no rows are loaded."},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"space":{"$ref":"#/components/schemas/DatabaseSpace"},"schema":{"$ref":"#/components/schemas/DatabaseSchema","description":"Complete ordered immutable schema, including the row-key column."}},"type":"object","required":["id","key","title","revision","row_count","created_at","updated_at","space","schema"],"title":"DatabaseDescription"},"DatabaseEqualityFilter":{"properties":{"column":{"type":"string","title":"Column","description":"Declared column to compare for exact equality."},"value":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"number"},{"type":"boolean"},{"type":"null"}],"title":"Value","description":"Typed equality value: JSON integer or boolean for those column types; string for string, decimal, timestamp, and UUID columns. Null filters are unsupported."}},"additionalProperties":false,"type":"object","required":["column","value"],"title":"DatabaseEqualityFilter"},"DatabaseIdentity":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"space_id":{"type":"string","format":"uuid","title":"Space Id"},"key":{"type":"string","title":"Key"},"title":{"type":"string","title":"Title"}},"type":"object","required":["id","space_id","key","title"],"title":"DatabaseIdentity"},"DatabaseListItem":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"space_id":{"type":"string","format":"uuid","title":"Space Id"},"key":{"type":"string","title":"Key"},"title":{"type":"string","title":"Title"},"revision":{"type":"integer","title":"Revision","description":"Current Database revision."},"row_count":{"type":"integer","title":"Row Count","description":"Exact current row count; no rows are loaded."}},"type":"object","required":["id","space_id","key","title","revision","row_count"],"title":"DatabaseListItem"},"DatabaseRowValue":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"boolean"},{"type":"null"}]},"DatabaseSchema":{"properties":{"columns":{"items":{"$ref":"#/components/schemas/DatabaseColumn"},"type":"array","title":"Columns"},"row_key_column":{"type":"string","title":"Row Key Column"}},"type":"object","required":["columns","row_key_column"],"title":"DatabaseSchema"},"DatabaseSchemaInput":{"properties":{"columns":{"items":{"$ref":"#/components/schemas/DatabaseColumnInput"},"type":"array","title":"Columns","description":"Ordered column definitions for the immutable database schema."},"row_key_column":{"type":"string","title":"Row Key Column","description":"Name of the one non-nullable string column that uniquely identifies rows."}},"additionalProperties":false,"type":"object","required":["columns","row_key_column"],"title":"DatabaseSchemaInput"},"DatabaseSort":{"properties":{"column":{"type":"string","title":"Column","description":"Declared scalar column to sort by."},"direction":{"type":"string","enum":["asc","desc"],"title":"Direction","description":"Sort direction. Nulls sort last; ties use ascending row key."}},"additionalProperties":false,"type":"object","required":["column","direction"],"title":"DatabaseSort"},"DatabaseSpace":{"properties":{"id":{"type":"string","format":"uuid","title":"Id","description":"Unique identifier for the linked object."},"type":{"type":"string","const":"SPACE","title":"Type","default":"SPACE"},"name":{"type":"string","title":"Name","description":"Canonical name of the owning space."},"url":{"type":"string","title":"Url","description":"Canonical public REST URL for the linked resource.","readOnly":true}},"type":"object","required":["id","type","url","name"],"title":"DatabaseSpace"},"DisabledSpaceTrigger":{"properties":{"trigger_type":{"type":"null","title":"Trigger Type","description":"Null when the space has no active triage trigger."}},"additionalProperties":false,"type":"object","required":["trigger_type"],"title":"DisabledSpaceTrigger"},"File":{"properties":{"id":{"type":"string","format":"uuid","title":"Id","description":"Unique identifier for the object."},"type":{"type":"string","const":"FILE","title":"Type","description":"Public resource type for the file.","default":"FILE"},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"Timestamp when the file was created."},"updated_at":{"type":"string","format":"date-time","title":"Updated At","description":"Timestamp when the file was last updated."},"parent":{"anyOf":[{"$ref":"#/components/schemas/ResourceLink"},{"type":"null"}],"description":"Parent object link, or null when the object has no public parent."},"name":{"type":"string","title":"Name","description":"Original or generated display name for the file."},"size":{"type":"integer","title":"Size","description":"File size in bytes."},"mime_type":{"type":"string","title":"Mime Type","description":"Detected MIME type for the file."},"additional_metadata":{"anyOf":[{"$ref":"#/components/schemas/AdditionalMetadata"},{"type":"null"}],"description":"Optional metadata extracted from supported file types, such as image dimensions or email headers."},"download_url":{"type":"string","title":"Download Url","description":"Short-lived signed URL for downloading the file bytes."},"tags":{"items":{"type":"string"},"type":"array","title":"Tags","description":"Tags assigned to the file, represented as simple names."}},"type":"object","required":["id","created_at","updated_at","name","size","mime_type","download_url"],"title":"File","example":{"created_at":"2026-06-02T12:32:17.908Z","download_url":"https://default.loomcdn.com/0196d3b9-0c9d-7cf2-9c36-2a8f0bb0f3aa?token=...","id":"0196d3b9-0c9d-7cf2-9c36-2a8f0bb0f3aa","mime_type":"application/pdf","name":"quarterly-report.pdf","parent":{"id":"0196d3b9-0c9d-7cf2-9c36-2a8f0bb0f3ab","type":"SPACE","url":"/api/v1/public/spaces/0196d3b9-0c9d-7cf2-9c36-2a8f0bb0f3ab"},"size":248391,"tags":["finance"],"type":"FILE","updated_at":"2026-06-02T12:32:17.908Z"}},"FilePayload":{"properties":{"payload_type":{"type":"string","const":"file","title":"Payload Type","default":"file"},"file":{"$ref":"#/components/schemas/ResourceLink"}},"type":"object","required":["file"],"title":"FilePayload","example":{"file":{"id":"0197f1bd-1917-72db-a52d-e459e6a85acc","type":"FILE","url":"/api/v1/public/files/0197f1bd-1917-72db-a52d-e459e6a85acc"},"payload_type":"file"}},"InvalidToolIdsError":{"properties":{"code":{"type":"string","const":"invalid_tool_ids","title":"Code","description":"Stable machine-readable error code."},"message":{"type":"string","const":"One or more tool IDs are unknown or unavailable.","title":"Message","description":"Human-readable error message."},"invalid_tool_ids":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Invalid Tool Ids","description":"Tool IDs that are unknown or unavailable to the caller."}},"type":"object","required":["code","message","invalid_tool_ids"],"title":"InvalidToolIdsError"},"InvalidToolIdsResponse":{"properties":{"error":{"$ref":"#/components/schemas/InvalidToolIdsError"}},"type":"object","required":["error"],"title":"InvalidToolIdsResponse"},"Invocation":{"properties":{"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"completed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Completed At"},"id":{"type":"string","format":"uuid","title":"Id"},"type":{"type":"string","const":"INVOCATION","title":"Type","default":"INVOCATION"},"agent":{"$ref":"#/components/schemas/ResourceLink","example":{"id":"0196d3bb-4e10-7bc4-b852-8e38aab931b7","type":"AGENT","url":"/api/v1/public/agents/0196d3bb-4e10-7bc4-b852-8e38aab931b7"}},"outcome":{"anyOf":[{"$ref":"#/components/schemas/AgentInvocationOutcome"},{"type":"null"}],"description":"Recorded terminal outcome; null while the invocation is active."},"token_usage":{"anyOf":[{"$ref":"#/components/schemas/InvocationTokenUsage"},{"type":"null"}],"description":"Sum of recorded token counts across all invocation step metrics, including final-response and unsaved steps. Null when no metrics exist. Each count is null if all recorded values for it are unknown. Sums exclude unknown values and may be partial while metrics arrive asynchronously. Cache read and cache write counts are included in input_tokens, not additional tokens."},"duration_seconds":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Duration Seconds","description":"Seconds from creation to completion; null until completion.","readOnly":true},"steps_url":{"type":"string","title":"Steps Url","readOnly":true}},"type":"object","required":["created_at","updated_at","completed_at","id","agent","outcome","token_usage","duration_seconds","steps_url"],"title":"Invocation"},"InvocationTokenUsage":{"properties":{"input_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Input Tokens"},"output_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Output Tokens"},"cached_input_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Cached Input Tokens"},"cache_write_input_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Cache Write Input Tokens"}},"type":"object","required":["input_tokens","output_tokens","cached_input_tokens","cache_write_input_tokens"],"title":"InvocationTokenUsage"},"ListAgentsResponse":{"properties":{"data":{"items":{"$ref":"#/components/schemas/AgentListItem"},"type":"array","title":"Data","description":"Items in the current page."},"has_more":{"type":"boolean","title":"Has More","description":"Whether more items are available after this page."},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor","description":"Opaque cursor for the next page. Pass this value as cursor on the next request with the same filters and sort options."}},"type":"object","required":["data","has_more"],"title":"ListAgentsResponse","example":{"data":[{"created_at":"2026-06-02T12:32:17.908Z","id":"0196d3b9-0c9d-7cf2-9c36-2a8f0bb0f3ab","model":"openaieu/gpt-5.4","name":"Contract Review Agent","reasoning_effort":"MEDIUM","type":"AGENT","updated_at":"2026-06-02T12:32:17.908Z"}],"has_more":true,"next_cursor":"P6hfZFcXRWKz_CyWP2avpg"}},"ListCaseIngestionErrorsResponse":{"properties":{"data":{"items":{"$ref":"#/components/schemas/CaseIngestionFailedEntry"},"type":"array","title":"Data","description":"Items in the current page."},"has_more":{"type":"boolean","title":"Has More","description":"Whether more items are available after this page."},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor","description":"Opaque cursor for the next page. Pass this value as cursor on the next request with the same filters and sort options."}},"type":"object","required":["data","has_more"],"title":"ListCaseIngestionErrorsResponse","example":{"data":[{"created_at":"2026-06-02T12:34:17.908Z","errors":[{"created_at":"2026-06-02T12:34:18.908Z","error":"Failed to fetch file https://example.com/private.pdf: blocked","id":"0196d3bc-63de-7f02-8df9-27d395c13df2"}],"external_id":"crm-123","id":"0196d3bb-4e10-7bc4-b852-8e38aab931b6","line_number":12,"status":"failed"}],"has_more":true,"next_cursor":"P6hfZFcXRWKz_CyWP2avpg"}},"ListCasesResponse":{"properties":{"data":{"items":{"$ref":"#/components/schemas/CaseListItem"},"type":"array","title":"Data","description":"Items in the current page."},"has_more":{"type":"boolean","title":"Has More","description":"Whether more items are available after this page."},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor","description":"Opaque cursor for the next page. Pass this value as cursor on the next request with the same filters and sort options."}},"type":"object","required":["data","has_more"],"title":"ListCasesResponse","example":{"data":[{"assignee":{"id":"0196d3ba-2d25-71f2-8940-5828391ad888","type":"USER","url":"/api/v1/public/users/0196d3ba-2d25-71f2-8940-5828391ad888"},"created_at":"2026-06-02T12:32:17.908Z","due_at":"2026-06-09T12:32:17.908Z","external_id":"case-42","id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","parent":{"id":"0196d3b9-0c9d-7cf2-9c36-2a8f0bb0f3aa","type":"SPACE","url":"/api/v1/public/spaces/0196d3b9-0c9d-7cf2-9c36-2a8f0bb0f3aa"},"status":"open","tags":["urgent"],"title":"Investigate hyperspace coffee machine","type":"CASE","updated_at":"2026-06-02T12:32:17.908Z"}],"has_more":true,"next_cursor":"P6hfZFcXRWKz_CyWP2avpg"}},"ListFilesResponse":{"properties":{"data":{"items":{"$ref":"#/components/schemas/File"},"type":"array","title":"Data","description":"Items in the current page."},"has_more":{"type":"boolean","title":"Has More","description":"Whether more items are available after this page."},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor","description":"Opaque cursor for the next page. Pass this value as cursor on the next request with the same filters and sort options."}},"type":"object","required":["data","has_more"],"title":"ListFilesResponse","example":{"data":[{"created_at":"2026-06-02T12:32:17.908Z","download_url":"https://default.loomcdn.com/0196d3b9-0c9d-7cf2-9c36-2a8f0bb0f3aa?token=...","id":"0196d3b9-0c9d-7cf2-9c36-2a8f0bb0f3aa","mime_type":"application/pdf","name":"quarterly-report.pdf","parent":{"id":"0196d3b9-0c9d-7cf2-9c36-2a8f0bb0f3ab","type":"SPACE","url":"/api/v1/public/spaces/0196d3b9-0c9d-7cf2-9c36-2a8f0bb0f3ab"},"size":248391,"tags":["finance"],"type":"FILE","updated_at":"2026-06-02T12:32:17.908Z"}],"has_more":true,"next_cursor":"P6hfZFcXRWKz_CyWP2avpg"}},"ListModelsResponse":{"properties":{"data":{"items":{"$ref":"#/components/schemas/Model"},"type":"array","title":"Data","description":"Supported models in display order."}},"type":"object","required":["data"],"title":"ListModelsResponse"},"ListNotesResponse":{"properties":{"data":{"items":{"$ref":"#/components/schemas/NoteListItem"},"type":"array","title":"Data","description":"Items in the current page."},"has_more":{"type":"boolean","title":"Has More","description":"Whether more items are available after this page."},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor","description":"Opaque cursor for the next page. Pass this value as cursor on the next request with the same filters and sort options."}},"type":"object","required":["data","has_more"],"title":"ListNotesResponse","example":{"data":[{"created_at":"2026-06-02T12:32:17.908Z","id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","parent":{"id":"0196d3b9-0c9d-7cf2-9c36-2a8f0bb0f3aa","type":"SPACE","url":"/api/v1/public/spaces/0196d3b9-0c9d-7cf2-9c36-2a8f0bb0f3aa"},"tags":["customer"],"title":"Meeting notes","type":"NOTE","updated_at":"2026-06-02T12:32:17.908Z"}],"has_more":true,"next_cursor":"P6hfZFcXRWKz_CyWP2avpg"}},"ListOutboundNetworksResponse":{"properties":{"data":{"items":{"$ref":"#/components/schemas/OutboundNetwork"},"type":"array","title":"Data","description":"Outbound networks that custom tools can select, in display order."}},"type":"object","required":["data"],"title":"ListOutboundNetworksResponse"},"ListProceduresResponse":{"properties":{"data":{"items":{"$ref":"#/components/schemas/ProcedureSummary"},"type":"array","title":"Data","description":"Items in the current page."},"has_more":{"type":"boolean","title":"Has More","description":"Whether more items are available after this page."},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor","description":"Opaque cursor for the next page. Pass this value as cursor on the next request with the same filters and sort options."}},"type":"object","required":["data","has_more"],"title":"ListProceduresResponse","example":{"data":[{"created_at":"2026-06-02T12:32:17.908Z","id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","parent":{"id":"0196d3b9-0c9d-7cf2-9c36-2a8f0bb0f3aa","type":"SPACE","url":"/api/v1/public/spaces/0196d3b9-0c9d-7cf2-9c36-2a8f0bb0f3aa"},"title":"Customer escalation procedure","type":"PROCEDURE","updated_at":"2026-06-02T12:32:17.908Z"}],"has_more":true,"next_cursor":"cHJvY2VkdXJlX2lkOjNmYTg1ZjY0LTU3MTctNDU2Mi1iM2ZjLTJjOTYzZjY2YWZhNg"}},"ListRelationshipsResponse":{"properties":{"data":{"items":{"$ref":"#/components/schemas/RelationshipLink"},"type":"array","title":"Data","description":"Items in the current page."},"has_more":{"type":"boolean","title":"Has More","description":"Whether more items are available after this page."},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor","description":"Opaque cursor for the next page. Pass this value as cursor on the next request with the same filters and sort options."}},"type":"object","required":["data","has_more"],"title":"ListRelationshipsResponse","example":{"data":[{"id":"0196d3bb-4e10-7bc4-b852-8e38aab931b6","relationship_direction":"OUTGOING","relationship_type":"REFERENCES","type":"FILE","url":"/api/v1/public/files/0196d3bb-4e10-7bc4-b852-8e38aab931b6"}],"has_more":true,"next_cursor":"cmVsYXRpb25zaGlwX29mZnNldDoy"}},"ListSecretsResponse":{"properties":{"data":{"items":{"$ref":"#/components/schemas/Secret"},"type":"array","title":"Data","description":"Items in the current page."},"has_more":{"type":"boolean","title":"Has More","description":"Whether more items are available after this page."},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor","description":"Opaque cursor for the next page. Pass this value as cursor on the next request with the same filters and sort options."}},"type":"object","required":["data","has_more"],"title":"ListSecretsResponse","example":{"data":[{"id":"0196d3b9-0c9d-7cf2-9c36-2a8f0bb0f3aa","name":"EXAMPLE_API_TOKEN","type":"SECRET"}],"has_more":true,"next_cursor":"c2VjcmV0X2lkOjAxOTZkM2I5LTBjOWQtN2NmMi05YzM2LTJhOGYwYmIwZjNhYQ"}},"ListSpaceMembersResponse":{"properties":{"data":{"items":{"$ref":"#/components/schemas/SpaceMember"},"type":"array","title":"Data","description":"Items in the current page."},"has_more":{"type":"boolean","title":"Has More","description":"Whether more items are available after this page."},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor","description":"Opaque cursor for the next page. Pass this value as cursor on the next request with the same filters and sort options."}},"type":"object","required":["data","has_more"],"title":"ListSpaceMembersResponse"},"ListSpacesResponse":{"properties":{"data":{"items":{"$ref":"#/components/schemas/SpaceListItem"},"type":"array","title":"Data","description":"Items in the current page."},"has_more":{"type":"boolean","title":"Has More","description":"Whether more items are available after this page."},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor","description":"Opaque cursor for the next page. Pass this value as cursor on the next request with the same filters and sort options."}},"type":"object","required":["data","has_more"],"title":"ListSpacesResponse","example":{"data":[{"created_at":"2026-06-02T12:32:17.908Z","id":"0196d3b9-0c9d-7cf2-9c36-2a8f0bb0f3aa","is_public":true,"is_system":false,"name":"Engineering","type":"SPACE","updated_at":"2026-06-02T12:32:17.908Z"}],"has_more":true,"next_cursor":"P6hfZFcXRWKz_CyWP2avpg"}},"ListThreadEventsResponse":{"properties":{"data":{"items":{"$ref":"#/components/schemas/ThreadEvent"},"type":"array","title":"Data","description":"Items in the current page."},"has_more":{"type":"boolean","title":"Has More","description":"Whether more items are available after this page."},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor","description":"Opaque cursor for the next page. Pass this value as cursor on the next request with the same filters and sort options."}},"type":"object","required":["data","has_more"],"title":"ListThreadEventsResponse","example":{"data":[{"author":{"id":"0197f1bf-caa1-70b8-aed4-bca3ab2ff110","type":"USER","url":"/api/v1/public/users/0197f1bf-caa1-70b8-aed4-bca3ab2ff110"},"created_at":"2026-06-18T09:14:22.184Z","id":"0197f1c2-8b01-771d-ba97-35679a72639a","payloads":[{"payload_type":"message","text":"Check whether the signed contract includes the renewal clause."},{"file":{"id":"0197f1bd-1917-72db-a52d-e459e6a85acc","type":"FILE","url":"/api/v1/public/files/0197f1bd-1917-72db-a52d-e459e6a85acc"},"payload_type":"file"}],"updated_at":"2026-06-18T09:14:22.184Z"}],"has_more":true,"next_cursor":"AZfxwosBdQd0NtkDeMju7A"}},"ListToolsResponse":{"properties":{"data":{"items":{"$ref":"#/components/schemas/ToolListItem"},"type":"array","title":"Data","description":"Items in the current page."},"has_more":{"type":"boolean","title":"Has More","description":"Whether more items are available after this page."},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor","description":"Opaque cursor for the next page. Pass this value as cursor on the next request with the same filters and sort options."}},"type":"object","required":["data","has_more"],"title":"ListToolsResponse","example":{"data":[{"id":"0196d3b9-0c9d-7cf2-9c36-2a8f0bb0f3ab","is_editable":true,"name":"search_contracts","type":"custom"},{"id":"019db1c6-2ad0-75c6-9c24-fc1586551f5f","is_editable":false,"name":"list_tasks","type":"internal"}],"has_more":true,"next_cursor":"dG9vbF9pZDox"}},"ListUsersResponse":{"properties":{"data":{"items":{"$ref":"#/components/schemas/User"},"type":"array","title":"Data","description":"Items in the current page."},"has_more":{"type":"boolean","title":"Has More","description":"Whether more items are available after this page."},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor","description":"Opaque cursor for the next page. Pass this value as cursor on the next request with the same filters and sort options."}},"type":"object","required":["data","has_more"],"title":"ListUsersResponse","example":{"data":[{"created_at":"2026-06-02T12:32:17.908Z","id":"0196d3b9-0c9d-7cf2-9c36-2a8f0bb0f3ad","is_deactivated":false,"is_pending":false,"name":"Ada Lovelace","type":"USER","updated_at":"2026-06-02T12:32:17.908Z"}],"has_more":true,"next_cursor":"P6hfZFcXRWKz_CyWP2avpg"}},"MessagePayload":{"properties":{"payload_type":{"type":"string","const":"message","title":"Payload Type","default":"message"},"text":{"type":"string","title":"Text"}},"type":"object","required":["text"],"title":"MessagePayload","example":{"payload_type":"message","text":"Check whether the signed contract includes the renewal clause."}},"Model":{"properties":{"id":{"type":"string","title":"Id","description":"Stable model id sent back when selecting a model."},"provider":{"type":"string","title":"Provider","description":"Provider or proxy namespace for the model."},"name":{"type":"string","title":"Name","description":"Provider-local model name."},"display_name":{"type":"string","title":"Display Name","description":"Human-readable model name."},"description":{"type":"string","title":"Description","description":"Short model description."},"is_default":{"type":"boolean","title":"Is Default","description":"Whether this catalog entry is the deployment default agent model."},"is_enabled":{"type":"boolean","title":"Is Enabled","description":"Whether this catalog entry is enabled for agent selection in the organization."},"deployment_location":{"$ref":"#/components/schemas/ModelDeploymentLocation","description":"Where this catalog entry is routed for deployment."},"context_window":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Context Window","description":"Maximum input context window in tokens from the model metadata snapshot."},"max_output_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Output Tokens","description":"Maximum output tokens from the model metadata snapshot."},"capabilities":{"$ref":"#/components/schemas/ModelCapabilities","description":"Model capabilities from the model metadata snapshot."}},"type":"object","required":["id","provider","name","display_name","description","is_default","is_enabled","deployment_location","capabilities"],"title":"Model","example":{"capabilities":{"reasoning":{"default_effort":"MEDIUM","efforts":["LOW","MEDIUM","HIGH","XHIGH"],"supported":true}},"context_window":1050000,"deployment_location":"EUROPE","description":"OpenAI's balanced GPT-5 model with a large context window and XHIGH reasoning. Strong default for coding, analysis, and complex task-solving at lower cost than GPT-5.5.","display_name":"GPT-5.4","id":"openaieu/gpt-5.4","is_default":false,"is_enabled":true,"max_output_tokens":128000,"name":"gpt-5.4","provider":"openai"}},"ModelCapabilities":{"properties":{"reasoning":{"anyOf":[{"$ref":"#/components/schemas/ModelReasoningCapability"},{"type":"null"}],"description":"Reasoning capability metadata, or null when reasoning is unsupported."}},"type":"object","title":"ModelCapabilities"},"ModelDeploymentLocation":{"type":"string","enum":["EUROPE","UNITED_STATES","GLOBAL","UNKNOWN"],"title":"ModelDeploymentLocation"},"ModelReasoningCapability":{"properties":{"supported":{"type":"boolean","title":"Supported","description":"Whether reasoning is supported by this model.","default":true},"efforts":{"items":{"$ref":"#/components/schemas/ReasoningEffort"},"type":"array","title":"Efforts","description":"Supported reasoning effort values for this model."},"default_effort":{"$ref":"#/components/schemas/ReasoningEffort","description":"Default reasoning effort used when no override is stored."}},"type":"object","required":["efforts","default_effort"],"title":"ModelReasoningCapability"},"ModelUsageBreakdown":{"properties":{"group_by":{"type":"string","const":"model","title":"Group By","default":"model"},"model":{"type":"string","title":"Model"},"totals":{"$ref":"#/components/schemas/PublicUsageTotals"}},"type":"object","required":["model","totals"],"title":"ModelUsageBreakdown"},"Note":{"properties":{"id":{"type":"string","format":"uuid","title":"Id","description":"Unique identifier for the object."},"type":{"type":"string","const":"NOTE","title":"Type","description":"Public resource type for the note.","default":"NOTE"},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"Timestamp when the object was created."},"updated_at":{"type":"string","format":"date-time","title":"Updated At","description":"Timestamp when the object was last updated."},"parent":{"anyOf":[{"$ref":"#/components/schemas/ResourceLink"},{"type":"null"}],"description":"Parent object link, or null when the object has no public parent."},"title":{"type":"string","title":"Title","description":"Human-readable note title."},"body":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Body","description":"Optional note body."},"tags":{"items":{"type":"string"},"type":"array","title":"Tags","description":"Tags assigned to the note, represented as simple names."}},"type":"object","required":["id","created_at","updated_at","title"],"title":"Note","example":{"body":"Customer wants an implementation plan.","created_at":"2026-06-02T12:32:17.908Z","id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","parent":{"id":"0196d3b9-0c9d-7cf2-9c36-2a8f0bb0f3aa","type":"SPACE","url":"/api/v1/public/spaces/0196d3b9-0c9d-7cf2-9c36-2a8f0bb0f3aa"},"tags":["customer"],"title":"Meeting notes","type":"NOTE","updated_at":"2026-06-02T12:32:17.908Z"}},"NoteListItem":{"properties":{"id":{"type":"string","format":"uuid","title":"Id","description":"Unique identifier for the object."},"type":{"type":"string","const":"NOTE","title":"Type","description":"Public resource type for the note.","default":"NOTE"},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"Timestamp when the object was created."},"updated_at":{"type":"string","format":"date-time","title":"Updated At","description":"Timestamp when the object was last updated."},"parent":{"anyOf":[{"$ref":"#/components/schemas/ResourceLink"},{"type":"null"}],"description":"Parent object link, or null when the object has no public parent."},"title":{"type":"string","title":"Title","description":"Human-readable note title."},"tags":{"items":{"type":"string"},"type":"array","title":"Tags","description":"Tags assigned to the note, represented as simple names."}},"type":"object","required":["id","created_at","updated_at","title"],"title":"NoteListItem","example":{"created_at":"2026-06-02T12:32:17.908Z","id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","parent":{"id":"0196d3b9-0c9d-7cf2-9c36-2a8f0bb0f3aa","type":"SPACE","url":"/api/v1/public/spaces/0196d3b9-0c9d-7cf2-9c36-2a8f0bb0f3aa"},"tags":["customer"],"title":"Meeting notes","type":"NOTE","updated_at":"2026-06-02T12:32:17.908Z"}},"Organization":{"properties":{"id":{"type":"string","format":"uuid","title":"Id","description":"Unique identifier for the organization."},"name":{"type":"string","title":"Name","description":"Display name for the organization."},"slug":{"type":"string","title":"Slug","description":"URL-safe slug for the organization."}},"type":"object","required":["id","name","slug"],"title":"Organization","example":{"id":"0196d3b8-b2cf-75f7-bf36-8fe6b4da1b19","name":"Acme Inc.","slug":"acme-inc"}},"OutboundNetwork":{"properties":{"id":{"type":"string","title":"Id","description":"Stable outbound network id sent back as a tool's outbound_network: \"internet\", \"disabled\", or an egress lane key."},"mode":{"type":"string","enum":["internet","disabled","egress_lane"],"title":"Mode","description":"internet is direct internet access, disabled blocks all outbound traffic, and egress_lane sends TCP traffic through a static egress IP range. DNS and other UDP traffic do not use the static IP range."},"egress_lane":{"anyOf":[{"$ref":"#/components/schemas/OutboundNetworkEgressLane"},{"type":"null"}],"description":"Egress lane when mode is egress_lane. Null if the lane no longer exists; a tool that uses it then fails to run."}},"type":"object","required":["id","mode","egress_lane"],"title":"OutboundNetwork","example":{"egress_lane":{"key":"static-1","label":"Static egress IP","public_ip_prefix":"203.0.113.4/30"},"id":"static-1","mode":"egress_lane"}},"OutboundNetworkEgressLane":{"properties":{"key":{"type":"string","title":"Key","description":"Key of the sandbox egress lane."},"label":{"type":"string","title":"Label","description":"Display label of the sandbox egress lane."},"public_ip_prefix":{"type":"string","title":"Public Ip Prefix","description":"Public IP range (CIDR) that outbound TCP traffic of the sandbox comes from. Allowlist this range in external systems."}},"type":"object","required":["key","label","public_ip_prefix"],"title":"OutboundNetworkEgressLane"},"PaginatedResponse_Annotated_Union_ToolCallStep__PrivateContentStep___FieldInfo_annotation_NoneType__required_True__discriminator__type____":{"properties":{"data":{"items":{"oneOf":[{"$ref":"#/components/schemas/ToolCallStep"},{"$ref":"#/components/schemas/PrivateContentStep"}],"discriminator":{"propertyName":"type","mapping":{"reasoning":"#/components/schemas/PrivateContentStep","thinking":"#/components/schemas/PrivateContentStep","tool_call":"#/components/schemas/ToolCallStep"}}},"type":"array","title":"Data","description":"Items in the current page."},"has_more":{"type":"boolean","title":"Has More","description":"Whether more items are available after this page."},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor","description":"Opaque cursor for the next page. Pass this value as cursor on the next request with the same filters and sort options."}},"type":"object","required":["data","has_more"],"title":"PaginatedResponse[Annotated[Union[ToolCallStep, PrivateContentStep], FieldInfo(annotation=NoneType, required=True, discriminator='type')]]"},"PaginatedResponse_DatabaseListItem_":{"properties":{"data":{"items":{"$ref":"#/components/schemas/DatabaseListItem"},"type":"array","title":"Data","description":"Items in the current page."},"has_more":{"type":"boolean","title":"Has More","description":"Whether more items are available after this page."},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor","description":"Opaque cursor for the next page. Pass this value as cursor on the next request with the same filters and sort options."}},"type":"object","required":["data","has_more"],"title":"PaginatedResponse[DatabaseListItem]"},"PrivateContentStep":{"properties":{"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"completed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Completed At"},"id":{"type":"string","format":"uuid","title":"Id"},"invocation":{"$ref":"#/components/schemas/ResourceLink","example":{"id":"0196d3bb-4e10-7bc4-b852-8e38aab931b6","type":"INVOCATION","url":"/api/v1/public/invocations/0196d3bb-4e10-7bc4-b852-8e38aab931b6"}},"token_usage":{"anyOf":[{"$ref":"#/components/schemas/InvocationTokenUsage"},{"type":"null"}],"description":"Allocated share of one LLM response's token usage. Cache read and cache write counts are part of input_tokens. Metrics are recorded asynchronously, so this is null until available; unknown individual counts remain null. Excluded final or unsaved steps mean visible step totals may not equal the invocation total."},"type":{"type":"string","enum":["thinking","reasoning"],"title":"Type"},"content_status":{"type":"string","const":"redacted","title":"Content Status","default":"redacted"},"duration_seconds":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Duration Seconds","description":"Seconds from creation to completion; null until completion.","readOnly":true}},"type":"object","required":["created_at","updated_at","completed_at","id","invocation","token_usage","type","duration_seconds"],"title":"PrivateContentStep"},"Procedure":{"properties":{"id":{"type":"string","format":"uuid","title":"Id","description":"Unique identifier for the object."},"type":{"type":"string","const":"PROCEDURE","title":"Type","description":"Public resource type for the procedure.","default":"PROCEDURE"},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"Timestamp when the object was created."},"updated_at":{"type":"string","format":"date-time","title":"Updated At","description":"Timestamp when the object was last updated."},"parent":{"anyOf":[{"$ref":"#/components/schemas/ResourceLink"},{"type":"null"}],"description":"Parent object link, or null when the object has no public parent."},"title":{"type":"string","title":"Title","description":"Human-readable procedure name."},"stages":{"items":{"$ref":"#/components/schemas/ProcedureStage"},"type":"array","title":"Stages","description":"Procedure stages, in procedure order."}},"type":"object","required":["id","created_at","updated_at","title"],"title":"Procedure","example":{"created_at":"2026-06-02T12:32:17.908Z","id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","parent":{"id":"0196d3b9-0c9d-7cf2-9c36-2a8f0bb0f3aa","type":"SPACE","url":"/api/v1/public/spaces/0196d3b9-0c9d-7cf2-9c36-2a8f0bb0f3aa"},"stages":[{"assignee":{"id":"0196d3ba-2d25-71f2-8940-5828391ad889","type":"USER","url":"/api/v1/public/users/0196d3ba-2d25-71f2-8940-5828391ad889"},"created_at":"2026-06-02T12:32:17.908Z","id":"0196d3ba-2d25-71f2-8940-5828391ad888","instructions":"Review the case notes and attached files.","title":"Collect context","updated_at":"2026-06-02T12:32:17.908Z"}],"title":"Customer escalation procedure","type":"PROCEDURE","updated_at":"2026-06-02T12:32:17.908Z"}},"ProcedureStage":{"properties":{"id":{"type":"string","format":"uuid","title":"Id","description":"Unique identifier for the procedure stage."},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"Timestamp when the stage was created."},"updated_at":{"type":"string","format":"date-time","title":"Updated At","description":"Timestamp when the stage was last updated."},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title","description":"Optional human-readable stage title."},"instructions":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Instructions","description":"Optional instructions for the stage."},"assignee":{"anyOf":[{"$ref":"#/components/schemas/ResourceLink"},{"type":"null"}],"description":"User assigned to the stage, when assigned."}},"type":"object","required":["id","created_at","updated_at"],"title":"ProcedureStage","example":{"assignee":{"id":"0196d3ba-2d25-71f2-8940-5828391ad889","type":"USER","url":"/api/v1/public/users/0196d3ba-2d25-71f2-8940-5828391ad889"},"created_at":"2026-06-02T12:32:17.908Z","id":"0196d3ba-2d25-71f2-8940-5828391ad888","instructions":"Review the case notes and attached files.","title":"Collect context","updated_at":"2026-06-02T12:32:17.908Z"}},"ProcedureStagePatchRequest":{"properties":{"id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Id","description":"Existing stage ID. Omit to create a new stage."},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title","description":"Stage title, or null for no title."},"instructions":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Instructions","description":"Stage instructions, or null for no instructions."},"assignee_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Assignee Id","description":"User ID assigned to the stage, or null for no assignee."}},"additionalProperties":false,"type":"object","required":["title","instructions","assignee_id"],"title":"ProcedureStagePatchRequest"},"ProcedureSummary":{"properties":{"id":{"type":"string","format":"uuid","title":"Id","description":"Unique identifier for the object."},"type":{"type":"string","const":"PROCEDURE","title":"Type","description":"Public resource type for the procedure.","default":"PROCEDURE"},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"Timestamp when the object was created."},"updated_at":{"type":"string","format":"date-time","title":"Updated At","description":"Timestamp when the object was last updated."},"parent":{"anyOf":[{"$ref":"#/components/schemas/ResourceLink"},{"type":"null"}],"description":"Parent object link, or null when the object has no public parent."},"title":{"type":"string","title":"Title","description":"Human-readable procedure name."}},"type":"object","required":["id","created_at","updated_at","title"],"title":"ProcedureSummary","example":{"created_at":"2026-06-02T12:32:17.908Z","id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","parent":{"id":"0196d3b9-0c9d-7cf2-9c36-2a8f0bb0f3aa","type":"SPACE","url":"/api/v1/public/spaces/0196d3b9-0c9d-7cf2-9c36-2a8f0bb0f3aa"},"title":"Customer escalation procedure","type":"PROCEDURE","updated_at":"2026-06-02T12:32:17.908Z"}},"PublicUsageTotals":{"properties":{"invocation_count":{"type":"integer","title":"Invocation Count","description":"Number of agent invocations represented."},"total_interactions":{"type":"integer","title":"Total Interactions","description":"Distinct LLM calls plus tool-call steps; not an LLM-call count alone."},"average_interactions":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Average Interactions"},"total_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Tokens","description":"Total input and output tokens, or null when metrics are missing."},"total_input_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Input Tokens","description":"Input tokens, including cache reads, or null when missing."},"total_output_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Output Tokens"},"total_cached_input_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Cached Input Tokens","description":"Input tokens served from cache; these are also included in total_input_tokens."},"average_tokens":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Average Tokens"},"average_duration_seconds":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Average Duration Seconds"},"total_cost_amount":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Total Cost Amount","description":"Recorded customer cost in EUR from applicable Interloom price sheets. May be partial when some steps lack pricing; null when customer pricing is disabled or no priced usage exists."},"total_input_cost_amount":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Total Input Cost Amount","description":"Customer input price in EUR, or null when unavailable."},"total_output_cost_amount":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Total Output Cost Amount","description":"Customer output price in EUR, or null when unavailable."},"total_cached_input_cost_amount":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Total Cached Input Cost Amount","description":"Customer cache-read and cache-write input price in EUR, or null when unavailable."},"average_cost_amount":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Average Cost Amount","description":"Average recorded customer cost in EUR across invocations with priced usage, or null when unavailable."}},"type":"object","required":["invocation_count","total_interactions","total_tokens","total_input_tokens","total_cached_input_tokens","total_cost_amount","total_input_cost_amount","total_output_cost_amount","total_cached_input_cost_amount","average_cost_amount"],"title":"PublicUsageTotals"},"QueryDatabaseRequest":{"properties":{"selected_columns":{"items":{"type":"string"},"type":"array","maxItems":100,"minItems":1,"title":"Selected Columns","description":"Unique declared columns to return, in the requested order."},"page_size":{"type":"integer","maximum":100.0,"minimum":1.0,"title":"Page Size","description":"Maximum number of rows to return in this page."},"filters":{"anyOf":[{"items":{"$ref":"#/components/schemas/DatabaseEqualityFilter"},"type":"array","maxItems":5},{"type":"null"}],"title":"Filters","description":"Up to five exact equality filters, combined with AND."},"sort":{"anyOf":[{"$ref":"#/components/schemas/DatabaseSort"},{"type":"null"}],"description":"One scalar sort, or null to order by ascending row key."},"cursor":{"anyOf":[{"type":"string","maxLength":1049600},{"type":"null"}],"title":"Cursor","description":"Opaque next_cursor from the previous page of the same query. Page size may change. Any Database revision change requires a restart."}},"additionalProperties":false,"type":"object","required":["selected_columns","page_size"],"title":"QueryDatabaseRequest"},"QueryDatabaseResponse":{"properties":{"data":{"items":{"additionalProperties":{"$ref":"#/components/schemas/DatabaseRowValue"},"type":"object"},"type":"array","title":"Data","description":"Items in the current page."},"has_more":{"type":"boolean","title":"Has More","description":"Whether more items are available after this page."},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor","description":"Opaque cursor for the next page. Pass this value as cursor on the next request with the same filters and sort options."},"database":{"$ref":"#/components/schemas/DatabaseIdentity"},"observed_revision":{"type":"integer","title":"Observed Revision","description":"Database revision observed by this query."},"returned_count":{"type":"integer","title":"Returned Count","description":"Number of rows returned in data."}},"type":"object","required":["data","has_more","database","observed_revision","returned_count"],"title":"QueryDatabaseResponse"},"ReasoningEffort":{"type":"string","enum":["LOW","MEDIUM","HIGH","XHIGH"],"title":"ReasoningEffort"},"ReferenceTaskSpaceTrigger":{"properties":{"trigger_type":{"type":"string","const":"reference_task","title":"Trigger Type"},"reference_case_id":{"type":"string","format":"uuid","title":"Reference Case Id","description":"ID of the case used to refine new cases in the space."}},"additionalProperties":false,"type":"object","required":["trigger_type","reference_case_id"],"title":"ReferenceTaskSpaceTrigger","example":{"reference_case_id":"0196d3b9-0c9d-7cf2-9c36-2a8f0bb0f3ab","trigger_type":"reference_task"}},"RelationshipDirection":{"type":"string","enum":["INCOMING","OUTGOING"],"title":"RelationshipDirection"},"RelationshipLink":{"properties":{"id":{"type":"string","format":"uuid","title":"Id","description":"Unique identifier for the linked object."},"type":{"$ref":"#/components/schemas/ResourceType","description":"Public resource type for the linked object."},"relationship_type":{"$ref":"#/components/schemas/RelationshipType","description":"Type of relationship connecting the requested object to this object."},"relationship_direction":{"$ref":"#/components/schemas/RelationshipDirection","description":"Direction of the relationship relative to the requested object."},"url":{"type":"string","title":"Url","description":"Canonical public REST URL for the linked resource.","readOnly":true}},"type":"object","required":["id","type","url"],"title":"RelationshipLink"},"RelationshipType":{"type":"string","enum":["OWNS","REFERENCES","AUTO_APPLIED_PROCEDURE","AUTO_ASSIGNEE","AUTO_APPLIED_REFERENCE_TASK","MEMBER_OF","MANAGER_OF"],"title":"RelationshipType"},"RelevantObjectLink":{"properties":{"id":{"type":"string","format":"uuid","title":"Id","description":"Unique identifier for the linked object."},"type":{"$ref":"#/components/schemas/ResourceType","description":"Public resource type for the linked object."},"title":{"type":"string","title":"Title","description":"Object title, name, or ID when neither is available."},"score":{"type":"number","title":"Score","description":"Object relevance score, comparable only within this response."},"source_cases":{"items":{"$ref":"#/components/schemas/CaseLink"},"type":"array","title":"Source Cases","description":"Permitted matched cases with stored outgoing relationships to this object. These links are not ranking contributions."},"url":{"type":"string","title":"Url","description":"Canonical public REST URL for the linked resource.","readOnly":true}},"type":"object","required":["id","type","title","score","source_cases","url"],"title":"RelevantObjectLink"},"RelevantObjectsResponse":{"properties":{"anchor_case":{"$ref":"#/components/schemas/CaseLink","description":"Accessible root case containing the requested case."},"data":{"items":{"$ref":"#/components/schemas/RelevantObjectLink"},"type":"array","title":"Data"}},"type":"object","required":["anchor_case","data"],"title":"RelevantObjectsResponse"},"ReplaceAgentToolsRequest":{"properties":{"tool_ids":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Tool Ids","description":"Tool IDs to assign. For assistants, only custom tool IDs are accepted; existing built-in tools remain assigned."}},"additionalProperties":false,"type":"object","required":["tool_ids"],"title":"ReplaceAgentToolsRequest","example":{"tool_ids":["0196d3b9-0c9d-7cf2-9c36-2a8f0bb0f3ab","019db1c6-2ad0-75c6-9c24-fc1586551f5f"]}},"ResourceLink":{"properties":{"id":{"type":"string","format":"uuid","title":"Id","description":"Unique identifier for the linked object."},"type":{"$ref":"#/components/schemas/ResourceType","description":"Public resource type for the linked object."},"url":{"type":"string","title":"Url","description":"Canonical public REST URL for the linked resource.","readOnly":true}},"type":"object","required":["id","type","url"],"title":"ResourceLink"},"ResourceType":{"type":"string","enum":["SPACE","CASE","AGENT","PROCEDURE","NOTE","FILE","USER","THREAD","SECRET","INVOCATION"],"title":"ResourceType"},"Secret":{"properties":{"id":{"type":"string","format":"uuid","title":"Id","description":"Unique identifier for the secret."},"type":{"type":"string","const":"SECRET","title":"Type","description":"Public resource type for the secret.","default":"SECRET"},"name":{"type":"string","title":"Name","description":"Name used to reference the secret."}},"type":"object","required":["id","name"],"title":"Secret","example":{"id":"0196d3b9-0c9d-7cf2-9c36-2a8f0bb0f3aa","name":"EXAMPLE_API_TOKEN","type":"SECRET"}},"SimilarCase":{"properties":{"id":{"type":"string","format":"uuid","title":"Id","description":"Unique identifier for the linked object."},"type":{"type":"string","const":"CASE","title":"Type","default":"CASE"},"title":{"type":"string","title":"Title"},"status":{"$ref":"#/components/schemas/CaseStatus"},"external_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"External Id"},"tags":{"items":{"type":"string"},"type":"array","title":"Tags"},"summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Summary"},"score":{"type":"number","title":"Score","description":"Similarity score, comparable only within this response."},"semantic_search_contribution":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Semantic Search Contribution","description":"Weighted semantic contribution for unified matching; otherwise null."},"shared_object_match_contribution":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Shared Object Match Contribution","description":"Weighted shared-object contribution for unified matching; otherwise null."},"url":{"type":"string","title":"Url","description":"Canonical public REST URL for the linked resource.","readOnly":true}},"type":"object","required":["id","type","title","status","external_id","tags","summary","score","semantic_search_contribution","shared_object_match_contribution","url"],"title":"SimilarCase"},"SimilarCasesResponse":{"properties":{"anchor_case":{"$ref":"#/components/schemas/CaseLink","description":"Effective retrieval anchor: the containing root for unified matching, or the requested case for semantic matching."},"score_source":{"anyOf":[{"$ref":"#/components/schemas/SimilarTaskScoreSource"},{"type":"string","const":"unified"},{"type":"null"}],"title":"Score Source","description":"Score source shared by all candidates; null when no candidates match."},"data":{"items":{"$ref":"#/components/schemas/SimilarCase"},"type":"array","title":"Data"}},"type":"object","required":["anchor_case","score_source","data"],"title":"SimilarCasesResponse"},"SimilarTaskScoreSource":{"type":"string","enum":["reranker","database_cosine_similarity"],"title":"SimilarTaskScoreSource"},"Space":{"properties":{"id":{"type":"string","format":"uuid","title":"Id","description":"Unique identifier for the object."},"type":{"type":"string","const":"SPACE","title":"Type","description":"Public resource type for the space.","default":"SPACE"},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"Timestamp when the object was created."},"updated_at":{"type":"string","format":"date-time","title":"Updated At","description":"Timestamp when the object was last updated."},"parent":{"anyOf":[{"$ref":"#/components/schemas/ResourceLink"},{"type":"null"}],"description":"Parent object link, or null when the object has no public parent."},"name":{"type":"string","title":"Name","description":"Human-readable space name."},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Optional detailed description for the space."},"is_system":{"type":"boolean","title":"Is System","description":"Whether this is a permanent system space."},"is_public":{"type":"boolean","title":"Is Public","description":"Whether the space is visible to the organization."}},"type":"object","required":["id","created_at","updated_at","name","is_system","is_public"],"title":"Space","example":{"created_at":"2026-06-02T12:32:17.908Z","description":"Engineering cases and procedures.","id":"0196d3b9-0c9d-7cf2-9c36-2a8f0bb0f3aa","is_public":true,"is_system":false,"name":"Engineering","type":"SPACE","updated_at":"2026-06-02T12:32:17.908Z"}},"SpaceListItem":{"properties":{"id":{"type":"string","format":"uuid","title":"Id","description":"Unique identifier for the object."},"type":{"type":"string","const":"SPACE","title":"Type","description":"Public resource type for the space.","default":"SPACE"},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"Timestamp when the object was created."},"updated_at":{"type":"string","format":"date-time","title":"Updated At","description":"Timestamp when the object was last updated."},"parent":{"anyOf":[{"$ref":"#/components/schemas/ResourceLink"},{"type":"null"}],"description":"Parent object link, or null when the object has no public parent."},"name":{"type":"string","title":"Name","description":"Human-readable space name."},"is_system":{"type":"boolean","title":"Is System","description":"Whether this is a permanent system space."},"is_public":{"type":"boolean","title":"Is Public","description":"Whether the space is visible to the organization."}},"type":"object","required":["id","created_at","updated_at","name","is_system","is_public"],"title":"SpaceListItem","example":{"created_at":"2026-06-02T12:32:17.908Z","id":"0196d3b9-0c9d-7cf2-9c36-2a8f0bb0f3aa","is_public":true,"is_system":false,"name":"Engineering","type":"SPACE","updated_at":"2026-06-02T12:32:17.908Z"}},"SpaceMember":{"properties":{"user_id":{"type":"string","format":"uuid","title":"User Id","description":"ID of the user. Agent identities also use user IDs."},"role":{"$ref":"#/components/schemas/SpaceMembershipRole","description":"Role the user has in the space."}},"type":"object","required":["user_id","role"],"title":"SpaceMember"},"SpaceMembershipRole":{"type":"string","enum":["member","manager","owner","viewer"],"title":"SpaceMembershipRole"},"Thread":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"last_thread_event_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Thread Event At"},"events_url":{"type":"string","title":"Events Url","description":"Canonical public REST URL for this thread's paginated events.","readOnly":true}},"type":"object","required":["id","created_at","last_thread_event_at","events_url"],"title":"Thread","example":{"created_at":"2026-06-18T09:12:03.512Z","events_url":"/api/v1/public/threads/0197f1bc-7369-7343-ae04-31dc04cb204d/events","id":"0197f1bc-7369-7343-ae04-31dc04cb204d","last_thread_event_at":"2026-06-18T09:14:22.184Z"}},"ThreadEvent":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"author":{"$ref":"#/components/schemas/ResourceLink"},"payloads":{"items":{"oneOf":[{"$ref":"#/components/schemas/MessagePayload"},{"$ref":"#/components/schemas/FilePayload"},{"$ref":"#/components/schemas/AgentInvocationPayload"}],"discriminator":{"propertyName":"payload_type","mapping":{"agent_invocation":"#/components/schemas/AgentInvocationPayload","file":"#/components/schemas/FilePayload","message":"#/components/schemas/MessagePayload"}}},"type":"array","title":"Payloads"}},"type":"object","required":["id","created_at","updated_at","author","payloads"],"title":"ThreadEvent","example":{"author":{"id":"0197f1bf-caa1-70b8-aed4-bca3ab2ff110","type":"USER","url":"/api/v1/public/users/0197f1bf-caa1-70b8-aed4-bca3ab2ff110"},"created_at":"2026-06-18T09:14:22.184Z","id":"0197f1c2-8b01-771d-ba97-35679a72639a","payloads":[{"payload_type":"message","text":"Check whether the signed contract includes the renewal clause."},{"file":{"id":"0197f1bd-1917-72db-a52d-e459e6a85acc","type":"FILE","url":"/api/v1/public/files/0197f1bd-1917-72db-a52d-e459e6a85acc"},"payload_type":"file"}],"updated_at":"2026-06-18T09:14:22.184Z"}},"Tool":{"properties":{"id":{"type":"string","format":"uuid","title":"Id","description":"Unique identifier for the tool."},"type":{"type":"string","enum":["custom","internal"],"title":"Type","description":"Whether the tool is custom or built into Interloom."},"name":{"type":"string","title":"Name","description":"Human-readable tool name."},"description":{"type":"string","title":"Description","description":"Human-readable tool description."},"script":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Script","description":"Python script for a custom tool managed by the authenticated user, or null otherwise."},"is_editable":{"type":"boolean","title":"Is Editable","description":"Whether the authenticated user manages and can edit the tool."},"input_schema":{"additionalProperties":true,"type":"object","title":"Input Schema","description":"JSON Schema describing the input accepted by the tool."},"manager":{"anyOf":[{"$ref":"#/components/schemas/ResourceLink"},{"type":"null"}],"description":"User who manages the custom tool, or null for internal tools."},"secrets":{"items":{"$ref":"#/components/schemas/ToolSecret"},"type":"array","title":"Secrets","description":"Accessible secrets associated with the custom tool."},"outbound_network":{"anyOf":[{"$ref":"#/components/schemas/OutboundNetwork"},{"type":"null"}],"description":"Outbound network of the custom tool sandbox, or null for internal tools."}},"type":"object","required":["id","type","name","description","script","is_editable","input_schema","secrets"],"title":"Tool","example":{"description":"Search managed contracts.","id":"0196d3b9-0c9d-7cf2-9c36-2a8f0bb0f3ab","input_schema":{"additionalProperties":false,"properties":{"query":{"description":"Contract search query.","type":"string"}},"required":["query"],"type":"object"},"is_editable":true,"manager":{"id":"0196d3b9-0c9d-7cf2-9c36-2a8f0bb0f3aa","type":"USER","url":"/api/v1/public/users/0196d3b9-0c9d-7cf2-9c36-2a8f0bb0f3aa"},"name":"search_contracts","script":"def invoke(query):\n    return search_contracts(query)\n","secrets":[{"id":"0196d3b9-0c9d-7cf2-9c36-2a8f0bb0f3ac","name":"CONTRACTS_API_KEY","type":"SECRET","url":"/api/v1/public/secrets/0196d3b9-0c9d-7cf2-9c36-2a8f0bb0f3ac"}],"type":"custom"}},"ToolCallStep":{"properties":{"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"completed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Completed At"},"id":{"type":"string","format":"uuid","title":"Id"},"invocation":{"$ref":"#/components/schemas/ResourceLink","example":{"id":"0196d3bb-4e10-7bc4-b852-8e38aab931b6","type":"INVOCATION","url":"/api/v1/public/invocations/0196d3bb-4e10-7bc4-b852-8e38aab931b6"}},"token_usage":{"anyOf":[{"$ref":"#/components/schemas/InvocationTokenUsage"},{"type":"null"}],"description":"Allocated share of one LLM response's token usage. Cache read and cache write counts are part of input_tokens. Metrics are recorded asynchronously, so this is null until available; unknown individual counts remain null. Excluded final or unsaved steps mean visible step totals may not equal the invocation total."},"type":{"type":"string","const":"tool_call","title":"Type","default":"tool_call"},"tool_name":{"type":"string","title":"Tool Name"},"input":{"additionalProperties":true,"type":"object","title":"Input","description":"Raw recorded tool input, without redaction or truncation."},"output":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Output","description":"Raw recorded tool output, without redaction or truncation. Null means no output was recorded; an empty string is a recorded empty output."},"duration_seconds":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Duration Seconds","description":"Seconds from creation to completion; null until completion.","readOnly":true}},"type":"object","required":["created_at","updated_at","completed_at","id","invocation","token_usage","tool_name","input","output","duration_seconds"],"title":"ToolCallStep"},"ToolListItem":{"properties":{"id":{"type":"string","format":"uuid","title":"Id","description":"Unique identifier for the tool."},"type":{"type":"string","enum":["custom","internal"],"title":"Type","description":"Whether the tool is custom or built into Interloom."},"name":{"type":"string","title":"Name","description":"Human-readable tool name."},"is_editable":{"type":"boolean","title":"Is Editable","description":"Whether the authenticated user manages and can edit the tool."}},"type":"object","required":["id","type","name","is_editable"],"title":"ToolListItem"},"ToolSecret":{"properties":{"id":{"type":"string","format":"uuid","title":"Id","description":"Unique identifier for the linked object."},"type":{"type":"string","const":"SECRET","title":"Type","description":"Public resource type for the associated secret.","default":"SECRET"},"name":{"type":"string","title":"Name","description":"Name used to reference the associated secret."},"url":{"type":"string","title":"Url","description":"Canonical public REST URL for the linked resource.","readOnly":true}},"type":"object","required":["id","type","url"],"title":"ToolSecret"},"UpdateAgentRequest":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"job_description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Job Description"},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model","description":"Optional model used by the agent. Set to null to use the configured default model. Omit to leave the current model setting unchanged. Use GET /models to discover available model ids."},"reasoning_effort":{"anyOf":[{"$ref":"#/components/schemas/ReasoningEffort"},{"type":"null"}],"description":"Optional reasoning effort stored for the agent. Rejected when unsupported by the selected model. Set to null to clear it."}},"additionalProperties":false,"type":"object","title":"UpdateAgentRequest"},"UpdateCaseRequest":{"properties":{"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"status":{"anyOf":[{"$ref":"#/components/schemas/CaseStatus"},{"type":"null"}]},"assignee_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Assignee Id"},"due_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Due At"},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tags"},"space_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Space Id","description":"Move the case to a Space. Provide exactly one of space_id or parent_case_id when moving a case."},"parent_case_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Parent Case Id","description":"Move the case under a parent Case. Provide exactly one of space_id or parent_case_id when moving a case."}},"type":"object","title":"UpdateCaseRequest"},"UpdateFileRequest":{"properties":{"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tags"},"space_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Space Id","description":"Move the file to a Space, or clear the parent when null. Provide at most one of space_id or case_id."},"case_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Case Id","description":"Move the file to a Case, or clear the parent when null. Provide at most one of space_id or case_id."}},"type":"object","title":"UpdateFileRequest"},"UpdateNoteRequest":{"properties":{"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"body":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Body"},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tags"},"space_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Space Id","description":"Move the note to a Space. Provide exactly one of space_id or case_id when moving a note."},"case_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Case Id","description":"Move the note to a Case. Provide exactly one of space_id or case_id when moving a note."}},"type":"object","title":"UpdateNoteRequest"},"UpdateProcedureRequest":{"properties":{"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title","description":"Human-readable procedure name."},"stages":{"anyOf":[{"items":{"$ref":"#/components/schemas/ProcedureStagePatchRequest"},"type":"array"},{"type":"null"}],"title":"Stages","description":"Complete replacement list of procedure stages, in desired order. Existing procedure stages omitted from this list are deleted."}},"type":"object","title":"UpdateProcedureRequest","example":{"stages":[{"assignee_id":"0196d3ba-2d25-71f2-8940-5828391ad889","id":"0196d3ba-2d25-71f2-8940-5828391ad888","instructions":"Review the case notes and attached files before drafting a response.","title":"Collect context"},{"assignee_id":"0196d3ba-2d25-71f2-8940-5828391ad88a","instructions":"Create a concise response with next steps and any open questions.","title":"Draft customer response"}],"title":"Customer escalation procedure"}},"UpdateSpaceRequest":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"}},"type":"object","title":"UpdateSpaceRequest"},"UpdateToolRequest":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"Updated unique tool name. Omit to leave unchanged."},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Updated tool description. Omit to leave unchanged."},"script":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Script","description":"Updated Python script. Omit to leave unchanged."},"input_schema":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Input Schema","description":"Updated input JSON Schema. Omit to leave unchanged."},"secret_ids":{"anyOf":[{"items":{"type":"string","format":"uuid"},"type":"array"},{"type":"null"}],"title":"Secret Ids","description":"Replacement secret ID list. Pass an empty list to remove all secrets; omit to leave unchanged."},"outbound_network":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Outbound Network","description":"Outbound network id of the tool sandbox: \"internet\", \"disabled\", or an egress lane key. Use GET /outbound-networks to discover ids. Omit to leave unchanged."},"manager_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Manager Id","description":"New manager user ID. The tool must have no associated secrets, and manager_id cannot be combined with other updates."}},"additionalProperties":false,"type":"object","title":"UpdateToolRequest","example":{"description":"Search active managed contracts by customer name.","secret_ids":[]}},"UpsertDatabaseRowsRequest":{"properties":{"expected_revision":{"type":"integer","maximum":9.223372036854776e+18,"minimum":0.0,"title":"Expected Revision","description":"Observed database revision. Preserve this value and the same rows for an exact retry."},"rows":{"items":{"additionalProperties":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"boolean"},{"type":"null"}]},"type":"object"},"type":"array","maxItems":1000,"title":"Rows","description":"Up to 1,000 complete rows, including the declared row-key column. Omitted nullable columns become null."}},"additionalProperties":false,"type":"object","required":["expected_revision","rows"],"title":"UpsertDatabaseRowsRequest"},"UpsertDatabaseRowsResponse":{"properties":{"database_id":{"type":"string","format":"uuid","title":"Database Id"},"committed_revision":{"type":"integer","title":"Committed Revision","description":"Revision committed by this batch."},"resulting_row_count":{"type":"integer","title":"Resulting Row Count","description":"Total row count when this batch committed."},"inserted_count":{"type":"integer","title":"Inserted Count","description":"Number of new rows inserted by this batch."},"updated_count":{"type":"integer","title":"Updated Count","description":"Number of existing rows replaced by this batch."}},"type":"object","required":["database_id","committed_revision","resulting_row_count","inserted_count","updated_count"],"title":"UpsertDatabaseRowsResponse"},"UpsertSpaceMemberRequest":{"properties":{"role":{"type":"string","enum":["member","manager","viewer"],"title":"Role","description":"Role the user should have in the space. Defaults to member, including for an existing membership.","default":"member"}},"type":"object","title":"UpsertSpaceMemberRequest"},"UsageBreakdownsResponse":{"properties":{"data":{"items":{"oneOf":[{"$ref":"#/components/schemas/CaseUsageBreakdown"},{"$ref":"#/components/schemas/AgentUsageBreakdown"},{"$ref":"#/components/schemas/ModelUsageBreakdown"}],"discriminator":{"propertyName":"group_by","mapping":{"agent":"#/components/schemas/AgentUsageBreakdown","case":"#/components/schemas/CaseUsageBreakdown","model":"#/components/schemas/ModelUsageBreakdown"}}},"type":"array","title":"Data"}},"type":"object","required":["data"],"title":"UsageBreakdownsResponse"},"User":{"properties":{"id":{"type":"string","format":"uuid","title":"Id","description":"Unique identifier for the user."},"type":{"type":"string","const":"USER","title":"Type","description":"Public resource type for the user.","default":"USER"},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"Timestamp when the user was created."},"updated_at":{"type":"string","format":"date-time","title":"Updated At","description":"Timestamp when the user was last updated."},"name":{"type":"string","title":"Name","description":"Display name for the user."},"is_pending":{"type":"boolean","title":"Is Pending","description":"True when the user has been invited but has not yet signed in via Zitadel."},"is_deactivated":{"type":"boolean","title":"Is Deactivated","description":"True when the user's organization membership is archived."}},"type":"object","required":["id","created_at","updated_at","name","is_pending","is_deactivated"],"title":"User","example":{"created_at":"2026-06-02T12:32:17.908Z","id":"0196d3b9-0c9d-7cf2-9c36-2a8f0bb0f3ad","is_deactivated":false,"is_pending":false,"name":"Ada Lovelace","type":"USER","updated_at":"2026-06-02T12:32:17.908Z"}},"ValidationErrorBody":{"properties":{"code":{"type":"string","const":"validation_error","title":"Code","description":"Stable machine-readable error code."},"message":{"type":"string","title":"Message","description":"Human-readable error message."},"fields":{"anyOf":[{"items":{"$ref":"#/components/schemas/ValidationErrorField"},"type":"array"},{"type":"null"}],"title":"Fields","description":"Field-specific validation errors, when available."}},"type":"object","required":["code","message"],"title":"ValidationErrorBody"},"ValidationErrorField":{"properties":{"path":{"type":"string","title":"Path","description":"Request field path where the validation error occurred."},"message":{"type":"string","title":"Message","description":"Human-readable validation error message."},"type":{"type":"string","title":"Type","description":"Machine-readable validation error type."}},"type":"object","required":["path","message","type"],"title":"ValidationErrorField"},"ValidationErrorResponse":{"properties":{"error":{"$ref":"#/components/schemas/ValidationErrorBody"}},"type":"object","required":["error"],"title":"ValidationErrorResponse","example":{"error":{"code":"validation_error","fields":[{"message":"Field required.","path":"title","type":"missing"}],"message":"The request body is invalid."}}},"GameObject":{"$defs":{"ResourceLink":{"properties":{"id":{"description":"Unique identifier for the linked object.","format":"uuid","title":"Id","type":"string"},"type":{"$ref":"#/components/schemas/ResourceType","description":"Public resource type for the linked object."},"url":{"description":"Canonical public REST URL for the linked resource.","readOnly":true,"title":"Url","type":"string"}},"required":["id","type","url"],"title":"ResourceLink","type":"object"},"ResourceType":{"enum":["SPACE","CASE","AGENT","PROCEDURE","NOTE","FILE","USER","THREAD","SECRET","INVOCATION"],"title":"ResourceType","type":"string"}},"properties":{"id":{"description":"Unique identifier for the object.","format":"uuid","title":"Id","type":"string"},"type":{"$ref":"#/components/schemas/ResourceType","description":"Public resource type for the object."},"created_at":{"description":"Timestamp when the object was created.","format":"date-time","title":"Created At","type":"string"},"updated_at":{"description":"Timestamp when the object was last updated.","format":"date-time","title":"Updated At","type":"string"},"parent":{"anyOf":[{"$ref":"#/components/schemas/ResourceLink"},{"type":"null"}],"default":null,"description":"Parent object link, or null when the object has no public parent."}},"required":["id","type","created_at","updated_at"],"title":"GameObject","type":"object"}},"securitySchemes":{"ApiKeyAuth":{"type":"http","scheme":"bearer","bearerFormat":"API key","description":"Enter an Interloom API key. Swagger UI sends it as an Authorization: Bearer token."}}},"security":[{"ApiKeyAuth":[]}]}