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_flags
- REST
- POST https://api.containertradehq.com/v1/cap/list_flags
Idempotency: a read: calling again changes nothing
Inputs
No inputs.
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": {
"key": {
"type": "string",
"description": "The flag's PostHog key.",
"x-data-class": "operational"
},
"registered": {
"type": "boolean",
"description": "Whether the registry carries it; false for a flag only PostHog has.",
"x-data-class": "operational"
},
"kind": {
"type": [
"string",
"null"
],
"enum": [
"release",
"experiment",
"prototype",
"kill",
null
],
"description": "release, experiment, prototype or kill; null when unregistered.",
"x-data-class": "operational"
},
"owner": {
"type": [
"string",
"null"
],
"description": "Who owns the flag; null when unregistered.",
"x-data-class": "operational"
},
"purpose": {
"type": [
"string",
"null"
],
"description": "What it is for, in one line; null when unregistered.",
"x-data-class": "operational"
},
"capability": {
"type": [
"string",
"null"
],
"description": "The capability id it gates; null when unregistered.",
"x-data-class": "operational"
},
"decide_by": {
"type": [
"string",
"null"
],
"pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}$",
"format": "date",
"description": "When the flag is removed or made permanent; null when unregistered.",
"x-data-class": "operational"
},
"failure_default": {
"type": [
"string",
"null"
],
"enum": [
"on",
"off",
null
],
"description": "What every caller reads when PostHog cannot answer; null when unregistered.",
"x-data-class": "operational"
},
"wave": {
"type": "string",
"enum": [
"absent",
"off",
"staff",
"beta",
"orgs_10",
"orgs_25",
"orgs_50",
"everyone",
"custom",
"unknown"
],
"description": "Where PostHog has it: absent, off, staff, beta, orgs_<n> (n percent of customer orgs), everyone, custom (a rule this page did not write), or unknown when PostHog could not be read.",
"x-data-class": "operational"
},
"percentage": {
"type": [
"integer",
"null"
],
"description": "The percentage of customer orgs on an orgs wave; null on any other.",
"x-data-class": "operational"
},
"beta_lists": {
"type": "array",
"items": {
"type": "string"
},
"description": "The beta lists it targets, by name; empty below the beta wave.",
"x-data-class": "operational"
},
"next_wave": {
"type": [
"string",
"null"
],
"description": "The wave advancing moves it to; null when it cannot be advanced here (everyone, custom, unknown, unregistered).",
"x-data-class": "operational"
},
"age_days": {
"type": [
"integer",
"null"
],
"description": "Days since PostHog created it; null when PostHog does not have it.",
"x-data-class": "operational"
},
"created_at": {
"type": [
"string",
"null"
],
"format": "date-time",
"description": "When PostHog created it.",
"x-data-class": "operational"
},
"posthog_url": {
"type": [
"string",
"null"
],
"description": "The flag in PostHog; null when PostHog does not have it or could not be read.",
"x-data-class": "operational"
},
"drift": {
"type": [
"array",
"null"
],
"items": {
"type": "string"
},
"description": "TRA-247's drift statuses for it, empty when in sync: in_code_not_registry, in_registry_not_code, in_registry_not_posthog, in_posthog_not_registry, in_code_not_posthog, past_decide_by, everyone. Null when PostHog could not be read.",
"x-data-class": "operational"
}
},
"required": [
"key",
"registered",
"kind",
"owner",
"purpose",
"capability",
"decide_by",
"failure_default",
"wave",
"percentage",
"beta_lists",
"next_wave",
"age_days",
"created_at",
"posthog_url",
"drift"
],
"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
- Outbound: staff tooling; crosses to no counterparty
Events
None emitted.
Related
None.