1. Docs
  2. API Reference
  3. Register new permission(s)

Register new permission(s)

POST/portal/v1/accounts/{accountSlug}/applications/{appSlug}/environments/{envSlug}/permissions

Authentication

  • Bearer Token Authorization

    JWT access token

Request body

  • permissionsPermissionItemDto[]*

    One or more permissions to register

Code samples

cURLJavaScriptPythonGo
curl -X POST "https://api.canopy.dev/portal/v1/accounts/{accountSlug}/applications/{appSlug}/environments/{envSlug}/permissions" \
  -H "Authorization: Bearer $CANOPY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "permissions": [
      {
        "key": "string",
        "description": "string",
        "category": "string"
      }
    ]
  }'

Responses

201 Permission(s) created
{
  "id": "string",
  "application_id": "string",
  "key": "string",
  "description": "string",
  "category": "string",
  "source": "system",
  "created_at": "2026-04-20T12:00:00.000Z",
  "version": 0
}

application/json

  • idstring*
  • application_idstring*
  • keystring*
  • descriptionstring
  • categorystring
  • sourceenum: "system" | "custom"*
  • created_atstring (date-time)*
  • versionnumber*

    Optimistic-lock version. Send back as the `If-Match` header when updating to detect concurrent edits.

401 Invalid or expired token
403 This token is not authorized for this endpoint (wrong principal type — e.g., admin token on identity-only endpoint, or vice versa)

Returned object

On this page

Related endpoints

GETList permission catalog
GETGet a permission
PATCHUpdate permission metadata
DELETERemove a permission