list_invitations
Generated automatically from the published contract sources.
Build metadata: Registered in this build. Registration describes the default dispatcher in this build. It does not guarantee that a caller has the required credential or grant, that a tool is listed for that connection, or that the required service is configured.
A script calls this action over HTTPS at POST https://turnzero.ai/api/v1/actions/list_invitations, with a bearer credential and the action's payload as the JSON body. It also accepts GET.
Contract description
List a realm's invitations with their state, paged; never a URL. An optional `email` narrows the page to the invitations issued to one address, matched as redemption matches it (case-insensitively, trimmed), a cursor valid within that filter. With no `application`, the platform operator's own builder invitations, each row carrying `products`, the profiles its redemption adds. An optional `environment` (`development` or `production`; absent, `production`) names the realm the call addresses, development's standing only once `create_environment` has turned development on.
Access and action metadata
{
"name": "list_invitations",
"resource": "realm",
"tier": "observe",
"summary": "Each invitation of a realm — the identifier issue_invitation answered, the address, the issue, expiry, redemption, and revocation stamps, the user a redemption created or the existing account that redeemed it, and the state those decide — paged in issue order, never a URL or its token; with no application member the builder realm's, admitted to super_admin alone, each row then carrying `products`, the profiles its redemption adds.",
"annotations": {
"readOnlyHint": true,
"destructiveHint": false,
"openWorldHint": false,
"idempotentHint": true
}
}
MCP catalog entry
{
"name": "list_invitations",
"tier": "observe",
"summary": "List a realm's invitations with their state, paged; never a URL. An optional `email` narrows the page to the invitations issued to one address, matched as redemption matches it (case-insensitively, trimmed), a cursor valid within that filter. With no `application`, the platform operator's own builder invitations, each row carrying `products`, the profiles its redemption adds. An optional `environment` (`development` or `production`; absent, `production`) names the realm the call addresses, development's standing only once `create_environment` has turned development on.",
"owners": [
"ACS-L0-01",
"ACS-L0-08",
"ACC-L0-23",
"PLD-L0-40"
],
"scenario": "ACS-L0-08"
}
request
| JSON pointer | Description and constraints |
|---|---|
| "" (root) | Type: object Additional properties: false |
| / |
The application whose realm's invitations are answered; absent, the builder realm, admitted to super_admin alone. Type: string |
| / |
Optional. One address; with it, the page holds the invitations issued to that address alone, in issue order under the same paging. The match is redemption's own: case-insensitive, trimmed. A cursor is valid within the filter that answered it; one naming a row the filter excludes refuses invalid_request. Absent, every invitation of the realm. Type: string Minimum length: 1 |
| / |
The next_cursor a previous page answered. Type: string |
| / |
Invitations per page, 1 to 200; 50 where none is given. Type: integer Minimum: 1 Maximum: 200 |
| / |
Optional. The environment whose realm the call addresses, `development` or `production` (the accounts service PRD's realm statement); absent, `production`. Ignored where `application` is absent, because the builder realm has no environment. Type: string Pattern: ^(development|production)$ |
response
| JSON pointer | Description and constraints |
|---|---|
| "" (root) | Type: object Required fields: ["contract_version","invitations","next_cursor"] Additional properties: false |
| / |
Required value: 1 |
| / |
Type: array |
| / |
Type: object Required fields: ["id","email","created_at","expires_at","redeemed_at","redeemed_by","revoked_at","state"] Additional properties: false |
| / |
The identifier issue_invitation answered. Type: string |
| / |
Type: string |
| / |
Type: string |
| / |
Type: string |
| / |
Type: ["string","null"] |
| / |
The end user the redemption created — the identifier list_end_users answered while the user stood, which delete_end_user may since have removed. On the builder realm it is the account the redemption created or the existing account whose sign-in redeemed it for a product it lacked (ACB-L0-77). Null until redeemed. Type: ["string","null"] |
| / |
Type: ["string","null"] |
| / |
What the stamps and the clock decide (ACS-L0-08): revoked where revoked_at is set, redeemed where redeemed_at is set, expired where expires_at has passed on a row neither redeemed nor revoked, standing otherwise. Allowed values: ["standing","redeemed","revoked","expired"] |
| / |
The builder realm's rows alone, the form with no `application`: the product profiles the invitation's redemption adds, `["cloud"]` on an invitation that named none (ACB-L0-77). An application's rows carry no such member, because an end user holds no product profile. Type: array |
| / |
Type: string |
| / |
Type: ["string","null"] |
| / |
Type: string |
Complete payload contract
{
"request": {
"type": "object",
"properties": {
"application": {
"type": "string",
"description": "The application whose realm's invitations are answered; absent, the builder realm, admitted to super_admin alone."
},
"email": {
"type": "string",
"minLength": 1,
"description": "Optional. One address; with it, the page holds the invitations issued to that address alone, in issue order under the same paging. The match is redemption's own: case-insensitive, trimmed. A cursor is valid within the filter that answered it; one naming a row the filter excludes refuses invalid_request. Absent, every invitation of the realm."
},
"cursor": {
"type": "string",
"description": "The next_cursor a previous page answered."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 200,
"description": "Invitations per page, 1 to 200; 50 where none is given."
},
"environment": {
"type": "string",
"pattern": "^(development|production)$",
"description": "Optional. The environment whose realm the call addresses, `development` or `production` (the accounts service PRD's realm statement); absent, `production`. Ignored where `application` is absent, because the builder realm has no environment."
}
},
"additionalProperties": false
},
"response": {
"type": "object",
"required": [
"contract_version",
"invitations",
"next_cursor"
],
"properties": {
"contract_version": {
"const": 1
},
"invitations": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"email",
"created_at",
"expires_at",
"redeemed_at",
"redeemed_by",
"revoked_at",
"state"
],
"properties": {
"id": {
"type": "string",
"description": "The identifier issue_invitation answered."
},
"email": {
"type": "string"
},
"created_at": {
"type": "string"
},
"expires_at": {
"type": "string"
},
"redeemed_at": {
"type": [
"string",
"null"
]
},
"redeemed_by": {
"type": [
"string",
"null"
],
"description": "The end user the redemption created — the identifier list_end_users answered while the user stood, which delete_end_user may since have removed. On the builder realm it is the account the redemption created or the existing account whose sign-in redeemed it for a product it lacked (ACB-L0-77). Null until redeemed."
},
"revoked_at": {
"type": [
"string",
"null"
]
},
"state": {
"enum": [
"standing",
"redeemed",
"revoked",
"expired"
],
"description": "What the stamps and the clock decide (ACS-L0-08): revoked where revoked_at is set, redeemed where redeemed_at is set, expired where expires_at has passed on a row neither redeemed nor revoked, standing otherwise."
},
"products": {
"type": "array",
"items": {
"type": "string"
},
"description": "The builder realm's rows alone, the form with no `application`: the product profiles the invitation's redemption adds, `[\"cloud\"]` on an invitation that named none (ACB-L0-77). An application's rows carry no such member, because an end user holds no product profile."
}
},
"additionalProperties": false
}
},
"next_cursor": {
"type": [
"string",
"null"
]
},
"detail": {
"type": "string"
}
},
"additionalProperties": false
}
}
Shared contracts
- Refusals: every refusal, by surface, with its cause and its remedy
- schemas/wire_error.schema.json
- schemas/wire_errors.json
- schemas/action_payloads.json (includes shared shapes)
- management_api_contract.md