---
title: "share_issue_space"
description: "Generated reference for the management action share_issue_space: its description, access metadata, payload contract, and registration status."
slug: /reference/actions/share-issue-space
order: 115
visibility: public
redirects_from: []
---

# share\_issue\_space

Generated automatically from the [published contract sources](/reference/about#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

```json
{
  "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

```json
{
  "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<br>Required fields: \["space"\] |
| /<wbr>properties/<wbr>space | The space to share, a lower\-case UUID of a space your account owns\.<br><br>Type: string<br>Pattern: ^\[0\-9a\-f\]\{8\}\-\[0\-9a\-f\]\{4\}\-\[0\-9a\-f\]\{4\}\-\[0\-9a\-f\]\{4\}\-\[0\-9a\-f\]\{12\}$ |
| /<wbr>properties/<wbr>add | 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\`\.<br><br>Type: string<br>Maximum length: 320 |
| /<wbr>properties/<wbr>level | 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\.<br><br>Type: string<br>Allowed values: \["report","contribute","owner"\] |
| /<wbr>properties/<wbr>remove | The sign\-in email address of the member to remove\. Never beside \`add\`\.<br><br>Type: string<br>Maximum length: 320 |

## response

| JSON pointer | Description and constraints |
|---|---|
| "" \(root\) | Type: object<br>Required fields: \["contract\_version","space","members","users"\] |
| /<wbr>properties/<wbr>contract\_version | Required value: 1 |
| /<wbr>properties/<wbr>reference | 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\.<br><br>Type: string<br>Pattern: ^\[0\-9a\-f\]\{10\}$ |
| /<wbr>properties/<wbr>space | The space shared\.<br><br>Type: string |
| /<wbr>properties/<wbr>members | The members of the space after the call, oldest first; you, the owner, are not among them\.<br><br>Type: array |
| /<wbr>properties/<wbr>members/<wbr>items | Type: object<br>Required fields: \["account","address","level","added\_at"\] |
| /<wbr>properties/<wbr>members/<wbr>items/<wbr>properties/<wbr>account | The member's account identifier, the one its claims and its \`person:&lt;account&gt;\` carry\.<br><br>Type: string |
| /<wbr>properties/<wbr>members/<wbr>items/<wbr>properties/<wbr>address | The sign\-in email address the member was added by\.<br><br>Type: string |
| /<wbr>properties/<wbr>members/<wbr>items/<wbr>properties/<wbr>level | Type: string<br>Allowed values: \["report","contribute","owner"\] |
| /<wbr>properties/<wbr>members/<wbr>items/<wbr>properties/<wbr>added\_at | The instant the member was added, or its level last moved\.<br><br>Type: string |
| /<wbr>properties/<wbr>users | The members plus you, the count a per\-user price reads\.<br><br>Type: integer<br>Minimum: 1 |

## Complete payload contract

```json
{
  "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](/reference/refusals): every refusal, by surface, with its cause and its remedy
- [schemas/wire\_error\.schema\.json](/reference/sources/schemas/wire-error-schema)
- [schemas/wire\_errors\.json](/reference/sources/schemas/wire-errors)
- [schemas/action\_payloads\.json](/reference/sources/schemas/action-payloads) (includes shared shapes)
- [management\_api\_contract\.md](/reference/sources/management-api-contract)
