Linode Control Plane ACL API

View and manage access control lists (ACLs) for the control planes on your LKE clusters. Control Plane ACLs allow you to restrict access to your cluster's control plane to specific IP addresses or ranges.

Operations 3

GET /{apiVersion}/lke/clusters/{clusterId}/control_plane_acl Get the control plane access control list #
PUT /{apiVersion}/lke/clusters/{clusterId}/control_plane_acl Update the control plane access control list #
DELETE /{apiVersion}/lke/clusters/{clusterId}/control_plane_acl Delete the control plane access control list #

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/linode:linode-control-plane-acl-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

linode-control-plane-acl-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  description: Add a Cloud Computing instance so you can build, release, and scale applications faster with virtual machines.
  license:
    name: Apache 2.0
    url: https://www.apache.org/licenses/LICENSE-2.0.html
  title: 'Akamai: Linode Control Plane ACL API'
  version: 4.229.1
servers:
- url: https://api.linode.com
tags:
- description: View and manage access control lists (ACLs) for the control planes on your LKE clusters. Control Plane ACLs allow you to restrict access to your cluster's control plane to specific IP addresses or ranges.
  name: Control Plane ACL
paths:
  /{apiVersion}/lke/clusters/{clusterId}/control_plane_acl:
    parameters:
    - description: __Enum__ Call either the `v4` URL, or `v4beta` for operations still in Beta.
      example: '{{apiVersion}}'
      in: path
      name: apiVersion
      required: true
      schema:
        enum:
        - v4
        - v4beta
        example: v4
        type: string
      x-akamai:
        file-path: parameters/api-version-path.yaml
    - description: ID of the Kubernetes cluster to look up.
      example: '{{clusterId}}'
      in: path
      name: clusterId
      required: true
      schema:
        example: 12345
        type: integer
      x-akamai:
        file-path: parameters/cluster-id-path.yaml
    x-akamai:
      file-path: paths/lke-control-plane-acl.yaml
      path-info: /{apiVersion}/lke/clusters/{clusterId}/control_plane_acl
    x-linode-cli-command: lke
    get:
      description: 'Get a specific cluster''s control plane access control List.


        **Permissions and scopes**


        To call this operation, you need the following:


        - **Identity and access permissions**. Your user needs these roles assigned. Learn more.

        - Roles: `lkecluster_viewer`

        - **OAuth scopes**. Your user needs these scopes assigned. Learn more.


        - Scopes: `lke:read_only`


        **CLI**


        ```shell

        linode-cli lke cluster-acl-view 12345

        ```


        Learn more'
      externalDocs:
        description: See documentation for this operation in Akamai's Linode API
        url: https://techdocs.akamai.com/linode-api/reference/get-lke-cluster-acl
      operationId: get-lke-cluster-acl
      responses:
        '200':
          content:
            application/json:
              example:
                acl:
                  addresses:
                    ipv4:
                    - 203.0.113.1
                    - 192.0.2.0/24
                    ipv6:
                    - 2001:db8:1234:abcd::/64
                  enabled: true
                  revision-id: 91391f47c46243829588918dfd62fcb5
              schema:
                additionalProperties: false
                properties:
                  acl:
                    additionalProperties: false
                    description: Defines settings related to the IP-based ACL of the LKE cluster.
                    properties:
                      addresses:
                        additionalProperties: false
                        default: {}
                        description: Supports keys `ipv4` and `ipv6`. The default value is an empty object.
                        properties:
                          ipv4:
                            default: []
                            description: A list of individual IPv4 addresses or CIDRs to `ALLOW`. Defaults to `[]`.
                            items:
                              type: string
                            type: array
                            x-linode-cli-display: 7
                          ipv6:
                            default: []
                            description: A list of individual IPv6 addresses or CIDRs to `ALLOW`. Defaults to `[]`.
                            items:
                              type: string
                            type: array
                            x-linode-cli-display: 8
                        type: object
                      enabled:
                        default: true
                        description: Defines a default policy. A value of `true` results in a default policy of `DENY`. A value of `false` results in a default policy of `ALLOW`, such as for disabled access controls. Creating a cluster with ACL, or upgrading a cluster to use ACL for LKE, is an irreversible change. Once upgraded, you can only toggle access controls with this field.
                        type: boolean
                        x-linode-cli-display: 9
                      revision-id:
                        description: Enables clients to track events related to ACL update requests and enforcements. If omitted, this defaults to a randomly generated string.
                        type: string
                        x-linode-cli-display: 10
                    type: object
                type: object
                x-akamai:
                  file-path: schemas/get-lke-cluster-control-plane-acl.yaml
          description: Returns a single cluster's control plane access control list. The optional field `revision-id` provided will be reflected on GET response when (and only after) the ACL stanza is verified as enforced.
        '400':
          content:
            application/json:
              example:
                errors:
                - field: acl
                  reason: Cluster does not support Control Plane ACL.
              schema:
                additionalProperties: false
                properties:
                  errors:
                    items:
                      additionalProperties: false
                      properties:
                        field:
                          description: The field in the request that caused this error. This may be a path, separated by periods in the case of nested fields. In some cases this may come back as `null` if the error is not specific to any single element of the request.
                          example: acl
                          type: string
                        reason:
                          description: A string explaining that the cluster does not support Control Plane ACL.
                          example: Cluster does not support Control Plane ACL.
                          type: string
                      type: object
                    type: array
                type: object
                x-akamai:
                  file-path: schemas/400-control-plane-acl.yaml
          description: If the cluster was not created or updated to enable the ACL feature, this request returns a 400 (Bad Request) error with an appropriate message, such as `Cluster does not support Control Plane ACL`.
          x-akamai:
            file-path: errors/400-control-plane-acl.yaml
        '404':
          content:
            application/json:
              example:
                errors:
                - field: acl
                  reason: Not Found.
              schema:
                additionalProperties: false
                properties:
                  errors:
                    items:
                      additionalProperties: false
                      properties:
                        field:
                          description: The field in the request that caused this error. This may be a path, separated by periods in the case of nested fields. In some cases this may come back as `null` if the error is not specific to any single element of the request.
                          example: acl
                          type: string
                        reason:
                          description: A string explaining that the cluster does not exist.
                          example: Not Found.
                          type: string
                      type: object
                    type: array
                type: object
                x-akamai:
                  file-path: schemas/404-control-plane-acl.yaml
          description: If the cluster does not exist, this request returns a 404 (Not Found) error.
          x-akamai:
            file-path: errors/404-control-plane-acl.yaml
        default:
          content:
            application/json:
              example:
                errors:
                - reason: Invalid JSON
              schema:
                additionalProperties: false
                properties:
                  errors:
                    description: Any warnings associated with a response.
                    items:
                      additionalProperties: false
                      description: An object for describing a single error that occurred during the processing of a request.
                      properties:
                        field:
                          description: The field in the request that caused this error. This may be a path, separated by periods in the case of nested fields. In some cases this may come back as `null` if the error is not specific to any single element of the request.
                          example: fieldname
                          type: string
                        reason:
                          description: What happened to cause this error. In most cases, this can be fixed immediately by changing the data you sent in the request, but in some cases you will be instructed to [Open a support ticket](https://techdocs.akamai.com/linode-api/reference/post-ticket) or perform some other action before you can complete the request successfully.
                          example: fieldname must be a valid value
                          type: string
                      type: object
                      x-akamai:
                        file-path: schemas/error-object.yaml
                    type: array
                type: object
          description: See [Errors](https://techdocs.akamai.com/linode-api/reference/errors) for the range of possible error response codes.
      security:
      - personalAccessToken: []
      - oauth:
        - lke:read_only
      summary: Get the control plane access control list
      tags:
      - Control Plane ACL
      x-akamai:
        tabs:
        - syntax: linode-cli lke cluster-acl-view 12345
          title: CLI
          url: https://techdocs.akamai.com/cloud-computing/docs/getting-started-with-the-linode-cli
      x-linode-cli-action: cluster-acl-view
      x-linode-iam:
      - roles:
        - lkecluster_viewer
    put:
      description: 'Updates a specific cluster''s control plane access control list.


        **Permissions and scopes**


        To call this operation, you need the following:


        - **Identity and access permissions**. Your user needs these roles assigned. Learn more.

        - Roles: `lkecluster_admin`

        - **OAuth scopes**. Your user needs these scopes assigned. Learn more.


        - Scopes: `lke:read_write`


        **CLI**


        ```shell

        linode-cli lke cluster-acl-update 12345 \

        --acl.enabled true \

        --acl.addresses.ipv4 "203.0.113.1" \

        --acl.addresses.ipv6 "2001:db8:1234:abcd::/64"

        ```


        Learn more'
      externalDocs:
        description: See documentation for this operation in Akamai's Linode API
        url: https://techdocs.akamai.com/linode-api/reference/put-lke-cluster-acl
      operationId: put-lke-cluster-acl
      requestBody:
        content:
          application/json:
            example:
              acl:
                addresses:
                  ipv4:
                  - 203.0.113.1
                  - 192.0.2.0/24
                  ipv6:
                  - 2001:db8:1234:abcd::/64
                enabled: true
                revision-id: 20240127r001
            schema:
              additionalProperties: false
              description: Defines settings for the Kubernetes control plane, including an IP-based Access Control List (ACL) for the control plane components.
              properties:
                acl:
                  additionalProperties: false
                  description: Defines settings related to the IP-based ACL of the LKE cluster. The object requires the `enabled` and `addresses` keys. It also supports the optional key `revision-id`. The default policy is set to `ALLOW`, so that access controls are disabled. An empty object value (`{}`) sets default elements.
                  properties:
                    addresses:
                      additionalProperties: false
                      default: {}
                      description: Supports keys `ipv4` and `ipv6`. The default value is an empty object.
                      properties:
                        ipv4:
                          description: A list of individual IPv4 addresses or CIDRs to `ALLOW`. Defaults to `[]`.
                          items:
                            type: string
                          type: array
                        ipv6:
                          description: A list of individual IPv6 addresses or CIDRs to `ALLOW`. Defaults to `[]`.
                          items:
                            type: string
                          type: array
                      type: object
                    enabled:
                      default: true
                      description: Defines a default policy. A value of `true` results in a default policy of `DENY`. A value of `false` results in a default policy of `ALLOW`, such as for disabled access controls. Creating a cluster with ACL, or upgrading a cluster to use ACL for LKE, is an irreversible change. Once upgraded, you can only toggle access controls with this field.
                      type: boolean
                      x-linode-cli-display: 7
                    revision-id:
                      description: Enables clients to track events related to ACL update requests and enforcements. If omitted, this defaults to a randomly generated string.
                      type: string
                  type: object
              type: object
      responses:
        '200':
          content:
            application/json:
              example:
                acl:
                  addresses:
                    ipv4:
                    - 203.0.113.1
                    - 192.0.2.0/24
                    ipv6:
                    - 2001:db8:1234:abcd::/64
                  enabled: true
                  revision-id: 91391f47c46243829588918dfd62fcb5
              schema:
                additionalProperties: false
                properties:
                  acl:
                    additionalProperties: false
                    description: Defines settings related to the IP-based ACL of the LKE cluster.
                    properties:
                      addresses:
                        additionalProperties: false
                        default: {}
                        description: Supports keys `ipv4` and `ipv6`. The default value is an empty object.
                        properties:
                          ipv4:
                            default: []
                            description: A list of individual IPv4 addresses or CIDRs to `ALLOW`. Defaults to `[]`.
                            items:
                              type: string
                            type: array
                            x-linode-cli-display: 7
                          ipv6:
                            default: []
                            description: A list of individual IPv6 addresses or CIDRs to `ALLOW`. Defaults to `[]`.
                            items:
                              type: string
                            type: array
                            x-linode-cli-display: 8
                        type: object
                      enabled:
                        default: true
                        description: Defines a default policy. A value of `true` results in a default policy of `DENY`. A value of `false` results in a default policy of `ALLOW`, such as for disabled access controls. Creating a cluster with ACL, or upgrading a cluster to use ACL for LKE, is an irreversible change. Once upgraded, you can only toggle access controls with this field.
                        type: boolean
                        x-linode-cli-display: 9
                      revision-id:
                        description: Enables clients to track events related to ACL update requests and enforcements. If omitted, this defaults to a randomly generated string.
                        type: string
                        x-linode-cli-display: 10
                    type: object
                type: object
                x-akamai:
                  file-path: schemas/get-lke-cluster-control-plane-acl.yaml
          description: Returns a single cluster's control plane access control list. The optional field `revision-id` provided will be reflected on GET response when (and only after) the ACL stanza is verified as enforced.
        '400':
          content:
            application/json:
              example:
                errors:
                - field: acl
                  reason: Cluster does not support Control Plane ACL.
              schema:
                additionalProperties: false
                properties:
                  errors:
                    items:
                      additionalProperties: false
                      properties:
                        field:
                          description: The field in the request that caused this error. This may be a path, separated by periods in the case of nested fields. In some cases this may come back as `null` if the error is not specific to any single element of the request.
                          example: acl
                          type: string
                        reason:
                          description: A string explaining that the cluster does not support Control Plane ACL.
                          example: Cluster does not support Control Plane ACL.
                          type: string
                      type: object
                    type: array
                type: object
                x-akamai:
                  file-path: schemas/400-control-plane-acl.yaml
          description: If the cluster was not created or updated to enable the ACL feature, this request returns a 400 (Bad Request) error with an appropriate message, such as `Cluster does not support Control Plane ACL`.
          x-akamai:
            file-path: errors/400-control-plane-acl.yaml
        '404':
          content:
            application/json:
              example:
                errors:
                - field: acl
                  reason: Not Found.
              schema:
                additionalProperties: false
                properties:
                  errors:
                    items:
                      additionalProperties: false
                      properties:
                        field:
                          description: The field in the request that caused this error. This may be a path, separated by periods in the case of nested fields. In some cases this may come back as `null` if the error is not specific to any single element of the request.
                          example: acl
                          type: string
                        reason:
                          description: A string explaining that the cluster does not exist.
                          example: Not Found.
                          type: string
                      type: object
                    type: array
                type: object
                x-akamai:
                  file-path: schemas/404-control-plane-acl.yaml
          description: If the cluster does not exist, this request returns a 404 (Not Found) error.
          x-akamai:
            file-path: errors/404-control-plane-acl.yaml
        default:
          content:
            application/json:
              example:
                errors:
                - reason: Invalid JSON
              schema:
                additionalProperties: false
                properties:
                  errors:
                    description: Any warnings associated with a response.
                    items:
                      additionalProperties: false
                      description: An object for describing a single error that occurred during the processing of a request.
                      properties:
                        field:
                          description: The field in the request that caused this error. This may be a path, separated by periods in the case of nested fields. In some cases this may come back as `null` if the error is not specific to any single element of the request.
                          example: fieldname
                          type: string
                        reason:
                          description: What happened to cause this error. In most cases, this can be fixed immediately by changing the data you sent in the request, but in some cases you will be instructed to [Open a support ticket](https://techdocs.akamai.com/linode-api/reference/post-ticket) or perform some other action before you can complete the request successfully.
                          example: fieldname must be a valid value
                          type: string
                      type: object
                      x-akamai:
                        file-path: schemas/error-object.yaml
                    type: array
                type: object
          description: See [Errors](https://techdocs.akamai.com/linode-api/reference/errors) for the range of possible error response codes.
      security:
      - personalAccessToken: []
      - oauth:
        - lke:read_write
      summary: Update the control plane access control list
      tags:
      - Control Plane ACL
      x-akamai:
        tabs:
        - syntax: "linode-cli lke cluster-acl-update 12345 \\\n      --acl.enabled true \\\n      --acl.addresses.ipv4 \"203.0.113.1\" \\\n      --acl.addresses.ipv6 \"2001:db8:1234:abcd::/64\""
          title: CLI
          url: https://techdocs.akamai.com/cloud-computing/docs/getting-started-with-the-linode-cli
      x-linode-cli-action: cluster-acl-update
      x-linode-iam:
      - roles:
        - lkecluster_admin
    delete:
      description: 'Disables control plane access controls and deletes all rules. It has the same effect as calling `PUT` with an ACL JSON map value of `{"enabled": false}`.


        **Permissions and scopes**


        To call this operation, you need the following:


        - **Identity and access permissions**. Your user needs these roles assigned. Learn more.

        - Roles: `lkecluster_admin`

        - **OAuth scopes**. Your user needs these scopes assigned. Learn more.


        - Scopes: `lke:read_write`


        **CLI**


        ```shell

        linode-cli lke cluster-acl-delete 12345

        ```


        Learn more'
      externalDocs:
        description: See documentation for this operation in Akamai's Linode API
        url: https://techdocs.akamai.com/linode-api/reference/delete-lke-cluster-acl
      operationId: delete-lke-cluster-acl
      responses:
        '200':
          content:
            application/json:
              example: {}
              schema:
                description: The API responds with an empty object.
                maxProperties: 0
                type: object
                x-akamai:
                  file-path: schemas/added-empty-obj.yaml
          description: Delete successful.
        '400':
          content:
            application/json:
              example:
                errors:
                - field: acl
                  reason: Cluster does not support Control Plane ACL.
              schema:
                additionalProperties: false
                properties:
                  errors:
                    items:
                      additionalProperties: false
                      properties:
                        field:
                          description: The field in the request that caused this error. This may be a path, separated by periods in the case of nested fields. In some cases this may come back as `null` if the error is not specific to any single element of the request.
                          example: acl
                          type: string
                        reason:
                          description: A string explaining that the cluster does not support Control Plane ACL.
                          example: Cluster does not support Control Plane ACL.
                          type: string
                      type: object
                    type: array
                type: object
                x-akamai:
                  file-path: schemas/400-control-plane-acl.yaml
          description: If the cluster was not created or updated to enable the ACL feature, this request returns a 400 (Bad Request) error with an appropriate message, such as `Cluster does not support Control Plane ACL`.
          x-akamai:
            file-path: errors/400-control-plane-acl.yaml
        '404':
          content:
            application/json:
              example:
                errors:
                - field: acl
                  reason: Not Found.
              schema:
                additionalProperties: false
                properties:
                  errors:
                    items:
                      additionalProperties: false
                      properties:
                        field:
                          description: The field in the request that caused this error. This may be a path, separated by periods in the case of nested fields. In some cases this may come back as `null` if the error is not specific to any single element of the request.
                          example: acl
                          type: string
                        reason:
                          description: A string explaining that the cluster does not exist.
                          example: Not Found.
                          type: string
                      type: object
                    type: array
                type: object
                x-akamai:
                  file-path: schemas/404-control-plane-acl.yaml
          description: If the cluster does not exist, this request returns a 404 (Not Found) error.
          x-akamai:
            file-path: errors/404-control-plane-acl.yaml
        default:
          content:
            application/json:
              example:
                errors:
                - reason: Invalid JSON
              schema:
                additionalProperties: false
                properties:
                  errors:
                    description: Any warnings associated with a response.
                    items:
                      additionalProperties: false
                      description: An object for describing a single error that occurred during the processing of a request.
                      properties:
                        field:
                          description: The field in the request that caused this error. This may be a path, separated by periods in the case of nested fields. In some cases this may come back as `null` if the error is not specific to any single element of the request.
                          example: fieldname
                          type: string
                        reason:
                          description: What happened to cause this error. In most cases, this can be fixed immediately by changing the data you sent in the request, but in some cases you will be instructed to [Open a support ticket](https://techdocs.akamai.com/linode-api/reference/post-ticket) or perform some other action before you can complete the request successfully.
                          example: fieldname must be a valid value
                          type: string
                      type: object
                      x-akamai:
                        file-path: schemas/error-object.yaml
                    type: array
                type: object
          description: See [Errors](https://techdocs.akamai.com/linode-api/reference/errors) for the range of possible error response codes.
      security:
      - personalAccessToken: []
      - oauth:
        - lke:read_write
      summary: Delete the control plane access control list
      tags:
      - Control Plane ACL
      x-akamai:
        tabs:
        - syntax: linode-cli lke cluster-acl-delete 12345
          title: CLI
          url: https://techdocs.akamai.com/cloud-computing/docs/getting-started-with-the-linode-cli
      x-linode-cli-action: cluster-acl-delete
      x-linode-iam:
      - roles:
        - lkecluster_admin
components:
  securitySchemes:
    oauth:
      flows:
        authorizationCode:
          authorizationUrl: https://login.linode.com/oauth/authorize
          scopes:
            account:read_only: Allows access to GET information about your account.
            account:read_write: Allows access to all endpoints related to your account.
            child_account:read_only: Allows access to GET information about deprecated parent/child operations.
            child_account:read_write: Allows access to deprecated parent/child operations.
            databases:read_only: Allows access to GET information about databases.
            databases:read_write: Allows access to all endpoints related to databases.
            domains:read_only: Allows access to GET Domains on your account.
            domains:read_write: Allows access to all Domain endpoints.
            events:read_only: Allows access to GET your Events.
            events:read_write: Allows access to all endpoints related to your Events.
            firewall:read_only: Allows access to GET information about your Firewalls.
            firewall:read_write: Allows access to all Firewall endpoints.
            images:read_only: Allows access to GET your Images.
            images:read_write: Allows access to all endpoints related to your Images.
            ips:read_only: Allows access to GET your ips.
            ips:read_write: Allows access to all endpoints related to your ips.
            linodes:read_only: Allows access to GET Linodes on your account.
            linodes:read_write: Allow access to all endpoints related to your Linodes.
            lke:read_only: Allows access to GET LKE Clusters on your account.
            lke:read_write: Allows access to all endpoints related to LKE Clusters on your account.
            longview:read_only: Allows access to GET your Longview Clients.
            longview:read_write: Allows access to all endpoints related to your Longview Clients.
            monitor:read_only: Allows access to Monitor (Akamai Cloud Pulse) data.
            monitor:read_write: Allows access to GET Monitor (Akamai Cloud Pulse) data.
            nodebalancers:read_only: Allows access to GET NodeBalancers on your account.
            nodebalancers:read_write: Allows access to all NodeBalancer endpoints.
            object_storage:read_only: Allows access to GET information related to your Object Storage.
            object_storage:read_write: Allows access to all Object Storage endpoints.
            stackscripts:read_only: Allows access to GET your StackScripts.
            stackscripts:read_write: Allows access to all endpoints related to your StackScripts.
            volumes:read_only: Allows access to GET your Volumes.
            volumes:read_write: Allows access to all endpoints related to your Volumes.
            vpc:read_write: Allows access to all endpoints related to VPC and Subnet creation, updating, and deletion.
          tokenUrl: https://login.linode.com/oauth/token
      type: oauth2
    personalAccessToken:
      scheme: bearer
      type: http
externalDocs:
  description: See documentation for Akamai's Linode API
  url: https://techdocs.akamai.com/linode-api/reference
x-readme:
  explorer-enabled: false
  samples-languages:
  - curl
  - python
  - node