# Permission service

The PermissionService provides an interface for checking permissions for a user, where a permission is an action that is performed on a resource.

OpenAPI file: [`nominal.authorization.permissions.v1.json`](https://dev.nominal.io/api/_downloads/314d2e8fd0e5dcf40c19a4f25abc98a9/nominal.authorization.permissions.v1.json)

## Endpoints

### Check permissions

POST `/authorization/permissions/v1/check`

Checks a list of permissions for the calling user and returns results in the same order.

Body

`requests` array of [`CheckPermissionRequest`](https://dev.nominal.io/api/rest/permission-service.md#checkpermissionrequest)
:   ​

    Fields of `CheckPermissionRequest`

    `action` string required
    :   ​

    `resource` string required
    :   Matches `^ri\.[a-z][a-z0-9\-]*\.([a-z0-9][a-z0-9\-]*)?\.[a-z][a-z0-9\-]*\.[a-zA-Z0-9\-\._]+$`.

Response

`responses` array of [`CheckPermissionResponse`](https://dev.nominal.io/api/rest/permission-service.md#checkpermissionresponse)
:   ​

    Fields of `CheckPermissionResponse`

    `isAuthorized` boolean
    :   ​

    `requestedPermission` [`CheckPermissionRequest`](https://dev.nominal.io/api/rest/permission-service.md#checkpermissionrequest)
    :   ​

        Fields of `CheckPermissionRequest`

        `action` string
        :   ​

        `resource` string
        :   Matches `^ri\.[a-z][a-z0-9\-]*\.([a-z0-9][a-z0-9\-]*)?\.[a-z][a-z0-9\-]*\.[a-zA-Z0-9\-\._]+$`.

Request

**curl**

```shell
curl -X POST "https://api.gov.nominal.io/api/authorization/permissions/v1/check" \
  -H "Authorization: Bearer <api key>" \
  -H "Content-Type: application/json" \
  --data '{
  "requests": [
    {
      "action": "<action>",
      "resource": "<resource>"
    }
  ]
}'
```

**requests**

```python
import requests

response = requests.post(
    "https://api.gov.nominal.io/api/authorization/permissions/v1/check",
    headers={"Authorization": "Bearer <api key>"},
    json={"requests": [{"action": "<action>", "resource": "<resource>"}]},
)
response.raise_for_status()
print(response.json())
```

**httpx**

```python
import httpx

response = httpx.post(
    "https://api.gov.nominal.io/api/authorization/permissions/v1/check",
    headers={"Authorization": "Bearer <api key>"},
    json={"requests": [{"action": "<action>", "resource": "<resource>"}]},
)
response.raise_for_status()
print(response.json())
```

**aiohttp**

```python
import asyncio

import aiohttp

async def main() -> None:
    async with aiohttp.ClientSession() as session:
        async with session.post(
            "https://api.gov.nominal.io/api/authorization/permissions/v1/check",
            headers={"Authorization": "Bearer <api key>"},
            json={"requests": [{"action": "<action>", "resource": "<resource>"}]},
        ) as response:
            response.raise_for_status()
            print(await response.json())

asyncio.run(main())
```

Response: `200`

```json
{
  "responses": [
    {
      "isAuthorized": true,
      "requestedPermission": {
        "action": "<action>",
        "resource": "<resource>"
      }
    }
  ]
}
```

## Types

### CheckPermissionRequest

A permission is the declaration of an action that can be performed on a resource.

`action` string required
:   ​

`resource` string required
:   Matches `^ri\.[a-z][a-z0-9\-]*\.([a-z0-9][a-z0-9\-]*)?\.[a-z][a-z0-9\-]*\.[a-zA-Z0-9\-\._]+$`.

### CheckPermissionResponse

`isAuthorized` boolean
:   ​

`requestedPermission` [`CheckPermissionRequest`](https://dev.nominal.io/api/rest/permission-service.md#checkpermissionrequest) required
:   ​

Page design based on [Scalar](https://scalar.com), MIT License.
