linode Networking API

Manage networking resources including IP addresses, IPv6 ranges and pools, firewalls, VLANs, and IP address sharing and assignment.

OpenAPI Specification

linode-networking-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Linode API v4 Account Networking API
  description: The Linode API v4 provides programmatic access to the full range of Akamai Connected Cloud (formerly Linode) products and services. It enables developers to create and manage compute instances, deploy Kubernetes clusters, configure NodeBalancers, manage DNS domains, provision Block Storage volumes, control Object Storage buckets, set up firewalls, and administer account settings. The RESTful API uses OAuth and personal access tokens for authentication and returns JSON responses, with support for filtering and sorting across all resource endpoints.
  version: 4.189.0
  contact:
    name: Linode Support
    url: https://www.linode.com/support/
  termsOfService: https://www.linode.com/legal-tos/
servers:
- url: https://api.linode.com/v4
  description: Production Server
security:
- personalAccessToken: []
- oauth: []
tags:
- name: Networking
  description: Manage networking resources including IP addresses, IPv6 ranges and pools, firewalls, VLANs, and IP address sharing and assignment.
paths:
  /networking/ips:
    get:
      operationId: getIPAddresses
      summary: List IP addresses
      description: Returns a paginated list of IP addresses on your account, including both IPv4 and IPv6 addresses.
      tags:
      - Networking
      parameters:
      - $ref: '#/components/parameters/pageParam'
      - $ref: '#/components/parameters/pageSizeParam'
      responses:
        '200':
          description: IP addresses retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedIPAddressList'
        '401':
          description: Unauthorized - invalid or missing authentication
  /networking/ips/{address}:
    get:
      operationId: getIPAddress
      summary: Get an IP address
      description: Returns information about a single IP address.
      tags:
      - Networking
      parameters:
      - name: address
        in: path
        required: true
        schema:
          type: string
        description: The IP address to look up.
      responses:
        '200':
          description: IP address retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IPAddress'
        '401':
          description: Unauthorized - invalid or missing authentication
        '404':
          description: IP address not found
  /networking/firewalls:
    get:
      operationId: getFirewalls
      summary: List firewalls
      description: Returns a paginated list of firewalls on your account.
      tags:
      - Networking
      parameters:
      - $ref: '#/components/parameters/pageParam'
      - $ref: '#/components/parameters/pageSizeParam'
      responses:
        '200':
          description: Firewalls retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedFirewallList'
        '401':
          description: Unauthorized - invalid or missing authentication
    post:
      operationId: createFirewall
      summary: Create a firewall
      description: Creates a new firewall with the specified rules and device assignments.
      tags:
      - Networking
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FirewallRequest'
      responses:
        '200':
          description: Firewall created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Firewall'
        '400':
          description: Bad request - invalid parameters
        '401':
          description: Unauthorized - invalid or missing authentication
  /networking/firewalls/{firewallId}:
    get:
      operationId: getFirewall
      summary: Get a firewall
      description: Returns the details for a single firewall.
      tags:
      - Networking
      parameters:
      - $ref: '#/components/parameters/firewallIdParam'
      responses:
        '200':
          description: Firewall retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Firewall'
        '401':
          description: Unauthorized - invalid or missing authentication
        '404':
          description: Firewall not found
    put:
      operationId: updateFirewall
      summary: Update a firewall
      description: Updates the label, status, and tags for a firewall.
      tags:
      - Networking
      parameters:
      - $ref: '#/components/parameters/firewallIdParam'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FirewallUpdateRequest'
      responses:
        '200':
          description: Firewall updated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Firewall'
        '400':
          description: Bad request - invalid parameters
        '401':
          description: Unauthorized - invalid or missing authentication
        '404':
          description: Firewall not found
    delete:
      operationId: deleteFirewall
      summary: Delete a firewall
      description: Deletes a firewall and removes it from all assigned devices.
      tags:
      - Networking
      parameters:
      - $ref: '#/components/parameters/firewallIdParam'
      responses:
        '200':
          description: Firewall deleted successfully
        '401':
          description: Unauthorized - invalid or missing authentication
        '404':
          description: Firewall not found
  /networking/vlans:
    get:
      operationId: getVLANs
      summary: List VLANs
      description: Returns a paginated list of VLANs on your account.
      tags:
      - Networking
      parameters:
      - $ref: '#/components/parameters/pageParam'
      - $ref: '#/components/parameters/pageSizeParam'
      responses:
        '200':
          description: VLANs retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedVLANList'
        '401':
          description: Unauthorized - invalid or missing authentication
