# Scopes & Permission Model

Scopes define what an application can access or modify through the API.
They provide **fine-grained permission control** based on the integration’s needs.

All applications—regardless of which scopes they request—have access to **basic information** about **users, clients, and projects**.
Any additional permissions come **only** from explicitly granted scopes.

## 1. Integration Scope

The most powerful scope is:

```
integration
```

When an application includes the **`integration`** scope:

* The application acts as a **dedicated system user**
* **All permissions are defined solely by the granted scopes**
* It does **not** automatically receive full permissions
* Other scopes explicitly determine what the integration is allowed to do


This mode is recommended for:

* Standalone integrations
* Server-to-server applications
* Automated systems


### Direct Access Tokens

Direct Access Tokens behave like dedicated system users. (Integration Scope)
However:

> **The actual permissions still depend entirely on the scopes attached to the token.**


## 2. Without Integration Scope

If an application **does not** include the `integration` scope:

* The app acts as the **authenticated human user**
* It inherits the **user’s permissions**, including their role and team restrictions
* Additional scopes expand the app’s capabilities beyond the user’s base permissions


This mode is suitable for:

* OAuth applications acting on behalf of a user
* Tools that should respect user-level privacy and visibility settings


## 3. Available Scopes

### General

| Scope | Description |
|  --- | --- |
| `integration` | Acts as a system user; **all permissions are explicitly defined by scopes** |


### Users

| Scope | Description |
|  --- | --- |
| `user:read` | Read full information about users |


### Clients

| Scope | Description |
|  --- | --- |
| `client:read` | Read full client information |
| `client:write` | Create, update & delete clients |


### Contacts & Companies

| Scope | Description |
|  --- | --- |
| `contact-data:read` | Read contact & companies |
| `contact-data:write` | Create, update & delete projects |


### Task Management

| Scope | Description |
|  --- | --- |
| `task-management:read` | Read tasks, comments, phases, milestones, and epics |


### Efforts

| Scope | Description |
|  --- | --- |
| `efforts:read` | Read project efforts |
| `efforts:extended:read` | Read admin & project efforts |


### User Groups

| Scope | Description |
|  --- | --- |
| `user_group:read` | Read user groups |


### Offers

| Scope | Description |
|  --- | --- |
| `offer:read` | Read offers |


### Outgoing Invoices/Credits

| Scope | Description |
|  --- | --- |
| `outgoing-invoice:read` | Read invoices & plans |
| `outgoing-invoice:upload` | Upload & create external outgoing invoices |


### Payments

| Scope | Description |
|  --- | --- |
| `payments:read` | Read payment accounts & payments |
| `payments:write` | Create & update payment accounts & payments |


## 4. Summary

* **All apps** have access to basic information about users, clients, and projects.
* **With `integration` scope:**
  * The app acts as a system user
  * **Permissions are determined only by the scopes attached**
* **Without `integration` scope:**
  * The app acts as the authenticated user
  * **Permissions = User permissions + granted scopes**