UpCloud Permission API

Manage permissions for sub-accounts to access resources owned by the main account.

Business capability
Identity & Access Management BC-620.20

Operations 6

GET /1.3/permission List permissions #
PUT /1.3/permission Replace permissions #
POST /1.3/permission/grant Grant permission #
POST /1.3/permission/revoke Revoke permission #
POST /1.3/permission/revoke-all-from-target/{target_type}/{target_identifier} Revoke all permissions by target #
POST /1.3/permission/revoke-all-from-user/{user} Revoke all permissions by user #

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/upcloud:upcloud-permission-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

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

upcloud-permission-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Upcloud Permission API
  version: '1.3'
  contact:
    name: UpCloud
    url: https://upcloud.com
    email: hello@upcloud.com
  license:
    name: MIT
    url: https://spdx.org/licenses/MIT.html
  termsOfService: https://upcloud.com/terms-of-service/
  description: 'Operations tagged permission across 2 of this provider''s published API definitions: upcloud-openapi.json, upcloud-openapi.yml. Each path carries the servers of the definition it was published in.'
servers:
- url: https://api.upcloud.com
security:
- apiToken: []
tags:
- name: Permission
  description: Manage permissions for sub-accounts to access resources owned by the main account.
  x-displayName: Permission
paths:
  /1.3/permission:
    get:
      tags:
      - Permission
      summary: List permissions
      description: Retrieves a list of permissions for sub-accounts to access resources owned by the main account.
      operationId: listPermissions
      responses:
        '200':
          $ref: '#/components/responses/listPermissions200'
        default:
          $ref: '#/components/responses/listPermissionsDefault'
      x-upcloud-visibility: public
    put:
      tags:
      - Permission
      summary: Replace permissions
      description: Replaces the entire set of permissions for sub-accounts to access resources owned by the main account.
      operationId: replacePermissions
      requestBody:
        $ref: '#/components/requestBodies/replacePermissions'
      responses:
        '200':
          $ref: '#/components/responses/replacePermissions200'
        default:
          $ref: '#/components/responses/replacePermissionsDefault'
      x-upcloud-visibility: public
    servers:
    - url: https://api.upcloud.com
  /1.3/permission/grant:
    post:
      tags:
      - Permission
      summary: Grant permission
      description: Grants a permission for a sub-account to access a resource owned by the main account.
      operationId: grantPermission
      parameters:
      - $ref: '#/components/parameters/grantPermissionSkipTargetCheck'
      requestBody:
        $ref: '#/components/requestBodies/grantPermission'
      responses:
        '200':
          $ref: '#/components/responses/grantPermission200'
        default:
          $ref: '#/components/responses/grantPermissionDefault'
      x-upcloud-visibility: public
    servers:
    - url: https://api.upcloud.com
  /1.3/permission/revoke:
    post:
      tags:
      - Permission
      summary: Revoke permission
      description: Revokes a permission for a sub-account to access a resource owned by the main account.
      operationId: revokePermission
      requestBody:
        $ref: '#/components/requestBodies/revokePermission'
      responses:
        '204':
          $ref: '#/components/responses/revokePermission204'
        default:
          $ref: '#/components/responses/revokePermissionDefault'
      x-upcloud-visibility: public
    servers:
    - url: https://api.upcloud.com
  /1.3/permission/revoke-all-from-target/{target_type}/{target_identifier}:
    post:
      tags:
      - Permission
      summary: Revoke all permissions by target
      description: Revokes all permissions for sub-accounts to access a specific resource owned by the main account.
      operationId: revokeAllPermissionsByTarget
      parameters:
      - $ref: '#/components/parameters/revokeAllPermissionsByTargetTargetType'
      - $ref: '#/components/parameters/revokeAllPermissionsByTargetTargetIdentifier'
      - $ref: '#/components/parameters/revokeAllPermissionsByTargetMainAccountId'
      responses:
        '204':
          $ref: '#/components/responses/revokeAllPermissionsByTarget204'
        default:
          $ref: '#/components/responses/revokeAllPermissionsByTargetDefault'
      x-upcloud-visibility: public
    servers:
    - url: https://api.upcloud.com
  /1.3/permission/revoke-all-from-user/{user}:
    post:
      tags:
      - Permission
      summary: Revoke all permissions by user
      description: Revokes all permissions for a specific sub-account to access any resources owned by the main account.
      operationId: revokeAllPermissionsByUser
      parameters:
      - $ref: '#/components/parameters/revokeAllPermissionsByUserUser'
      responses:
        '204':
          $ref: '#/components/responses/revokeAllPermissionsByUser204'
        default:
          $ref: '#/components/responses/revokeAllPermissionsByUserDefault'
      x-upcloud-visibility: public
    servers:
    - url: https://api.upcloud.com
