{"openapi":"3.1.0","info":{"title":"Backwrite Platform API","version":"1.0.0","description":"Branch-based backend platform. Every response uses the platform envelope: success is `{ \"data\": …, \"request_id\": … }`, failure is `{ \"error\": { code, message, type, retryable }, \"request_id\": … }`. Authentication is a `bwk_*` API key (anonymous tier is read-only) or a platform JWT."},"servers":[{"url":"https://api.backwrite.dev","description":"The deployment serving this document."}],"paths":{"/healthz":{"get":{"summary":"Liveness","operationId":"getHealth","tags":["platform"],"responses":{"200":{"description":"the platform envelope","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"status":{}}},"request_id":{}}}}}},"400":{"description":"the request is malformed","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"401":{"description":"no valid credential","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"403":{"description":"credential lacks permission for this operation","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"404":{"description":"no such resource, or another tenant's (indistinguishable)","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"409":{"description":"the operation conflicts with current state","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"422":{"description":"the request is well-formed but domain-invalid","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"429":{"description":"rate limit exceeded","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"503":{"description":"a dependency is temporarily unavailable","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}}}}},"/metrics":{"get":{"summary":"Prometheus metrics","description":"text/plain Prometheus exposition: wire-proxy counters, pool gauges.","operationId":"getMetrics","tags":["platform"],"responses":{"200":{"description":"Prometheus text exposition","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{}}}}}}},"/openapi.json":{"get":{"summary":"This document","operationId":"getOpenApiDocument","tags":["platform"],"responses":{"200":{"description":"the platform envelope","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"data":{},"request_id":{}}}}}},"400":{"description":"the request is malformed","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"401":{"description":"no valid credential","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"403":{"description":"credential lacks permission for this operation","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"404":{"description":"no such resource, or another tenant's (indistinguishable)","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"409":{"description":"the operation conflicts with current state","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"422":{"description":"the request is well-formed but domain-invalid","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"429":{"description":"rate limit exceeded","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"503":{"description":"a dependency is temporarily unavailable","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}}}}},"/v1/admin/canary/sweep/{branch_id}":{"post":{"summary":"Run the protection canary sweep for a branch (internal)","operationId":"runCanarySweep","tags":["internal"],"parameters":[{"name":"branch_id","in":"path","required":true,"schema":{},"description":"the branch whose protection the canary sweep verifies"}],"responses":{"200":{"description":"the platform envelope","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"findings":{"items":{}},"status":{}}},"request_id":{}}}}}},"400":{"description":"the request is malformed","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"401":{"description":"no valid credential","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"403":{"description":"credential lacks permission for this operation","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"404":{"description":"no such resource, or another tenant's (indistinguishable)","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"409":{"description":"the operation conflicts with current state","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"422":{"description":"the request is well-formed but domain-invalid","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"429":{"description":"rate limit exceeded","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"503":{"description":"a dependency is temporarily unavailable","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}}}}},"/v1/admin/keys/{key_id}/cache":{"delete":{"summary":"Evict a key from the gateway verification cache (internal)","operationId":"evictKeyCache","tags":["internal"],"parameters":[{"name":"key_id","in":"path","required":true,"schema":{},"description":"the API key whose cache entry is evicted"}],"responses":{"200":{"description":"the platform envelope","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"evicted":{}}},"request_id":{}}}}}},"400":{"description":"the request is malformed","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"401":{"description":"no valid credential","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"403":{"description":"credential lacks permission for this operation","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"404":{"description":"no such resource, or another tenant's (indistinguishable)","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"409":{"description":"the operation conflicts with current state","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"422":{"description":"the request is well-formed but domain-invalid","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"429":{"description":"rate limit exceeded","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"503":{"description":"a dependency is temporarily unavailable","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}}}}},"/v1/admin/sessions":{"get":{"summary":"Active wire-proxy sessions","operationId":"listAdminSessions","tags":["platform"],"responses":{"200":{"description":"the platform envelope","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"sessions":{"items":{"properties":{"connected_at":{},"database":{},"peer":{},"user":{}}}}}},"request_id":{}}}}}},"400":{"description":"the request is malformed","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"401":{"description":"no valid credential","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"403":{"description":"credential lacks permission for this operation","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"404":{"description":"no such resource, or another tenant's (indistinguishable)","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"409":{"description":"the operation conflicts with current state","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"422":{"description":"the request is well-formed but domain-invalid","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"429":{"description":"rate limit exceeded","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"503":{"description":"a dependency is temporarily unavailable","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}}}}},"/v1/branches/{branch_id}/credentials":{"get":{"summary":"The branch's database credential material","operationId":"getBranchCredentials","tags":["platform"],"responses":{"200":{"description":"the platform envelope","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"data":{},"request_id":{}}}}}},"400":{"description":"the request is malformed","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"401":{"description":"no valid credential","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"403":{"description":"credential lacks permission for this operation","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"404":{"description":"no such resource, or another tenant's (indistinguishable)","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"409":{"description":"the operation conflicts with current state","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"422":{"description":"the request is well-formed but domain-invalid","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"429":{"description":"rate limit exceeded","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"503":{"description":"a dependency is temporarily unavailable","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}}}},"parameters":[{"name":"branch_id","in":"path","required":true,"schema":{},"description":"the branch"}]},"/v1/cache/{branch_id}/entries/{key}":{"get":{"summary":"Read a cache entry","operationId":"getCacheEntry","tags":["cache"],"responses":{"200":{"description":"the platform envelope","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"data":{},"request_id":{}}}}}},"400":{"description":"the request is malformed","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"401":{"description":"no valid credential","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"403":{"description":"credential lacks permission for this operation","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"404":{"description":"no such resource, or another tenant's (indistinguishable)","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"409":{"description":"the operation conflicts with current state","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"422":{"description":"the request is well-formed but domain-invalid","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"429":{"description":"rate limit exceeded","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"503":{"description":"a dependency is temporarily unavailable","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}}}},"put":{"summary":"Write a cache entry (JSON body, optional TTL)","operationId":"putCacheEntry","tags":["cache"],"requestBody":{"required":true,"content":{"application/json":{"schema":{}}},"description":"The entry's JSON value; `{\"ttl\": seconds}` reserves the key\nfor per-entry expiry.\""},"responses":{"200":{"description":"the platform envelope","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"data":{},"request_id":{}}}}}},"400":{"description":"the request is malformed","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"401":{"description":"no valid credential","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"403":{"description":"credential lacks permission for this operation","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"404":{"description":"no such resource, or another tenant's (indistinguishable)","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"409":{"description":"the operation conflicts with current state","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"422":{"description":"the request is well-formed but domain-invalid","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"429":{"description":"rate limit exceeded","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"503":{"description":"a dependency is temporarily unavailable","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}}}},"delete":{"summary":"Delete a cache entry","operationId":"deleteCacheEntry","tags":["cache"],"responses":{"204":{"description":"deleted, or already absent","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}}},"400":{"description":"the request is malformed","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"401":{"description":"no valid credential","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"403":{"description":"credential lacks permission for this operation","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"404":{"description":"no such resource, or another tenant's (indistinguishable)","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"409":{"description":"the operation conflicts with current state","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"422":{"description":"the request is well-formed but domain-invalid","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"429":{"description":"rate limit exceeded","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"503":{"description":"a dependency is temporarily unavailable","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}}}},"parameters":[{"name":"branch_id","in":"path","required":true,"schema":{},"description":"the branch namespace"},{"name":"key","in":"path","required":true,"schema":{},"description":"the entry key"}]},"/v1/cache/{branch_id}/entries/{key}/increment":{"post":{"summary":"Atomically increment a numeric entry","operationId":"incrementCacheEntry","tags":["cache"],"responses":{"200":{"description":"the platform envelope","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"value":{}}},"request_id":{}}}}}},"400":{"description":"the request is malformed","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"401":{"description":"no valid credential","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"403":{"description":"credential lacks permission for this operation","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"404":{"description":"no such resource, or another tenant's (indistinguishable)","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"409":{"description":"the operation conflicts with current state","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"422":{"description":"the request is well-formed but domain-invalid","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"429":{"description":"rate limit exceeded","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"503":{"description":"a dependency is temporarily unavailable","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}}}},"parameters":[{"name":"branch_id","in":"path","required":true,"schema":{},"description":"the branch namespace"},{"name":"key","in":"path","required":true,"schema":{},"description":"the entry key"}]},"/v1/connections/{connection_id}":{"get":{"summary":"Read one connection","operationId":"getConnection","tags":["connections"],"responses":{"200":{"description":"the platform envelope","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"data":{"$ref":"#/components/schemas/Connection"},"request_id":{}}}}}},"400":{"description":"the request is malformed","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"401":{"description":"no valid credential","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"403":{"description":"credential lacks permission for this operation","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"404":{"description":"no such resource, or another tenant's (indistinguishable)","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"409":{"description":"the operation conflicts with current state","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"422":{"description":"the request is well-formed but domain-invalid","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"429":{"description":"rate limit exceeded","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"503":{"description":"a dependency is temporarily unavailable","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}}}},"delete":{"summary":"Revoke a connection (terminal, idempotent)","operationId":"revokeConnection","tags":["connections"],"responses":{"204":{"description":"revoked, or already revoked","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}}},"400":{"description":"the request is malformed","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"401":{"description":"no valid credential","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"403":{"description":"credential lacks permission for this operation","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"404":{"description":"no such resource, or another tenant's (indistinguishable)","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"409":{"description":"the operation conflicts with current state","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"422":{"description":"the request is well-formed but domain-invalid","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"429":{"description":"rate limit exceeded","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"503":{"description":"a dependency is temporarily unavailable","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}}}},"parameters":[{"name":"connection_id","in":"path","required":true,"schema":{},"description":"the connection grant"}]},"/v1/connections/{connection_id}/rotate":{"post":{"summary":"Rotate a connection's credential","description":"The response reports one of three outcomes: rotated (new credential on stdout-shaped field, shown once), not_performed (nothing ran), or indeterminate (credential state unknown; the connection is marked failed).","operationId":"rotateConnection","tags":["connections"],"responses":{"200":{"description":"the platform envelope","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"connection":{"$ref":"#/components/schemas/Connection"},"credential":{},"last_error":{},"outcome":{"enum":["rotated","not_performed","indeterminate"]}}},"request_id":{}}}}}},"400":{"description":"the request is malformed","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"401":{"description":"no valid credential","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"403":{"description":"credential lacks permission for this operation","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"404":{"description":"no such resource, or another tenant's (indistinguishable)","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"409":{"description":"the operation conflicts with current state","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"422":{"description":"the request is well-formed but domain-invalid","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"429":{"description":"rate limit exceeded","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"503":{"description":"a dependency is temporarily unavailable","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}}}},"parameters":[{"name":"connection_id","in":"path","required":true,"schema":{},"description":"the connection grant"}]},"/v1/data/{branch_id}":{"post":{"summary":"Run a table/RPC operation against the branch","description":"Operation-shaped POST: `{ \"operation\": \"select\" | \"insert\" | \"update\" | \"delete\" | \"rpc\", … }`. Anonymous-tier keys are restricted to reads by an operation allow-list in the handler, not by HTTP method.","operationId":"runDataOperation","tags":["data-api"],"requestBody":{"required":true,"content":{"application/json":{"schema":{}}},"description":"The operation descriptor: `operation` names the kind (select,\ninsert, update, delete, rpc) and the remaining fields bind its\narguments (table, values, filters, fn, args)."},"responses":{"200":{"description":"the platform envelope","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"data":{},"request_id":{}}}}}},"400":{"description":"the request is malformed","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"401":{"description":"no valid credential","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"403":{"description":"credential lacks permission for this operation","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"404":{"description":"no such resource, or another tenant's (indistinguishable)","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"409":{"description":"the operation conflicts with current state","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"422":{"description":"the request is well-formed but domain-invalid","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"429":{"description":"rate limit exceeded","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"503":{"description":"a dependency is temporarily unavailable","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}}}},"parameters":[{"name":"branch_id","in":"path","required":true,"schema":{},"description":"the branch to query"}]},"/v1/projects":{"get":{"summary":"List projects visible to the credential","operationId":"listProjects","tags":["discovery"],"responses":{"200":{"description":"the platform envelope","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"projects":{"items":{"properties":{"id":{},"name":{},"organization_id":{},"slug":{}}}}}},"request_id":{}}}}}},"400":{"description":"the request is malformed","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"401":{"description":"no valid credential","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"403":{"description":"credential lacks permission for this operation","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"404":{"description":"no such resource, or another tenant's (indistinguishable)","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"409":{"description":"the operation conflicts with current state","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"422":{"description":"the request is well-formed but domain-invalid","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"429":{"description":"rate limit exceeded","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"503":{"description":"a dependency is temporarily unavailable","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}}}}},"/v1/projects/{project_id}/branches":{"get":{"summary":"List a project's live branches","operationId":"listProjectBranches","tags":["discovery"],"responses":{"200":{"description":"the platform envelope","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"branches":{"items":{"$ref":"#/components/schemas/Branch"}}}},"request_id":{}}}}}},"400":{"description":"the request is malformed","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"401":{"description":"no valid credential","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"403":{"description":"credential lacks permission for this operation","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"404":{"description":"no such resource, or another tenant's (indistinguishable)","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"409":{"description":"the operation conflicts with current state","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"422":{"description":"the request is well-formed but domain-invalid","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"429":{"description":"rate limit exceeded","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"503":{"description":"a dependency is temporarily unavailable","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}}}},"parameters":[{"name":"project_id","in":"path","required":true,"schema":{},"description":"the owning project"}]},"/v1/projects/{project_id}/branches/{branch_id}/connection":{"get":{"summary":"Connection endpoints for one branch","operationId":"getBranchConnection","tags":["discovery"],"responses":{"200":{"description":"the platform envelope","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"data":{},"request_id":{}}}}}},"400":{"description":"the request is malformed","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"401":{"description":"no valid credential","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"403":{"description":"credential lacks permission for this operation","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"404":{"description":"no such resource, or another tenant's (indistinguishable)","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"409":{"description":"the operation conflicts with current state","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"422":{"description":"the request is well-formed but domain-invalid","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"429":{"description":"rate limit exceeded","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"503":{"description":"a dependency is temporarily unavailable","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}}}},"parameters":[{"name":"project_id","in":"path","required":true,"schema":{},"description":"the owning project"},{"name":"branch_id","in":"path","required":true,"schema":{},"description":"the branch to describe"}]},"/v1/projects/{project_id}/branches/{branch_id}/connection-profiles":{"get":{"summary":"Runtime-specific connection profiles","operationId":"getBranchConnectionProfiles","tags":["discovery"],"responses":{"200":{"description":"the platform envelope","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"profiles":{"items":{"properties":{"runtime":{},"url":{}}}}}},"request_id":{}}}}}},"400":{"description":"the request is malformed","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"401":{"description":"no valid credential","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"403":{"description":"credential lacks permission for this operation","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"404":{"description":"no such resource, or another tenant's (indistinguishable)","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"409":{"description":"the operation conflicts with current state","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"422":{"description":"the request is well-formed but domain-invalid","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"429":{"description":"rate limit exceeded","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"503":{"description":"a dependency is temporarily unavailable","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}}}},"parameters":[{"name":"project_id","in":"path","required":true,"schema":{},"description":"the owning project"},{"name":"branch_id","in":"path","required":true,"schema":{},"description":"the branch to describe"}]},"/v1/projects/{project_id}/branches/{branch_id}/credentials/rotate":{"post":{"summary":"Rotate the branch's developer SQL credential","operationId":"rotateProjectBranchCredential","tags":["data"],"parameters":[{"name":"project_id","in":"path","required":true,"schema":{},"description":"the owning project"},{"name":"branch_id","in":"path","required":true,"schema":{},"description":"the branch whose developer credential to rotate"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{}}},"description":"Optional custom password; omitted means generate a secure password."},"responses":{"200":{"description":"Rotate the branch's developer SQL credential","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"branch_id":{},"password":{},"role":{}}}}}},"400":{"description":"the request is malformed","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"401":{"description":"no valid credential","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"403":{"description":"credential lacks permission for this operation","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"404":{"description":"no such resource, or another tenant's (indistinguishable)","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"409":{"description":"the operation conflicts with current state","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"422":{"description":"the request is well-formed but domain-invalid","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"429":{"description":"rate limit exceeded","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"503":{"description":"a dependency is temporarily unavailable","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}}}}},"/v1/projects/{project_id}/branches/{branch_id}/env":{"get":{"summary":"The .env document for this branch","operationId":"getBranchEnvDocument","tags":["discovery"],"responses":{"200":{"description":"the platform envelope","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"data":{"$ref":"#/components/schemas/EnvDocument"},"request_id":{}}}}}},"400":{"description":"the request is malformed","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"401":{"description":"no valid credential","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"403":{"description":"credential lacks permission for this operation","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"404":{"description":"no such resource, or another tenant's (indistinguishable)","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"409":{"description":"the operation conflicts with current state","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"422":{"description":"the request is well-formed but domain-invalid","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"429":{"description":"rate limit exceeded","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"503":{"description":"a dependency is temporarily unavailable","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}}}},"parameters":[{"name":"project_id","in":"path","required":true,"schema":{},"description":"the owning project"},{"name":"branch_id","in":"path","required":true,"schema":{},"description":"the branch to configure for"}]},"/v1/projects/{project_id}/connections":{"get":{"summary":"List the project's connections","operationId":"listConnections","tags":["connections"],"responses":{"200":{"description":"the platform envelope","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"connections":{"items":{"$ref":"#/components/schemas/Connection"}}}},"request_id":{}}}}}},"400":{"description":"the request is malformed","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"401":{"description":"no valid credential","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"403":{"description":"credential lacks permission for this operation","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"404":{"description":"no such resource, or another tenant's (indistinguishable)","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"409":{"description":"the operation conflicts with current state","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"422":{"description":"the request is well-formed but domain-invalid","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"429":{"description":"rate limit exceeded","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"503":{"description":"a dependency is temporarily unavailable","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}}}},"post":{"summary":"Create a connection grant","operationId":"createConnection","tags":["connections"],"requestBody":{"required":true,"content":{"application/json":{"schema":{}}},"description":"name, type, and (for database types) branch_id."},"responses":{"200":{"description":"the platform envelope","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"connection":{"$ref":"#/components/schemas/Connection"},"credential":{},"endpoints":{}}},"request_id":{}}}}}},"400":{"description":"the request is malformed","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"401":{"description":"no valid credential","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"403":{"description":"credential lacks permission for this operation","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"404":{"description":"no such resource, or another tenant's (indistinguishable)","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"409":{"description":"the operation conflicts with current state","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"422":{"description":"the request is well-formed but domain-invalid","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"429":{"description":"rate limit exceeded","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"503":{"description":"a dependency is temporarily unavailable","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}}}},"parameters":[{"name":"project_id","in":"path","required":true,"schema":{},"description":"the owning project"}]},"/v1/projects/{project_id}/connectivity":{"get":{"summary":"A project's connectivity summary","operationId":"getProjectConnectivity","tags":["discovery"],"responses":{"200":{"description":"the platform envelope","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"capabilities":{"additional_properties":{"properties":{"enabled":{},"reason":{}}}},"preferred_branch":{"properties":{"id":{},"slug":{}}},"project_id":{}}},"request_id":{}}}}}},"400":{"description":"the request is malformed","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"401":{"description":"no valid credential","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"403":{"description":"credential lacks permission for this operation","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"404":{"description":"no such resource, or another tenant's (indistinguishable)","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"409":{"description":"the operation conflicts with current state","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"422":{"description":"the request is well-formed but domain-invalid","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"429":{"description":"rate limit exceeded","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"503":{"description":"a dependency is temporarily unavailable","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}}}},"parameters":[{"name":"project_id","in":"path","required":true,"schema":{},"description":"the owning project"}]},"/v1/projects/{project_id}/distributed":{"get":{"summary":"Distributed SQL topology: platform settings and the project's branch-database nodes","operationId":"getProjectDistributedTopology","tags":["data"],"responses":{"200":{"description":"Distributed SQL topology: platform settings and the project's branch-database nodes","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"distributed_enabled":{},"nodes":{"items":{}},"settings":{}}}}}},"400":{"description":"the request is malformed","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"401":{"description":"no valid credential","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"403":{"description":"credential lacks permission for this operation","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"404":{"description":"no such resource, or another tenant's (indistinguishable)","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"409":{"description":"the operation conflicts with current state","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"422":{"description":"the request is well-formed but domain-invalid","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"429":{"description":"rate limit exceeded","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"503":{"description":"a dependency is temporarily unavailable","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}}}},"parameters":[{"name":"project_id","in":"path","required":true,"schema":{},"description":"the owning project"}]},"/v1/projects/{project_id}/query":{"post":{"summary":"Run SQL against the project's branch database (SQL failures answer 200 with success:false)","operationId":"runProjectQuery","tags":["data"],"parameters":[{"name":"project_id","in":"path","required":true,"schema":{},"description":"the owning project"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{}}},"description":"sql: the statement(s) to run; view: output masking (human/masked/raw/security)."},"responses":{"200":{"description":"Run SQL against the project's branch database (SQL failures answer 200 with success:false)","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"columns":{"items":{}},"error":{},"execution_time_ms":{},"rows":{"items":{"items":{}}},"success":{},"summary":{}}}}}},"400":{"description":"the request is malformed","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"401":{"description":"no valid credential","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"403":{"description":"credential lacks permission for this operation","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"404":{"description":"no such resource, or another tenant's (indistinguishable)","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"409":{"description":"the operation conflicts with current state","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"422":{"description":"the request is well-formed but domain-invalid","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"429":{"description":"rate limit exceeded","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"503":{"description":"a dependency is temporarily unavailable","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}}}}},"/v1/projects/{project_id}/schemas":{"get":{"summary":"List the project database's user schemas","operationId":"listProjectSchemas","tags":["data"],"responses":{"200":{"description":"List the project database's user schemas","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"database":{},"schemas":{"items":{}}}}}}},"400":{"description":"the request is malformed","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"401":{"description":"no valid credential","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"403":{"description":"credential lacks permission for this operation","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"404":{"description":"no such resource, or another tenant's (indistinguishable)","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"409":{"description":"the operation conflicts with current state","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"422":{"description":"the request is well-formed but domain-invalid","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"429":{"description":"rate limit exceeded","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"503":{"description":"a dependency is temporarily unavailable","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}}}},"post":{"summary":"Create a schema in the project database","operationId":"createProjectSchema","tags":["data"],"parameters":[{"name":"project_id","in":"path","required":true,"schema":{},"description":"the owning project"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{}}},"description":"name: the schema identifier to create."},"responses":{"200":{"description":"Create a schema in the project database","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"schema":{},"success":{}}}}}},"400":{"description":"the request is malformed","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"401":{"description":"no valid credential","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"403":{"description":"credential lacks permission for this operation","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"404":{"description":"no such resource, or another tenant's (indistinguishable)","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"409":{"description":"the operation conflicts with current state","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"422":{"description":"the request is well-formed but domain-invalid","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"429":{"description":"rate limit exceeded","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"503":{"description":"a dependency is temporarily unavailable","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}}}},"parameters":[{"name":"project_id","in":"path","required":true,"schema":{},"description":"the owning project"}]},"/v1/projects/{project_id}/tables":{"get":{"summary":"List the tables of one schema with their columns","operationId":"listProjectTables","tags":["data"],"responses":{"200":{"description":"List the tables of one schema with their columns","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"database":{},"schema":{},"tables":{"items":{"properties":{"column_count":{},"columns":{"items":{}},"has_rls":{},"name":{},"rows":{},"schema":{}}}}}}}}},"400":{"description":"the request is malformed","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"401":{"description":"no valid credential","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"403":{"description":"credential lacks permission for this operation","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"404":{"description":"no such resource, or another tenant's (indistinguishable)","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"409":{"description":"the operation conflicts with current state","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"422":{"description":"the request is well-formed but domain-invalid","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"429":{"description":"rate limit exceeded","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"503":{"description":"a dependency is temporarily unavailable","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}}}},"post":{"summary":"Create a table, its columns and foreign keys atomically","operationId":"createProjectTable","tags":["data"],"parameters":[{"name":"project_id","in":"path","required":true,"schema":{},"description":"the owning project"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{}}},"description":"Create-table definition: schema, name, columns, foreign_keys, and optional enable_rls."},"responses":{"200":{"description":"Create a table, its columns and foreign keys atomically","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"ddl":{},"success":{},"table":{}}}}}},"400":{"description":"the request is malformed","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"401":{"description":"no valid credential","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"403":{"description":"credential lacks permission for this operation","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"404":{"description":"no such resource, or another tenant's (indistinguishable)","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"409":{"description":"the operation conflicts with current state","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"422":{"description":"the request is well-formed but domain-invalid","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"429":{"description":"rate limit exceeded","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"503":{"description":"a dependency is temporarily unavailable","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}}}},"parameters":[{"name":"project_id","in":"path","required":true,"schema":{},"description":"the owning project"}]},"/v1/projects/{project_id}/tables/{table}":{"delete":{"summary":"Drop a table from the selected schema","operationId":"dropProjectTable","tags":["data"],"parameters":[{"name":"project_id","in":"path","required":true,"schema":{},"description":"the owning project"},{"name":"table","in":"path","required":true,"schema":{},"description":"the table to drop"}],"responses":{"200":{"description":"Drop a table from the selected schema","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"success":{},"table":{}}}}}},"400":{"description":"the request is malformed","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"401":{"description":"no valid credential","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"403":{"description":"credential lacks permission for this operation","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"404":{"description":"no such resource, or another tenant's (indistinguishable)","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"409":{"description":"the operation conflicts with current state","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"422":{"description":"the request is well-formed but domain-invalid","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"429":{"description":"rate limit exceeded","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"503":{"description":"a dependency is temporarily unavailable","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}}}}},"/v1/projects/{project_id}/tables/{table}/columns":{"post":{"summary":"Add one column to a table","operationId":"addProjectTableColumn","tags":["data"],"parameters":[{"name":"project_id","in":"path","required":true,"schema":{},"description":"the owning project"},{"name":"table","in":"path","required":true,"schema":{},"description":"the table to alter"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{}}},"description":"Column name, PostgreSQL type, and optional default/nullability/unique/array flags."},"responses":{"200":{"description":"Add one column to a table","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"column":{},"ddl":{},"success":{}}}}}},"400":{"description":"the request is malformed","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"401":{"description":"no valid credential","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"403":{"description":"credential lacks permission for this operation","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"404":{"description":"no such resource, or another tenant's (indistinguishable)","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"409":{"description":"the operation conflicts with current state","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"422":{"description":"the request is well-formed but domain-invalid","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"429":{"description":"rate limit exceeded","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"503":{"description":"a dependency is temporarily unavailable","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}}}}},"/v1/projects/{project_id}/tables/{table}/constraints":{"put":{"summary":"Atomically add columns and replace the table's foreign-key constraints","operationId":"updateProjectTableConstraints","tags":["data"],"parameters":[{"name":"project_id","in":"path","required":true,"schema":{},"description":"the owning project"},{"name":"table","in":"path","required":true,"schema":{},"description":"the table whose constraints to replace"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{}}},"description":"constraints: the complete desired foreign-key set; columns: optional new columns added in the same transaction."},"responses":{"200":{"description":"Atomically add columns and replace the table's foreign-key constraints","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"column_count":{},"constraint_count":{},"success":{}}}}}},"400":{"description":"the request is malformed","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"401":{"description":"no valid credential","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"403":{"description":"credential lacks permission for this operation","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"404":{"description":"no such resource, or another tenant's (indistinguishable)","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"409":{"description":"the operation conflicts with current state","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"422":{"description":"the request is well-formed but domain-invalid","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"429":{"description":"rate limit exceeded","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"503":{"description":"a dependency is temporarily unavailable","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}}}}},"/v1/projects/{project_id}/tables/{table}/definition":{"get":{"summary":"Read a table definition, constraints, indexes, policies and triggers","operationId":"getProjectTableDefinition","tags":["data"],"parameters":[{"name":"project_id","in":"path","required":true,"schema":{},"description":"the owning project"},{"name":"table","in":"path","required":true,"schema":{},"description":"the table to inspect"}],"responses":{"200":{"description":"Read a table definition, constraints, indexes, policies and triggers","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{}}}},"400":{"description":"the request is malformed","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"401":{"description":"no valid credential","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"403":{"description":"credential lacks permission for this operation","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"404":{"description":"no such resource, or another tenant's (indistinguishable)","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"409":{"description":"the operation conflicts with current state","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"422":{"description":"the request is well-formed but domain-invalid","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"429":{"description":"rate limit exceeded","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"503":{"description":"a dependency is temporarily unavailable","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}}}}},"/v1/projects/{project_id}/tables/{table}/rows":{"get":{"summary":"List rows of a table (view-resolved: human/masked/raw/security)","operationId":"listProjectRows","tags":["data"],"parameters":[{"name":"project_id","in":"path","required":true,"schema":{},"description":"the owning project"},{"name":"table","in":"path","required":true,"schema":{},"description":"the table to read"}],"responses":{"200":{"description":"List rows of a table (view-resolved: human/masked/raw/security)","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"rows":{"items":{}},"schema":{},"table":{},"total_count":{}}}}}},"400":{"description":"the request is malformed","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"401":{"description":"no valid credential","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"403":{"description":"credential lacks permission for this operation","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"404":{"description":"no such resource, or another tenant's (indistinguishable)","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"409":{"description":"the operation conflicts with current state","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"422":{"description":"the request is well-formed but domain-invalid","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"429":{"description":"rate limit exceeded","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"503":{"description":"a dependency is temporarily unavailable","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}}}},"post":{"summary":"Insert one row (values typed against the row type, never interpolated)","operationId":"insertProjectRow","tags":["data"],"parameters":[{"name":"project_id","in":"path","required":true,"schema":{},"description":"the owning project"},{"name":"table","in":"path","required":true,"schema":{},"description":"the table to write"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{}}},"description":"The row as a column → value map; omitted columns keep their defaults."},"responses":{"200":{"description":"Insert one row (values typed against the row type, never interpolated)","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"inserted":{},"success":{}}}}}},"400":{"description":"the request is malformed","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"401":{"description":"no valid credential","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"403":{"description":"credential lacks permission for this operation","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"404":{"description":"no such resource, or another tenant's (indistinguishable)","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"409":{"description":"the operation conflicts with current state","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"422":{"description":"the request is well-formed but domain-invalid","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"429":{"description":"rate limit exceeded","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"503":{"description":"a dependency is temporarily unavailable","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}}}}},"/v1/projects/{project_id}/tables/{table}/rows/delete":{"post":{"summary":"Delete rows located by key columns","operationId":"deleteProjectRows","tags":["data"],"parameters":[{"name":"project_id","in":"path","required":true,"schema":{},"description":"the owning project"},{"name":"table","in":"path","required":true,"schema":{},"description":"the table to delete from"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{}}},"description":"keys: [{column, value}] — every matching row is deleted."},"responses":{"200":{"description":"Delete rows located by key columns","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"count":{},"success":{}}}}}},"400":{"description":"the request is malformed","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"401":{"description":"no valid credential","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"403":{"description":"credential lacks permission for this operation","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"404":{"description":"no such resource, or another tenant's (indistinguishable)","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"409":{"description":"the operation conflicts with current state","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"422":{"description":"the request is well-formed but domain-invalid","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"429":{"description":"rate limit exceeded","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"503":{"description":"a dependency is temporarily unavailable","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}}}}},"/v1/projects/{project_id}/tables/{table}/rows/update":{"post":{"summary":"Update one row located by a single key column","operationId":"updateProjectRow","tags":["data"],"parameters":[{"name":"project_id","in":"path","required":true,"schema":{},"description":"the owning project"},{"name":"table","in":"path","required":true,"schema":{},"description":"the table to update"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{}}},"description":"key: {column, value} locating the row; patch: column → new value."},"responses":{"200":{"description":"Update one row located by a single key column","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"success":{},"updated":{}}}}}},"400":{"description":"the request is malformed","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"401":{"description":"no valid credential","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"403":{"description":"credential lacks permission for this operation","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"404":{"description":"no such resource, or another tenant's (indistinguishable)","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"409":{"description":"the operation conflicts with current state","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"422":{"description":"the request is well-formed but domain-invalid","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"429":{"description":"rate limit exceeded","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"503":{"description":"a dependency is temporarily unavailable","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}}}}},"/v1/queues/{branch_id}/{queue}":{"post":{"summary":"Enqueue a message","operationId":"enqueueQueueMessage","tags":["queues"],"responses":{"200":{"description":"the platform envelope","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"seq":{"description":"Stream sequence assigned by the server."}}},"request_id":{}}}}}},"400":{"description":"the request is malformed","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"401":{"description":"no valid credential","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"403":{"description":"credential lacks permission for this operation","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"404":{"description":"no such resource, or another tenant's (indistinguishable)","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"409":{"description":"the operation conflicts with current state","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"422":{"description":"the request is well-formed but domain-invalid","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"429":{"description":"rate limit exceeded","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"503":{"description":"a dependency is temporarily unavailable","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}}}},"delete":{"summary":"Delete (drain) a queue","operationId":"deleteQueue","tags":["queues"],"responses":{"204":{"description":"drained","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}}},"400":{"description":"the request is malformed","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"401":{"description":"no valid credential","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"403":{"description":"credential lacks permission for this operation","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"404":{"description":"no such resource, or another tenant's (indistinguishable)","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"409":{"description":"the operation conflicts with current state","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"422":{"description":"the request is well-formed but domain-invalid","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"429":{"description":"rate limit exceeded","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"503":{"description":"a dependency is temporarily unavailable","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}}}},"parameters":[{"name":"branch_id","in":"path","required":true,"schema":{},"description":"the branch namespace"},{"name":"queue","in":"path","required":true,"schema":{},"description":"queue name"}]},"/v1/queues/{branch_id}/{queue}/ack":{"post":{"summary":"Acknowledge / nak / term messages","operationId":"ackQueueMessages","tags":["queues"],"responses":{"200":{"description":"the platform envelope","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"acked":{}}},"request_id":{}}}}}},"400":{"description":"the request is malformed","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"401":{"description":"no valid credential","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"403":{"description":"credential lacks permission for this operation","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"404":{"description":"no such resource, or another tenant's (indistinguishable)","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"409":{"description":"the operation conflicts with current state","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"422":{"description":"the request is well-formed but domain-invalid","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"429":{"description":"rate limit exceeded","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"503":{"description":"a dependency is temporarily unavailable","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}}}},"parameters":[{"name":"branch_id","in":"path","required":true,"schema":{},"description":"the branch namespace"},{"name":"queue","in":"path","required":true,"schema":{},"description":"queue name"}]},"/v1/queues/{branch_id}/{queue}/fetch":{"post":{"summary":"Fetch a batch (pull consumer)","operationId":"fetchQueueMessages","tags":["queues"],"responses":{"200":{"description":"the platform envelope","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"messages":{"items":{"properties":{"deliver_count":{},"payload":{},"seq":{},"subject":{}}}}}},"request_id":{}}}}}},"400":{"description":"the request is malformed","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"401":{"description":"no valid credential","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"403":{"description":"credential lacks permission for this operation","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"404":{"description":"no such resource, or another tenant's (indistinguishable)","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"409":{"description":"the operation conflicts with current state","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"422":{"description":"the request is well-formed but domain-invalid","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"429":{"description":"rate limit exceeded","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"503":{"description":"a dependency is temporarily unavailable","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}}}},"parameters":[{"name":"branch_id","in":"path","required":true,"schema":{},"description":"the branch namespace"},{"name":"queue","in":"path","required":true,"schema":{},"description":"queue name"}]},"/v1/queues/{branch_id}/{queue}/stats":{"get":{"summary":"Queue depth and consumer state","operationId":"getQueueStats","tags":["queues"],"responses":{"200":{"description":"the platform envelope","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"ack_pending":{},"consumer_pending":{},"messages":{}}},"request_id":{}}}}}},"400":{"description":"the request is malformed","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"401":{"description":"no valid credential","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"403":{"description":"credential lacks permission for this operation","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"404":{"description":"no such resource, or another tenant's (indistinguishable)","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"409":{"description":"the operation conflicts with current state","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"422":{"description":"the request is well-formed but domain-invalid","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"429":{"description":"rate limit exceeded","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"503":{"description":"a dependency is temporarily unavailable","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}}}},"parameters":[{"name":"branch_id","in":"path","required":true,"schema":{},"description":"the branch namespace"},{"name":"queue","in":"path","required":true,"schema":{},"description":"queue name"}]},"/v1/realtime/{branch_id}":{"get":{"summary":"Open a realtime change stream (WebSocket upgrade)","description":"Handshake: a GET with `Upgrade: websocket` that, after key/JWT authentication and per-branch authorization, upgrades to a JSON-frame WebSocket session. Client frames: `{ \"ref\", \"action\": \"subscribe\", \"table\": \"public.x\", \"filters\": [{\"column\",\"op\":\"eq|ne|gt|lt|gte|lte\",\"value\"}], \"resume_from\"? }`, `{ \"action\": \"unsubscribe\", \"subscription\" }`, `{ \"action\": \"ping\" }`, `{ \"action\": \"close\" }`. Server frames: `subscribed` (with cursor), `change` (CDC event + monotonic `seq`/`cursor` for reconnect via `resume_from`), `pong`, and typed `error` frames. Row filters are applied server-side; subjects are derived from the authenticated branch, never from client input.","operationId":"openRealtimeStream","tags":["realtime"],"responses":{"200":{"description":"the platform envelope","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"data":{},"request_id":{}}}}}},"400":{"description":"the request is malformed","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"401":{"description":"no valid credential","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"403":{"description":"credential lacks permission for this operation","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"404":{"description":"no such resource, or another tenant's (indistinguishable)","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"409":{"description":"the operation conflicts with current state","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"422":{"description":"the request is well-formed but domain-invalid","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"429":{"description":"rate limit exceeded","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"503":{"description":"a dependency is temporarily unavailable","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}}}},"parameters":[{"name":"branch_id","in":"path","required":true,"schema":{},"description":"the branch whose changes to stream"}]},"/v1/search/{branch_id}/indexes":{"get":{"summary":"List vector indexes","operationId":"listSearchIndexes","tags":["search"],"responses":{"200":{"description":"the platform envelope","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"indexes":{"items":{"$ref":"#/components/schemas/SearchIndex"}}}},"request_id":{}}}}}},"400":{"description":"the request is malformed","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"401":{"description":"no valid credential","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"403":{"description":"credential lacks permission for this operation","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"404":{"description":"no such resource, or another tenant's (indistinguishable)","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"409":{"description":"the operation conflicts with current state","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"422":{"description":"the request is well-formed but domain-invalid","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"429":{"description":"rate limit exceeded","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"503":{"description":"a dependency is temporarily unavailable","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}}}},"post":{"summary":"Create a vector index","operationId":"createSearchIndex","tags":["search"],"responses":{"200":{"description":"the platform envelope","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"data":{"$ref":"#/components/schemas/SearchIndex"},"request_id":{}}}}}},"400":{"description":"the request is malformed","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"401":{"description":"no valid credential","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"403":{"description":"credential lacks permission for this operation","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"404":{"description":"no such resource, or another tenant's (indistinguishable)","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"409":{"description":"the operation conflicts with current state","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"422":{"description":"the request is well-formed but domain-invalid","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"429":{"description":"rate limit exceeded","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"503":{"description":"a dependency is temporarily unavailable","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}}}},"parameters":[{"name":"branch_id","in":"path","required":true,"schema":{},"description":"the branch namespace"}]},"/v1/search/{branch_id}/indexes/{index}":{"get":{"summary":"Index descriptor and stats","operationId":"getSearchIndex","tags":["search"],"responses":{"200":{"description":"the platform envelope","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"data":{"$ref":"#/components/schemas/SearchIndex"},"request_id":{}}}}}},"400":{"description":"the request is malformed","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"401":{"description":"no valid credential","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"403":{"description":"credential lacks permission for this operation","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"404":{"description":"no such resource, or another tenant's (indistinguishable)","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"409":{"description":"the operation conflicts with current state","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"422":{"description":"the request is well-formed but domain-invalid","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"429":{"description":"rate limit exceeded","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"503":{"description":"a dependency is temporarily unavailable","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}}}},"delete":{"summary":"Delete a vector index","operationId":"deleteSearchIndex","tags":["search"],"responses":{"204":{"description":"deleted","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}}},"400":{"description":"the request is malformed","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"401":{"description":"no valid credential","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"403":{"description":"credential lacks permission for this operation","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"404":{"description":"no such resource, or another tenant's (indistinguishable)","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"409":{"description":"the operation conflicts with current state","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"422":{"description":"the request is well-formed but domain-invalid","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"429":{"description":"rate limit exceeded","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"503":{"description":"a dependency is temporarily unavailable","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}}}},"parameters":[{"name":"branch_id","in":"path","required":true,"schema":{},"description":"the branch namespace"},{"name":"index","in":"path","required":true,"schema":{},"description":"the index name"}]},"/v1/search/{branch_id}/indexes/{index}/query":{"post":{"summary":"k-nearest-neighbour query","operationId":"querySearchIndex","tags":["search"],"responses":{"200":{"description":"the platform envelope","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"matches":{"items":{"properties":{"id":{},"metadata":{},"score":{}}}}}},"request_id":{}}}}}},"400":{"description":"the request is malformed","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"401":{"description":"no valid credential","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"403":{"description":"credential lacks permission for this operation","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"404":{"description":"no such resource, or another tenant's (indistinguishable)","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"409":{"description":"the operation conflicts with current state","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"422":{"description":"the request is well-formed but domain-invalid","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"429":{"description":"rate limit exceeded","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"503":{"description":"a dependency is temporarily unavailable","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}}}},"parameters":[{"name":"branch_id","in":"path","required":true,"schema":{},"description":"the branch namespace"},{"name":"index","in":"path","required":true,"schema":{},"description":"the index name"}]},"/v1/search/{branch_id}/indexes/{index}/upsert":{"post":{"summary":"Upsert vectors","operationId":"upsertSearchVectors","tags":["search"],"responses":{"200":{"description":"the platform envelope","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"upserted":{}}},"request_id":{}}}}}},"400":{"description":"the request is malformed","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"401":{"description":"no valid credential","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"403":{"description":"credential lacks permission for this operation","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"404":{"description":"no such resource, or another tenant's (indistinguishable)","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"409":{"description":"the operation conflicts with current state","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"422":{"description":"the request is well-formed but domain-invalid","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"429":{"description":"rate limit exceeded","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"503":{"description":"a dependency is temporarily unavailable","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}}}},"parameters":[{"name":"branch_id","in":"path","required":true,"schema":{},"description":"the branch namespace"},{"name":"index","in":"path","required":true,"schema":{},"description":"the index name"}]},"/v1/storage/{branch_id}/lifecycle":{"get":{"summary":"List lifecycle rules","operationId":"listLifecycleRules","tags":["storage"],"responses":{"200":{"description":"the platform envelope","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"rules":{"items":{"$ref":"#/components/schemas/LifecycleRule"}}}},"request_id":{}}}}}},"400":{"description":"the request is malformed","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"401":{"description":"no valid credential","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"403":{"description":"credential lacks permission for this operation","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"404":{"description":"no such resource, or another tenant's (indistinguishable)","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"409":{"description":"the operation conflicts with current state","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"422":{"description":"the request is well-formed but domain-invalid","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"429":{"description":"rate limit exceeded","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"503":{"description":"a dependency is temporarily unavailable","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}}}},"put":{"summary":"Register (upsert) a lifecycle rule","operationId":"putLifecycleRule","tags":["storage"],"responses":{"200":{"description":"the platform envelope","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"data":{"$ref":"#/components/schemas/LifecycleRule"},"request_id":{}}}}}},"400":{"description":"the request is malformed","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"401":{"description":"no valid credential","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"403":{"description":"credential lacks permission for this operation","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"404":{"description":"no such resource, or another tenant's (indistinguishable)","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"409":{"description":"the operation conflicts with current state","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"422":{"description":"the request is well-formed but domain-invalid","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"429":{"description":"rate limit exceeded","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"503":{"description":"a dependency is temporarily unavailable","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}}}},"parameters":[{"name":"branch_id","in":"path","required":true,"schema":{},"description":"the branch namespace"}]},"/v1/storage/{branch_id}/lifecycle/{rule_id}":{"delete":{"summary":"Delete a lifecycle rule","operationId":"deleteLifecycleRule","tags":["storage"],"responses":{"204":{"description":"deleted","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}}},"400":{"description":"the request is malformed","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"401":{"description":"no valid credential","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"403":{"description":"credential lacks permission for this operation","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"404":{"description":"no such resource, or another tenant's (indistinguishable)","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"409":{"description":"the operation conflicts with current state","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"422":{"description":"the request is well-formed but domain-invalid","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"429":{"description":"rate limit exceeded","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"503":{"description":"a dependency is temporarily unavailable","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}}}},"parameters":[{"name":"branch_id","in":"path","required":true,"schema":{},"description":"the branch namespace"},{"name":"rule_id","in":"path","required":true,"schema":{},"description":"the rule"}]},"/v1/storage/{branch_id}/multipart/:object":{"post":{"summary":"Initiate a multipart upload","operationId":"createMultipartUpload","tags":["storage"],"responses":{"200":{"description":"the platform envelope","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"object":{},"upload_id":{}}},"request_id":{}}}}}},"400":{"description":"the request is malformed","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"401":{"description":"no valid credential","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"403":{"description":"credential lacks permission for this operation","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"404":{"description":"no such resource, or another tenant's (indistinguishable)","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"409":{"description":"the operation conflicts with current state","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"422":{"description":"the request is well-formed but domain-invalid","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"429":{"description":"rate limit exceeded","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"503":{"description":"a dependency is temporarily unavailable","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}}}},"delete":{"summary":"Abort a multipart upload","operationId":"abortMultipartUpload","tags":["storage"],"responses":{"204":{"description":"aborted","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}}},"400":{"description":"the request is malformed","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"401":{"description":"no valid credential","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"403":{"description":"credential lacks permission for this operation","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"404":{"description":"no such resource, or another tenant's (indistinguishable)","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"409":{"description":"the operation conflicts with current state","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"422":{"description":"the request is well-formed but domain-invalid","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"429":{"description":"rate limit exceeded","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"503":{"description":"a dependency is temporarily unavailable","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}}}},"parameters":[{"name":"branch_id","in":"path","required":true,"schema":{},"description":"the branch namespace"},{"name":"object","in":"path","required":true,"schema":{},"description":"the object key"}]},"/v1/storage/{branch_id}/multipart/:object/complete":{"post":{"summary":"Complete a multipart upload","operationId":"completeMultipartUpload","tags":["storage"],"responses":{"200":{"description":"the platform envelope","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"etag":{},"key":{}}},"request_id":{}}}}}},"400":{"description":"the request is malformed","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"401":{"description":"no valid credential","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"403":{"description":"credential lacks permission for this operation","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"404":{"description":"no such resource, or another tenant's (indistinguishable)","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"409":{"description":"the operation conflicts with current state","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"422":{"description":"the request is well-formed but domain-invalid","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"429":{"description":"rate limit exceeded","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"503":{"description":"a dependency is temporarily unavailable","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}}}},"parameters":[{"name":"branch_id","in":"path","required":true,"schema":{},"description":"the branch namespace"},{"name":"object","in":"path","required":true,"schema":{},"description":"the object key"}]},"/v1/storage/{branch_id}/multipart/:object/parts/:part":{"put":{"summary":"Upload one part (≤16 MiB)","operationId":"uploadMultipartPart","tags":["storage"],"requestBody":{"required":true,"content":{"application/json":{"schema":{}}}},"responses":{"200":{"description":"the platform envelope","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"etag":{},"part_number":{}}},"request_id":{}}}}}},"400":{"description":"the request is malformed","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"401":{"description":"no valid credential","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"403":{"description":"credential lacks permission for this operation","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"404":{"description":"no such resource, or another tenant's (indistinguishable)","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"409":{"description":"the operation conflicts with current state","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"422":{"description":"the request is well-formed but domain-invalid","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"429":{"description":"rate limit exceeded","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"503":{"description":"a dependency is temporarily unavailable","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}}}},"parameters":[{"name":"branch_id","in":"path","required":true,"schema":{},"description":"the branch namespace"},{"name":"object","in":"path","required":true,"schema":{},"description":"the object key"},{"name":"part","in":"path","required":true,"schema":{},"description":"1-based part number"}]},"/v1/storage/{branch_id}/objects":{"get":{"summary":"List objects under a prefix","operationId":"listStorageObjects","tags":["storage"],"responses":{"200":{"description":"the platform envelope","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"objects":{"items":{"$ref":"#/components/schemas/StorageObject"}}}},"request_id":{}}}}}},"400":{"description":"the request is malformed","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"401":{"description":"no valid credential","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"403":{"description":"credential lacks permission for this operation","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"404":{"description":"no such resource, or another tenant's (indistinguishable)","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"409":{"description":"the operation conflicts with current state","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"422":{"description":"the request is well-formed but domain-invalid","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"429":{"description":"rate limit exceeded","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"503":{"description":"a dependency is temporarily unavailable","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}}}},"parameters":[{"name":"branch_id","in":"path","required":true,"schema":{},"description":"the branch namespace"}]},"/v1/storage/{branch_id}/objects/{object}":{"get":{"summary":"Download an object","operationId":"getStorageObject","tags":["storage"],"responses":{"200":{"description":"the platform envelope","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"data":{},"request_id":{}}}}}},"400":{"description":"the request is malformed","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"401":{"description":"no valid credential","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"403":{"description":"credential lacks permission for this operation","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"404":{"description":"no such resource, or another tenant's (indistinguishable)","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"409":{"description":"the operation conflicts with current state","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"422":{"description":"the request is well-formed but domain-invalid","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"429":{"description":"rate limit exceeded","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"503":{"description":"a dependency is temporarily unavailable","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}}}},"put":{"summary":"Upload an object (raw bytes body)","operationId":"putStorageObject","tags":["storage"],"requestBody":{"required":true,"content":{"application/json":{"schema":{}}},"description":"The object's bytes; Content-Type is preserved."},"responses":{"200":{"description":"the platform envelope","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"data":{},"request_id":{}}}}}},"400":{"description":"the request is malformed","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"401":{"description":"no valid credential","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"403":{"description":"credential lacks permission for this operation","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"404":{"description":"no such resource, or another tenant's (indistinguishable)","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"409":{"description":"the operation conflicts with current state","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"422":{"description":"the request is well-formed but domain-invalid","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"429":{"description":"rate limit exceeded","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"503":{"description":"a dependency is temporarily unavailable","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}}}},"head":{"summary":"Object metadata","operationId":"headStorageObject","tags":["storage"],"responses":{"200":{"description":"the platform envelope","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"data":{},"request_id":{}}}}}},"400":{"description":"the request is malformed","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"401":{"description":"no valid credential","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"403":{"description":"credential lacks permission for this operation","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"404":{"description":"no such resource, or another tenant's (indistinguishable)","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"409":{"description":"the operation conflicts with current state","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"422":{"description":"the request is well-formed but domain-invalid","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"429":{"description":"rate limit exceeded","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"503":{"description":"a dependency is temporarily unavailable","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}}}},"delete":{"summary":"Delete an object","operationId":"deleteStorageObject","tags":["storage"],"responses":{"204":{"description":"deleted, or already absent","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}}},"400":{"description":"the request is malformed","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"401":{"description":"no valid credential","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"403":{"description":"credential lacks permission for this operation","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"404":{"description":"no such resource, or another tenant's (indistinguishable)","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"409":{"description":"the operation conflicts with current state","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"422":{"description":"the request is well-formed but domain-invalid","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"429":{"description":"rate limit exceeded","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"503":{"description":"a dependency is temporarily unavailable","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}}}},"parameters":[{"name":"branch_id","in":"path","required":true,"schema":{},"description":"the branch namespace"},{"name":"object","in":"path","required":true,"schema":{},"description":"the object key, including any `/` separators"}]},"/v1/storage/{branch_id}/presign/{object}":{"post":{"summary":"Mint a presigned URL","operationId":"presignStorageObject","tags":["storage"],"responses":{"200":{"description":"the platform envelope","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"expires_at":{},"url":{}}},"request_id":{}}}}}},"400":{"description":"the request is malformed","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"401":{"description":"no valid credential","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"403":{"description":"credential lacks permission for this operation","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"404":{"description":"no such resource, or another tenant's (indistinguishable)","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"409":{"description":"the operation conflicts with current state","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"422":{"description":"the request is well-formed but domain-invalid","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"429":{"description":"rate limit exceeded","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"503":{"description":"a dependency is temporarily unavailable","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}}}},"parameters":[{"name":"branch_id","in":"path","required":true,"schema":{},"description":"the branch namespace"},{"name":"object","in":"path","required":true,"schema":{},"description":"the object key, including any `/` separators"}]},"/v1/studio/{branch_id}/explain/{table}/{column}":{"get":{"summary":"Plain-language explanation of a field's protection","operationId":"studioExplainField","tags":["studio"],"parameters":[{"name":"branch_id","in":"path","required":true,"schema":{},"description":"the branch owning the table"},{"name":"table","in":"path","required":true,"schema":{},"description":"the table"},{"name":"column","in":"path","required":true,"schema":{},"description":"the column to explain"}],"responses":{"200":{"description":"the platform envelope","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"headline":{},"next_step":{},"why":{}}},"request_id":{}}}}}},"400":{"description":"the request is malformed","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"401":{"description":"no valid credential","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"403":{"description":"credential lacks permission for this operation","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"404":{"description":"no such resource, or another tenant's (indistinguishable)","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"409":{"description":"the operation conflicts with current state","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"422":{"description":"the request is well-formed but domain-invalid","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"429":{"description":"rate limit exceeded","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"503":{"description":"a dependency is temporarily unavailable","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}}}}},"/v1/studio/{branch_id}/protection":{"post":{"summary":"Apply an explicit protection policy to a column","operationId":"studioApplyProtection","tags":["studio"],"parameters":[{"name":"branch_id","in":"path","required":true,"schema":{},"description":"the branch to protect"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{}}},"description":"Explicit policy: table, column, classification, protection; overrides heuristics."},"responses":{"200":{"description":"the platform envelope","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"classification":{},"column":{},"protection":{}}},"request_id":{}}}}}},"400":{"description":"the request is malformed","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"401":{"description":"no valid credential","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"403":{"description":"credential lacks permission for this operation","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"404":{"description":"no such resource, or another tenant's (indistinguishable)","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"409":{"description":"the operation conflicts with current state","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"422":{"description":"the request is well-formed but domain-invalid","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"429":{"description":"rate limit exceeded","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"503":{"description":"a dependency is temporarily unavailable","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}}}}},"/v1/studio/{branch_id}/security":{"get":{"summary":"Security Center overview: checklist and counters, no score","operationId":"studioSecurityCenter","tags":["studio"],"parameters":[{"name":"branch_id","in":"path","required":true,"schema":{},"description":"the branch to report on"}],"responses":{"200":{"description":"the platform envelope","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"checklist":{"items":{"properties":{"ok":{},"statement":{}}}}}},"request_id":{}}}}}},"400":{"description":"the request is malformed","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"401":{"description":"no valid credential","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"403":{"description":"credential lacks permission for this operation","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"404":{"description":"no such resource, or another tenant's (indistinguishable)","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"409":{"description":"the operation conflicts with current state","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"422":{"description":"the request is well-formed but domain-invalid","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"429":{"description":"rate limit exceeded","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"503":{"description":"a dependency is temporarily unavailable","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}}}}},"/v1/studio/{branch_id}/security/remediate":{"post":{"summary":"Apply a finding's automatic protections and re-scan","operationId":"studioSecurityRemediate","tags":["studio"],"parameters":[{"name":"branch_id","in":"path","required":true,"schema":{},"description":"the branch to remediate"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{}}},"description":"The rule to remediate; only rules with an enactable fix are accepted."},"responses":{"200":{"description":"the platform envelope","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"findings_after":{},"fixed_columns":{"items":{}}}},"request_id":{}}}}}},"400":{"description":"the request is malformed","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"401":{"description":"no valid credential","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"403":{"description":"credential lacks permission for this operation","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"404":{"description":"no such resource, or another tenant's (indistinguishable)","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"409":{"description":"the operation conflicts with current state","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"422":{"description":"the request is well-formed but domain-invalid","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"429":{"description":"rate limit exceeded","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"503":{"description":"a dependency is temporarily unavailable","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}}}}},"/v1/studio/{branch_id}/security/scan":{"post":{"summary":"Run the Exposure Sentinel and persist findings","operationId":"studioSecurityScan","tags":["studio"],"parameters":[{"name":"branch_id","in":"path","required":true,"schema":{},"description":"the branch to scan"}],"responses":{"200":{"description":"the platform envelope","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"findings":{"items":{}}}},"request_id":{}}}}}},"400":{"description":"the request is malformed","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"401":{"description":"no valid credential","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"403":{"description":"credential lacks permission for this operation","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"404":{"description":"no such resource, or another tenant's (indistinguishable)","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"409":{"description":"the operation conflicts with current state","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"422":{"description":"the request is well-formed but domain-invalid","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"429":{"description":"rate limit exceeded","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"503":{"description":"a dependency is temporarily unavailable","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}}}}},"/v1/studio/{branch_id}/tables/{table}/protection":{"get":{"summary":"Per-column protection summary for a table","operationId":"studioTableProtection","tags":["studio"],"parameters":[{"name":"branch_id","in":"path","required":true,"schema":{},"description":"the branch owning the table"},{"name":"table","in":"path","required":true,"schema":{},"description":"the table whose protection summary to read"}],"responses":{"200":{"description":"the platform envelope","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"protected_fields":{"items":{"properties":{"classification":{},"column":{},"protection":{},"searchable":{}}}}}},"request_id":{}}}}}},"400":{"description":"the request is malformed","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"401":{"description":"no valid credential","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"403":{"description":"credential lacks permission for this operation","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"404":{"description":"no such resource, or another tenant's (indistinguishable)","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"409":{"description":"the operation conflicts with current state","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"422":{"description":"the request is well-formed but domain-invalid","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"429":{"description":"rate limit exceeded","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"503":{"description":"a dependency is temporarily unavailable","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}}}}},"/v1/studio/{branch_id}/tables/{table}/rows":{"get":{"summary":"List table rows through the protection plane","operationId":"studioListRows","tags":["studio"],"parameters":[{"name":"branch_id","in":"path","required":true,"schema":{},"description":"the branch to read"},{"name":"table","in":"path","required":true,"schema":{},"description":"the table to list"},{"name":"view","in":"query","required":false,"schema":{"enum":["human","masked","raw","security"]},"description":"presentation mode; listings always mask protected values"}],"responses":{"200":{"description":"the platform envelope","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"rows":{"items":{}},"table":{},"view":{}}},"request_id":{}}}}}},"400":{"description":"the request is malformed","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"401":{"description":"no valid credential","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"403":{"description":"credential lacks permission for this operation","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"404":{"description":"no such resource, or another tenant's (indistinguishable)","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"409":{"description":"the operation conflicts with current state","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"422":{"description":"the request is well-formed but domain-invalid","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"429":{"description":"rate limit exceeded","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"503":{"description":"a dependency is temporarily unavailable","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}}}}},"/v1/studio/{branch_id}/tables/{table}/{column}/reveal":{"post":{"summary":"Reveal one protected value with a recorded reason","operationId":"studioRevealValue","tags":["studio"],"parameters":[{"name":"branch_id","in":"path","required":true,"schema":{},"description":"the branch owning the data"},{"name":"table","in":"path","required":true,"schema":{},"description":"the table holding the value"},{"name":"column","in":"path","required":true,"schema":{},"description":"the protected column"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{}}},"description":"Row primary key plus the REQUIRED reason for access (audited immutably)."},"responses":{"200":{"description":"the platform envelope","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"column":{},"reveal_id":{},"value":{}}},"request_id":{}}}}}},"400":{"description":"the request is malformed","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"401":{"description":"no valid credential","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"403":{"description":"credential lacks permission for this operation","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"404":{"description":"no such resource, or another tenant's (indistinguishable)","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"409":{"description":"the operation conflicts with current state","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"422":{"description":"the request is well-formed but domain-invalid","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"429":{"description":"rate limit exceeded","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}},"503":{"description":"a dependency is temporarily unavailable","headers":{"X-Request-Id":{"schema":{},"description":"Correlation id echoed across every service hop (A5)."}},"content":{"application/json":{"schema":{"properties":{"error":{"$ref":"#/components/schemas/Error"}}}}}}}}}},"components":{"schemas":{"Branch":{"properties":{"id":{},"name":{},"protected":{},"slug":{},"status":{},"type":{"enum":["production","development","preview"]}}},"Connection":{"properties":{"allowed_transitions":{"items":{}},"branch_id":{},"created_at":{},"created_by":{},"credential_secret_name":{"description":"Env name the current credential lives under."},"database_role":{"description":"Present for database types."},"expires_at":{},"id":{},"key_id":{"description":"Present when type=api."},"last_error":{},"name":{},"rotation":{"properties":{"generation":{},"last_rotated_at":{},"last_rotated_by":{}}},"status":{"enum":["provisioning","ready","degraded","rotating","revoked","expired","failed"]},"type":{"enum":["database_direct","database_pooler","api","storage","realtime","ssh","cli"]}}},"EnvDocument":{"properties":{"document":{"description":"The full .env file body."},"variables":{"items":{"properties":{"name":{},"placeholder":{"description":"True when the value must be supplied from a secret store."},"tier":{"enum":["browser","server","cli"],"description":"Where the variable is safe to be exposed."},"value":{}}}}}},"Error":{"properties":{"code":{"description":"Machine-readable code; SDKs branch on this."},"details":{},"message":{"description":"Human-readable; not an API."},"resource":{"properties":{"id":{},"kind":{}}},"retryable":{},"type":{"enum":["invalid_request","authentication","authorization","not_found","conflict","unprocessable","rate_limited","internal","dependency_unavailable"],"description":"The §6 error family."}}},"LifecycleRule":{"properties":{"created_at":{},"days":{},"enabled":{},"enforced_at":{"description":"NULL until the object store accepted the rule."},"id":{},"prefix":{}}},"SearchIndex":{"properties":{"count":{"description":"Vectors currently indexed."},"dimension":{},"distance":{"enum":["cosine","euclidean","inner_product"]},"name":{},"status":{}}},"StorageObject":{"properties":{"content_type":{},"etag":{},"expires_at":{"description":"Set when a lifecycle rule matches the key."},"key":{},"last_modified":{},"size":{}}}},"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","description":"A `bwk_<tier>_<id>_<secret>` API key on the `apikey` header or as a Bearer token. Anonymous-tier keys are read-only."},"BearerAuth":{"type":"http","scheme":"bearer","bearer_format":"JWT","description":"A platform JWT issued by the auth service, on Authorization: Bearer."}}}}