share_issue_space #
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/share_issue_space, with a bearer credential and the action's payload as the JSON body.
Contract description #
Share an issue space you own with another person's account, or list its members. `add` gives an existing account by its sign-in email address, with a `level`, `report`, `contribute`, or `owner`, `contribute` where left out; `remove` gives a member by that address; neither lists. An address no account signed in with is refused, and nothing is kept for later. A member works the space through the relay at its level and never shares it. The answer lists the members and `users`, the members plus you.
Access and action metadata #
{
"name": "share_issue_space",
"resource": "account",
"tier": "reversible",
"summary": "Share one issue space the account owns with other accounts, each a member at one level, or list its members. `space` picks the space. `add` gives an existing account by the email address it signs in with, and `level` the level it works the space at through `relay_issue_act`, `report`, `contribute`, or `owner`, `contribute` where absent; a standing member's level moves. `remove` gives a member by that address. With neither the call lists. An address no account signed in with is refused `no_such_account`, and nothing is kept for a later sign-in. A space the account does not own, one shared with it among them, is refused `space_not_owned`; a member never shares, and the feedback actions stay the owner's. The answer carries the members, each with its account, address, level, and the instant it was added, and `users`, the members plus the owner. Registered while the issue service's origin is configured.",
"annotations": {
"readOnlyHint": false,
"destructiveHint": false,
"openWorldHint": false,
"idempotentHint": true
}
}
MCP catalog entry #
{
"name": "share_issue_space",
"title": "Share issue space",
"tier": "reversible",
"scenario": "API-L0-20",
"summary": "Share an issue space you own with another person's account, or list its members. `add` gives an existing account by its sign-in email address, with a `level`, `report`, `contribute`, or `owner`, `contribute` where left out; `remove` gives a member by that address; neither lists. An address no account signed in with is refused, and nothing is kept for later. A member works the space through the relay at its level and never shares it. The answer lists the members and `users`, the members plus you.",
"owners": [
"ITS-L0-07"
]
}
request #
| JSON pointer | Description and constraints |
|---|---|
| "" (root) | Type: object Required fields: ["space"] |
| / |
The space to share, a lower-case UUID of a space your account owns. Type: string Pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$ |
| / |
The sign-in email address of an existing account to add as a member, or whose level to move. An address no account signed in with is refused `no_such_account`; nothing is kept for a later sign-in. Never beside `remove`. Type: string Maximum length: 320 |
| / |
With `add`: the level the member works the space at through the relay, `contribute` where absent. `owner` reaches every relayed act and makes nobody an owner: the space stays yours, and a member never shares it. Type: string Allowed values: ["report","contribute","owner"] |
| / |
The sign-in email address of the member to remove. Never beside `add`. Type: string Maximum length: 320 |
response #
| JSON pointer | Description and constraints |
|---|---|
| "" (root) | Type: object Required fields: ["contract_version","space","members","users"] |
| / |
Required value: 1 |
| / |
The short reference the platform recorded your call under: ten lowercase hexadecimal characters, the value in the call's record row. Quote it when you report the call. Type: string Pattern: ^[0-9a-f]{10}$ |
| / |
The space shared. Type: string |
| / |
The members of the space after the call, oldest first; you, the owner, are not among them. Type: array |
| / |
Type: object Required fields: ["account","address","level","added_at"] |
| / |
The member's account identifier, the one its claims and its `person:<account>` carry. Type: string |
| / |
The sign-in email address the member was added by. Type: string |
| / |
Type: string Allowed values: ["report","contribute","owner"] |
| / |
The instant the member was added, or its level last moved. Type: string |
| / |
The members plus you, the count a per-user price reads. Type: integer Minimum: 1 |
Complete payload contract #
{
"request": {
"type": "object",
"required": [
"space"
],
"properties": {
"space": {
"type": "string",
"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
"description": "The space to share, a lower-case UUID of a space your account owns."
},
"add": {
"type": "string",
"maxLength": 320,
"description": "The sign-in email address of an existing account to add as a member, or whose level to move. An address no account signed in with is refused `no_such_account`; nothing is kept for a later sign-in. Never beside `remove`."
},
"level": {
"type": "string",
"enum": [
"report",
"contribute",
"owner"
],
"description": "With `add`: the level the member works the space at through the relay, `contribute` where absent. `owner` reaches every relayed act and makes nobody an owner: the space stays yours, and a member never shares it."
},
"remove": {
"type": "string",
"maxLength": 320,
"description": "The sign-in email address of the member to remove. Never beside `add`."
}
}
},
"response": {
"type": "object",
"required": [
"contract_version",
"space",
"members",
"users"
],
"properties": {
"contract_version": {
"const": 1
},
"reference": {
"type": "string",
"pattern": "^[0-9a-f]{10}$",
"description": "The short reference the platform recorded your call under: ten lowercase hexadecimal characters, the value in the call's record row. Quote it when you report the call."
},
"space": {
"type": "string",
"description": "The space shared."
},
"members": {
"type": "array",
"items": {
"type": "object",
"required": [
"account",
"address",
"level",
"added_at"
],
"properties": {
"account": {
"type": "string",
"description": "The member's account identifier, the one its claims and its `person:<account>` carry."
},
"address": {
"type": "string",
"description": "The sign-in email address the member was added by."
},
"level": {
"type": "string",
"enum": [
"report",
"contribute",
"owner"
]
},
"added_at": {
"type": "string",
"description": "The instant the member was added, or its level last moved."
}
}
},
"description": "The members of the space after the call, oldest first; you, the owner, are not among them."
},
"users": {
"type": "integer",
"minimum": 1,
"description": "The members plus you, the count a per-user price reads."
}
}
}
}
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