components:
  parameters:
    revokeAllPermissionsByTargetTargetIdentifier:
      name: target_identifier
      in: path
      description: The identifier of the target resource.
      required: true
      schema:
        type: string
    revokeAllPermissionsByTargetMainAccountId:
      name: main_account_id
      in: query
      description: If specified, revokes permissions for resources owned by the specified main account ID. Default is the current main account.
      required: false
      schema:
        type: integer
        minimum: 1
    revokeAllPermissionsByTargetTargetType:
      name: target_type
      in: path
      description: The type of the target resource (e.g., "server", "storage").
      required: true
      schema:
        type: string
    grantPermissionSkipTargetCheck:
      name: skip_target_check
      in: query
      description: If true, skips the check whether the target resource exists. Default is false.
      required: false
      schema:
        type: boolean
    revokeAllPermissionsByUserUser:
      name: user
      in: path
      description: The username of the sub-account.
      required: true
      schema:
        type: string
  responses:
    grantPermissionDefault:
      description: General failure
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/permissionError'
    revokePermissionDefault:
      description: General failure
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/permissionError'
    revokeAllPermissionsByTargetDefault:
      description: General failure
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/permissionError'
    listPermissionsDefault:
      description: General failure
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/permissionError'
    replacePermissionsDefault:
      description: General failure
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/permissionError'
    grantPermission200:
      description: The granted permission.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/permission'
    listPermissions200:
      description: A list of permissions.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/permissions'
    revokeAllPermissionsByUserDefault:
      description: General failure
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/permissionError'
    revokePermission204:
      description: Permission successfully revoked. No content in response body.
    revokeAllPermissionsByTarget204:
      description: All permissions for the specified target successfully revoked. No content in response body.
    replacePermissions200:
      description: The updated list of permissions.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/permissions'
    revokeAllPermissionsByUser204:
      description: All permissions for the specified user successfully revoked. No content in response body.
  schemas:
    permissionTargetType:
      $schema: https://json-schema.org/draft/2020-12/schema
      enum:
      - server
      - storage
      - network
      - router
      - object_storage
      - managed_database
      - managed_object_storage
      - managed_loadbalancer
      - managed_kubernetes
      - interface
      - network_gateway
      - tag_access
      - managed_container_registry
      - file_storage
      - ssh_key
      description: Type of the target to grant permission to
    permissions:
      $schema: https://json-schema.org/draft/2020-12/schema
      type: object
      properties:
        permissions:
          type: object
          properties:
            permission:
              type: array
              items:
                $ref: '#/components/schemas/permissionDocument'
          required:
          - permission
          additionalProperties: false
      required:
      - permissions
      additionalProperties: false
      description: List of permissions.
      example:
        permissions:
          permission:
          - user: subaccount1
            target_type: server
            target_identifier: 00e1d79f-d2d8-40ca-a68d-812655b34766
            options:
              storage: 'yes'
          - user: subaccount2
            target_type: storage
            target_identifier: 01f6d5e3-c3b2-41ba-912a-723ab2c12345
    permissionTargetIdentifier:
      $schema: https://json-schema.org/draft/2020-12/schema
      type: string
      description: 'Target identifying string. This is type specific and in most cases is a UUID4. Wildcard value "*" can be used to

        reference all target resources.

        '
    permissionDocument:
      $schema: https://json-schema.org/draft/2020-12/schema
      type: object
      properties:
        options:
          type: object
          description: Target specific options.
        target_identifier:
          $ref: '#/components/schemas/permissionTargetIdentifier'
        target_type:
          $ref: '#/components/schemas/permissionTargetType'
        user:
          $ref: '#/components/schemas/permissionUserName'
      required:
      - user
      - target_type
      - target_identifier
      additionalProperties: false
      description: Permission document defining access rights for a sub-account to a specific resource.
      example:
        options:
          storage: 'yes'
        target_identifier: 00e1d79f-d2d8-40ca-a68d-812655b34766
        target_type: server
        user: test
    permission:
      $schema: https://json-schema.org/draft/2020-12/schema
      type: object
      properties:
        permission:
          $ref: '#/components/schemas/permissionDocument'
      description: A single permission object.
    permissionUserName:
      $schema: https://json-schema.org/draft/2020-12/schema
      type: string
      maxLength: 64
      minLength: 4
      description: Username for an account.
    permissionError:
      $schema: https://json-schema.org/draft/2020-12/schema
      type: object
      properties:
        error:
          type: object
          properties:
            error_code:
              type: string
              examples:
              - GENERAL_FAILURE
            error_message:
              type: string
              examples:
              - Your request could not be fulfilled due to a technical issue.
          required:
          - error_code
          - error_message
          additionalProperties: false
      required:
      - error
      additionalProperties: false
      description: A general error response indicating that the request could not be fulfilled due to a technical issue.
  requestBodies:
    grantPermission:
      description: The permission to be granted.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/permission'
    replacePermissions:
      description: The new set of permissions.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/permission'
    revokePermission:
      description: The permission to be revoked.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/permission'
  securitySchemes:
    apiToken:
      type: http
      description: UpCloud API uses HTTP Bearer authentication. An API token is required to authenticate. The API token can be created in the UpCloud control panel. Alternatively, you can create an API token using the API directly, or with upctl. Note that if you want to use HTTP Basic authentication on API or with upctl, you will need to enable API access in the UpCloud control panel first.
      scheme: bearer
x-refined-from:
- upcloud-openapi.json
- upcloud-openapi.yml
x-upcloud-visibility: public
x-tagGroups:
- name: Server
  tags:
  - server
  - server-group
  - server_size
  - plan
  - device
  - events
  - timezone
  - vnc_keymap
- name: Network
  tags:
  - network
  - network-peering
  - ip_address
  - router
  - gateway
  - firewall-ruleset
- name: Account & Access
  tags:
  - account
  - audit-logs
  - account-tokens
  - permission
  - tag
- name: Billing
  tags:
  - price
  - currency
x-provenance:
  method: harvested
  publisher: UpCloud
  source: https://developers.upcloud.com/api/1.3/upcloud-openapi.json
  note: split by refine-openapis from the provider's own published document, verified by fetch (openapi/_original/*.fetch.json);
    stamped by stamp-openapi-provenance.py (roadmap#793)