Contract
- shape
- collection
- authority
- read
- evidence
- none
- subscription
- false
- permission
- any one of: staff.read (the staff role staff_read held in the Internal org, tradehq_role.staff_role); a deactivated caller is refused first
- idempotency
- safe
- emits
- none
- MCP tool
- list_flag_actions
- REST
- POST https://api.containertradehq.com/v1/cap/list_flag_actions
Idempotency: a read: calling again changes nothing
Inputs
| name | type | required | validation |
|---|---|---|---|
| flag_key | text | optional | 1 to 100 characters Only this flag's changes. |
| limit | integer | optional | 1 to 200; default 50 How many, newest first. |
Paginated: next next_after · ceiling not_declared
Response
items· object[]next_after· stringnull · Pass as `after` for the next page; null on the last one.
Full JSON Schema
{
"type": "object",
"properties": {
"items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"action_id": {
"type": "string",
"description": "The change's id.",
"x-data-class": "operational"
},
"action": {
"type": "string",
"enum": [
"advance",
"roll_back",
"beta_add",
"beta_remove",
"set_lists"
],
"description": "advance, roll_back, beta_add, beta_remove, or set_lists (TRA-1461: the beta lists a flag reaches, before and after in detail).",
"x-data-class": "operational"
},
"flag_key": {
"type": [
"string",
"null"
],
"description": "The flag moved; null for a beta list change.",
"x-data-class": "operational"
},
"beta_list": {
"type": [
"string",
"null"
],
"description": "The list changed; null for a flag move.",
"x-data-class": "operational"
},
"member_kind": {
"type": [
"string",
"null"
],
"description": "org or user, for a beta list change.",
"x-data-class": "operational"
},
"member_id": {
"type": [
"string",
"null"
],
"description": "The org or user, for a beta list change.",
"x-data-class": "operational"
},
"from_state": {
"type": "string",
"description": "The wave before (or absent/member for a list).",
"x-data-class": "operational"
},
"to_state": {
"type": "string",
"description": "The wave after (or member/absent for a list).",
"x-data-class": "operational"
},
"agreed_by": {
"type": [
"string",
"null"
],
"description": "Who at the customer agreed, for an add.",
"x-data-class": "operational"
},
"agreed_at": {
"type": [
"string",
"null"
],
"pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}$",
"format": "date",
"description": "When they agreed, for an add.",
"x-data-class": "operational"
},
"actor": {
"type": "string",
"minLength": 1,
"maxLength": 20,
"pattern": "^[A-Za-z0-9_-]{1,20}$",
"format": "tradehq-user-id",
"description": "Who made the change.",
"x-data-class": "operational"
},
"acted_at": {
"type": "string",
"format": "date-time",
"description": "When.",
"x-data-class": "operational"
},
"outcome": {
"type": "string",
"enum": [
"pending",
"applied",
"failed"
],
"description": "applied, failed (PostHog refused it), or pending (still in flight).",
"x-data-class": "operational"
},
"detail": {
"type": [
"string",
"null"
],
"description": "Why it failed.",
"x-data-class": "operational"
}
},
"required": [
"action_id",
"action",
"flag_key",
"beta_list",
"member_kind",
"member_id",
"from_state",
"to_state",
"agreed_by",
"agreed_at",
"actor",
"acted_at",
"outcome",
"detail"
],
"additionalProperties": false
}
},
"next_after": {
"type": [
"string",
"null"
],
"description": "Pass as `after` for the next page; null on the last one."
}
},
"required": [
"items",
"next_after"
],
"additionalProperties": false
} Refusals
not yet declared
The platform refusals apply to every call: version, authentication, authority, validation and rate limits, each in the same envelope.
Surfaces
DesktopF
MobileF
APIF
MCPF
VoiceD4
PushN
OneBoxN
OutboundN
- Voice: degraded: visualization
- Push: emits nothing
- OneBox: no document originates a flag change
- Outbound: staff tooling; crosses to no counterparty
Events
None emitted.
Related
None.