# Set meeting template sharing

Share a meeting template with the workspace or return it to its owner's private templates without changing its content.

POST https://api.brigg.app/v1/operations/meetings.SetMeetingTemplateSharing

## Access & visibility

Allow `meetings.SetMeetingTemplateSharing` on your API key. Resource write permissions: `core:MeetingTemplate`.

**Acting member required.** Send `Brigg-Act-As` with an [approved member account ID](https://developer.brigg.app/authentication#member-delegation). The key supplies permissions; the member selects whose data is used.

The selected member must be active and approved by the credential. This selects whose private data is used; the credential supplies permissions. Private ownership and project boundaries still apply.

[Set up authentication](https://developer.brigg.app/authentication) · [Choose permissions](https://developer.brigg.app/permissions)

## Request fields

Send a JSON object with the following fields. Required fields must be included; omit optional fields you do not need.
| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `id` | string | Yes | Top-level id from [List meeting templates](https://developer.brigg.app/reference/meetings/ListMeetingTemplates). Use the template record identity, not a Meeting ID or a generated document template_id. At least 1 character. At most 128 characters. |
| `shared` | boolean | Yes | True shares the template with the workspace; false returns it to its owner's private templates. |

## Share reading access while keeping responsibility

Sharing makes the template readable across the workspace. It does not give every reader authority to edit, delete or unshare it. For an already shared template, the member recorded as its responsible creator or a workspace owner/administrator can change sharing. Private templates must be visible to the acting member.

When unshared, the template returns to its recorded creator if that person remains an active member. Otherwise the acting member becomes its private owner. Existing content stays intact; future reads by other members can no longer find it. The response confirms the requested shared state, not the owner's account ID.

## Response

Returns **200 OK** with a JSON body.
| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `ok` | boolean | Yes | Whether the action completed successfully. |
| `shared` | boolean | Yes | Whether the meeting or template is shared with the workspace. |

## Errors & retries

Set `BRIGG_REQUEST_ID` once for each logical action. The samples send it as `Idempotency-Key`. Reuse the same value and body on retries, including after a timeout; a missing response does not prove the action failed.

For rate limits, follow the server’s retry guidance and back off. See [HTTP errors](https://developer.brigg.app/http#errors) and [safe retries and limits](https://developer.brigg.app/reliability).

| HTTP status | Code | What to do |
| --- | --- | --- |
| 400 | `invalid_json` | Send a JSON object with Content-Type: application/json. |
| 400 | `invalid_input` | Check the request fields and types. Supply a stable Idempotency-Key containing 1–200 characters. |
| 401 | `invalid_key` | The workspace API key is missing, invalid or revoked. |
| 403 | `forbidden` | Check the key’s operation and resource grants. Supply Brigg-Act-As with a member authorized by the key’s delegation grant. The selected member must be active and approved by the credential. This selects whose private data is used; the credential supplies permissions. Private ownership and project boundaries still apply. |
| 404 | `not_found` | The requested operation or resource is not available to this credential. |
| 429 | `rate_limited` | Wait for Retry-After before retrying. Reuse the original Idempotency-Key. |
| 400 | `not_a_meeting_template` | Use the id of a MeetingTemplate from ListMeetingTemplates, not a Meeting or document template. |

## Next steps

- [List meeting templates](https://developer.brigg.app/reference/meetings/ListMeetingTemplates)

[Download OpenAPI](https://developer.brigg.app/openapi.json) · [Versioning & retirement](https://developer.brigg.app/versioning)

## Examples

### Share with the workspace

Select a template visible to the acting member.
#### cURL


```sh
curl 'https://api.brigg.app/v1/operations/meetings.SetMeetingTemplateSharing' \
  -H "Authorization: Bearer $BRIGG_API_KEY" \
  -H 'Content-Type: application/json' \
  -H "Brigg-Act-As: $BRIGG_ACT_AS" \
  -H "Idempotency-Key: $BRIGG_REQUEST_ID" \
  --data-raw '{
  "id": "e_template_project_review",
  "shared": true
}'
```

#### TypeScript


```typescript
const actAs = process.env.BRIGG_ACT_AS;
if (!actAs) throw new Error("Set BRIGG_ACT_AS to an approved member account ID.");

const requestId = process.env.BRIGG_REQUEST_ID;
if (!requestId) throw new Error("Set BRIGG_REQUEST_ID once per action and reuse it on retries.");

const response = await fetch("https://api.brigg.app/v1/operations/meetings.SetMeetingTemplateSharing", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.BRIGG_API_KEY}`,
    "Content-Type": "application/json",
    "Brigg-Act-As": actAs,
    "Idempotency-Key": requestId, // Create once per action; reuse on retries.
  },
  body: JSON.stringify({
    "id": "e_template_project_review",
    "shared": true
  }),
});
const result = await response.json();
if (!response.ok) throw new Error(`${response.status}: ${result.error} — ${result.message}`);
console.log(result);
```

#### Python


```python
import json
import os
from urllib.request import Request, urlopen
from urllib.error import HTTPError

request_id = os.environ["BRIGG_REQUEST_ID"]  # Reuse for retries of this action.
payload = {
  "id": "e_template_project_review",
  "shared": True
}
request = Request(
    "https://api.brigg.app/v1/operations/meetings.SetMeetingTemplateSharing",
    data=json.dumps(payload).encode("utf-8"),
    headers={
        "Authorization": f"Bearer {os.environ['BRIGG_API_KEY']}",
        "Content-Type": "application/json",
        "Brigg-Act-As": os.environ["BRIGG_ACT_AS"],
        "Idempotency-Key": request_id,  # Create once per action; reuse on retries.
    },
    method="POST",
)
try:
    with urlopen(request) as response:
        print(json.load(response))
except HTTPError as error:
    print(error.code, json.load(error))
    raise
```

#### Response example


```json
{
  "ok": true,
  "shared": true
}
```

### Return to personal templates

Confirm the acting member's authority and the ownership behavior before removing workspace access.
#### cURL


```sh
curl 'https://api.brigg.app/v1/operations/meetings.SetMeetingTemplateSharing' \
  -H "Authorization: Bearer $BRIGG_API_KEY" \
  -H 'Content-Type: application/json' \
  -H "Brigg-Act-As: $BRIGG_ACT_AS" \
  -H "Idempotency-Key: $BRIGG_REQUEST_ID" \
  --data-raw '{
  "id": "e_template_project_review",
  "shared": false
}'
```

#### TypeScript


```typescript
const actAs = process.env.BRIGG_ACT_AS;
if (!actAs) throw new Error("Set BRIGG_ACT_AS to an approved member account ID.");

const requestId = process.env.BRIGG_REQUEST_ID;
if (!requestId) throw new Error("Set BRIGG_REQUEST_ID once per action and reuse it on retries.");

const response = await fetch("https://api.brigg.app/v1/operations/meetings.SetMeetingTemplateSharing", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.BRIGG_API_KEY}`,
    "Content-Type": "application/json",
    "Brigg-Act-As": actAs,
    "Idempotency-Key": requestId, // Create once per action; reuse on retries.
  },
  body: JSON.stringify({
    "id": "e_template_project_review",
    "shared": false
  }),
});
const result = await response.json();
if (!response.ok) throw new Error(`${response.status}: ${result.error} — ${result.message}`);
console.log(result);
```

#### Python


```python
import json
import os
from urllib.request import Request, urlopen
from urllib.error import HTTPError

request_id = os.environ["BRIGG_REQUEST_ID"]  # Reuse for retries of this action.
payload = {
  "id": "e_template_project_review",
  "shared": False
}
request = Request(
    "https://api.brigg.app/v1/operations/meetings.SetMeetingTemplateSharing",
    data=json.dumps(payload).encode("utf-8"),
    headers={
        "Authorization": f"Bearer {os.environ['BRIGG_API_KEY']}",
        "Content-Type": "application/json",
        "Brigg-Act-As": os.environ["BRIGG_ACT_AS"],
        "Idempotency-Key": request_id,  # Create once per action; reuse on retries.
    },
    method="POST",
)
try:
    with urlopen(request) as response:
        print(json.load(response))
except HTTPError as error:
    print(error.code, json.load(error))
    raise
```

#### Response example


```json
{
  "ok": true,
  "shared": false
}
```

## JSON schemas


```json-schema-request
{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "description": "Top-level id from [List meeting templates](https://developer.brigg.app/reference/meetings/ListMeetingTemplates). Use the template record identity, not a Meeting ID or a generated document template_id."
    },
    "shared": {
      "type": "boolean",
      "description": "True shares the template with the workspace; false returns it to its owner's private templates."
    }
  },
  "required": [
    "id",
    "shared"
  ],
  "additionalProperties": false,
  "examples": [
    {
      "id": "e_template_project_review",
      "shared": true
    }
  ]
}
```


```json-schema-response
{
  "type": "object",
  "properties": {
    "ok": {
      "type": "boolean",
      "description": "Whether the action completed successfully."
    },
    "shared": {
      "type": "boolean",
      "description": "Whether the meeting or template is shared with the workspace."
    }
  },
  "required": [
    "ok",
    "shared"
  ],
  "additionalProperties": false,
  "examples": [
    {
      "ok": true,
      "shared": true
    }
  ]
}
```

