{"openapi":"3.1.0","info":{"title":"Temri","version":"1.0.0","description":"Contract catalog; catalog presence does not claim a deployed handler."},"paths":{"/v1/workspaces":{"get":{"operationId":"workspaces.list","description":"Directory: authenticated issuer+subject before workspace selection; workspace_id may be null. List only current memberships/installation grants and actual pilot enrollment. OAuth requires temri:read.","parameters":[{"name":"limit","in":"query","required":false,"schema":{"default":50,"type":"integer","minimum":1,"maximum":100}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":512}}],"responses":{"200":{"description":"Operation result","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"workspaces":{"maxItems":100,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"name":{"type":"string","minLength":1,"maxLength":160},"created_at":{"type":"number","description":"Finite UTC Unix seconds, including fractional seconds."}},"required":["id","name","created_at"],"additionalProperties":false}},"next_cursor":{"anyOf":[{"type":"string","minLength":1,"maxLength":512},{"type":"null"}]},"enrollment":{"type":"object","properties":{"can_create_workspace":{"type":"boolean"},"policy":{"type":"string","const":"admin_managed_pilot"}},"required":["can_create_workspace","policy"],"additionalProperties":false}},"required":["workspaces","next_cursor","enrollment"],"additionalProperties":false}}}},"default":{"description":"Safe structured error","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_input","unauthenticated","forbidden","enrollment_required","not_found","method_not_allowed","conflict","idempotency_conflict","idempotency_required","budget_exceeded","rate_limited","projection_pending","unavailable","internal"]},"message":{"type":"string","enum":["The request is invalid.","Authentication is required.","This operation is not permitted.","Workspace creation requires pilot enrollment.","The resource was not found.","This method is not supported.","The resource changed. Reload before retrying.","The idempotency key was used for a different request.","An idempotency key is required.","The request exceeds an operation limit.","Too many requests. Retry later.","The search projection is catching up.","The service is temporarily unavailable.","The request could not be completed."]},"status":{"type":"integer","minimum":400,"maximum":599},"retryable":{"type":"boolean"},"request_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"retry_after_seconds":{"anyOf":[{"type":"number","minimum":0,"maximum":3600},{"type":"null"}]}},"required":["code","message","status","retryable","request_id","retry_after_seconds"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}},"security":[{"bearerAuth":[]}],"x-temri-mcp-name":"temri_workspaces_list","x-temri-scopes":["temri:read"],"x-temri-capabilities":[],"x-temri-idempotency":"none","x-temri-replay":"none","x-temri-mcp-exposed":true,"x-temri-migration-only":false,"x-temri-budget":{"max_request_bytes":262144,"max_response_bytes":1048576,"max_items":100,"max_context_chars":0,"max_candidates":0,"max_provider_calls":0,"max_attempts":1,"timeout_ms":10000,"cost_units":1},"x-temri-runtime-validation":"Strict Zod schemas also enforce exact-text, interval, byte-budget and other cross-field invariants."},"post":{"operationId":"workspaces.create","description":"Directory: authenticated human session plus launch enrollment policy before workspace selection; workspace_id may be null. Enrollment denial is enrollment_required (403). Bootstrap the server-resolved actor as root admin.","parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"}}],"responses":{"200":{"description":"Operation result","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"workspace":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"name":{"type":"string","minLength":1,"maxLength":160},"created_at":{"type":"number","description":"Finite UTC Unix seconds, including fractional seconds."}},"required":["id","name","created_at"],"additionalProperties":false}},"required":["workspace"],"additionalProperties":false}}}},"default":{"description":"Safe structured error","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_input","unauthenticated","forbidden","enrollment_required","not_found","method_not_allowed","conflict","idempotency_conflict","idempotency_required","budget_exceeded","rate_limited","projection_pending","unavailable","internal"]},"message":{"type":"string","enum":["The request is invalid.","Authentication is required.","This operation is not permitted.","Workspace creation requires pilot enrollment.","The resource was not found.","This method is not supported.","The resource changed. Reload before retrying.","The idempotency key was used for a different request.","An idempotency key is required.","The request exceeds an operation limit.","Too many requests. Retry later.","The search projection is catching up.","The service is temporarily unavailable.","The request could not be completed."]},"status":{"type":"integer","minimum":400,"maximum":599},"retryable":{"type":"boolean"},"request_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"retry_after_seconds":{"anyOf":[{"type":"number","minimum":0,"maximum":3600},{"type":"null"}]}},"required":["code","message","status","retryable","request_id","retry_after_seconds"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}},"security":[{"bearerAuth":[]}],"x-temri-mcp-name":"temri_workspaces_create","x-temri-scopes":[],"x-temri-capabilities":[],"x-temri-idempotency":"required","x-temri-replay":"exact_result","x-temri-mcp-exposed":true,"x-temri-migration-only":false,"x-temri-budget":{"max_request_bytes":262144,"max_response_bytes":1048576,"max_items":1,"max_context_chars":0,"max_candidates":0,"max_provider_calls":0,"max_attempts":1,"timeout_ms":10000,"cost_units":1},"x-temri-runtime-validation":"Strict Zod schemas also enforce exact-text, interval, byte-budget and other cross-field invariants.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":160}},"required":["name"],"additionalProperties":false}}}}}},"/v1/namespaces":{"get":{"operationId":"namespaces.list","description":"Require every capability on each addressed namespace; absent and unauthorized IDs are indistinguishable.","parameters":[{"name":"limit","in":"query","required":false,"schema":{"default":50,"type":"integer","minimum":1,"maximum":100}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":512}},{"name":"parent_id","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"}}],"responses":{"200":{"description":"Operation result","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"namespaces":{"maxItems":100,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"workspace_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"parent_id":{"anyOf":[{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},{"type":"null"}]},"name":{"type":"string","minLength":1,"maxLength":160},"display_path":{"minItems":1,"maxItems":32,"type":"array","items":{"type":"string","minLength":1,"maxLength":160}},"created_at":{"type":"number","description":"Finite UTC Unix seconds, including fractional seconds."},"updated_at":{"type":"number","description":"Finite UTC Unix seconds, including fractional seconds."}},"required":["id","workspace_id","parent_id","name","display_path","created_at","updated_at"],"additionalProperties":false}},"next_cursor":{"anyOf":[{"type":"string","minLength":1,"maxLength":512},{"type":"null"}]}},"required":["namespaces","next_cursor"],"additionalProperties":false}}}},"default":{"description":"Safe structured error","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_input","unauthenticated","forbidden","enrollment_required","not_found","method_not_allowed","conflict","idempotency_conflict","idempotency_required","budget_exceeded","rate_limited","projection_pending","unavailable","internal"]},"message":{"type":"string","enum":["The request is invalid.","Authentication is required.","This operation is not permitted.","Workspace creation requires pilot enrollment.","The resource was not found.","This method is not supported.","The resource changed. Reload before retrying.","The idempotency key was used for a different request.","An idempotency key is required.","The request exceeds an operation limit.","Too many requests. Retry later.","The search projection is catching up.","The service is temporarily unavailable.","The request could not be completed."]},"status":{"type":"integer","minimum":400,"maximum":599},"retryable":{"type":"boolean"},"request_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"retry_after_seconds":{"anyOf":[{"type":"number","minimum":0,"maximum":3600},{"type":"null"}]}},"required":["code","message","status","retryable","request_id","retry_after_seconds"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}},"security":[{"bearerAuth":[]}],"x-temri-mcp-name":"temri_namespaces_list","x-temri-scopes":["temri:read"],"x-temri-capabilities":["read"],"x-temri-idempotency":"none","x-temri-replay":"none","x-temri-mcp-exposed":true,"x-temri-migration-only":false,"x-temri-budget":{"max_request_bytes":262144,"max_response_bytes":1048576,"max_items":100,"max_context_chars":0,"max_candidates":0,"max_provider_calls":0,"max_attempts":1,"timeout_ms":10000,"cost_units":1},"x-temri-runtime-validation":"Strict Zod schemas also enforce exact-text, interval, byte-budget and other cross-field invariants."},"post":{"operationId":"namespaces.create","description":"Require every capability on each addressed namespace; absent and unauthorized IDs are indistinguishable.","parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"}}],"responses":{"200":{"description":"Operation result","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"namespace":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"workspace_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"parent_id":{"anyOf":[{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},{"type":"null"}]},"name":{"type":"string","minLength":1,"maxLength":160},"display_path":{"minItems":1,"maxItems":32,"type":"array","items":{"type":"string","minLength":1,"maxLength":160}},"created_at":{"type":"number","description":"Finite UTC Unix seconds, including fractional seconds."},"updated_at":{"type":"number","description":"Finite UTC Unix seconds, including fractional seconds."}},"required":["id","workspace_id","parent_id","name","display_path","created_at","updated_at"],"additionalProperties":false},"commit":{"type":"object","properties":{"sequence":{"type":"integer","minimum":0,"maximum":9007199254740991},"recorded_at":{"type":"number","description":"Finite UTC Unix seconds, including fractional seconds."}},"required":["sequence","recorded_at"],"additionalProperties":false}},"required":["namespace","commit"],"additionalProperties":false}}}},"default":{"description":"Safe structured error","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_input","unauthenticated","forbidden","enrollment_required","not_found","method_not_allowed","conflict","idempotency_conflict","idempotency_required","budget_exceeded","rate_limited","projection_pending","unavailable","internal"]},"message":{"type":"string","enum":["The request is invalid.","Authentication is required.","This operation is not permitted.","Workspace creation requires pilot enrollment.","The resource was not found.","This method is not supported.","The resource changed. Reload before retrying.","The idempotency key was used for a different request.","An idempotency key is required.","The request exceeds an operation limit.","Too many requests. Retry later.","The search projection is catching up.","The service is temporarily unavailable.","The request could not be completed."]},"status":{"type":"integer","minimum":400,"maximum":599},"retryable":{"type":"boolean"},"request_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"retry_after_seconds":{"anyOf":[{"type":"number","minimum":0,"maximum":3600},{"type":"null"}]}},"required":["code","message","status","retryable","request_id","retry_after_seconds"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}},"security":[{"bearerAuth":[]}],"x-temri-mcp-name":"temri_namespaces_create","x-temri-scopes":["temri:admin"],"x-temri-capabilities":["admin"],"x-temri-idempotency":"required","x-temri-replay":"exact_result","x-temri-mcp-exposed":true,"x-temri-migration-only":false,"x-temri-budget":{"max_request_bytes":262144,"max_response_bytes":1048576,"max_items":1,"max_context_chars":0,"max_candidates":0,"max_provider_calls":0,"max_attempts":1,"timeout_ms":10000,"cost_units":1},"x-temri-runtime-validation":"Strict Zod schemas also enforce exact-text, interval, byte-budget and other cross-field invariants.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"parent_id":{"anyOf":[{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},{"type":"null"}]},"name":{"type":"string","minLength":1,"maxLength":160}},"required":["parent_id","name"],"additionalProperties":false}}}}}},"/v1/namespaces/{id}":{"get":{"operationId":"namespaces.get","description":"Require every capability on each addressed namespace; absent and unauthorized IDs are indistinguishable.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"}}],"responses":{"200":{"description":"Operation result","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"namespace":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"workspace_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"parent_id":{"anyOf":[{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},{"type":"null"}]},"name":{"type":"string","minLength":1,"maxLength":160},"display_path":{"minItems":1,"maxItems":32,"type":"array","items":{"type":"string","minLength":1,"maxLength":160}},"created_at":{"type":"number","description":"Finite UTC Unix seconds, including fractional seconds."},"updated_at":{"type":"number","description":"Finite UTC Unix seconds, including fractional seconds."}},"required":["id","workspace_id","parent_id","name","display_path","created_at","updated_at"],"additionalProperties":false}},"required":["namespace"],"additionalProperties":false}}}},"default":{"description":"Safe structured error","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_input","unauthenticated","forbidden","enrollment_required","not_found","method_not_allowed","conflict","idempotency_conflict","idempotency_required","budget_exceeded","rate_limited","projection_pending","unavailable","internal"]},"message":{"type":"string","enum":["The request is invalid.","Authentication is required.","This operation is not permitted.","Workspace creation requires pilot enrollment.","The resource was not found.","This method is not supported.","The resource changed. Reload before retrying.","The idempotency key was used for a different request.","An idempotency key is required.","The request exceeds an operation limit.","Too many requests. Retry later.","The search projection is catching up.","The service is temporarily unavailable.","The request could not be completed."]},"status":{"type":"integer","minimum":400,"maximum":599},"retryable":{"type":"boolean"},"request_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"retry_after_seconds":{"anyOf":[{"type":"number","minimum":0,"maximum":3600},{"type":"null"}]}},"required":["code","message","status","retryable","request_id","retry_after_seconds"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}},"security":[{"bearerAuth":[]}],"x-temri-mcp-name":"temri_namespaces_get","x-temri-scopes":["temri:read"],"x-temri-capabilities":["read"],"x-temri-idempotency":"none","x-temri-replay":"none","x-temri-mcp-exposed":true,"x-temri-migration-only":false,"x-temri-budget":{"max_request_bytes":262144,"max_response_bytes":1048576,"max_items":1,"max_context_chars":0,"max_candidates":0,"max_provider_calls":0,"max_attempts":1,"timeout_ms":10000,"cost_units":1},"x-temri-runtime-validation":"Strict Zod schemas also enforce exact-text, interval, byte-budget and other cross-field invariants."},"patch":{"operationId":"namespaces.update","description":"Require every capability on each addressed namespace; absent and unauthorized IDs are indistinguishable.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"}}],"responses":{"200":{"description":"Operation result","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"namespace":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"workspace_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"parent_id":{"anyOf":[{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},{"type":"null"}]},"name":{"type":"string","minLength":1,"maxLength":160},"display_path":{"minItems":1,"maxItems":32,"type":"array","items":{"type":"string","minLength":1,"maxLength":160}},"created_at":{"type":"number","description":"Finite UTC Unix seconds, including fractional seconds."},"updated_at":{"type":"number","description":"Finite UTC Unix seconds, including fractional seconds."}},"required":["id","workspace_id","parent_id","name","display_path","created_at","updated_at"],"additionalProperties":false},"commit":{"type":"object","properties":{"sequence":{"type":"integer","minimum":0,"maximum":9007199254740991},"recorded_at":{"type":"number","description":"Finite UTC Unix seconds, including fractional seconds."}},"required":["sequence","recorded_at"],"additionalProperties":false}},"required":["namespace","commit"],"additionalProperties":false}}}},"default":{"description":"Safe structured error","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_input","unauthenticated","forbidden","enrollment_required","not_found","method_not_allowed","conflict","idempotency_conflict","idempotency_required","budget_exceeded","rate_limited","projection_pending","unavailable","internal"]},"message":{"type":"string","enum":["The request is invalid.","Authentication is required.","This operation is not permitted.","Workspace creation requires pilot enrollment.","The resource was not found.","This method is not supported.","The resource changed. Reload before retrying.","The idempotency key was used for a different request.","An idempotency key is required.","The request exceeds an operation limit.","Too many requests. Retry later.","The search projection is catching up.","The service is temporarily unavailable.","The request could not be completed."]},"status":{"type":"integer","minimum":400,"maximum":599},"retryable":{"type":"boolean"},"request_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"retry_after_seconds":{"anyOf":[{"type":"number","minimum":0,"maximum":3600},{"type":"null"}]}},"required":["code","message","status","retryable","request_id","retry_after_seconds"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}},"security":[{"bearerAuth":[]}],"x-temri-mcp-name":"temri_namespaces_update","x-temri-scopes":["temri:admin"],"x-temri-capabilities":["admin"],"x-temri-idempotency":"required","x-temri-replay":"exact_result","x-temri-mcp-exposed":true,"x-temri-migration-only":false,"x-temri-budget":{"max_request_bytes":262144,"max_response_bytes":1048576,"max_items":1,"max_context_chars":0,"max_candidates":0,"max_provider_calls":0,"max_attempts":1,"timeout_ms":10000,"cost_units":1},"x-temri-runtime-validation":"Strict Zod schemas also enforce exact-text, interval, byte-budget and other cross-field invariants.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":160}},"required":["name"],"additionalProperties":false}}}}}},"/v1/namespaces/{id}/grants":{"put":{"operationId":"namespaces.grants.put","description":"Ledger owns grants. Require namespace admin and enforce every grant capability/inherited subtree is no broader than the caller; replacement revokes omitted grants immediately.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"}}],"responses":{"200":{"description":"Operation result","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"namespace_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"grants":{"maxItems":100,"type":"array","items":{"type":"object","properties":{"target":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","const":"actor"},"actor_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"}},"required":["kind","actor_id"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"installation"},"product_installation_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"}},"required":["kind","product_installation_id"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"credential"},"credential_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"}},"required":["kind","credential_id"],"additionalProperties":false}]},"capabilities":{"maxItems":6,"type":"array","items":{"type":"string","enum":["read","observe","verify","correct","forget","admin"]}},"inherit":{"type":"boolean"}},"required":["target","capabilities","inherit"],"additionalProperties":false}},"commit":{"type":"object","properties":{"sequence":{"type":"integer","minimum":0,"maximum":9007199254740991},"recorded_at":{"type":"number","description":"Finite UTC Unix seconds, including fractional seconds."}},"required":["sequence","recorded_at"],"additionalProperties":false}},"required":["namespace_id","grants","commit"],"additionalProperties":false}}}},"default":{"description":"Safe structured error","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_input","unauthenticated","forbidden","enrollment_required","not_found","method_not_allowed","conflict","idempotency_conflict","idempotency_required","budget_exceeded","rate_limited","projection_pending","unavailable","internal"]},"message":{"type":"string","enum":["The request is invalid.","Authentication is required.","This operation is not permitted.","Workspace creation requires pilot enrollment.","The resource was not found.","This method is not supported.","The resource changed. Reload before retrying.","The idempotency key was used for a different request.","An idempotency key is required.","The request exceeds an operation limit.","Too many requests. Retry later.","The search projection is catching up.","The service is temporarily unavailable.","The request could not be completed."]},"status":{"type":"integer","minimum":400,"maximum":599},"retryable":{"type":"boolean"},"request_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"retry_after_seconds":{"anyOf":[{"type":"number","minimum":0,"maximum":3600},{"type":"null"}]}},"required":["code","message","status","retryable","request_id","retry_after_seconds"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}},"security":[{"bearerAuth":[]}],"x-temri-mcp-name":"temri_namespaces_grants_put","x-temri-scopes":["temri:admin"],"x-temri-capabilities":["admin"],"x-temri-idempotency":"required","x-temri-replay":"exact_result","x-temri-mcp-exposed":true,"x-temri-migration-only":false,"x-temri-budget":{"max_request_bytes":262144,"max_response_bytes":1048576,"max_items":100,"max_context_chars":0,"max_candidates":0,"max_provider_calls":0,"max_attempts":1,"timeout_ms":10000,"cost_units":1},"x-temri-runtime-validation":"Strict Zod schemas also enforce exact-text, interval, byte-budget and other cross-field invariants.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"grants":{"maxItems":100,"type":"array","items":{"type":"object","properties":{"target":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","const":"actor"},"actor_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"}},"required":["kind","actor_id"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"installation"},"product_installation_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"}},"required":["kind","product_installation_id"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"credential"},"credential_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"}},"required":["kind","credential_id"],"additionalProperties":false}]},"capabilities":{"maxItems":6,"type":"array","items":{"type":"string","enum":["read","observe","verify","correct","forget","admin"]}},"inherit":{"type":"boolean"}},"required":["target","capabilities","inherit"],"additionalProperties":false}}},"required":["grants"],"additionalProperties":false}}}}}},"/v1/evidence":{"post":{"operationId":"evidence.create","description":"Require observe. Launch source payload is the exact UTF-8 excerpt: compute SHA256(excerpt) on the server and require supplied content_root_sha256 to equal it. Deduplicate by server-computed content hash; source locator and caller hash do not manufacture independent support. Import snapshot roots are separate provenance.","parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"}}],"responses":{"200":{"description":"Operation result","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"evidence":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"namespace_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"source_locator":{"type":"string","minLength":1,"maxLength":2048},"content_root_sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"excerpt":{"type":"string","minLength":1,"maxLength":65536,"pattern":"^(?:[^\\uD800-\\uDFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF])*$"},"excerpt_sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"recorder_actor_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"recorded_at":{"type":"number","description":"Finite UTC Unix seconds, including fractional seconds."}},"required":["id","namespace_id","source_locator","content_root_sha256","excerpt","excerpt_sha256","recorder_actor_id","recorded_at"],"additionalProperties":false},"commit":{"type":"object","properties":{"sequence":{"type":"integer","minimum":0,"maximum":9007199254740991},"recorded_at":{"type":"number","description":"Finite UTC Unix seconds, including fractional seconds."}},"required":["sequence","recorded_at"],"additionalProperties":false}},"required":["evidence","commit"],"additionalProperties":false}}}},"default":{"description":"Safe structured error","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_input","unauthenticated","forbidden","enrollment_required","not_found","method_not_allowed","conflict","idempotency_conflict","idempotency_required","budget_exceeded","rate_limited","projection_pending","unavailable","internal"]},"message":{"type":"string","enum":["The request is invalid.","Authentication is required.","This operation is not permitted.","Workspace creation requires pilot enrollment.","The resource was not found.","This method is not supported.","The resource changed. Reload before retrying.","The idempotency key was used for a different request.","An idempotency key is required.","The request exceeds an operation limit.","Too many requests. Retry later.","The search projection is catching up.","The service is temporarily unavailable.","The request could not be completed."]},"status":{"type":"integer","minimum":400,"maximum":599},"retryable":{"type":"boolean"},"request_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"retry_after_seconds":{"anyOf":[{"type":"number","minimum":0,"maximum":3600},{"type":"null"}]}},"required":["code","message","status","retryable","request_id","retry_after_seconds"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}},"security":[{"bearerAuth":[]}],"x-temri-mcp-name":"temri_evidence_create","x-temri-scopes":["temri:observe"],"x-temri-capabilities":["observe"],"x-temri-idempotency":"required","x-temri-replay":"exact_result","x-temri-mcp-exposed":true,"x-temri-migration-only":false,"x-temri-budget":{"max_request_bytes":262144,"max_response_bytes":1048576,"max_items":1,"max_context_chars":0,"max_candidates":0,"max_provider_calls":0,"max_attempts":1,"timeout_ms":10000,"cost_units":1},"x-temri-runtime-validation":"Strict Zod schemas also enforce exact-text, interval, byte-budget and other cross-field invariants.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"namespace_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"source_locator":{"type":"string","minLength":1,"maxLength":2048},"content_root_sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"excerpt":{"type":"string","minLength":1,"maxLength":65536,"pattern":"^(?:[^\\uD800-\\uDFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF])*$"}},"required":["namespace_id","source_locator","content_root_sha256","excerpt"],"additionalProperties":false}}}}}},"/v1/evidence/{id}":{"get":{"operationId":"evidence.get","description":"Require every capability on each addressed namespace; absent and unauthorized IDs are indistinguishable.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"}}],"responses":{"200":{"description":"Operation result","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"evidence":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"namespace_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"source_locator":{"type":"string","minLength":1,"maxLength":2048},"content_root_sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"excerpt":{"type":"string","minLength":1,"maxLength":65536,"pattern":"^(?:[^\\uD800-\\uDFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF])*$"},"excerpt_sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"recorder_actor_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"recorded_at":{"type":"number","description":"Finite UTC Unix seconds, including fractional seconds."}},"required":["id","namespace_id","source_locator","content_root_sha256","excerpt","excerpt_sha256","recorder_actor_id","recorded_at"],"additionalProperties":false},"verifications":{"maxItems":32,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"evidence_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"content_root_sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"excerpt_sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"verdict":{"type":"string","enum":["verified","rejected"]},"verifier_actor_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"recorded_at":{"type":"number","description":"Finite UTC Unix seconds, including fractional seconds."}},"required":["id","evidence_id","content_root_sha256","excerpt_sha256","verdict","verifier_actor_id","recorded_at"],"additionalProperties":false}},"next_cursor":{"anyOf":[{"type":"string","minLength":1,"maxLength":512},{"type":"null"}]}},"required":["evidence","verifications","next_cursor"],"additionalProperties":false}}}},"default":{"description":"Safe structured error","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_input","unauthenticated","forbidden","enrollment_required","not_found","method_not_allowed","conflict","idempotency_conflict","idempotency_required","budget_exceeded","rate_limited","projection_pending","unavailable","internal"]},"message":{"type":"string","enum":["The request is invalid.","Authentication is required.","This operation is not permitted.","Workspace creation requires pilot enrollment.","The resource was not found.","This method is not supported.","The resource changed. Reload before retrying.","The idempotency key was used for a different request.","An idempotency key is required.","The request exceeds an operation limit.","Too many requests. Retry later.","The search projection is catching up.","The service is temporarily unavailable.","The request could not be completed."]},"status":{"type":"integer","minimum":400,"maximum":599},"retryable":{"type":"boolean"},"request_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"retry_after_seconds":{"anyOf":[{"type":"number","minimum":0,"maximum":3600},{"type":"null"}]}},"required":["code","message","status","retryable","request_id","retry_after_seconds"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}},"security":[{"bearerAuth":[]}],"x-temri-mcp-name":"temri_evidence_get","x-temri-scopes":["temri:read"],"x-temri-capabilities":["read"],"x-temri-idempotency":"none","x-temri-replay":"none","x-temri-mcp-exposed":true,"x-temri-migration-only":false,"x-temri-budget":{"max_request_bytes":262144,"max_response_bytes":1048576,"max_items":1,"max_context_chars":0,"max_candidates":0,"max_provider_calls":0,"max_attempts":1,"timeout_ms":10000,"cost_units":1},"x-temri-runtime-validation":"Strict Zod schemas also enforce exact-text, interval, byte-budget and other cross-field invariants."}},"/v1/evidence/{id}/verifications":{"post":{"operationId":"evidence.verify","description":"Require verify on the evidence namespace. Compare both hashes with immutable ledger evidence; recorder identity and source metadata are not verification.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"}}],"responses":{"200":{"description":"Operation result","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"verification":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"evidence_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"content_root_sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"excerpt_sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"verdict":{"type":"string","enum":["verified","rejected"]},"verifier_actor_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"recorded_at":{"type":"number","description":"Finite UTC Unix seconds, including fractional seconds."}},"required":["id","evidence_id","content_root_sha256","excerpt_sha256","verdict","verifier_actor_id","recorded_at"],"additionalProperties":false},"commit":{"type":"object","properties":{"sequence":{"type":"integer","minimum":0,"maximum":9007199254740991},"recorded_at":{"type":"number","description":"Finite UTC Unix seconds, including fractional seconds."}},"required":["sequence","recorded_at"],"additionalProperties":false}},"required":["verification","commit"],"additionalProperties":false}}}},"default":{"description":"Safe structured error","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_input","unauthenticated","forbidden","enrollment_required","not_found","method_not_allowed","conflict","idempotency_conflict","idempotency_required","budget_exceeded","rate_limited","projection_pending","unavailable","internal"]},"message":{"type":"string","enum":["The request is invalid.","Authentication is required.","This operation is not permitted.","Workspace creation requires pilot enrollment.","The resource was not found.","This method is not supported.","The resource changed. Reload before retrying.","The idempotency key was used for a different request.","An idempotency key is required.","The request exceeds an operation limit.","Too many requests. Retry later.","The search projection is catching up.","The service is temporarily unavailable.","The request could not be completed."]},"status":{"type":"integer","minimum":400,"maximum":599},"retryable":{"type":"boolean"},"request_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"retry_after_seconds":{"anyOf":[{"type":"number","minimum":0,"maximum":3600},{"type":"null"}]}},"required":["code","message","status","retryable","request_id","retry_after_seconds"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}},"security":[{"bearerAuth":[]}],"x-temri-mcp-name":"temri_evidence_verify","x-temri-scopes":["temri:verify"],"x-temri-capabilities":["verify"],"x-temri-idempotency":"required","x-temri-replay":"exact_result","x-temri-mcp-exposed":true,"x-temri-migration-only":false,"x-temri-budget":{"max_request_bytes":262144,"max_response_bytes":1048576,"max_items":1,"max_context_chars":0,"max_candidates":0,"max_provider_calls":0,"max_attempts":1,"timeout_ms":10000,"cost_units":1},"x-temri-runtime-validation":"Strict Zod schemas also enforce exact-text, interval, byte-budget and other cross-field invariants.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"expected_content_root_sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"expected_excerpt_sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"verdict":{"type":"string","enum":["verified","rejected"]}},"required":["expected_content_root_sha256","expected_excerpt_sha256","verdict"],"additionalProperties":false}}}}}},"/v1/memories":{"post":{"operationId":"memories.create","description":"Require every capability on each addressed namespace; absent and unauthorized IDs are indistinguishable.","parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"}}],"responses":{"200":{"description":"Operation result","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"memory":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"namespace_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"kind":{"type":"string","enum":["claim","episode","procedure"]},"generation":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["id","namespace_id","kind","generation"],"additionalProperties":false},"revision":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"memory_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"namespace_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"kind":{"type":"string","enum":["claim","episode","procedure"]},"generation":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"text":{"type":"string","minLength":1,"maxLength":32768,"pattern":"^(?:[^\\uD800-\\uDFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF])*$"},"status":{"type":"string","enum":["candidate","asserted"]},"valid_from":{"type":"number","description":"Finite UTC Unix seconds, including fractional seconds."},"valid_to":{"anyOf":[{"type":"number","description":"Finite UTC Unix seconds, including fractional seconds."},{"type":"null"}]},"recorded_at":{"type":"number","description":"Finite UTC Unix seconds, including fractional seconds."},"recorded_until":{"anyOf":[{"type":"number","description":"Finite UTC Unix seconds, including fractional seconds."},{"type":"null"}]},"evidence_ids":{"maxItems":32,"type":"array","items":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"}},"support_revision_ids":{"maxItems":32,"type":"array","items":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"}},"attestation":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"claim_text":{"type":"string","minLength":1,"maxLength":32768,"pattern":"^(?:[^\\uD800-\\uDFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF])*$"},"claim_sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"evidence_ids":{"minItems":1,"maxItems":32,"type":"array","items":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"}},"verification_ids":{"minItems":1,"maxItems":32,"type":"array","items":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"}},"verifier_actor_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"recorded_at":{"type":"number","description":"Finite UTC Unix seconds, including fractional seconds."}},"required":["id","claim_text","claim_sha256","evidence_ids","verification_ids","verifier_actor_id","recorded_at"],"additionalProperties":false},{"type":"null"}]},"invalidation":{"anyOf":[{"type":"object","properties":{"recorded_at":{"type":"number","description":"Finite UTC Unix seconds, including fractional seconds."},"cause_revision_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"reason":{"type":"string","enum":["support_corrected","support_deleted"]}},"required":["recorded_at","cause_revision_id","reason"],"additionalProperties":false},{"type":"null"}]}},"required":["id","memory_id","namespace_id","kind","generation","text","status","valid_from","valid_to","recorded_at","recorded_until","evidence_ids","support_revision_ids","attestation","invalidation"],"additionalProperties":false},"commit":{"type":"object","properties":{"sequence":{"type":"integer","minimum":0,"maximum":9007199254740991},"recorded_at":{"type":"number","description":"Finite UTC Unix seconds, including fractional seconds."}},"required":["sequence","recorded_at"],"additionalProperties":false}},"required":["memory","revision","commit"],"additionalProperties":false}}}},"default":{"description":"Safe structured error","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_input","unauthenticated","forbidden","enrollment_required","not_found","method_not_allowed","conflict","idempotency_conflict","idempotency_required","budget_exceeded","rate_limited","projection_pending","unavailable","internal"]},"message":{"type":"string","enum":["The request is invalid.","Authentication is required.","This operation is not permitted.","Workspace creation requires pilot enrollment.","The resource was not found.","This method is not supported.","The resource changed. Reload before retrying.","The idempotency key was used for a different request.","An idempotency key is required.","The request exceeds an operation limit.","Too many requests. Retry later.","The search projection is catching up.","The service is temporarily unavailable.","The request could not be completed."]},"status":{"type":"integer","minimum":400,"maximum":599},"retryable":{"type":"boolean"},"request_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"retry_after_seconds":{"anyOf":[{"type":"number","minimum":0,"maximum":3600},{"type":"null"}]}},"required":["code","message","status","retryable","request_id","retry_after_seconds"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}},"security":[{"bearerAuth":[]}],"x-temri-mcp-name":"temri_memories_create","x-temri-scopes":["temri:observe"],"x-temri-capabilities":["observe"],"x-temri-idempotency":"required","x-temri-replay":"exact_result","x-temri-mcp-exposed":true,"x-temri-migration-only":false,"x-temri-budget":{"max_request_bytes":262144,"max_response_bytes":1048576,"max_items":1,"max_context_chars":0,"max_candidates":0,"max_provider_calls":0,"max_attempts":1,"timeout_ms":10000,"cost_units":1},"x-temri-runtime-validation":"Strict Zod schemas also enforce exact-text, interval, byte-budget and other cross-field invariants.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"namespace_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"kind":{"type":"string","enum":["claim","episode","procedure"]},"text":{"type":"string","minLength":1,"maxLength":32768,"pattern":"^(?:[^\\uD800-\\uDFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF])*$"},"valid_from":{"type":"number","description":"Finite UTC Unix seconds, including fractional seconds."},"valid_to":{"default":null,"anyOf":[{"type":"number","description":"Finite UTC Unix seconds, including fractional seconds."},{"type":"null"}]},"evidence_ids":{"default":[],"maxItems":32,"type":"array","items":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"}},"support_revision_ids":{"default":[],"maxItems":32,"type":"array","items":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"}}},"required":["namespace_id","kind","text","valid_from"],"additionalProperties":false}}}}}},"/v1/memories/{id}":{"get":{"operationId":"memories.get","description":"Require every capability on each addressed namespace; absent and unauthorized IDs are indistinguishable.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"}},{"name":"as_of","in":"query","required":false,"schema":{"type":"number","description":"Finite UTC Unix seconds, including fractional seconds."}},{"name":"known_at","in":"query","required":false,"schema":{"type":"number","description":"Finite UTC Unix seconds, including fractional seconds."}},{"name":"include_evidence","in":"query","required":false,"schema":{"default":false,"type":"boolean"}}],"responses":{"200":{"description":"Operation result","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"view":{"type":"object","properties":{"memory":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"namespace_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"kind":{"type":"string","enum":["claim","episode","procedure"]},"generation":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["id","namespace_id","kind","generation"],"additionalProperties":false},"revision":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"memory_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"namespace_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"kind":{"type":"string","enum":["claim","episode","procedure"]},"generation":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"text":{"type":"string","minLength":1,"maxLength":32768,"pattern":"^(?:[^\\uD800-\\uDFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF])*$"},"status":{"type":"string","enum":["candidate","asserted"]},"valid_from":{"type":"number","description":"Finite UTC Unix seconds, including fractional seconds."},"valid_to":{"anyOf":[{"type":"number","description":"Finite UTC Unix seconds, including fractional seconds."},{"type":"null"}]},"recorded_at":{"type":"number","description":"Finite UTC Unix seconds, including fractional seconds."},"recorded_until":{"anyOf":[{"type":"number","description":"Finite UTC Unix seconds, including fractional seconds."},{"type":"null"}]},"evidence_ids":{"maxItems":32,"type":"array","items":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"}},"support_revision_ids":{"maxItems":32,"type":"array","items":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"}},"attestation":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"claim_text":{"type":"string","minLength":1,"maxLength":32768,"pattern":"^(?:[^\\uD800-\\uDFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF])*$"},"claim_sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"evidence_ids":{"minItems":1,"maxItems":32,"type":"array","items":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"}},"verification_ids":{"minItems":1,"maxItems":32,"type":"array","items":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"}},"verifier_actor_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"recorded_at":{"type":"number","description":"Finite UTC Unix seconds, including fractional seconds."}},"required":["id","claim_text","claim_sha256","evidence_ids","verification_ids","verifier_actor_id","recorded_at"],"additionalProperties":false},{"type":"null"}]},"invalidation":{"anyOf":[{"type":"object","properties":{"recorded_at":{"type":"number","description":"Finite UTC Unix seconds, including fractional seconds."},"cause_revision_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"reason":{"type":"string","enum":["support_corrected","support_deleted"]}},"required":["recorded_at","cause_revision_id","reason"],"additionalProperties":false},{"type":"null"}]}},"required":["id","memory_id","namespace_id","kind","generation","text","status","valid_from","valid_to","recorded_at","recorded_until","evidence_ids","support_revision_ids","attestation","invalidation"],"additionalProperties":false},"evidence":{"maxItems":32,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"namespace_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"source_locator":{"type":"string","minLength":1,"maxLength":2048},"content_root_sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"excerpt":{"type":"string","minLength":1,"maxLength":65536,"pattern":"^(?:[^\\uD800-\\uDFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF])*$"},"excerpt_sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"recorder_actor_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"recorded_at":{"type":"number","description":"Finite UTC Unix seconds, including fractional seconds."}},"required":["id","namespace_id","source_locator","content_root_sha256","excerpt","excerpt_sha256","recorder_actor_id","recorded_at"],"additionalProperties":false}},"verifications":{"maxItems":32,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"evidence_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"content_root_sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"excerpt_sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"verdict":{"type":"string","enum":["verified","rejected"]},"verifier_actor_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"recorded_at":{"type":"number","description":"Finite UTC Unix seconds, including fractional seconds."}},"required":["id","evidence_id","content_root_sha256","excerpt_sha256","verdict","verifier_actor_id","recorded_at"],"additionalProperties":false}},"stale":{"type":"boolean"}},"required":["memory","revision","evidence","verifications","stale"],"additionalProperties":false},"as_of":{"type":"number","description":"Finite UTC Unix seconds, including fractional seconds."},"known_at":{"type":"number","description":"Finite UTC Unix seconds, including fractional seconds."}},"required":["view","as_of","known_at"],"additionalProperties":false}}}},"default":{"description":"Safe structured error","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_input","unauthenticated","forbidden","enrollment_required","not_found","method_not_allowed","conflict","idempotency_conflict","idempotency_required","budget_exceeded","rate_limited","projection_pending","unavailable","internal"]},"message":{"type":"string","enum":["The request is invalid.","Authentication is required.","This operation is not permitted.","Workspace creation requires pilot enrollment.","The resource was not found.","This method is not supported.","The resource changed. Reload before retrying.","The idempotency key was used for a different request.","An idempotency key is required.","The request exceeds an operation limit.","Too many requests. Retry later.","The search projection is catching up.","The service is temporarily unavailable.","The request could not be completed."]},"status":{"type":"integer","minimum":400,"maximum":599},"retryable":{"type":"boolean"},"request_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"retry_after_seconds":{"anyOf":[{"type":"number","minimum":0,"maximum":3600},{"type":"null"}]}},"required":["code","message","status","retryable","request_id","retry_after_seconds"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}},"security":[{"bearerAuth":[]}],"x-temri-mcp-name":"temri_memories_get","x-temri-scopes":["temri:read"],"x-temri-capabilities":["read"],"x-temri-idempotency":"none","x-temri-replay":"none","x-temri-mcp-exposed":true,"x-temri-migration-only":false,"x-temri-budget":{"max_request_bytes":262144,"max_response_bytes":1048576,"max_items":1,"max_context_chars":0,"max_candidates":0,"max_provider_calls":0,"max_attempts":1,"timeout_ms":10000,"cost_units":1},"x-temri-runtime-validation":"Strict Zod schemas also enforce exact-text, interval, byte-budget and other cross-field invariants."}},"/v1/memories/{id}/history":{"get":{"operationId":"memories.history","description":"Require read for the memory and every expansion. Exclude purged content at all known_at values.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"}},{"name":"limit","in":"query","required":false,"schema":{"default":50,"type":"integer","minimum":1,"maximum":100}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":512}},{"name":"known_at","in":"query","required":false,"schema":{"type":"number","description":"Finite UTC Unix seconds, including fractional seconds."}}],"responses":{"200":{"description":"Operation result","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"memory":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"namespace_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"kind":{"type":"string","enum":["claim","episode","procedure"]},"generation":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["id","namespace_id","kind","generation"],"additionalProperties":false},"revisions":{"maxItems":100,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"memory_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"namespace_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"kind":{"type":"string","enum":["claim","episode","procedure"]},"generation":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"text":{"type":"string","minLength":1,"maxLength":32768,"pattern":"^(?:[^\\uD800-\\uDFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF])*$"},"status":{"type":"string","enum":["candidate","asserted"]},"valid_from":{"type":"number","description":"Finite UTC Unix seconds, including fractional seconds."},"valid_to":{"anyOf":[{"type":"number","description":"Finite UTC Unix seconds, including fractional seconds."},{"type":"null"}]},"recorded_at":{"type":"number","description":"Finite UTC Unix seconds, including fractional seconds."},"recorded_until":{"anyOf":[{"type":"number","description":"Finite UTC Unix seconds, including fractional seconds."},{"type":"null"}]},"evidence_ids":{"maxItems":32,"type":"array","items":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"}},"support_revision_ids":{"maxItems":32,"type":"array","items":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"}},"attestation":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"claim_text":{"type":"string","minLength":1,"maxLength":32768,"pattern":"^(?:[^\\uD800-\\uDFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF])*$"},"claim_sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"evidence_ids":{"minItems":1,"maxItems":32,"type":"array","items":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"}},"verification_ids":{"minItems":1,"maxItems":32,"type":"array","items":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"}},"verifier_actor_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"recorded_at":{"type":"number","description":"Finite UTC Unix seconds, including fractional seconds."}},"required":["id","claim_text","claim_sha256","evidence_ids","verification_ids","verifier_actor_id","recorded_at"],"additionalProperties":false},{"type":"null"}]},"invalidation":{"anyOf":[{"type":"object","properties":{"recorded_at":{"type":"number","description":"Finite UTC Unix seconds, including fractional seconds."},"cause_revision_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"reason":{"type":"string","enum":["support_corrected","support_deleted"]}},"required":["recorded_at","cause_revision_id","reason"],"additionalProperties":false},{"type":"null"}]}},"required":["id","memory_id","namespace_id","kind","generation","text","status","valid_from","valid_to","recorded_at","recorded_until","evidence_ids","support_revision_ids","attestation","invalidation"],"additionalProperties":false}},"next_cursor":{"anyOf":[{"type":"string","minLength":1,"maxLength":512},{"type":"null"}]}},"required":["memory","revisions","next_cursor"],"additionalProperties":false}}}},"default":{"description":"Safe structured error","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_input","unauthenticated","forbidden","enrollment_required","not_found","method_not_allowed","conflict","idempotency_conflict","idempotency_required","budget_exceeded","rate_limited","projection_pending","unavailable","internal"]},"message":{"type":"string","enum":["The request is invalid.","Authentication is required.","This operation is not permitted.","Workspace creation requires pilot enrollment.","The resource was not found.","This method is not supported.","The resource changed. Reload before retrying.","The idempotency key was used for a different request.","An idempotency key is required.","The request exceeds an operation limit.","Too many requests. Retry later.","The search projection is catching up.","The service is temporarily unavailable.","The request could not be completed."]},"status":{"type":"integer","minimum":400,"maximum":599},"retryable":{"type":"boolean"},"request_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"retry_after_seconds":{"anyOf":[{"type":"number","minimum":0,"maximum":3600},{"type":"null"}]}},"required":["code","message","status","retryable","request_id","retry_after_seconds"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}},"security":[{"bearerAuth":[]}],"x-temri-mcp-name":"temri_memories_history","x-temri-scopes":["temri:read"],"x-temri-capabilities":["read"],"x-temri-idempotency":"none","x-temri-replay":"none","x-temri-mcp-exposed":true,"x-temri-migration-only":false,"x-temri-budget":{"max_request_bytes":262144,"max_response_bytes":1048576,"max_items":100,"max_context_chars":0,"max_candidates":0,"max_provider_calls":0,"max_attempts":1,"timeout_ms":10000,"cost_units":1},"x-temri-runtime-validation":"Strict Zod schemas also enforce exact-text, interval, byte-budget and other cross-field invariants."}},"/v1/memories/{id}/corrections":{"post":{"operationId":"memories.correct","description":"Require correct; asserted promotion additionally requires temri:verify and namespace verify. Check expected generation, exact attested text, stored verified evidence and same-namespace asserted support. Preserve prefix/suffix and invalidate transitive derivations.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"}}],"responses":{"200":{"description":"Operation result","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"memory":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"namespace_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"kind":{"type":"string","enum":["claim","episode","procedure"]},"generation":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["id","namespace_id","kind","generation"],"additionalProperties":false},"revisions":{"minItems":1,"maxItems":100,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"memory_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"namespace_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"kind":{"type":"string","enum":["claim","episode","procedure"]},"generation":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"text":{"type":"string","minLength":1,"maxLength":32768,"pattern":"^(?:[^\\uD800-\\uDFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF])*$"},"status":{"type":"string","enum":["candidate","asserted"]},"valid_from":{"type":"number","description":"Finite UTC Unix seconds, including fractional seconds."},"valid_to":{"anyOf":[{"type":"number","description":"Finite UTC Unix seconds, including fractional seconds."},{"type":"null"}]},"recorded_at":{"type":"number","description":"Finite UTC Unix seconds, including fractional seconds."},"recorded_until":{"anyOf":[{"type":"number","description":"Finite UTC Unix seconds, including fractional seconds."},{"type":"null"}]},"evidence_ids":{"maxItems":32,"type":"array","items":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"}},"support_revision_ids":{"maxItems":32,"type":"array","items":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"}},"attestation":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"claim_text":{"type":"string","minLength":1,"maxLength":32768,"pattern":"^(?:[^\\uD800-\\uDFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF])*$"},"claim_sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"evidence_ids":{"minItems":1,"maxItems":32,"type":"array","items":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"}},"verification_ids":{"minItems":1,"maxItems":32,"type":"array","items":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"}},"verifier_actor_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"recorded_at":{"type":"number","description":"Finite UTC Unix seconds, including fractional seconds."}},"required":["id","claim_text","claim_sha256","evidence_ids","verification_ids","verifier_actor_id","recorded_at"],"additionalProperties":false},{"type":"null"}]},"invalidation":{"anyOf":[{"type":"object","properties":{"recorded_at":{"type":"number","description":"Finite UTC Unix seconds, including fractional seconds."},"cause_revision_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"reason":{"type":"string","enum":["support_corrected","support_deleted"]}},"required":["recorded_at","cause_revision_id","reason"],"additionalProperties":false},{"type":"null"}]}},"required":["id","memory_id","namespace_id","kind","generation","text","status","valid_from","valid_to","recorded_at","recorded_until","evidence_ids","support_revision_ids","attestation","invalidation"],"additionalProperties":false}},"invalidated_revision_ids":{"maxItems":100,"type":"array","items":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"}},"next_invalidation_cursor":{"anyOf":[{"type":"string","minLength":1,"maxLength":512},{"type":"null"}]},"commit":{"type":"object","properties":{"sequence":{"type":"integer","minimum":0,"maximum":9007199254740991},"recorded_at":{"type":"number","description":"Finite UTC Unix seconds, including fractional seconds."}},"required":["sequence","recorded_at"],"additionalProperties":false}},"required":["memory","revisions","invalidated_revision_ids","next_invalidation_cursor","commit"],"additionalProperties":false}}}},"default":{"description":"Safe structured error","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_input","unauthenticated","forbidden","enrollment_required","not_found","method_not_allowed","conflict","idempotency_conflict","idempotency_required","budget_exceeded","rate_limited","projection_pending","unavailable","internal"]},"message":{"type":"string","enum":["The request is invalid.","Authentication is required.","This operation is not permitted.","Workspace creation requires pilot enrollment.","The resource was not found.","This method is not supported.","The resource changed. Reload before retrying.","The idempotency key was used for a different request.","An idempotency key is required.","The request exceeds an operation limit.","Too many requests. Retry later.","The search projection is catching up.","The service is temporarily unavailable.","The request could not be completed."]},"status":{"type":"integer","minimum":400,"maximum":599},"retryable":{"type":"boolean"},"request_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"retry_after_seconds":{"anyOf":[{"type":"number","minimum":0,"maximum":3600},{"type":"null"}]}},"required":["code","message","status","retryable","request_id","retry_after_seconds"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}},"security":[{"bearerAuth":[]}],"x-temri-mcp-name":"temri_memories_correct","x-temri-scopes":["temri:correct"],"x-temri-capabilities":["correct"],"x-temri-idempotency":"required","x-temri-replay":"exact_result","x-temri-mcp-exposed":true,"x-temri-migration-only":false,"x-temri-budget":{"max_request_bytes":262144,"max_response_bytes":1048576,"max_items":100,"max_context_chars":0,"max_candidates":0,"max_provider_calls":0,"max_attempts":1,"timeout_ms":10000,"cost_units":1},"x-temri-runtime-validation":"Strict Zod schemas also enforce exact-text, interval, byte-budget and other cross-field invariants.","requestBody":{"required":true,"content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"expected_generation":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"text":{"type":"string","minLength":1,"maxLength":32768,"pattern":"^(?:[^\\uD800-\\uDFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF])*$"},"valid_from":{"type":"number","description":"Finite UTC Unix seconds, including fractional seconds."},"valid_to":{"default":null,"anyOf":[{"type":"number","description":"Finite UTC Unix seconds, including fractional seconds."},{"type":"null"}]},"evidence_ids":{"default":[],"maxItems":32,"type":"array","items":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"}},"support_revision_ids":{"default":[],"maxItems":32,"type":"array","items":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"}},"status":{"type":"string","const":"candidate"}},"required":["expected_generation","text","valid_from","status"],"additionalProperties":false},{"type":"object","properties":{"expected_generation":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"text":{"type":"string","minLength":1,"maxLength":32768,"pattern":"^(?:[^\\uD800-\\uDFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF])*$"},"valid_from":{"type":"number","description":"Finite UTC Unix seconds, including fractional seconds."},"valid_to":{"default":null,"anyOf":[{"type":"number","description":"Finite UTC Unix seconds, including fractional seconds."},{"type":"null"}]},"support_revision_ids":{"default":[],"maxItems":32,"type":"array","items":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"}},"evidence_ids":{"minItems":1,"maxItems":32,"type":"array","items":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"}},"status":{"type":"string","const":"asserted"},"attestation":{"type":"object","properties":{"attested_text":{"type":"string","minLength":1,"maxLength":32768,"pattern":"^(?:[^\\uD800-\\uDFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF])*$"},"verification_ids":{"minItems":1,"maxItems":32,"type":"array","items":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"}}},"required":["attested_text","verification_ids"],"additionalProperties":false}},"required":["expected_generation","text","valid_from","evidence_ids","status","attestation"],"additionalProperties":false}]}}}}}},"/v1/recall":{"post":{"operationId":"recall","description":"Authorize namespace IDs/tree descendants before both query arms; hydrate and reauthorize every revision/evidence/support. Requested min_sequence may yield pending, never an invented guarantee.","parameters":[],"responses":{"200":{"description":"Operation result","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"matches":{"maxItems":20,"type":"array","items":{"type":"object","properties":{"view":{"type":"object","properties":{"memory":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"namespace_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"kind":{"type":"string","enum":["claim","episode","procedure"]},"generation":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["id","namespace_id","kind","generation"],"additionalProperties":false},"revision":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"memory_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"namespace_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"kind":{"type":"string","enum":["claim","episode","procedure"]},"generation":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"text":{"type":"string","minLength":1,"maxLength":32768,"pattern":"^(?:[^\\uD800-\\uDFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF])*$"},"status":{"type":"string","enum":["candidate","asserted"]},"valid_from":{"type":"number","description":"Finite UTC Unix seconds, including fractional seconds."},"valid_to":{"anyOf":[{"type":"number","description":"Finite UTC Unix seconds, including fractional seconds."},{"type":"null"}]},"recorded_at":{"type":"number","description":"Finite UTC Unix seconds, including fractional seconds."},"recorded_until":{"anyOf":[{"type":"number","description":"Finite UTC Unix seconds, including fractional seconds."},{"type":"null"}]},"evidence_ids":{"maxItems":32,"type":"array","items":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"}},"support_revision_ids":{"maxItems":32,"type":"array","items":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"}},"attestation":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"claim_text":{"type":"string","minLength":1,"maxLength":32768,"pattern":"^(?:[^\\uD800-\\uDFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF])*$"},"claim_sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"evidence_ids":{"minItems":1,"maxItems":32,"type":"array","items":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"}},"verification_ids":{"minItems":1,"maxItems":32,"type":"array","items":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"}},"verifier_actor_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"recorded_at":{"type":"number","description":"Finite UTC Unix seconds, including fractional seconds."}},"required":["id","claim_text","claim_sha256","evidence_ids","verification_ids","verifier_actor_id","recorded_at"],"additionalProperties":false},{"type":"null"}]},"invalidation":{"anyOf":[{"type":"object","properties":{"recorded_at":{"type":"number","description":"Finite UTC Unix seconds, including fractional seconds."},"cause_revision_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"reason":{"type":"string","enum":["support_corrected","support_deleted"]}},"required":["recorded_at","cause_revision_id","reason"],"additionalProperties":false},{"type":"null"}]}},"required":["id","memory_id","namespace_id","kind","generation","text","status","valid_from","valid_to","recorded_at","recorded_until","evidence_ids","support_revision_ids","attestation","invalidation"],"additionalProperties":false},"evidence":{"maxItems":32,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"namespace_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"source_locator":{"type":"string","minLength":1,"maxLength":2048},"content_root_sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"excerpt":{"type":"string","minLength":1,"maxLength":65536,"pattern":"^(?:[^\\uD800-\\uDFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF])*$"},"excerpt_sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"recorder_actor_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"recorded_at":{"type":"number","description":"Finite UTC Unix seconds, including fractional seconds."}},"required":["id","namespace_id","source_locator","content_root_sha256","excerpt","excerpt_sha256","recorder_actor_id","recorded_at"],"additionalProperties":false}},"verifications":{"maxItems":32,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"evidence_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"content_root_sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"excerpt_sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"verdict":{"type":"string","enum":["verified","rejected"]},"verifier_actor_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"recorded_at":{"type":"number","description":"Finite UTC Unix seconds, including fractional seconds."}},"required":["id","evidence_id","content_root_sha256","excerpt_sha256","verdict","verifier_actor_id","recorded_at"],"additionalProperties":false}},"stale":{"type":"boolean"}},"required":["memory","revision","evidence","verifications","stale"],"additionalProperties":false},"score":{"type":"number"},"advisory":{"type":"boolean"}},"required":["view","score","advisory"],"additionalProperties":false}},"context":{"type":"string","maxLength":32768},"used_context_chars":{"type":"integer","minimum":0,"maximum":32768},"scanned_candidates":{"type":"integer","minimum":0,"maximum":200},"as_of":{"type":"number","description":"Finite UTC Unix seconds, including fractional seconds."},"known_at":{"type":"number","description":"Finite UTC Unix seconds, including fractional seconds."},"state":{"type":"string","enum":["complete","partial","degraded","pending"]},"reason":{"anyOf":[{"type":"string","enum":["index_lag","provider_unavailable","refill_exhausted","context_budget"]},{"type":"null"}]},"projection":{"type":"object","properties":{"state":{"type":"string","enum":["healthy","pending","degraded"]},"committed_sequence":{"type":"integer","minimum":0,"maximum":9007199254740991},"indexed_sequence":{"type":"integer","minimum":0,"maximum":9007199254740991},"pending_events":{"type":"integer","minimum":0,"maximum":9007199254740991},"model_generation":{"anyOf":[{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},{"type":"null"}]}},"required":["state","committed_sequence","indexed_sequence","pending_events","model_generation"],"additionalProperties":false}},"required":["matches","context","used_context_chars","scanned_candidates","as_of","known_at","state","reason","projection"],"additionalProperties":false}}}},"default":{"description":"Safe structured error","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_input","unauthenticated","forbidden","enrollment_required","not_found","method_not_allowed","conflict","idempotency_conflict","idempotency_required","budget_exceeded","rate_limited","projection_pending","unavailable","internal"]},"message":{"type":"string","enum":["The request is invalid.","Authentication is required.","This operation is not permitted.","Workspace creation requires pilot enrollment.","The resource was not found.","This method is not supported.","The resource changed. Reload before retrying.","The idempotency key was used for a different request.","An idempotency key is required.","The request exceeds an operation limit.","Too many requests. Retry later.","The search projection is catching up.","The service is temporarily unavailable.","The request could not be completed."]},"status":{"type":"integer","minimum":400,"maximum":599},"retryable":{"type":"boolean"},"request_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"retry_after_seconds":{"anyOf":[{"type":"number","minimum":0,"maximum":3600},{"type":"null"}]}},"required":["code","message","status","retryable","request_id","retry_after_seconds"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}},"security":[{"bearerAuth":[]}],"x-temri-mcp-name":"temri_recall","x-temri-scopes":["temri:read"],"x-temri-capabilities":["read"],"x-temri-idempotency":"none","x-temri-replay":"none","x-temri-mcp-exposed":true,"x-temri-migration-only":false,"x-temri-budget":{"max_request_bytes":262144,"max_response_bytes":1048576,"max_items":20,"max_context_chars":32768,"max_candidates":200,"max_provider_calls":4,"max_attempts":3,"timeout_ms":15000,"cost_units":4},"x-temri-runtime-validation":"Strict Zod schemas also enforce exact-text, interval, byte-budget and other cross-field invariants.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"query":{"type":"string","minLength":1,"maxLength":2048,"pattern":"^(?:[^\\uD800-\\uDFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF])*$"},"namespace_ids":{"minItems":1,"maxItems":32,"type":"array","items":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"}},"include_descendants":{"default":false,"type":"boolean"},"as_of":{"type":"number","description":"Finite UTC Unix seconds, including fractional seconds."},"known_at":{"type":"number","description":"Finite UTC Unix seconds, including fractional seconds."},"min_sequence":{"type":"integer","minimum":0,"maximum":9007199254740991},"include_candidates":{"default":false,"type":"boolean"},"include_evidence":{"default":false,"type":"boolean"},"limit":{"default":10,"type":"integer","minimum":1,"maximum":20},"context_budget_chars":{"default":8192,"type":"integer","minimum":1,"maximum":32768}},"required":["query","namespace_ids"],"additionalProperties":false}}}}}},"/v1/deletions":{"post":{"operationId":"deletions.create","description":"Require forget on the explicit namespace and every memory. Commit suppression fences before cleanup; historical reads suppress immediately.","parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"}}],"responses":{"200":{"description":"Operation result","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"receipt":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"namespace_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"state":{"type":"string","enum":["suppressed","cleaning","complete","failed"]},"sequence":{"type":"integer","minimum":0,"maximum":9007199254740991},"suppressed_at":{"type":"number","description":"Finite UTC Unix seconds, including fractional seconds."},"affected_revision_ids":{"maxItems":100,"type":"array","items":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"}},"next_revision_cursor":{"anyOf":[{"type":"string","minLength":1,"maxLength":512},{"type":"null"}]},"sinks":{"minItems":3,"maxItems":3,"type":"array","items":{"type":"object","properties":{"sink":{"type":"string","enum":["ledger","evidence","search"]},"state":{"type":"string","enum":["pending","acknowledged","failed"]},"acknowledged_at":{"anyOf":[{"type":"number","description":"Finite UTC Unix seconds, including fractional seconds."},{"type":"null"}]}},"required":["sink","state","acknowledged_at"],"additionalProperties":false}}},"required":["id","namespace_id","state","sequence","suppressed_at","affected_revision_ids","next_revision_cursor","sinks"],"additionalProperties":false}},"required":["receipt"],"additionalProperties":false}}}},"default":{"description":"Safe structured error","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_input","unauthenticated","forbidden","enrollment_required","not_found","method_not_allowed","conflict","idempotency_conflict","idempotency_required","budget_exceeded","rate_limited","projection_pending","unavailable","internal"]},"message":{"type":"string","enum":["The request is invalid.","Authentication is required.","This operation is not permitted.","Workspace creation requires pilot enrollment.","The resource was not found.","This method is not supported.","The resource changed. Reload before retrying.","The idempotency key was used for a different request.","An idempotency key is required.","The request exceeds an operation limit.","Too many requests. Retry later.","The search projection is catching up.","The service is temporarily unavailable.","The request could not be completed."]},"status":{"type":"integer","minimum":400,"maximum":599},"retryable":{"type":"boolean"},"request_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"retry_after_seconds":{"anyOf":[{"type":"number","minimum":0,"maximum":3600},{"type":"null"}]}},"required":["code","message","status","retryable","request_id","retry_after_seconds"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}},"security":[{"bearerAuth":[]}],"x-temri-mcp-name":"temri_deletions_create","x-temri-scopes":["temri:forget"],"x-temri-capabilities":["forget"],"x-temri-idempotency":"required","x-temri-replay":"exact_result","x-temri-mcp-exposed":true,"x-temri-migration-only":false,"x-temri-budget":{"max_request_bytes":262144,"max_response_bytes":1048576,"max_items":1,"max_context_chars":0,"max_candidates":0,"max_provider_calls":0,"max_attempts":1,"timeout_ms":10000,"cost_units":1},"x-temri-runtime-validation":"Strict Zod schemas also enforce exact-text, interval, byte-budget and other cross-field invariants.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"namespace_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"memory_ids":{"minItems":1,"maxItems":32,"type":"array","items":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"}}},"required":["namespace_id","memory_ids"],"additionalProperties":false}}}}}},"/v1/operations/{id}":{"get":{"operationId":"operations.get","description":"Require forget on namespace_id and bind operation ID to that namespace; an ID in another namespace is not_found.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"}},{"name":"namespace_id","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"}},{"name":"limit","in":"query","required":false,"schema":{"default":50,"type":"integer","minimum":1,"maximum":100}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":512}}],"responses":{"200":{"description":"Operation result","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"receipt":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"namespace_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"state":{"type":"string","enum":["suppressed","cleaning","complete","failed"]},"sequence":{"type":"integer","minimum":0,"maximum":9007199254740991},"suppressed_at":{"type":"number","description":"Finite UTC Unix seconds, including fractional seconds."},"affected_revision_ids":{"maxItems":100,"type":"array","items":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"}},"next_revision_cursor":{"anyOf":[{"type":"string","minLength":1,"maxLength":512},{"type":"null"}]},"sinks":{"minItems":3,"maxItems":3,"type":"array","items":{"type":"object","properties":{"sink":{"type":"string","enum":["ledger","evidence","search"]},"state":{"type":"string","enum":["pending","acknowledged","failed"]},"acknowledged_at":{"anyOf":[{"type":"number","description":"Finite UTC Unix seconds, including fractional seconds."},{"type":"null"}]}},"required":["sink","state","acknowledged_at"],"additionalProperties":false}}},"required":["id","namespace_id","state","sequence","suppressed_at","affected_revision_ids","next_revision_cursor","sinks"],"additionalProperties":false}},"required":["receipt"],"additionalProperties":false}}}},"default":{"description":"Safe structured error","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_input","unauthenticated","forbidden","enrollment_required","not_found","method_not_allowed","conflict","idempotency_conflict","idempotency_required","budget_exceeded","rate_limited","projection_pending","unavailable","internal"]},"message":{"type":"string","enum":["The request is invalid.","Authentication is required.","This operation is not permitted.","Workspace creation requires pilot enrollment.","The resource was not found.","This method is not supported.","The resource changed. Reload before retrying.","The idempotency key was used for a different request.","An idempotency key is required.","The request exceeds an operation limit.","Too many requests. Retry later.","The search projection is catching up.","The service is temporarily unavailable.","The request could not be completed."]},"status":{"type":"integer","minimum":400,"maximum":599},"retryable":{"type":"boolean"},"request_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"retry_after_seconds":{"anyOf":[{"type":"number","minimum":0,"maximum":3600},{"type":"null"}]}},"required":["code","message","status","retryable","request_id","retry_after_seconds"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}},"security":[{"bearerAuth":[]}],"x-temri-mcp-name":"temri_operations_get","x-temri-scopes":["temri:forget"],"x-temri-capabilities":["forget"],"x-temri-idempotency":"none","x-temri-replay":"none","x-temri-mcp-exposed":true,"x-temri-migration-only":false,"x-temri-budget":{"max_request_bytes":262144,"max_response_bytes":1048576,"max_items":100,"max_context_chars":0,"max_candidates":0,"max_provider_calls":0,"max_attempts":1,"timeout_ms":10000,"cost_units":1},"x-temri-runtime-validation":"Strict Zod schemas also enforce exact-text, interval, byte-budget and other cross-field invariants."}},"/v1/changes":{"get":{"operationId":"changes.list","description":"Restricted replication: require service authentication, a currently active credential, explicit replication policy and read on this namespace. Never emit a cross-tenant feed.","parameters":[{"name":"namespace_id","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"}},{"name":"after","in":"query","required":true,"schema":{"type":"integer","minimum":0,"maximum":9007199254740991}},{"name":"limit","in":"query","required":false,"schema":{"default":50,"type":"integer","minimum":1,"maximum":100}}],"responses":{"200":{"description":"Operation result","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"changes":{"maxItems":100,"type":"array","items":{"type":"object","properties":{"event_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"sequence":{"type":"integer","minimum":0,"maximum":9007199254740991},"namespace_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"kind":{"type":"string","enum":["namespace_created","namespace_updated","grants_changed","evidence_recorded","evidence_verified","memory_created","memory_corrected","memory_invalidated","deletion_suppressed","deletion_completed","import_completed"]},"entity_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"revision_ids":{"maxItems":32,"type":"array","items":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"}},"recorded_at":{"type":"number","description":"Finite UTC Unix seconds, including fractional seconds."}},"required":["event_id","sequence","namespace_id","kind","entity_id","revision_ids","recorded_at"],"additionalProperties":false}},"next_after":{"type":"integer","minimum":0,"maximum":9007199254740991},"has_more":{"type":"boolean"}},"required":["changes","next_after","has_more"],"additionalProperties":false}}}},"default":{"description":"Safe structured error","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_input","unauthenticated","forbidden","enrollment_required","not_found","method_not_allowed","conflict","idempotency_conflict","idempotency_required","budget_exceeded","rate_limited","projection_pending","unavailable","internal"]},"message":{"type":"string","enum":["The request is invalid.","Authentication is required.","This operation is not permitted.","Workspace creation requires pilot enrollment.","The resource was not found.","This method is not supported.","The resource changed. Reload before retrying.","The idempotency key was used for a different request.","An idempotency key is required.","The request exceeds an operation limit.","Too many requests. Retry later.","The search projection is catching up.","The service is temporarily unavailable.","The request could not be completed."]},"status":{"type":"integer","minimum":400,"maximum":599},"retryable":{"type":"boolean"},"request_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"retry_after_seconds":{"anyOf":[{"type":"number","minimum":0,"maximum":3600},{"type":"null"}]}},"required":["code","message","status","retryable","request_id","retry_after_seconds"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}},"security":[{"bearerAuth":[]}],"x-temri-mcp-name":"temri_changes_list","x-temri-scopes":["temri:read"],"x-temri-capabilities":["read"],"x-temri-idempotency":"none","x-temri-replay":"none","x-temri-mcp-exposed":false,"x-temri-migration-only":false,"x-temri-budget":{"max_request_bytes":262144,"max_response_bytes":1048576,"max_items":100,"max_context_chars":0,"max_candidates":0,"max_provider_calls":0,"max_attempts":1,"timeout_ms":10000,"cost_units":1},"x-temri-runtime-validation":"Strict Zod schemas also enforce exact-text, interval, byte-budget and other cross-field invariants."}},"/v1/imports":{"post":{"operationId":"imports.create","description":"Migration-only service credential: require a separate server-side source-bound migration grant as well as namespace admin; admin alone is insufficient. Validate schema/snapshot/chunk hashes, source tenant/environment, cutoff/high-water, typed counts, deterministic maps, receipt provenance and tombstones before publishing; stage tombstones before content. Imported identity/time is provenance, not current authority. Legacy history begins at the server-issued bootstrap clock. Never expose this as an ordinary MCP tool.","parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"}}],"responses":{"200":{"description":"Operation result","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"receipt":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"namespace_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"snapshot_sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"state":{"type":"string","enum":["staged","importing","validating","complete","failed"]},"received_chunks":{"type":"integer","minimum":0,"maximum":10000},"total_chunks":{"type":"integer","minimum":1,"maximum":10000},"applied_counts":{"type":"object","properties":{"memories":{"type":"integer","minimum":0,"maximum":100000},"revisions":{"type":"integer","minimum":0,"maximum":100000},"evidence":{"type":"integer","minimum":0,"maximum":100000},"verifications":{"type":"integer","minimum":0,"maximum":100000},"attestations":{"type":"integer","minimum":0,"maximum":100000},"tombstones":{"type":"integer","minimum":0,"maximum":100000},"id_maps":{"type":"integer","minimum":0,"maximum":100000}},"required":["memories","revisions","evidence","verifications","attestations","tombstones","id_maps"],"additionalProperties":false},"bootstrap_recorded_at":{"anyOf":[{"type":"number","description":"Finite UTC Unix seconds, including fractional seconds."},{"type":"null"}]},"commit":{"anyOf":[{"type":"object","properties":{"sequence":{"type":"integer","minimum":0,"maximum":9007199254740991},"recorded_at":{"type":"number","description":"Finite UTC Unix seconds, including fractional seconds."}},"required":["sequence","recorded_at"],"additionalProperties":false},{"type":"null"}]},"error_code":{"anyOf":[{"type":"string","enum":["invalid_input","unauthenticated","forbidden","enrollment_required","not_found","method_not_allowed","conflict","idempotency_conflict","idempotency_required","budget_exceeded","rate_limited","projection_pending","unavailable","internal"]},{"type":"null"}]}},"required":["id","namespace_id","snapshot_sha256","state","received_chunks","total_chunks","applied_counts","bootstrap_recorded_at","commit","error_code"],"additionalProperties":false}},"required":["receipt"],"additionalProperties":false}}}},"default":{"description":"Safe structured error","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_input","unauthenticated","forbidden","enrollment_required","not_found","method_not_allowed","conflict","idempotency_conflict","idempotency_required","budget_exceeded","rate_limited","projection_pending","unavailable","internal"]},"message":{"type":"string","enum":["The request is invalid.","Authentication is required.","This operation is not permitted.","Workspace creation requires pilot enrollment.","The resource was not found.","This method is not supported.","The resource changed. Reload before retrying.","The idempotency key was used for a different request.","An idempotency key is required.","The request exceeds an operation limit.","Too many requests. Retry later.","The search projection is catching up.","The service is temporarily unavailable.","The request could not be completed."]},"status":{"type":"integer","minimum":400,"maximum":599},"retryable":{"type":"boolean"},"request_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"retry_after_seconds":{"anyOf":[{"type":"number","minimum":0,"maximum":3600},{"type":"null"}]}},"required":["code","message","status","retryable","request_id","retry_after_seconds"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}},"security":[{"bearerAuth":[]}],"x-temri-mcp-name":"temri_imports_create","x-temri-scopes":["temri:admin"],"x-temri-capabilities":["admin"],"x-temri-idempotency":"required","x-temri-replay":"exact_result","x-temri-mcp-exposed":false,"x-temri-migration-only":true,"x-temri-budget":{"max_request_bytes":262144,"max_response_bytes":1048576,"max_items":100,"max_context_chars":0,"max_candidates":0,"max_provider_calls":0,"max_attempts":1,"timeout_ms":10000,"cost_units":1},"x-temri-runtime-validation":"Strict Zod schemas also enforce exact-text, interval, byte-budget and other cross-field invariants.","requestBody":{"required":true,"content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","const":"manifest"},"manifest":{"type":"object","properties":{"namespace_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"source":{"type":"object","properties":{"issuer":{"type":"string","minLength":1,"maxLength":2048},"tenant":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"environment":{"type":"string","enum":["development","preview","production","test"]},"database_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"}},"required":["issuer","tenant","environment","database_id"],"additionalProperties":false},"schema":{"type":"string","enum":["skynet-temporal-v1","skynet-legacy-v1"]},"snapshot_sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"cutoff":{"type":"number","description":"Finite UTC Unix seconds, including fractional seconds."},"high_water_sequence":{"type":"integer","minimum":0,"maximum":9007199254740991},"counts":{"type":"object","properties":{"memories":{"type":"integer","minimum":0,"maximum":100000},"revisions":{"type":"integer","minimum":0,"maximum":100000},"evidence":{"type":"integer","minimum":0,"maximum":100000},"verifications":{"type":"integer","minimum":0,"maximum":100000},"attestations":{"type":"integer","minimum":0,"maximum":100000},"tombstones":{"type":"integer","minimum":0,"maximum":100000},"id_maps":{"type":"integer","minimum":0,"maximum":100000}},"required":["memories","revisions","evidence","verifications","attestations","tombstones","id_maps"],"additionalProperties":false},"chunk_count":{"type":"integer","minimum":1,"maximum":10000},"chunk_sha256s":{"minItems":1,"maxItems":10000,"type":"array","items":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"id_mapping":{"type":"object","properties":{"algorithm":{"type":"string","const":"sha256-v1"},"domain":{"type":"string","const":"temri-import-v1"},"canonicalization":{"type":"string","const":"temri-c14n-v1"}},"required":["algorithm","domain","canonicalization"],"additionalProperties":false}},"required":["namespace_id","source","schema","snapshot_sha256","cutoff","high_water_sequence","counts","chunk_count","chunk_sha256s","id_mapping"],"additionalProperties":false}},"required":["kind","manifest"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"chunk"},"chunk":{"type":"object","properties":{"import_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"namespace_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"snapshot_sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"chunk_index":{"type":"integer","minimum":0,"maximum":9999},"chunk_sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"rows":{"minItems":1,"maxItems":100,"type":"array","items":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","const":"memory"},"source_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"provenance":{"type":"object","properties":{"source_actor_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"source_recorded_at":{"type":"number","description":"Finite UTC Unix seconds, including fractional seconds."},"trust":{"type":"string","enum":["typed_receipt","legacy_provenance"]}},"required":["source_actor_id","source_recorded_at","trust"],"additionalProperties":false},"data":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"namespace_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"kind":{"type":"string","enum":["claim","episode","procedure"]},"generation":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["id","namespace_id","kind","generation"],"additionalProperties":false}},"required":["kind","source_id","provenance","data"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"revision"},"source_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"provenance":{"type":"object","properties":{"source_actor_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"source_recorded_at":{"type":"number","description":"Finite UTC Unix seconds, including fractional seconds."},"trust":{"type":"string","enum":["typed_receipt","legacy_provenance"]}},"required":["source_actor_id","source_recorded_at","trust"],"additionalProperties":false},"data":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"memory_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"namespace_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"kind":{"type":"string","enum":["claim","episode","procedure"]},"generation":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"text":{"type":"string","minLength":1,"maxLength":32768,"pattern":"^(?:[^\\uD800-\\uDFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF])*$"},"status":{"type":"string","enum":["candidate","asserted"]},"valid_from":{"type":"number","description":"Finite UTC Unix seconds, including fractional seconds."},"valid_to":{"anyOf":[{"type":"number","description":"Finite UTC Unix seconds, including fractional seconds."},{"type":"null"}]},"recorded_at":{"type":"number","description":"Finite UTC Unix seconds, including fractional seconds."},"recorded_until":{"anyOf":[{"type":"number","description":"Finite UTC Unix seconds, including fractional seconds."},{"type":"null"}]},"evidence_ids":{"maxItems":32,"type":"array","items":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"}},"support_revision_ids":{"maxItems":32,"type":"array","items":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"}},"attestation":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"claim_text":{"type":"string","minLength":1,"maxLength":32768,"pattern":"^(?:[^\\uD800-\\uDFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF])*$"},"claim_sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"evidence_ids":{"minItems":1,"maxItems":32,"type":"array","items":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"}},"verification_ids":{"minItems":1,"maxItems":32,"type":"array","items":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"}},"verifier_actor_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"recorded_at":{"type":"number","description":"Finite UTC Unix seconds, including fractional seconds."}},"required":["id","claim_text","claim_sha256","evidence_ids","verification_ids","verifier_actor_id","recorded_at"],"additionalProperties":false},{"type":"null"}]},"invalidation":{"anyOf":[{"type":"object","properties":{"recorded_at":{"type":"number","description":"Finite UTC Unix seconds, including fractional seconds."},"cause_revision_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"reason":{"type":"string","enum":["support_corrected","support_deleted"]}},"required":["recorded_at","cause_revision_id","reason"],"additionalProperties":false},{"type":"null"}]}},"required":["id","memory_id","namespace_id","kind","generation","text","status","valid_from","valid_to","recorded_at","recorded_until","evidence_ids","support_revision_ids","attestation","invalidation"],"additionalProperties":false}},"required":["kind","source_id","provenance","data"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"evidence"},"source_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"provenance":{"type":"object","properties":{"source_actor_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"source_recorded_at":{"type":"number","description":"Finite UTC Unix seconds, including fractional seconds."},"trust":{"type":"string","enum":["typed_receipt","legacy_provenance"]}},"required":["source_actor_id","source_recorded_at","trust"],"additionalProperties":false},"data":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"namespace_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"source_locator":{"type":"string","minLength":1,"maxLength":2048},"content_root_sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"excerpt":{"type":"string","minLength":1,"maxLength":65536,"pattern":"^(?:[^\\uD800-\\uDFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF])*$"},"excerpt_sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"recorder_actor_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"recorded_at":{"type":"number","description":"Finite UTC Unix seconds, including fractional seconds."}},"required":["id","namespace_id","source_locator","content_root_sha256","excerpt","excerpt_sha256","recorder_actor_id","recorded_at"],"additionalProperties":false}},"required":["kind","source_id","provenance","data"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"verification"},"source_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"provenance":{"type":"object","properties":{"source_actor_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"source_recorded_at":{"type":"number","description":"Finite UTC Unix seconds, including fractional seconds."},"trust":{"type":"string","enum":["typed_receipt","legacy_provenance"]}},"required":["source_actor_id","source_recorded_at","trust"],"additionalProperties":false},"data":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"evidence_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"content_root_sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"excerpt_sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"verdict":{"type":"string","enum":["verified","rejected"]},"verifier_actor_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"recorded_at":{"type":"number","description":"Finite UTC Unix seconds, including fractional seconds."}},"required":["id","evidence_id","content_root_sha256","excerpt_sha256","verdict","verifier_actor_id","recorded_at"],"additionalProperties":false}},"required":["kind","source_id","provenance","data"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"attestation"},"source_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"provenance":{"type":"object","properties":{"source_actor_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"source_recorded_at":{"type":"number","description":"Finite UTC Unix seconds, including fractional seconds."},"trust":{"type":"string","enum":["typed_receipt","legacy_provenance"]}},"required":["source_actor_id","source_recorded_at","trust"],"additionalProperties":false},"data":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"claim_text":{"type":"string","minLength":1,"maxLength":32768,"pattern":"^(?:[^\\uD800-\\uDFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF])*$"},"claim_sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"evidence_ids":{"minItems":1,"maxItems":32,"type":"array","items":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"}},"verification_ids":{"minItems":1,"maxItems":32,"type":"array","items":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"}},"verifier_actor_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"recorded_at":{"type":"number","description":"Finite UTC Unix seconds, including fractional seconds."}},"required":["id","claim_text","claim_sha256","evidence_ids","verification_ids","verifier_actor_id","recorded_at"],"additionalProperties":false}},"required":["kind","source_id","provenance","data"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"tombstone"},"source_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"provenance":{"type":"object","properties":{"source_actor_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"source_recorded_at":{"type":"number","description":"Finite UTC Unix seconds, including fractional seconds."},"trust":{"type":"string","enum":["typed_receipt","legacy_provenance"]}},"required":["source_actor_id","source_recorded_at","trust"],"additionalProperties":false},"data":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"namespace_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"entity_kind":{"type":"string","enum":["memory","revision","evidence"]},"sequence":{"type":"integer","minimum":0,"maximum":9007199254740991},"recorded_at":{"type":"number","description":"Finite UTC Unix seconds, including fractional seconds."}},"required":["id","namespace_id","entity_kind","sequence","recorded_at"],"additionalProperties":false}},"required":["kind","source_id","provenance","data"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"id_map"},"data":{"type":"object","properties":{"entity_kind":{"type":"string","enum":["memory","revision","evidence","verification","attestation","tombstone"]},"source_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"target_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"}},"required":["entity_kind","source_id","target_id"],"additionalProperties":false}},"required":["kind","data"],"additionalProperties":false}]}}},"required":["import_id","namespace_id","snapshot_sha256","chunk_index","chunk_sha256","rows"],"additionalProperties":false}},"required":["kind","chunk"],"additionalProperties":false}]}}}}}},"/v1/imports/{id}":{"get":{"operationId":"imports.get","description":"Require the exact currently active source-bound migration credential and namespace admin on every read. Return the persisted manifest with the receipt and authoritative workspace/environment/installation/credential/release binding. Never return staged rows or chunks, expand access to ordinary owners/read keys, or imply a read cutover, change replay or authority epoch.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"}},{"name":"namespace_id","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"}}],"responses":{"200":{"description":"Operation result","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"receipt":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"namespace_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"snapshot_sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"state":{"type":"string","enum":["staged","importing","validating","complete","failed"]},"received_chunks":{"type":"integer","minimum":0,"maximum":10000},"total_chunks":{"type":"integer","minimum":1,"maximum":10000},"applied_counts":{"type":"object","properties":{"memories":{"type":"integer","minimum":0,"maximum":100000},"revisions":{"type":"integer","minimum":0,"maximum":100000},"evidence":{"type":"integer","minimum":0,"maximum":100000},"verifications":{"type":"integer","minimum":0,"maximum":100000},"attestations":{"type":"integer","minimum":0,"maximum":100000},"tombstones":{"type":"integer","minimum":0,"maximum":100000},"id_maps":{"type":"integer","minimum":0,"maximum":100000}},"required":["memories","revisions","evidence","verifications","attestations","tombstones","id_maps"],"additionalProperties":false},"bootstrap_recorded_at":{"anyOf":[{"type":"number","description":"Finite UTC Unix seconds, including fractional seconds."},{"type":"null"}]},"commit":{"anyOf":[{"type":"object","properties":{"sequence":{"type":"integer","minimum":0,"maximum":9007199254740991},"recorded_at":{"type":"number","description":"Finite UTC Unix seconds, including fractional seconds."}},"required":["sequence","recorded_at"],"additionalProperties":false},{"type":"null"}]},"error_code":{"anyOf":[{"type":"string","enum":["invalid_input","unauthenticated","forbidden","enrollment_required","not_found","method_not_allowed","conflict","idempotency_conflict","idempotency_required","budget_exceeded","rate_limited","projection_pending","unavailable","internal"]},{"type":"null"}]}},"required":["id","namespace_id","snapshot_sha256","state","received_chunks","total_chunks","applied_counts","bootstrap_recorded_at","commit","error_code"],"additionalProperties":false},"manifest":{"type":"object","properties":{"namespace_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"source":{"type":"object","properties":{"issuer":{"type":"string","minLength":1,"maxLength":2048},"tenant":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"environment":{"type":"string","enum":["development","preview","production","test"]},"database_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"}},"required":["issuer","tenant","environment","database_id"],"additionalProperties":false},"schema":{"type":"string","enum":["skynet-temporal-v1","skynet-legacy-v1"]},"snapshot_sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"cutoff":{"type":"number","description":"Finite UTC Unix seconds, including fractional seconds."},"high_water_sequence":{"type":"integer","minimum":0,"maximum":9007199254740991},"counts":{"type":"object","properties":{"memories":{"type":"integer","minimum":0,"maximum":100000},"revisions":{"type":"integer","minimum":0,"maximum":100000},"evidence":{"type":"integer","minimum":0,"maximum":100000},"verifications":{"type":"integer","minimum":0,"maximum":100000},"attestations":{"type":"integer","minimum":0,"maximum":100000},"tombstones":{"type":"integer","minimum":0,"maximum":100000},"id_maps":{"type":"integer","minimum":0,"maximum":100000}},"required":["memories","revisions","evidence","verifications","attestations","tombstones","id_maps"],"additionalProperties":false},"chunk_count":{"type":"integer","minimum":1,"maximum":10000},"chunk_sha256s":{"minItems":1,"maxItems":10000,"type":"array","items":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"id_mapping":{"type":"object","properties":{"algorithm":{"type":"string","const":"sha256-v1"},"domain":{"type":"string","const":"temri-import-v1"},"canonicalization":{"type":"string","const":"temri-c14n-v1"}},"required":["algorithm","domain","canonicalization"],"additionalProperties":false}},"required":["namespace_id","source","schema","snapshot_sha256","cutoff","high_water_sequence","counts","chunk_count","chunk_sha256s","id_mapping"],"additionalProperties":false},"binding":{"type":"object","properties":{"workspace_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"environment":{"type":"string","enum":["development","preview","production","test"]},"product_installation_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"credential_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"release":{"type":"string","minLength":1,"maxLength":128}},"required":["workspace_id","environment","product_installation_id","credential_id","release"],"additionalProperties":false}},"required":["receipt","manifest","binding"],"additionalProperties":false}}}},"default":{"description":"Safe structured error","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_input","unauthenticated","forbidden","enrollment_required","not_found","method_not_allowed","conflict","idempotency_conflict","idempotency_required","budget_exceeded","rate_limited","projection_pending","unavailable","internal"]},"message":{"type":"string","enum":["The request is invalid.","Authentication is required.","This operation is not permitted.","Workspace creation requires pilot enrollment.","The resource was not found.","This method is not supported.","The resource changed. Reload before retrying.","The idempotency key was used for a different request.","An idempotency key is required.","The request exceeds an operation limit.","Too many requests. Retry later.","The search projection is catching up.","The service is temporarily unavailable.","The request could not be completed."]},"status":{"type":"integer","minimum":400,"maximum":599},"retryable":{"type":"boolean"},"request_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"retry_after_seconds":{"anyOf":[{"type":"number","minimum":0,"maximum":3600},{"type":"null"}]}},"required":["code","message","status","retryable","request_id","retry_after_seconds"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}},"security":[{"bearerAuth":[]}],"x-temri-mcp-name":"temri_imports_get","x-temri-scopes":["temri:admin"],"x-temri-capabilities":["admin"],"x-temri-idempotency":"none","x-temri-replay":"none","x-temri-mcp-exposed":false,"x-temri-migration-only":true,"x-temri-budget":{"max_request_bytes":262144,"max_response_bytes":1048576,"max_items":1,"max_context_chars":0,"max_candidates":0,"max_provider_calls":0,"max_attempts":1,"timeout_ms":10000,"cost_units":1},"x-temri-runtime-validation":"Strict Zod schemas also enforce exact-text, interval, byte-budget and other cross-field invariants."}},"/v1/health":{"get":{"operationId":"health","description":"Content-free health is public. Projection detail requires authenticated workspace read (temri:read and ledger read); no namespace content or provider errors.","parameters":[{"name":"include_projection","in":"query","required":false,"schema":{"default":false,"type":"boolean"}}],"responses":{"200":{"description":"Operation result","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"status":{"type":"string","enum":["ok","degraded"]},"release":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"projection":{"anyOf":[{"type":"object","properties":{"state":{"type":"string","enum":["healthy","pending","degraded"]},"committed_sequence":{"type":"integer","minimum":0,"maximum":9007199254740991},"indexed_sequence":{"type":"integer","minimum":0,"maximum":9007199254740991},"pending_events":{"type":"integer","minimum":0,"maximum":9007199254740991},"model_generation":{"anyOf":[{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},{"type":"null"}]}},"required":["state","committed_sequence","indexed_sequence","pending_events","model_generation"],"additionalProperties":false},{"type":"null"}]}},"required":["status","release","projection"],"additionalProperties":false}}}},"default":{"description":"Safe structured error","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_input","unauthenticated","forbidden","enrollment_required","not_found","method_not_allowed","conflict","idempotency_conflict","idempotency_required","budget_exceeded","rate_limited","projection_pending","unavailable","internal"]},"message":{"type":"string","enum":["The request is invalid.","Authentication is required.","This operation is not permitted.","Workspace creation requires pilot enrollment.","The resource was not found.","This method is not supported.","The resource changed. Reload before retrying.","The idempotency key was used for a different request.","An idempotency key is required.","The request exceeds an operation limit.","Too many requests. Retry later.","The search projection is catching up.","The service is temporarily unavailable.","The request could not be completed."]},"status":{"type":"integer","minimum":400,"maximum":599},"retryable":{"type":"boolean"},"request_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"retry_after_seconds":{"anyOf":[{"type":"number","minimum":0,"maximum":3600},{"type":"null"}]}},"required":["code","message","status","retryable","request_id","retry_after_seconds"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}},"security":[],"x-temri-mcp-name":"temri_health","x-temri-scopes":[],"x-temri-capabilities":[],"x-temri-idempotency":"none","x-temri-replay":"none","x-temri-mcp-exposed":true,"x-temri-migration-only":false,"x-temri-budget":{"max_request_bytes":262144,"max_response_bytes":1048576,"max_items":1,"max_context_chars":0,"max_candidates":0,"max_provider_calls":0,"max_attempts":1,"timeout_ms":10000,"cost_units":1},"x-temri-runtime-validation":"Strict Zod schemas also enforce exact-text, interval, byte-budget and other cross-field invariants."}},"/v1/integrations":{"post":{"operationId":"integrations.create","description":"Ledger generates/stores installation identity and narrowed namespace grants/scopes; append its separate grant rows atomically without replacing owner grants. Directory stores only safe routing/activity mirrors after commit. Require owner/admin and every granted capability; registration issues no secret.","parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"}}],"responses":{"200":{"description":"Operation result","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"integration":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"product":{"type":"string","minLength":1,"maxLength":80},"name":{"type":"string","minLength":1,"maxLength":160},"grants":{"maxItems":32,"type":"array","items":{"type":"object","properties":{"namespace_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"capabilities":{"maxItems":6,"type":"array","items":{"type":"string","enum":["read","observe","verify","correct","forget","admin"]}},"inherit":{"type":"boolean"}},"required":["namespace_id","capabilities","inherit"],"additionalProperties":false}},"scopes":{"minItems":1,"maxItems":6,"type":"array","items":{"type":"string","enum":["temri:read","temri:observe","temri:verify","temri:correct","temri:forget","temri:admin"]}},"created_at":{"type":"number","description":"Finite UTC Unix seconds, including fractional seconds."},"revoked_at":{"anyOf":[{"type":"number","description":"Finite UTC Unix seconds, including fractional seconds."},{"type":"null"}]}},"required":["id","product","name","grants","scopes","created_at","revoked_at"],"additionalProperties":false}},"required":["integration"],"additionalProperties":false}}}},"default":{"description":"Safe structured error","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_input","unauthenticated","forbidden","enrollment_required","not_found","method_not_allowed","conflict","idempotency_conflict","idempotency_required","budget_exceeded","rate_limited","projection_pending","unavailable","internal"]},"message":{"type":"string","enum":["The request is invalid.","Authentication is required.","This operation is not permitted.","Workspace creation requires pilot enrollment.","The resource was not found.","This method is not supported.","The resource changed. Reload before retrying.","The idempotency key was used for a different request.","An idempotency key is required.","The request exceeds an operation limit.","Too many requests. Retry later.","The search projection is catching up.","The service is temporarily unavailable.","The request could not be completed."]},"status":{"type":"integer","minimum":400,"maximum":599},"retryable":{"type":"boolean"},"request_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"retry_after_seconds":{"anyOf":[{"type":"number","minimum":0,"maximum":3600},{"type":"null"}]}},"required":["code","message","status","retryable","request_id","retry_after_seconds"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}},"security":[{"bearerAuth":[]}],"x-temri-mcp-name":"temri_integrations_create","x-temri-scopes":["temri:admin"],"x-temri-capabilities":["admin"],"x-temri-idempotency":"required","x-temri-replay":"exact_result","x-temri-mcp-exposed":true,"x-temri-migration-only":false,"x-temri-budget":{"max_request_bytes":262144,"max_response_bytes":1048576,"max_items":1,"max_context_chars":0,"max_candidates":0,"max_provider_calls":0,"max_attempts":1,"timeout_ms":10000,"cost_units":1},"x-temri-runtime-validation":"Strict Zod schemas also enforce exact-text, interval, byte-budget and other cross-field invariants.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"product":{"type":"string","minLength":1,"maxLength":80},"name":{"type":"string","minLength":1,"maxLength":160},"grants":{"minItems":1,"maxItems":32,"type":"array","items":{"type":"object","properties":{"namespace_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"capabilities":{"maxItems":6,"type":"array","items":{"type":"string","enum":["read","observe","verify","correct","forget","admin"]}},"inherit":{"type":"boolean"}},"required":["namespace_id","capabilities","inherit"],"additionalProperties":false}},"scopes":{"minItems":1,"maxItems":6,"type":"array","items":{"type":"string","enum":["temri:read","temri:observe","temri:verify","temri:correct","temri:forget","temri:admin"]}}},"required":["product","name","grants","scopes"],"additionalProperties":false}}}}},"get":{"operationId":"integrations.list","description":"Ledger lists installation metadata and current namespace grants/scopes for the authorized workspace owner/admin; no credential secrets or directory ACL authority.","parameters":[{"name":"limit","in":"query","required":false,"schema":{"default":50,"type":"integer","minimum":1,"maximum":100}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":512}}],"responses":{"200":{"description":"Operation result","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"integrations":{"maxItems":100,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"product":{"type":"string","minLength":1,"maxLength":80},"name":{"type":"string","minLength":1,"maxLength":160},"grants":{"maxItems":32,"type":"array","items":{"type":"object","properties":{"namespace_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"capabilities":{"maxItems":6,"type":"array","items":{"type":"string","enum":["read","observe","verify","correct","forget","admin"]}},"inherit":{"type":"boolean"}},"required":["namespace_id","capabilities","inherit"],"additionalProperties":false}},"scopes":{"minItems":1,"maxItems":6,"type":"array","items":{"type":"string","enum":["temri:read","temri:observe","temri:verify","temri:correct","temri:forget","temri:admin"]}},"created_at":{"type":"number","description":"Finite UTC Unix seconds, including fractional seconds."},"revoked_at":{"anyOf":[{"type":"number","description":"Finite UTC Unix seconds, including fractional seconds."},{"type":"null"}]}},"required":["id","product","name","grants","scopes","created_at","revoked_at"],"additionalProperties":false}},"next_cursor":{"anyOf":[{"type":"string","minLength":1,"maxLength":512},{"type":"null"}]}},"required":["integrations","next_cursor"],"additionalProperties":false}}}},"default":{"description":"Safe structured error","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_input","unauthenticated","forbidden","enrollment_required","not_found","method_not_allowed","conflict","idempotency_conflict","idempotency_required","budget_exceeded","rate_limited","projection_pending","unavailable","internal"]},"message":{"type":"string","enum":["The request is invalid.","Authentication is required.","This operation is not permitted.","Workspace creation requires pilot enrollment.","The resource was not found.","This method is not supported.","The resource changed. Reload before retrying.","The idempotency key was used for a different request.","An idempotency key is required.","The request exceeds an operation limit.","Too many requests. Retry later.","The search projection is catching up.","The service is temporarily unavailable.","The request could not be completed."]},"status":{"type":"integer","minimum":400,"maximum":599},"retryable":{"type":"boolean"},"request_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"retry_after_seconds":{"anyOf":[{"type":"number","minimum":0,"maximum":3600},{"type":"null"}]}},"required":["code","message","status","retryable","request_id","retry_after_seconds"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}},"security":[{"bearerAuth":[]}],"x-temri-mcp-name":"temri_integrations_list","x-temri-scopes":["temri:admin"],"x-temri-capabilities":["admin"],"x-temri-idempotency":"none","x-temri-replay":"none","x-temri-mcp-exposed":true,"x-temri-migration-only":false,"x-temri-budget":{"max_request_bytes":262144,"max_response_bytes":1048576,"max_items":100,"max_context_chars":0,"max_candidates":0,"max_provider_calls":0,"max_attempts":1,"timeout_ms":10000,"cost_units":1},"x-temri-runtime-validation":"Strict Zod schemas also enforce exact-text, interval, byte-budget and other cross-field invariants."}},"/v1/integrations/{id}/keys":{"post":{"operationId":"integrations.keys.issue","description":"Owner/admin only. Ledger registerCredential atomically installs per-key grants narrowed to installation and issuer grants/scopes. Store only a key hash. One-time-secret exception: retry returns the same credential, secret=null, secret_already_delivered=true. Never persist raw keys in idempotency rows or logs. Lost delivery requires explicit revoke/rotation. Reauthorize all replay.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"}}],"responses":{"200":{"description":"Operation result","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"credential":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"product_installation_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"grants":{"maxItems":32,"type":"array","items":{"type":"object","properties":{"namespace_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"capabilities":{"maxItems":6,"type":"array","items":{"type":"string","enum":["read","observe","verify","correct","forget","admin"]}},"inherit":{"type":"boolean"}},"required":["namespace_id","capabilities","inherit"],"additionalProperties":false}},"scopes":{"minItems":1,"maxItems":6,"type":"array","items":{"type":"string","enum":["temri:read","temri:observe","temri:verify","temri:correct","temri:forget","temri:admin"]}},"created_at":{"type":"number","description":"Finite UTC Unix seconds, including fractional seconds."},"expires_at":{"type":"number","description":"Finite UTC Unix seconds, including fractional seconds."},"revoked_at":{"anyOf":[{"type":"number","description":"Finite UTC Unix seconds, including fractional seconds."},{"type":"null"}]}},"required":["id","product_installation_id","grants","scopes","created_at","expires_at","revoked_at"],"additionalProperties":false},"secret":{"anyOf":[{"type":"string","minLength":32,"maxLength":512},{"type":"null"}]},"secret_already_delivered":{"type":"boolean"}},"required":["credential","secret","secret_already_delivered"],"additionalProperties":false}}}},"default":{"description":"Safe structured error","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_input","unauthenticated","forbidden","enrollment_required","not_found","method_not_allowed","conflict","idempotency_conflict","idempotency_required","budget_exceeded","rate_limited","projection_pending","unavailable","internal"]},"message":{"type":"string","enum":["The request is invalid.","Authentication is required.","This operation is not permitted.","Workspace creation requires pilot enrollment.","The resource was not found.","This method is not supported.","The resource changed. Reload before retrying.","The idempotency key was used for a different request.","An idempotency key is required.","The request exceeds an operation limit.","Too many requests. Retry later.","The search projection is catching up.","The service is temporarily unavailable.","The request could not be completed."]},"status":{"type":"integer","minimum":400,"maximum":599},"retryable":{"type":"boolean"},"request_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"retry_after_seconds":{"anyOf":[{"type":"number","minimum":0,"maximum":3600},{"type":"null"}]}},"required":["code","message","status","retryable","request_id","retry_after_seconds"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}},"security":[{"bearerAuth":[]}],"x-temri-mcp-name":"temri_integrations_keys_issue","x-temri-scopes":["temri:admin"],"x-temri-capabilities":["admin"],"x-temri-idempotency":"required","x-temri-replay":"one_time_secret","x-temri-mcp-exposed":true,"x-temri-migration-only":false,"x-temri-budget":{"max_request_bytes":262144,"max_response_bytes":1048576,"max_items":1,"max_context_chars":0,"max_candidates":0,"max_provider_calls":0,"max_attempts":1,"timeout_ms":10000,"cost_units":1},"x-temri-runtime-validation":"Strict Zod schemas also enforce exact-text, interval, byte-budget and other cross-field invariants.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"grants":{"minItems":1,"maxItems":32,"type":"array","items":{"type":"object","properties":{"namespace_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"capabilities":{"maxItems":6,"type":"array","items":{"type":"string","enum":["read","observe","verify","correct","forget","admin"]}},"inherit":{"type":"boolean"}},"required":["namespace_id","capabilities","inherit"],"additionalProperties":false}},"scopes":{"minItems":1,"maxItems":6,"type":"array","items":{"type":"string","enum":["temri:read","temri:observe","temri:verify","temri:correct","temri:forget","temri:admin"]}},"expires_in_seconds":{"type":"integer","minimum":60,"maximum":7776000}},"required":["grants","scopes","expires_in_seconds"],"additionalProperties":false}}}}},"get":{"operationId":"integrations.keys.list","description":"List credential metadata for an authorized installation in the current workspace; never return hashes or secrets.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"}},{"name":"limit","in":"query","required":false,"schema":{"default":50,"type":"integer","minimum":1,"maximum":100}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":512}}],"responses":{"200":{"description":"Operation result","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"credentials":{"maxItems":100,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"product_installation_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"grants":{"maxItems":32,"type":"array","items":{"type":"object","properties":{"namespace_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"capabilities":{"maxItems":6,"type":"array","items":{"type":"string","enum":["read","observe","verify","correct","forget","admin"]}},"inherit":{"type":"boolean"}},"required":["namespace_id","capabilities","inherit"],"additionalProperties":false}},"scopes":{"minItems":1,"maxItems":6,"type":"array","items":{"type":"string","enum":["temri:read","temri:observe","temri:verify","temri:correct","temri:forget","temri:admin"]}},"created_at":{"type":"number","description":"Finite UTC Unix seconds, including fractional seconds."},"expires_at":{"type":"number","description":"Finite UTC Unix seconds, including fractional seconds."},"revoked_at":{"anyOf":[{"type":"number","description":"Finite UTC Unix seconds, including fractional seconds."},{"type":"null"}]}},"required":["id","product_installation_id","grants","scopes","created_at","expires_at","revoked_at"],"additionalProperties":false}},"next_cursor":{"anyOf":[{"type":"string","minLength":1,"maxLength":512},{"type":"null"}]}},"required":["credentials","next_cursor"],"additionalProperties":false}}}},"default":{"description":"Safe structured error","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_input","unauthenticated","forbidden","enrollment_required","not_found","method_not_allowed","conflict","idempotency_conflict","idempotency_required","budget_exceeded","rate_limited","projection_pending","unavailable","internal"]},"message":{"type":"string","enum":["The request is invalid.","Authentication is required.","This operation is not permitted.","Workspace creation requires pilot enrollment.","The resource was not found.","This method is not supported.","The resource changed. Reload before retrying.","The idempotency key was used for a different request.","An idempotency key is required.","The request exceeds an operation limit.","Too many requests. Retry later.","The search projection is catching up.","The service is temporarily unavailable.","The request could not be completed."]},"status":{"type":"integer","minimum":400,"maximum":599},"retryable":{"type":"boolean"},"request_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"retry_after_seconds":{"anyOf":[{"type":"number","minimum":0,"maximum":3600},{"type":"null"}]}},"required":["code","message","status","retryable","request_id","retry_after_seconds"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}},"security":[{"bearerAuth":[]}],"x-temri-mcp-name":"temri_integrations_keys_list","x-temri-scopes":["temri:admin"],"x-temri-capabilities":["admin"],"x-temri-idempotency":"none","x-temri-replay":"none","x-temri-mcp-exposed":true,"x-temri-migration-only":false,"x-temri-budget":{"max_request_bytes":262144,"max_response_bytes":1048576,"max_items":100,"max_context_chars":0,"max_candidates":0,"max_provider_calls":0,"max_attempts":1,"timeout_ms":10000,"cost_units":1},"x-temri-runtime-validation":"Strict Zod schemas also enforce exact-text, interval, byte-budget and other cross-field invariants."}},"/v1/integrations/{id}/keys/{credential_id}/revoke":{"post":{"operationId":"integrations.keys.revoke","description":"Owner/admin only. Bind installation and credential to the workspace; ledger revocation is authoritative at the next request, before directory cleanup.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"}},{"name":"credential_id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"}}],"responses":{"200":{"description":"Operation result","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"credential":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"product_installation_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"grants":{"maxItems":32,"type":"array","items":{"type":"object","properties":{"namespace_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"capabilities":{"maxItems":6,"type":"array","items":{"type":"string","enum":["read","observe","verify","correct","forget","admin"]}},"inherit":{"type":"boolean"}},"required":["namespace_id","capabilities","inherit"],"additionalProperties":false}},"scopes":{"minItems":1,"maxItems":6,"type":"array","items":{"type":"string","enum":["temri:read","temri:observe","temri:verify","temri:correct","temri:forget","temri:admin"]}},"created_at":{"type":"number","description":"Finite UTC Unix seconds, including fractional seconds."},"expires_at":{"type":"number","description":"Finite UTC Unix seconds, including fractional seconds."},"revoked_at":{"anyOf":[{"type":"number","description":"Finite UTC Unix seconds, including fractional seconds."},{"type":"null"}]}},"required":["id","product_installation_id","grants","scopes","created_at","expires_at","revoked_at"],"additionalProperties":false},"commit":{"type":"object","properties":{"sequence":{"type":"integer","minimum":0,"maximum":9007199254740991},"recorded_at":{"type":"number","description":"Finite UTC Unix seconds, including fractional seconds."}},"required":["sequence","recorded_at"],"additionalProperties":false}},"required":["credential","commit"],"additionalProperties":false}}}},"default":{"description":"Safe structured error","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_input","unauthenticated","forbidden","enrollment_required","not_found","method_not_allowed","conflict","idempotency_conflict","idempotency_required","budget_exceeded","rate_limited","projection_pending","unavailable","internal"]},"message":{"type":"string","enum":["The request is invalid.","Authentication is required.","This operation is not permitted.","Workspace creation requires pilot enrollment.","The resource was not found.","This method is not supported.","The resource changed. Reload before retrying.","The idempotency key was used for a different request.","An idempotency key is required.","The request exceeds an operation limit.","Too many requests. Retry later.","The search projection is catching up.","The service is temporarily unavailable.","The request could not be completed."]},"status":{"type":"integer","minimum":400,"maximum":599},"retryable":{"type":"boolean"},"request_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"retry_after_seconds":{"anyOf":[{"type":"number","minimum":0,"maximum":3600},{"type":"null"}]}},"required":["code","message","status","retryable","request_id","retry_after_seconds"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}},"security":[{"bearerAuth":[]}],"x-temri-mcp-name":"temri_integrations_keys_revoke","x-temri-scopes":["temri:admin"],"x-temri-capabilities":["admin"],"x-temri-idempotency":"required","x-temri-replay":"exact_result","x-temri-mcp-exposed":true,"x-temri-migration-only":false,"x-temri-budget":{"max_request_bytes":262144,"max_response_bytes":1048576,"max_items":1,"max_context_chars":0,"max_candidates":0,"max_provider_calls":0,"max_attempts":1,"timeout_ms":10000,"cost_units":1},"x-temri-runtime-validation":"Strict Zod schemas also enforce exact-text, interval, byte-budget and other cross-field invariants.","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{},"required":[],"additionalProperties":false}}}}}},"/v1/integrations/{id}/revoke":{"post":{"operationId":"integrations.revoke","description":"Owner/admin only. Revoke installation grants and all associated ledger credentials immediately, then reconcile directory metadata.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"}}],"responses":{"200":{"description":"Operation result","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"integration":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"product":{"type":"string","minLength":1,"maxLength":80},"name":{"type":"string","minLength":1,"maxLength":160},"grants":{"maxItems":32,"type":"array","items":{"type":"object","properties":{"namespace_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"capabilities":{"maxItems":6,"type":"array","items":{"type":"string","enum":["read","observe","verify","correct","forget","admin"]}},"inherit":{"type":"boolean"}},"required":["namespace_id","capabilities","inherit"],"additionalProperties":false}},"scopes":{"minItems":1,"maxItems":6,"type":"array","items":{"type":"string","enum":["temri:read","temri:observe","temri:verify","temri:correct","temri:forget","temri:admin"]}},"created_at":{"type":"number","description":"Finite UTC Unix seconds, including fractional seconds."},"revoked_at":{"anyOf":[{"type":"number","description":"Finite UTC Unix seconds, including fractional seconds."},{"type":"null"}]}},"required":["id","product","name","grants","scopes","created_at","revoked_at"],"additionalProperties":false},"commit":{"type":"object","properties":{"sequence":{"type":"integer","minimum":0,"maximum":9007199254740991},"recorded_at":{"type":"number","description":"Finite UTC Unix seconds, including fractional seconds."}},"required":["sequence","recorded_at"],"additionalProperties":false}},"required":["integration","commit"],"additionalProperties":false}}}},"default":{"description":"Safe structured error","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_input","unauthenticated","forbidden","enrollment_required","not_found","method_not_allowed","conflict","idempotency_conflict","idempotency_required","budget_exceeded","rate_limited","projection_pending","unavailable","internal"]},"message":{"type":"string","enum":["The request is invalid.","Authentication is required.","This operation is not permitted.","Workspace creation requires pilot enrollment.","The resource was not found.","This method is not supported.","The resource changed. Reload before retrying.","The idempotency key was used for a different request.","An idempotency key is required.","The request exceeds an operation limit.","Too many requests. Retry later.","The search projection is catching up.","The service is temporarily unavailable.","The request could not be completed."]},"status":{"type":"integer","minimum":400,"maximum":599},"retryable":{"type":"boolean"},"request_id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"retry_after_seconds":{"anyOf":[{"type":"number","minimum":0,"maximum":3600},{"type":"null"}]}},"required":["code","message","status","retryable","request_id","retry_after_seconds"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}},"security":[{"bearerAuth":[]}],"x-temri-mcp-name":"temri_integrations_revoke","x-temri-scopes":["temri:admin"],"x-temri-capabilities":["admin"],"x-temri-idempotency":"required","x-temri-replay":"exact_result","x-temri-mcp-exposed":true,"x-temri-migration-only":false,"x-temri-budget":{"max_request_bytes":262144,"max_response_bytes":1048576,"max_items":1,"max_context_chars":0,"max_candidates":0,"max_provider_calls":0,"max_attempts":1,"timeout_ms":10000,"cost_units":1},"x-temri-runtime-validation":"Strict Zod schemas also enforce exact-text, interval, byte-budget and other cross-field invariants.","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{},"required":[],"additionalProperties":false}}}}}}},"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"REST tokens require the exact configured CLERK_AUDIENCE; MCP tokens require MCP_RESOURCE. Scopes never replace namespace grants."}}}}