Unkey permissions API

Permission and role management operations

Operations 8

POST /v2/permissions.createPermission Create Permission #
POST /v2/permissions.createRole Create Role #
POST /v2/permissions.deletePermission Delete Permission #
POST /v2/permissions.deleteRole Delete Role #
POST /v2/permissions.getPermission Get Permission #
POST /v2/permissions.getRole Get Role #
POST /v2/permissions.listPermissions List Permissions #
POST /v2/permissions.listRoles List Roles #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/unkey-permissions-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

unkey-permissions-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  description: "Unkey's API provides programmatic access for all resources within our platform.\n\n\n### Authentication\n#\nThis API uses HTTP Bearer authentication with root keys. Most endpoints require specific permissions associated with your root key. When making requests, include your root key in the `Authorization` header:\n```\nAuthorization: Bearer unkey_xxxxxxxxxxx\n```\n\nAll responses follow a consistent envelope structure that separates operational metadata from actual data. This design provides several benefits:\n- Debugging: Every response includes a unique requestId for tracing issues\n- Consistency: Predictable response format across all endpoints\n- Extensibility: Easy to add new metadata without breaking existing integrations\n- Error Handling: Unified error format with actionable information\n\n### Success Response Format:\n```json\n{\n  \"meta\": {\n    \"requestId\": \"req_123456\"\n  },\n  \"data\": {\n    // Actual response data here\n  }\n}\n```\n\nThe meta object contains operational information:\n- `requestId`: Unique identifier for this request (essential for support)\n\nThe data object contains the actual response data specific to each endpoint.\n\n### Paginated Response Format:\n```json\n{\n  \"meta\": {\n    \"requestId\": \"req_123456\"\n  },\n  \"data\": [\n    // Array of results\n  ],\n  \"pagination\": {\n    \"cursor\": \"next_page_token\",\n    \"hasMore\": true\n  }\n}\n```\n\nThe pagination object appears on list endpoints and contains:\n- `cursor`: Token for requesting the next page\n- `hasMore`: Whether more results are available\n\n### Error Response Format:\n```json\n{\n  \"meta\": {\n    \"requestId\": \"req_2c9a0jf23l4k567\"\n  },\n  \"error\": {\n    \"detail\": \"The resource you are attempting to modify is protected and cannot be changed\",\n    \"status\": 403,\n    \"title\": \"Forbidden\",\n    \"type\": \"https://unkey.com/docs/errors/unkey/application/protected_resource\"\n  }\n}\n```\n\nError responses include comprehensive diagnostic information:\n- `title`: Human-readable error summary\n- `detail`: Specific description of what went wrong\n- `status`: HTTP status code\n- `type`: Link to error documentation\n- `errors`: Array of validation errors (for 400 responses)\n\nThis structure ensures you always have the context needed to debug issues and take corrective action."
  title: Unkey analytics Permissions API
  version: 2.0.0
servers:
- url: https://api.unkey.com
security:
- rootKey: []
tags:
- description: Permission and role management operations
  name: permissions
