storage.object
Source: control-plane/shared-kernel/src/catalog/capabilities.ts
| Field | Value |
|---|---|
| Actions | read, write, delete, list |
| Credential owner | workspace |
| Usage unit | bytes |
| Usage category | storage |
Scope constraints
z.object({
// Reject traversal before normalization so normalization cannot erase an escape.
prefix: z.string().regex(/^\/(?!.*\.\.).*$/).refine(prefix => !prefix.includes(String.fromCharCode(0))),
max_object_bytes: z.number().int().positive(),
})Input, output and errors
The request schema specifies the per-call scope; the result schema includes outcomes, error reasons and result references. Provider payloads remain opaque where the source schema says so.
H-310.capability.contract_ready@1.2.0.json
Download JSON Schema{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"capabilities": {
"items": {
"oneOf": [
{
"properties": {
"actions": {
"items": {
"enum": [
"generate"
],
"type": "string"
},
"minItems": 1,
"type": "array"
},
"credential_owner": {
"const": "workspace",
"type": "string"
},
"id": {
"const": "ai.generate",
"type": "string"
},
"provider": {
"properties": {
"allow": {
"items": {
"type": "string"
},
"type": "array"
},
"fallback": {
"enum": [
"none",
"listed"
],
"type": "string"
},
"prefer": {
"type": "string"
}
},
"required": [
"allow",
"fallback"
],
"type": "object"
},
"required": {
"type": "boolean"
},
"scope": {
"properties": {
"max_tokens_per_call": {
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"type": "integer"
},
"models": {
"items": {
"enum": [
"text",
"embedding"
],
"type": "string"
},
"minItems": 1,
"type": "array"
}
},
"required": [
"models",
"max_tokens_per_call"
],
"type": "object"
}
},
"required": [
"id",
"required",
"actions",
"scope",
"credential_owner",
"provider"
],
"type": "object"
},
{
"properties": {
"actions": {
"items": {
"enum": [
"read",
"write",
"delete",
"list"
],
"type": "string"
},
"minItems": 1,
"type": "array"
},
"credential_owner": {
"const": "workspace",
"type": "string"
},
"id": {
"const": "storage.object",
"type": "string"
},
"provider": {
"properties": {
"allow": {
"items": {
"type": "string"
},
"type": "array"
},
"fallback": {
"enum": [
"none",
"listed"
],
"type": "string"
},
"prefer": {
"type": "string"
}
},
"required": [
"allow",
"fallback"
],
"type": "object"
},
"required": {
"type": "boolean"
},
"scope": {
"properties": {
"max_object_bytes": {
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"type": "integer"
},
"prefix": {
"pattern": "^\\/(?!.*\\.\\.).*$",
"type": "string"
}
},
"required": [
"prefix",
"max_object_bytes"
],
"type": "object"
}
},
"required": [
"id",
"required",
"actions",
"scope",
"credential_owner",
"provider"
],
"type": "object"
},
{
"properties": {
"actions": {
"items": {
"enum": [
"get",
"set",
"delete",
"list",
"increment"
],
"type": "string"
},
"minItems": 1,
"type": "array"
},
"credential_owner": {
"const": "platform",
"type": "string"
},
"id": {
"const": "data.kv",
"type": "string"
},
"provider": {
"properties": {
"allow": {
"items": {
"const": "platform",
"type": "string"
},
"maxItems": 1,
"minItems": 1,
"type": "array"
},
"fallback": {
"const": "none",
"type": "string"
},
"prefer": {
"const": "platform",
"type": "string"
}
},
"required": [
"allow",
"fallback"
],
"type": "object"
},
"required": {
"type": "boolean"
},
"scope": {
"properties": {
"max_keys": {
"exclusiveMinimum": 0,
"maximum": 100000,
"type": "integer"
},
"max_value_bytes": {
"exclusiveMinimum": 0,
"maximum": 65536,
"type": "integer"
},
"prefix": {
"pattern": "^\\/(?!.*\\.\\.).*$",
"type": "string"
}
},
"required": [
"prefix",
"max_value_bytes",
"max_keys"
],
"type": "object"
}
},
"required": [
"id",
"required",
"actions",
"scope",
"credential_owner",
"provider"
],
"type": "object"
},
{
"properties": {
"actions": {
"items": {
"enum": [
"send"
],
"type": "string"
},
"minItems": 1,
"type": "array"
},
"credential_owner": {
"const": "workspace",
"type": "string"
},
"id": {
"const": "email.send",
"type": "string"
},
"provider": {
"properties": {
"allow": {
"items": {
"type": "string"
},
"type": "array"
},
"fallback": {
"enum": [
"none",
"listed"
],
"type": "string"
},
"prefer": {
"type": "string"
}
},
"required": [
"allow",
"fallback"
],
"type": "object"
},
"required": {
"type": "boolean"
},
"scope": {
"properties": {
"from_addresses": {
"items": {
"maxLength": 254,
"pattern": "^(?!.*[A-Z])(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[ !#-[\\]-~]|\\\\[ -~])*\")@(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\\.)*[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$",
"type": "string"
},
"maxItems": 32,
"minItems": 1,
"type": "array"
},
"max_message_bytes": {
"exclusiveMinimum": 0,
"maximum": 1048576,
"type": "integer"
},
"max_recipients": {
"maximum": 50,
"minimum": 1,
"type": "integer"
},
"recipient_domains": {
"items": {
"maxLength": 253,
"pattern": "^(?:\\*|(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\\.)*[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)$",
"type": "string"
},
"maxItems": 32,
"minItems": 1,
"type": "array"
}
},
"required": [
"from_addresses",
"recipient_domains",
"max_recipients",
"max_message_bytes"
],
"type": "object"
}
},
"required": [
"id",
"required",
"actions",
"scope",
"credential_owner",
"provider"
],
"type": "object"
}
]
},
"type": "array"
},
"confirmed_at": {
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$",
"type": "string"
},
"contract_hash": {
"pattern": "^[0-9a-f]{64}$",
"type": "string"
},
"product_id": {
"pattern": "^prod_[0-7][0123456789abcdefghjkmnpqrstvwxyz]{25}$",
"type": "string"
},
"revision_id": {
"pattern": "^rev_[0-7][0123456789abcdefghjkmnpqrstvwxyz]{25}$",
"type": "string"
},
"workspace_id": {
"pattern": "^ws_[0-7][0123456789abcdefghjkmnpqrstvwxyz]{25}$",
"type": "string"
}
},
"required": [
"product_id",
"revision_id",
"workspace_id",
"capabilities",
"contract_hash",
"confirmed_at"
],
"type": "object"
}H-360.capability.invocation_requested@1.4.0.json
Download JSON Schema{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"adjudication_run_id": {
"anyOf": [
{
"pattern": "^adj_[0-7][0123456789abcdefghjkmnpqrstvwxyz]{25}$",
"type": "string"
},
{
"type": "null"
}
]
},
"bridge_invocation_id": {
"anyOf": [
{
"pattern": "^inv_[0-7][0123456789abcdefghjkmnpqrstvwxyz]{25}$",
"type": "string"
},
{
"type": "null"
}
]
},
"capability_invocation_id": {
"pattern": "^cap_[0-7][0123456789abcdefghjkmnpqrstvwxyz]{25}$",
"type": "string"
},
"environment_type": {
"enum": [
"preview",
"staging",
"production"
],
"type": "string"
},
"execution_id": {
"anyOf": [
{
"pattern": "^exe_[0-7][0123456789abcdefghjkmnpqrstvwxyz]{25}$",
"type": "string"
},
{
"type": "null"
}
]
},
"fix_run_id": {
"anyOf": [
{
"pattern": "^fix_[0-7][0123456789abcdefghjkmnpqrstvwxyz]{25}$",
"type": "string"
},
{
"type": "null"
}
]
},
"input": {
"oneOf": [
{
"properties": {
"json": {},
"kind": {
"const": "inline",
"type": "string"
}
},
"required": [
"kind",
"json"
],
"type": "object"
},
{
"properties": {
"kind": {
"const": "evidence",
"type": "string"
},
"sha256": {
"pattern": "^[0-9a-f]{64}$",
"type": "string"
},
"size_bytes": {
"maximum": 9007199254740991,
"minimum": 0,
"type": "integer"
},
"uri": {
"type": "string"
}
},
"required": [
"uri",
"sha256",
"size_bytes",
"kind"
],
"type": "object"
}
]
},
"product_id": {
"pattern": "^prod_[0-7][0123456789abcdefghjkmnpqrstvwxyz]{25}$",
"type": "string"
},
"request": {
"oneOf": [
{
"properties": {
"action": {
"const": "generate",
"type": "string"
},
"id": {
"const": "ai.generate",
"type": "string"
},
"max_tokens": {
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"type": "integer"
},
"model_kind": {
"enum": [
"text",
"embedding"
],
"type": "string"
}
},
"required": [
"id",
"action",
"model_kind",
"max_tokens"
],
"type": "object"
},
{
"properties": {
"action": {
"enum": [
"read",
"write",
"delete",
"list"
],
"type": "string"
},
"bytes": {
"maximum": 9007199254740991,
"minimum": 0,
"type": "integer"
},
"id": {
"const": "storage.object",
"type": "string"
},
"key": {
"pattern": "^\\/(?!.*\\.\\.).*$",
"type": "string"
}
},
"required": [
"id",
"action",
"key"
],
"type": "object"
},
{
"properties": {
"action": {
"enum": [
"get",
"set",
"delete",
"list",
"increment"
],
"type": "string"
},
"bytes": {
"maximum": 9007199254740991,
"minimum": 0,
"type": "integer"
},
"id": {
"const": "data.kv",
"type": "string"
},
"key": {
"pattern": "^\\/(?!.*\\.\\.).*$",
"type": "string"
}
},
"required": [
"id",
"action",
"key"
],
"type": "object"
},
{
"properties": {
"action": {
"const": "send",
"type": "string"
},
"bytes": {
"maximum": 9007199254740991,
"minimum": 0,
"type": "integer"
},
"from": {
"maxLength": 254,
"pattern": "^(?!.*[A-Z])(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[ !#-[\\]-~]|\\\\[ -~])*\")@(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\\.)*[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$",
"type": "string"
},
"id": {
"const": "email.send",
"type": "string"
},
"recipients": {
"items": {
"maxLength": 254,
"pattern": "^(?!.*[A-Z])(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[ !#-[\\]-~]|\\\\[ -~])*\")@(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\\.)*[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$",
"type": "string"
},
"maxItems": 50,
"minItems": 1,
"type": "array"
}
},
"required": [
"id",
"action",
"from",
"recipients",
"bytes"
],
"type": "object"
}
]
},
"requested_at": {
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$",
"type": "string"
},
"revision_id": {
"pattern": "^rev_[0-7][0123456789abcdefghjkmnpqrstvwxyz]{25}$",
"type": "string"
},
"workspace_id": {
"pattern": "^ws_[0-7][0123456789abcdefghjkmnpqrstvwxyz]{25}$",
"type": "string"
}
},
"required": [
"capability_invocation_id",
"execution_id",
"bridge_invocation_id",
"product_id",
"revision_id",
"workspace_id",
"request",
"input",
"requested_at"
],
"type": "object"
}H-361.capability.invocation_resulted@1.1.0.json
Download JSON Schema{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"binding_id": {
"anyOf": [
{
"pattern": "^bind_[0-7][0123456789abcdefghjkmnpqrstvwxyz]{25}$",
"type": "string"
},
{
"type": "null"
}
]
},
"capability_invocation_id": {
"pattern": "^cap_[0-7][0123456789abcdefghjkmnpqrstvwxyz]{25}$",
"type": "string"
},
"fallback_used": {
"type": "boolean"
},
"finished_at": {
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$",
"type": "string"
},
"outcome": {
"enum": [
"completed",
"denied",
"failed"
],
"type": "string"
},
"output": {
"anyOf": [
{
"oneOf": [
{
"properties": {
"json": {},
"kind": {
"const": "inline",
"type": "string"
}
},
"required": [
"kind",
"json"
],
"type": "object"
},
{
"properties": {
"kind": {
"const": "evidence",
"type": "string"
},
"sha256": {
"pattern": "^[0-9a-f]{64}$",
"type": "string"
},
"size_bytes": {
"maximum": 9007199254740991,
"minimum": 0,
"type": "integer"
},
"uri": {
"type": "string"
}
},
"required": [
"uri",
"sha256",
"size_bytes",
"kind"
],
"type": "object"
}
]
},
{
"type": "null"
}
]
},
"product_id": {
"pattern": "^prod_[0-7][0123456789abcdefghjkmnpqrstvwxyz]{25}$",
"type": "string"
},
"provider": {
"type": [
"string",
"null"
]
},
"reason": {
"anyOf": [
{
"enum": [
"outside_contract",
"permission_denied",
"policy_blocked",
"binding_missing",
"binding_revoked",
"usage_denied",
"provider_unavailable",
"provider_rejected",
"output_blocked"
],
"type": "string"
},
{
"type": "null"
}
]
},
"usage": {
"properties": {
"unit": {
"enum": [
"tokens",
"ms",
"calls",
"bytes"
],
"type": "string"
},
"units": {
"minimum": 0,
"type": "number"
}
},
"required": [
"units",
"unit"
],
"type": "object"
},
"workspace_id": {
"pattern": "^ws_[0-7][0123456789abcdefghjkmnpqrstvwxyz]{25}$",
"type": "string"
}
},
"required": [
"capability_invocation_id",
"workspace_id",
"product_id",
"outcome",
"reason",
"output",
"provider",
"fallback_used",
"usage",
"finished_at"
],
"type": "object"
}