{"openapi":"3.1.0","info":{"title":"Interloom REST API","version":"preview"},"paths":{"/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":10,"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":"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/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."}}}}},"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."}}}}},"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."}}}}},"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."}}}}},"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."}}}}},"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/files":{"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."}}}}},"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."}}},"file_upload_failed":{"summary":"Failed to upload file.","value":{"error":{"code":"file_upload_failed","message":"Failed to upload file."}}}}}}}}}}},"components":{"schemas":{"AdditionalMetadata":{"properties":{},"additionalProperties":true,"type":"object","title":"AdditionalMetadata"},"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/GameObjectLink"},{"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/GameObjectLink"},{"type":"null"}],"description":"User assigned to the case, or null when unassigned."},"files":{"items":{"$ref":"#/components/schemas/GameObjectLink"},"type":"array","title":"Files","description":"Files attached to the case, represented as public File links."}},"type":"object","required":["id","created_at","updated_at","title","status"],"title":"Case","example":{"assignee":{"id":"0196d3ba-2d25-71f2-8940-5828391ad888","type":"USER"},"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"}],"id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","parent":{"id":"0196d3b9-0c9d-7cf2-9c36-2a8f0bb0f3aa","type":"SPACE"},"status":"open","summary":"Engineering is checking whether the motivator or beans are at fault.","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"},"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"},"CreateFileRequest":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File","description":"File to upload."}},"type":"object","required":["file"],"title":"CreateFileRequest"},"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/GameObjectLink"},{"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."}},"type":"object","required":["id","created_at","updated_at","name","size","mime_type"],"title":"File","example":{"created_at":"2026-06-02T12:32:17.908Z","id":"0196d3b9-0c9d-7cf2-9c36-2a8f0bb0f3aa","mime_type":"application/pdf","name":"quarterly-report.pdf","size":248391,"type":"FILE","updated_at":"2026-06-02T12:32:17.908Z"}},"GameObjectLink":{"properties":{"id":{"type":"string","format":"uuid","title":"Id","description":"Unique identifier for the linked object."},"type":{"$ref":"#/components/schemas/GameObjectType","description":"Public resource type for the linked object."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Url","description":"Canonical public REST URL for the linked object, when the linked object has an addressable public endpoint.","readOnly":true}},"type":"object","required":["id","type"],"title":"GameObjectLink"},"GameObjectType":{"type":"string","enum":["SPACE","CASE","AGENT","PROCEDURE","NOTE","FILE","USER"],"title":"GameObjectType"},"ListCasesResponse":{"properties":{"data":{"items":{"$ref":"#/components/schemas/Case"},"type":"array","title":"Data","description":"Cases in the current page."},"has_more":{"type":"boolean","title":"Has More","description":"Whether more cases 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"},"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"}],"id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","parent":{"id":"0196d3b9-0c9d-7cf2-9c36-2a8f0bb0f3aa","type":"SPACE"},"status":"open","summary":"Engineering is checking whether the motivator or beans are at fault.","tags":["urgent"],"title":"Investigate hyperspace coffee machine","type":"CASE","updated_at":"2026-06-02T12:32:17.908Z"}],"has_more":true,"next_cursor":"P6hfZFcXRWKz_CyWP2avpg"}},"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"},"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":{"GameObjectLink":{"properties":{"id":{"description":"Unique identifier for the linked object.","format":"uuid","title":"Id","type":"string"},"type":{"$ref":"#/components/schemas/GameObjectType","description":"Public resource type for the linked object."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical public REST URL for the linked object, when the linked object has an addressable public endpoint.","readOnly":true,"title":"Url"}},"required":["id","type"],"title":"GameObjectLink","type":"object"},"GameObjectType":{"enum":["SPACE","CASE","AGENT","PROCEDURE","NOTE","FILE","USER"],"title":"GameObjectType","type":"string"}},"properties":{"id":{"description":"Unique identifier for the object.","format":"uuid","title":"Id","type":"string"},"type":{"$ref":"#/components/schemas/GameObjectType","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/GameObjectLink"},{"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":[]}]}