{"$comment":"Machine-readable catalog for agents (redesign §4.1). error_codes and scopes are generated from the single source of truth at server build time; see docs/developer/14-agent-tools.md.","api_key_scopes":[{"admin":false,"read":true,"resource":"analytics","write":true},{"admin":false,"read":true,"resource":"assets","write":true},{"admin":false,"read":true,"resource":"audit_logs","write":false},{"admin":false,"read":true,"resource":"billing","write":false},{"admin":false,"read":true,"resource":"databases","write":true},{"admin":false,"read":true,"resource":"functions","write":true},{"admin":false,"read":true,"resource":"groups","write":true},{"admin":true,"read":true,"resource":"leaderboards","write":true},{"admin":false,"read":true,"resource":"oauthproviders","write":true},{"admin":false,"read":true,"resource":"outbox","write":true},{"admin":false,"read":true,"resource":"payments","write":true},{"admin":false,"read":true,"resource":"projects","write":true},{"admin":false,"read":true,"resource":"runbooks","write":true},{"admin":false,"read":true,"resource":"runtime_vars","write":true},{"admin":false,"read":true,"resource":"storage","write":true},{"admin":false,"read":true,"resource":"subscriptions","write":true},{"admin":false,"read":true,"resource":"users","write":true}],"error_codes":[{"code":"CATALOG.DDL_CONFLICT","retryable":true},{"code":"DOCUMENT.VERSION_REQUIRED","retryable":false},{"code":"DOCUMENT.ACL_TOO_LARGE","retryable":false},{"code":"DOCUMENT.EXHAUSTED","retryable":true},{"code":"IDEMPOTENCY.KEY_CONFLICT","retryable":false},{"code":"AGGREGATE.OVERFLOW","retryable":false},{"code":"DOCUMENT.VERSION_INVALID","retryable":false},{"code":"DOCUMENT.VERSION_CONFLICT","retryable":true},{"code":"DOCUMENT.ATTRIBUTE_UNSERIALIZABLE","retryable":false},{"code":"IDEMPOTENCY.IN_PROGRESS","retryable":true},{"code":"EVENTS.RESUME_EXPIRED","retryable":false},{"code":"DOCUMENT.INVALID_ARGUMENT","retryable":false},{"code":"CATALOG.COLUMN_LIMIT_EXCEEDED","retryable":false},{"code":"DOCUMENT.PERMISSION_DENIED","retryable":false},{"code":"DOCUMENT.ALREADY_EXISTS","retryable":false},{"code":"DOCUMENT.NOT_FOUND","retryable":false},{"code":"DOCUMENT.NO_FIELDS_TO_UPDATE","retryable":false},{"code":"DOCUMENT.VERSION_COLUMN_CONFLICT","retryable":false},{"code":"DOCUMENT.VERSION_COLUMN_UNAVAILABLE","retryable":false},{"code":"DOCUMENT.TOO_LARGE","retryable":false}],"query":{"notes":["operators apply to declared attributes only; undeclared keys are rejected","containsAny / containsAll require array=true attributes (server-side whitelist)","negation is expressed by not* variants only; there is no generic NOT","and / or nest recursively (depth \u003c= 8)","vector_search is a KNN operator outside the filter tree (typed AST only, no DSL string)"],"operators":[{"name":"equal","proto_field":"eq","min_values":1,"kind":"comparison"},{"name":"notEqual","proto_field":"ne","min_values":1,"kind":"comparison"},{"name":"lessThan","proto_field":"lt","min_values":1,"kind":"comparison"},{"name":"lessThanEqual","proto_field":"lte","min_values":1,"kind":"comparison"},{"name":"greaterThan","proto_field":"gt","min_values":1,"kind":"comparison"},{"name":"greaterThanEqual","proto_field":"gte","min_values":1,"kind":"comparison"},{"name":"in","proto_field":"in","min_values":1,"kind":"comparison"},{"name":"contains","proto_field":"contains","min_values":1,"kind":"comparison"},{"name":"notContains","proto_field":"not_contains","min_values":1,"kind":"comparison"},{"name":"startsWith","proto_field":"starts_with","min_values":1,"kind":"comparison"},{"name":"notStartsWith","proto_field":"not_starts_with","min_values":1,"kind":"comparison"},{"name":"endsWith","proto_field":"ends_with","min_values":1,"kind":"comparison"},{"name":"notEndsWith","proto_field":"not_ends_with","min_values":1,"kind":"comparison"},{"name":"search","proto_field":"search","min_values":1,"kind":"comparison"},{"name":"notSearch","proto_field":"not_search","min_values":1,"kind":"comparison"},{"name":"isNull","proto_field":"is_null","kind":"comparison"},{"name":"isNotNull","proto_field":"is_not_null","kind":"comparison"},{"name":"between","proto_field":"between","min_values":2,"max_values":2,"kind":"comparison"},{"name":"notBetween","proto_field":"not_between","min_values":2,"max_values":2,"kind":"comparison"},{"name":"containsAny","proto_field":"contains_any","min_values":1,"kind":"comparison","array_only":true},{"name":"containsAll","proto_field":"contains_all","min_values":1,"kind":"comparison","array_only":true},{"name":"and","proto_field":"and","kind":"combinator"},{"name":"or","proto_field":"or","kind":"combinator"}]},"resources":{"databases":{"service":"torchwood.server.v1.DatabasesService","verbs":[{"rpc":"CreateDatabase","http":"POST /v1/server/databases","scope":"databases.write"},{"rpc":"ListDatabases","http":"GET /v1/server/databases","scope":"databases.read"},{"rpc":"GetDatabase","http":"GET /v1/server/databases/{id}","scope":"databases.read"},{"rpc":"DeleteDatabase","http":"DELETE /v1/server/databases/{id}","scope":"databases.write"},{"rpc":"CreateCollection","http":"POST /v1/server/databases/{database_id}/collections","scope":"databases.write"},{"rpc":"ListCollections","http":"GET /v1/server/databases/{database_id}/collections","scope":"databases.read"},{"rpc":"GetCollection","http":"GET /v1/server/databases/{database_id}/collections/{collection_id}","scope":"databases.read"},{"rpc":"DeleteCollection","http":"DELETE /v1/server/databases/{database_id}/collections/{collection_id}","scope":"databases.write"},{"rpc":"UpdateCollection","http":"PATCH /v1/server/databases/{database_id}/collections/{collection_id}","scope":"databases.write"},{"rpc":"ExportCollectionSchema","http":"GET /v1/server/databases/{database_id}/collections/{collection_id}:exportSchema","scope":"databases.read"},{"rpc":"CreateAttribute","http":"POST /v1/server/databases/{database_id}/collections/{collection_id}/attributes","scope":"databases.write"},{"rpc":"DeleteAttribute","http":"DELETE /v1/server/databases/{database_id}/collections/{collection_id}/attributes/{key}","scope":"databases.write"},{"rpc":"RestoreAttribute","http":"POST /v1/server/databases/{database_id}/collections/{collection_id}/attributes/{key}:restore","scope":"databases.write"},{"rpc":"RetireAttribute","http":"POST /v1/server/databases/{database_id}/collections/{collection_id}/attributes/{key}:retire","scope":"databases.write"},{"rpc":"MigrateAttribute","http":"POST /v1/server/databases/{database_id}/collections/{collection_id}/attributes/{key}:migrate","scope":"databases.write"},{"rpc":"CreateIndex","http":"POST /v1/server/databases/{database_id}/collections/{collection_id}/indexes","scope":"databases.write"},{"rpc":"DeleteIndex","http":"DELETE /v1/server/databases/{database_id}/collections/{collection_id}/indexes/{index_id}","scope":"databases.write"},{"rpc":"CreateDocument","http":"POST /v1/server/databases/{database_id}/collections/{collection_id}/documents","scope":"databases.write"},{"rpc":"ListDocuments","http":"GET /v1/server/databases/{database_id}/collections/{collection_id}/documents; POST .../documents:list","scope":"databases.read"},{"rpc":"GetDocument","http":"GET /v1/server/databases/{database_id}/collections/{collection_id}/documents/{document_id}","scope":"databases.read"},{"rpc":"UpdateDocument","http":"PATCH /v1/server/databases/{database_id}/collections/{collection_id}/documents/{document_id}","scope":"databases.write"},{"rpc":"UpsertDocument","http":"PUT /v1/server/databases/{database_id}/collections/{collection_id}/documents/{document_id}","scope":"databases.write"},{"rpc":"DeleteDocument","http":"DELETE /v1/server/databases/{database_id}/collections/{collection_id}/documents/{document_id}","scope":"databases.write"},{"rpc":"CountDocuments","http":"GET /v1/server/databases/{database_id}/collections/{collection_id}/documents:count; POST .../documents:count","scope":"databases.read"},{"rpc":"AggregateDocuments","http":"POST /v1/server/databases/{database_id}/collections/{collection_id}/documents:aggregate","scope":"databases.read"},{"rpc":"BulkUpdateDocuments","http":"PATCH /v1/server/databases/{database_id}/collections/{collection_id}/documents:bulkUpdate","scope":"databases.write"},{"rpc":"BulkDeleteDocuments","http":"POST /v1/server/databases/{database_id}/collections/{collection_id}/documents:bulkDelete","scope":"databases.write"},{"rpc":"ExecuteTransactions","http":"POST /v1/server/databases/{database_id}/documents:execute-tx","scope":"databases.write"},{"rpc":"ListChanges","http":"GET /v1/server/databases/{database_id}/collections/{collection_id}/changes","scope":"databases.read"}]}},"service":"torchwood"}