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

# Permissions

> Permissions define which Payt resources your app can access. They are implemented as OAuth2 scopes.

Permissions define which Payt resources your app can access and which actions can be performed on those resources. Permissions are implemented using [OAuth2 scopes](https://tools.ietf.org/html/rfc6749#section-3.3). The words permissions and scopes can be used interchangeably.

If your app performs an action on a resource it does not have permission for, a `403 forbidden` response will be returned. The response message will include the name of the permission your app requires in order to perform the action.

Users can, at any moment, change the permissions they granted to your app. Your client should be able to handle 403 responses and inform users that a particular action cannot be performed until they enable the corresponding permission.

<img src="https://mintcdn.com/paytsoftware/QIc948vWw443RTCL/images/connection_overview.png?fit=max&auto=format&n=QIc948vWw443RTCL&q=85&s=7a232ded2717b98fc944fb596a89bd4b" alt="" width="2000" height="790" data-path="images/connection_overview.png" />

<img src="https://mintcdn.com/paytsoftware/QIc948vWw443RTCL/images/edit_connection.png?fit=max&auto=format&n=QIc948vWw443RTCL&q=85&s=d690bab35af3b249c4283c852931a683" alt="" width="1734" height="1226" data-path="images/edit_connection.png" />

## List all permissions

A list of all currently available permissions can be found on the application create/edit form.

<img src="https://mintcdn.com/paytsoftware/QIc948vWw443RTCL/images/edit_application_link.png?fit=max&auto=format&n=QIc948vWw443RTCL&q=85&s=8940350439fb456382408853b814c49c" alt="" width="2000" height="811" data-path="images/edit_application_link.png" />

<img src="https://mintcdn.com/paytsoftware/QIc948vWw443RTCL/images/application_details.png?fit=max&auto=format&n=QIc948vWw443RTCL&q=85&s=8d967d4751a6a704a13ad805708b8525" alt="" width="2000" height="906" data-path="images/application_details.png" />

<img src="https://mintcdn.com/paytsoftware/QIc948vWw443RTCL/images/edit_application.png?fit=max&auto=format&n=QIc948vWw443RTCL&q=85&s=439e44f28c14ef1c1dc8c3ff1a983518" alt="" width="2000" height="940" data-path="images/edit_application.png" />

## View granted permissions

The permissions that are granted on a specific authorization are returned each time a new token is [created](/authentication/tokens#create-tokens) or by sending an existing token to the [introspect](/authentication/tokens#introspect-a-token) endpoint.

The response contains, among other data, a space separated list of all granted permissions.

## Add permissions

Permissions can be added to an application using the edit form in the Payt interface.

This will have no direct impact on any existing authorizations. All current authorizations and tokens will remain valid, but will not include the new permission automatically. Users will have to explicitly grant this new requested permission through the Payt UI. Payt will not actively inform users about this change.

If you use the `scope` parameter in the authorize\_url, remember to include this new scope in the parameters. Otherwise users will not be asked to grant them during the authorization process. If you do not supply the `scope` parameter, then no further action is required, as the authorization process will automatically include this new scope.

## Remove a permission

An existing permission can be removed from an Application using the edit form in the Payt interface.

This scope is immediately removed from all existing authorizations and tokens. A `403 forbidden` will be returned on all endpoints requiring this scope, even for previously created and still valid tokens. Users do not have to take any action and are not informed. If you re-add the same scope in the future, all users will have to grant the scope explicitly, even if they authorized it in the past.

If you use the `scope` parameter in the authorize\_url, remember to remove this scope. Otherwise a `400 bad_request` error will be raised during the authorization process. If you do not supply the `scope` parameter, no further action is required as the authorization process will automatically leave out any removed scope.
