> ## Documentation Index
> Fetch the complete documentation index at: https://docs.brelio.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Permissions

> Which permission each operation needs, and how a credential's permissions combine with the person's and the clinic's.

Each operation needs one permission. The credential must hold it, and for a personal credential the person must hold it too.

## The permissions

| Permission | Area | Operations |
| - | - | - |
| `organization.centers.read` | `team` | List centers |
| `professionals.read` | `team` | List professionals |
| `services.read` | `team` | List services |
| `calendar.read` | `agenda` | Read the agenda, find free slots |
| `appointments.read` | `agenda` | Get one appointment |
| `appointments.create` | `agenda` | Book an appointment |
| `appointments.reschedule` | `agenda` | Move an appointment |
| `appointments.cancel` | `agenda` | Cancel an appointment |
| `patients.administrative.read` | `patients` | List, search and get patients |
| `patients.administrative.create` | `patients` | Create a patient |
| `patients.administrative.update` | `patients` | Change a patient's details |
| `patients.administrative.archive` | `patients` | Archive a patient |
| `integrations.keys.manage` | `integrations` | API keys, partner apps, webhooks, the data policy and its decisions |
| `self` | `integrations` | Your own keys and connections (`/v1/me/*`), personal credentials only |

The full table, with each operation's REST route, MCP tool and data area, is in [Operations](https://docs.brelio.com/en/reference/operations.md). An integration can also read it from the API:

```bash theme={null}
curl https://api.brelio.app/v1/platform-policy/permissions \
  -H "Authorization: Bearer $BRELIO_API_KEY"
```

## How access is decided

For every call, in this order:

1. **Credential.** Valid, not revoked, linked to a Brelio clinic.
2. **Plan.** The clinic's plan includes API access (`402 PLATFORM_PLAN_REQUIRED` if not).
3. **Limits.** See [rate limits](https://docs.brelio.com/en/concepts/rate-limits.md).
4. **Permission.** The credential holds the operation's permission; for a personal credential, the person holds it too, in the center concerned.
5. **Data area.** The operation's [data area](https://docs.brelio.com/en/concepts/data-areas.md) is on and, for patient data, the credential was accepted.
6. **Input, version and the operation's own rules**, exactly as in the web app.

A refusal at step 2 or later is recorded in the clinic's activity log with its code, never with the input.

## Centers

* **Organization credentials** see every center.
* **Personal credentials** see the centers the person sees. Filtering by a `centerId` outside them answers `403 CENTER_CONTEXT_FORBIDDEN`.
* When the clinic has several centers, operations that create something in one center (an appointment) or search one center's time (free slots) need `centerId`. Without it they answer `422 APPOINTMENT_CENTER_REQUIRED` or `422 AVAILABILITY_CENTER_REQUIRED`.

## Over MCP

An assistant only **sees** the tools whose permission you hold, so the tool list itself tells you what you can do. A tool you cannot use is not listed, rather than failing when called.

## What no credential can do

* Create keys or partner apps, or revoke a credential other than itself.
* Turn a data area on, or accept patient data.
* Give a key a permission its creator does not hold (`403 CREDENTIAL_PERMISSION_NOT_HELD`).

Those always take a person signed in to Brelio.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.