components:
  schemas:
    IPAddress:
      type: object
      properties:
        address:
          type: string
          description: The IP address.
        gateway:
          type: string
          description: The default gateway.
        subnet_mask:
          type: string
          description: The subnet mask.
        prefix:
          type: integer
          description: The network prefix length.
        type:
          type: string
          enum:
          - ipv4
          - ipv6
          description: The type of IP address.
        public:
          type: boolean
          description: Whether this is a public IP address.
        rdns:
          type: string
          description: The reverse DNS entry for this address.
        linode_id:
          type: integer
          description: The ID of the Linode this IP is assigned to.
        region:
          type: string
          description: The region for this IP address.
    PaginatedIPAddressList:
      allOf:
      - $ref: '#/components/schemas/Pagination'
      - type: object
        properties:
          data:
            type: array
            items:
              $ref: '#/components/schemas/IPAddress'
    Firewall:
      type: object
      properties:
        id:
          type: integer
          description: The unique ID of this firewall.
        label:
          type: string
          description: The label of this firewall.
        status:
          type: string
          enum:
          - enabled
          - disabled
          - deleted
          description: The status of this firewall.
        rules:
          type: object
          properties:
            inbound:
              type: array
              items:
                $ref: '#/components/schemas/FirewallRule'
              description: Inbound firewall rules.
            inbound_policy:
              type: string
              enum:
              - ACCEPT
              - DROP
              description: The default inbound policy.
            outbound:
              type: array
              items:
                $ref: '#/components/schemas/FirewallRule'
              description: Outbound firewall rules.
            outbound_policy:
              type: string
              enum:
              - ACCEPT
              - DROP
              description: The default outbound policy.
          description: The firewall rules.
        tags:
          type: array
          items:
            type: string
          description: Tags for this firewall.
        created:
          type: string
          format: date-time
          description: When this firewall was created.
        updated:
          type: string
          format: date-time
          description: When this firewall was last updated.
    FirewallUpdateRequest:
      type: object
      properties:
        label:
          type: string
          minLength: 3
          maxLength: 32
          description: The label for the firewall.
        status:
          type: string
          enum:
          - enabled
          - disabled
          description: The status of the firewall.
        tags:
          type: array
          items:
            type: string
          description: Tags for the firewall.
    FirewallRule:
      type: object
      properties:
        ports:
          type: string
          description: The ports this rule applies to, such as 22 or 443-445.
        protocol:
          type: string
          enum:
          - TCP
          - UDP
          - ICMP
          - IPENCAP
          description: The network protocol.
        addresses:
          type: object
          properties:
            ipv4:
              type: array
              items:
                type: string
              description: IPv4 addresses or CIDRs.
            ipv6:
              type: array
              items:
                type: string
              description: IPv6 addresses or CIDRs.
          description: The addresses this rule applies to.
        action:
          type: string
          enum:
          - ACCEPT
          - DROP
          description: The action for matching traffic.
        label:
          type: string
          description: The label for this rule.
        description:
          type: string
          description: A description for this rule.
    PaginatedFirewallList:
      allOf:
      - $ref: '#/components/schemas/Pagination'
      - type: object
        properties:
          data:
            type: array
            items:
              $ref: '#/components/schemas/Firewall'
    PaginatedVLANList:
      allOf:
      - $ref: '#/components/schemas/Pagination'
      - type: object
        properties:
          data:
            type: array
            items:
              type: object
              properties:
                label:
                  type: string
                linodes:
                  type: array
                  items:
                    type: integer
                region:
                  type: string
                created:
                  type: string
                  format: date-time
    FirewallRequest:
      type: object
      required:
      - label
      - rules
      properties:
        label:
          type: string
          minLength: 3
          maxLength: 32
          description: The label for the firewall.
        rules:
          type: object
          properties:
            inbound:
              type: array
              items:
                $ref: '#/components/schemas/FirewallRule'
            inbound_policy:
              type: string
              enum:
              - ACCEPT
              - DROP
            outbound:
              type: array
              items:
                $ref: '#/components/schemas/FirewallRule'
            outbound_policy:
              type: string
              enum:
              - ACCEPT
              - DROP
          description: The firewall rules.
        tags:
          type: array
          items:
            type: string
          description: Tags for the firewall.
    Pagination:
      type: object
      properties:
        page:
          type: integer
          description: The current page number.
        pages:
          type: integer
          description: The total number of pages.
        results:
          type: integer
          description: The total number of results.
  parameters:
    firewallIdParam:
      name: firewallId
      in: path
      required: true
      schema:
        type: integer
      description: The ID of the firewall.
    pageParam:
      name: page
      in: query
      schema:
        type: integer
        minimum: 1
        default: 1
      description: The page number to return.
    pageSizeParam:
      name: page_size
      in: query
      schema:
        type: integer
        minimum: 25
        maximum: 500
        default: 100
      description: The number of items per page.
  securitySchemes:
    personalAccessToken:
      type: http
      scheme: bearer
      description: A personal access token generated from the Linode Cloud Manager that grants access to the API based on the token's scopes.
    oauth:
      type: oauth2
      description: OAuth 2.0 authentication for third-party applications.
      flows:
        authorizationCode:
          authorizationUrl: https://login.linode.com/oauth/authorize
          tokenUrl: https://login.linode.com/oauth/token
          scopes:
            account:read_only: Read access to account information
            account:read_write: Read and write access to account information
            domains:read_only: Read access to domains
            domains:read_write: Read and write access to domains
            events:read_only: Read access to events
            events:read_write: Read and write access to events
            firewall:read_only: Read access to firewalls
            firewall:read_write: Read and write access to firewalls
            images:read_only: Read access to images
            images:read_write: Read and write access to images
            ips:read_only: Read access to IP addresses
            ips:read_write: Read and write access to IP addresses
            linodes:read_only: Read access to Linodes
            linodes:read_write: Read and write access to Linodes
            lke:read_only: Read access to LKE
            lke:read_write: Read and write access to LKE
            longview:read_only: Read access to Longview
            longview:read_write: Read and write access to Longview
            nodebalancers:read_only: Read access to NodeBalancers
            nodebalancers:read_write: Read and write access to NodeBalancers
            object_storage:read_only: Read access to Object Storage
            object_storage:read_write: Read and write access to Object Storage
            stackscripts:read_only: Read access to StackScripts
            stackscripts:read_write: Read and write access to StackScripts
            volumes:read_only: Read access to Volumes
            volumes:read_write: Read and write access to Volumes
            vpc:read_only: Read access to VPCs
            vpc:read_write: Read and write access to VPCs
externalDocs:
  description: Linode API v4 Documentation
  url: https://techdocs.akamai.com/linode-api/reference/api