paths:
  /v2/permissions.createPermission:
    post:
      description: 'Create a new permission to define specific actions or capabilities in your RBAC system. Permissions can be assigned directly to API keys or included in roles.


        Use hierarchical naming patterns like `documents.read`, `admin.users.delete`, or `billing.invoices.create` for clear organization.


        **Important:** Permission names must be unique within the workspace. Once created, permissions are immediately available for assignment.


        **Required Permissions**


        Your root key must have the following permission:

        - `rbac.*.create_permission`

        '
      operationId: permissions.createPermission
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/V2PermissionsCreatePermissionRequestBody'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/V2PermissionsCreatePermissionResponseBody'
          description: Permission created successfully
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestErrorResponse'
          description: Bad Request
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorResponse'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorResponse'
          description: Forbidden
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConflictErrorResponse'
          description: Conflict - permission with that name already exists
        '429':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorResponse'
          description: Too Many Requests
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServerErrorResponse'
          description: Internal Server Error
      security:
      - rootKey: []
      summary: Create Permission
      tags:
      - permissions
      x-speakeasy-name-override: CreatePermission
  /v2/permissions.createRole:
    post:
      description: 'Create a new role to group related permissions for easier management. Roles enable consistent permission assignment across multiple API keys.


        **Important:** Role names must be unique within the workspace. Once created, roles are immediately available for assignment.


        **Required Permissions**


        Your root key must have the following permission:

        - `rbac.*.create_role`

        '
      operationId: permissions.createRole
      requestBody:
        content:
          application/json:
            examples:
              basic:
                summary: Basic role creation
                value:
                  description: Can read and write content
                  name: content.editor
              withoutDescription:
                summary: Role without description
                value:
                  name: api.reader
            schema:
              $ref: '#/components/schemas/V2PermissionsCreateRoleRequestBody'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/V2PermissionsCreateRoleResponseBody'
          description: Role created successfully
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestErrorResponse'
          description: Bad Request
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorResponse'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorResponse'
          description: Forbidden
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConflictErrorResponse'
          description: Conflict - A role with this name already exists
        '429':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorResponse'
          description: Too Many Requests
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServerErrorResponse'
          description: Internal Server Error
      security:
      - rootKey: []
      summary: Create Role
      tags:
      - permissions
      x-speakeasy-name-override: CreateRole
  /v2/permissions.deletePermission:
    post:
      description: 'Remove a permission from your workspace. This also removes the permission from all API keys and roles.


        **Important:** This operation cannot be undone and immediately affects all API keys and roles that had this permission assigned.


        **Required Permissions**


        Your root key must have the following permission:

        - `rbac.*.delete_permission`

        '
      operationId: permissions.deletePermission
      requestBody:
        content:
          application/json:
            examples:
              basic:
                summary: Delete a permission
                value:
                  permissionId: perm_1234567890abcdef
            schema:
              $ref: '#/components/schemas/V2PermissionsDeletePermissionRequestBody'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/V2PermissionsDeletePermissionResponseBody'
          description: Permission deleted successfully
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestErrorResponse'
          description: Bad Request
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorResponse'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorResponse'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorResponse'
          description: Not Found - The specified permission does not exist
        '429':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorResponse'
          description: Too Many Requests
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServerErrorResponse'
          description: Internal Server Error
      security:
      - rootKey: []
      summary: Delete Permission
      tags:
      - permissions
      x-speakeasy-name-override: DeletePermission
  /v2/permissions.deleteRole:
    post:
      description: 'Remove a role from your workspace. This also removes the role from all assigned API keys.


        **Important:** This operation cannot be undone and immediately affects all API keys that had this role assigned.


        **Required Permissions**


        Your root key must have the following permission:

        - `rbac.*.delete_role`

        '
      operationId: permissions.deleteRole
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/V2PermissionsDeleteRoleRequestBody'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/V2PermissionsDeleteRoleResponseBody'
          description: Role deleted successfully
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestErrorResponse'
          description: Bad Request
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorResponse'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorResponse'
          description: Forbidden
        '429':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorResponse'
          description: Too Many Requests
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServerErrorResponse'
          description: Internal Server Error
      security:
      - rootKey: []
      summary: Delete Role
      tags:
      - permissions
      x-speakeasy-name-override: DeleteRole
  /v2/permissions.getPermission:
    post:
      description: 'Retrieve details about a specific permission including its name, description, and metadata.


        **Required Permissions**


        Your root key must have the following permission:

        - `rbac.*.read_permission`

        '
      operationId: permissions.getPermission
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/V2PermissionsGetPermissionRequestBody'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/V2PermissionsGetPermissionResponseBody'
          description: Permission retrieved successfully
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestErrorResponse'
          description: Bad Request
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorResponse'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorResponse'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorResponse'
          description: Not Found
        '429':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorResponse'
          description: Too Many Requests
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServerErrorResponse'
          description: Internal Server Error
      security:
      - rootKey: []
      summary: Get Permission
      tags:
      - permissions
      x-speakeasy-name-override: GetPermission
  /v2/permissions.getRole:
    post:
      description: 'Retrieve details about a specific role including its assigned permissions.


        **Required Permissions**


        Your root key must have the following permission:

        - `rbac.*.read_role`

        '
      operationId: permissions.getRole
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/V2PermissionsGetRoleRequestBody'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/V2PermissionsGetRoleResponseBody'
          description: Role retrieved successfully
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestErrorResponse'
          description: Bad Request
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorResponse'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorResponse'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorResponse'
          description: Not Found
        '429':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorResponse'
          description: Too Many Requests
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServerErrorResponse'
          description: Internal Server Error
      security:
      - rootKey: []
      summary: Get Role
      tags:
      - permissions
      x-speakeasy-name-override: GetRole
  /v2/permissions.listPermissions:
    post:
      description: 'Retrieve all permissions in your workspace.

        Results are paginated and sorted by their id.


        **Required Permissions**


        Your root key must have the following permission:

        - `rbac.*.read_permission`

        '
      operationId: permissions.listPermissions
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/V2PermissionsListPermissionsRequestBody'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/V2PermissionsListPermissionsResponseBody'
          description: Permissions retrieved successfully
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestErrorResponse'
          description: Bad Request
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorResponse'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorResponse'
          description: Forbidden
        '429':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorResponse'
          description: Too Many Requests
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServerErrorResponse'
          description: Internal Server Error
      security:
      - rootKey: []
      summary: List Permissions
      tags:
      - permissions
      x-speakeasy-name-override: ListPermissions
  /v2/permissions.listRoles:
    post:
      description: 'Retrieve all roles in your workspace including their assigned permissions.

        Results are paginated and sorted by their id.


        **Required Permissions**


        Your root key must have the following permission:

        - `rbac.*.read_role`

        '
      operationId: permissions.listRoles
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/V2PermissionsListRolesRequestBody'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/V2PermissionsListRolesResponseBody'
          description: Roles retrieved successfully
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestErrorResponse'
          description: Bad Request
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorResponse'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorResponse'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorResponse'
          description: Not Found
        '429':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorResponse'
          description: Too Many Requests
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServerErrorResponse'
          description: Internal Server Error
      security:
      - rootKey: []
      summary: List Roles
      tags:
      - permissions
      x-speakeasy-name-override: ListRoles
