Skip to content
v0.3

read.internal.audit

Operator audit (‘who did what’) — the tenant’s command_audit, filtered + keyset-paginated (newest first). command matches any command whose name CONTAINS it, so a fragment (shipping) finds the family. Internal face only.

  • Surface: GET /v1/read/internal/audit · MCP tool read.internal.audit
  • Auth:Internal read (operator) — a tenant credential is REQUIRED; requires the audit.read scope. The tenant is resolved from the CALLER’s identity, never from store. Personal fields come back MASKED for an actor without pii.read (the shape is unchanged).
{
"properties": {
"actor_id": {
"minLength": 1,
"type": "string"
},
"command": {
"minLength": 1,
"type": "string"
},
"cursor": {
"minLength": 1,
"type": "string"
},
"from": {
"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|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"type": "string"
},
"limit": {
"default": 24,
"maximum": 100,
"minimum": 1,
"type": "integer"
},
"status": {
"minLength": 1,
"type": "string"
},
"to": {
"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|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"type": "string"
}
},
"type": "object"
}

Open (unknown) — this capability does not declare an output schema.

validation_failed (400) · not_found (404) · unauthorized (401) · forbidden (403)