components:
  schemas:
    V2PermissionsCreateRoleRequestBody:
      type: object
      required:
      - name
      properties:
        name:
          type: string
          minLength: 1
          maxLength: 512
          pattern: ^[a-zA-Z][a-zA-Z0-9._-]*$
          description: 'The unique name for this role. Must be unique within your workspace and clearly indicate the role''s purpose. Use descriptive names like ''admin'', ''editor'', or ''billing_manager''.


            Examples: ''admin.billing'', ''support.readonly'', ''developer.api'', ''manager.analytics''

            '
          example: support.readonly
        description:
          type: string
          maxLength: 512
          description: 'Provides comprehensive documentation of what this role encompasses and what access it grants.

            Include information about the intended use case, what permissions should be assigned, and any important considerations.

            This internal documentation helps team members understand role boundaries and security implications.

            Not visible to end users - designed for administration teams and access control audits.


            Consider documenting:

            - The role''s intended purpose and scope

            - What types of users should receive this role

            - What permissions are typically associated with it

            - Any security considerations or limitations

            - Related roles that might be used together

            '
          example: Provides read-only access for customer support representatives. Includes permissions to view user accounts, support tickets, and basic analytics. Does not include access to billing, admin functions, or data modification capabilities.
      additionalProperties: false
    V2PermissionsDeleteRoleRequestBody:
      type: object
      required:
      - role
      properties:
        role:
          type: string
          pattern: ^[a-zA-Z0-9_:\-\.\*]+$
          minLength: 3
          maxLength: 255
          description: 'Unique identifier of the role to permanently delete from your workspace.

            Must either be a valid role ID that begins with ''role_'' or the given role name and exists within your workspace.


            WARNING: Deletion is immediate and irreversible with significant consequences:

            - All API keys assigned this role will lose the associated permissions

            - Access to resources protected by this role''s permissions will be denied

            - Any authorization logic depending on this role will start failing

            - Historical analytics referencing this role remain intact


            Before deletion, ensure:

            - You''ve updated any dependent authorization logic or code

            - You''ve migrated any keys to use alternative roles or direct permissions

            - You''ve notified relevant team members of the access changes

            '
          example: role_dns_manager
      additionalProperties: false
    V2PermissionsListPermissionsResponseData:
      type: array
      maxItems: 1000
      description: Array of permission objects with complete configuration details.
      items:
        $ref: '#/components/schemas/Permission'
    ForbiddenErrorResponse:
      type: object
      required:
      - meta
      - error
      properties:
        meta:
          $ref: '#/components/schemas/Meta'
        error:
          $ref: '#/components/schemas/BaseError'
      description: 'Error response when the provided credentials are valid but lack sufficient permissions for the requested operation. This occurs when:

        - The root key doesn''t have the required permissions for this endpoint

        - The operation requires elevated privileges that the current key lacks

        - Access to the requested resource is restricted based on workspace settings


        To resolve this error, ensure your root key has the necessary permissions or contact your workspace administrator.'
    BadRequestErrorResponse:
      type: object
      required:
      - meta
      - error
      properties:
        meta:
          $ref: '#/components/schemas/Meta'
        error:
          $ref: '#/components/schemas/BadRequestErrorDetails'
      description: Error response for invalid requests that cannot be processed due to client-side errors. This typically occurs when request parameters are missing, malformed, or fail validation rules. The response includes detailed information about the specific errors in the request, including the location of each error and suggestions for fixing it. When receiving this error, check the 'errors' array in the response for specific validation issues that need to be addressed before retrying.
    V2PermissionsListRolesResponseBody:
      type: object
      required:
      - meta
      - data
      properties:
        meta:
          $ref: '#/components/schemas/Meta'
        data:
          $ref: '#/components/schemas/V2PermissionsListRolesResponseData'
        pagination:
          $ref: '#/components/schemas/Pagination'
          x-go-type-skip-optional-pointer: true
          x-go-type-skip-optional-pointer-with-omitzero: true
      additionalProperties: false
    V2PermissionsGetRoleRequestBody:
      type: object
      required:
      - role
      properties:
        role:
          type: string
          minLength: 3
          maxLength: 255
          pattern: ^[a-zA-Z0-9_:\-\.\*]+$
          description: 'Unique identifier of the role to permanently delete from your workspace.

            Must either be a valid role ID that begins with ''role_'' or the given role name and exists within your workspace.


            Use this endpoint to verify role details, check its current permissions, or retrieve metadata.

            Returns complete role information including all assigned permissions for comprehensive access review.

            '
          example: role_1234567890abcdef
      additionalProperties: false
    V2PermissionsCreatePermissionResponseData:
      type: object
      properties:
        permissionId:
          type: string
          minLength: 3
          maxLength: 255
          pattern: ^[a-zA-Z0-9_]+$
          description: 'The unique identifier assigned to the newly created permission.

            Use this ID to reference the permission in role assignments, key operations, and other API calls.

            Always begins with ''perm_'' followed by a unique alphanumeric sequence.

            Store this ID if you need to manage or reference this permission in future operations.

            '
          example: perm_1234567890abcdef
      required:
      - permissionId
      additionalProperties: false
    V2PermissionsCreateRoleResponseData:
      type: object
      properties:
        roleId:
          type: string
          minLength: 3
          maxLength: 255
          pattern: ^[a-zA-Z0-9_]+$
          description: 'The unique identifier assigned to the newly created role.

            Use this ID to reference the role in permission assignments, key operations, and role management calls.

            Always begins with ''role_'' followed by a unique alphanumeric sequence.

            Store this ID if you need to manage, modify, or assign this role in future operations.

            '
          example: role_1234567890abcdef
      required:
      - roleId
      additionalProperties: false
    EmptyResponse:
      type: object
      additionalProperties: false
      description: Empty response object by design. A successful response indicates this operation was successfully executed.
    Role:
      type: object
      properties:
        id:
          type: string
          description: 'The unique identifier for this role within Unkey''s system.

            Generated automatically when the role is created and used to reference this role in API operations.

            Always begins with ''role_'' followed by alphanumeric characters and underscores.

            '
          example: role_1234567890abcdef
        name:
          type: string
          description: 'The human-readable name for this role that describes its function.

            Should be descriptive enough for administrators to understand what access this role provides.

            Use clear, semantic names that reflect the job function or responsibility level.

            Names must be unique within your workspace to avoid confusion during role assignment.

            '
          example: support.readonly
        description:
          type: string
          description: 'Optional detailed explanation of what this role encompasses and what access it provides.

            Helps team members understand the role''s scope, intended use cases, and security implications.

            Include information about what types of users should receive this role and what they can accomplish.

            Not visible to end users - this is for internal documentation and access control audits.

            '
          example: Provides read-only access for customer support representatives to view user accounts and support tickets
          x-go-type-skip-optional-pointer: true
          x-go-type-skip-optional-pointer-with-omitzero: true
        permissions:
          type: array
          items:
            $ref: '#/components/schemas/Permission'
          maxItems: 100
          description: 'Complete list of permissions currently assigned to this role.

            Each permission grants specific access rights that will be inherited by any keys or users assigned this role.

            Use this list to understand the full scope of access provided by this role.

            Permissions can be added or removed from roles without affecting the role''s identity or other properties.

            Empty array indicates a role with no permissions currently assigned.

            '
          x-go-type-skip-optional-pointer: true
          x-go-type-skip-optional-pointer-with-omitzero: true
      required:
      - id
      - name
      additionalProperties: false
    V2PermissionsGetPermissionRequestBody:
      type: object
      required:
      - permission
      properties:
        permission:
          type: string
          minLength: 3
          maxLength: 255
          pattern: ^[a-zA-Z][a-zA-Z0-9._-]*$
          description: 'The unique identifier of the permission to retrieve. Must be a valid permission ID that begins with ''perm_'' and exists within your workspace.

            '
          example: perm_1234567890abcdef
      additionalProperties: false
    V2PermissionsCreatePermissionResponseBody:
      type: object
      required:
      - meta
      - data
      properties:
        meta:
          $ref: '#/components/schemas/Meta'
        data:
          $ref: '#/components/schemas/V2PermissionsCreatePermissionResponseData'
      additionalProperties: false
    InternalServerErrorResponse:
      type: object
      required:
      - meta
      - error
      properties:
        meta:
          $ref: '#/components/schemas/Meta'
        error:
          $ref: '#/components/schemas/BaseError'
      description: 'Error response when an unexpected error occurs on the server. This indicates a problem with Unkey''s systems rather than your request.


        When you encounter this error:

        - The request ID in the response can help Unkey support investigate the issue

        - The error is likely temporary and retrying may succeed

        - If the error persists, contact Unkey support with the request ID'
    TooManyRequestsErrorResponse:
      type: object
      required:
      - meta
      - error
      properties:
        meta:
          $ref: '#/components/schemas/Meta'
        error:
          $ref: '#/components/schemas/BaseError'
      description: 'Error response when the client has sent too many requests in a given time period. This occurs when you''ve exceeded a rate limit or quota for the resource you''re accessing.


        The rate limit resets automatically after the time window expires. To avoid this error:

        - Implement exponential backoff when retrying requests

        - Cache results where appropriate to reduce request frequency

        - Check the error detail message for specific quota information

        - Contact support if you need a higher quota for your use case'
    V2PermissionsDeletePermissionResponseBody:
      type

# --- truncated at 32 KB (50 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/unkey/refs/heads/main/openapi/unkey-permissions-api-openapi.yml