linode Networking API
Manage networking resources including IP addresses, IPv6 ranges and pools, firewalls, VLANs, and IP address sharing and assignment.
Manage networking resources including IP addresses, IPv6 ranges and pools, firewalls, VLANs, and IP address sharing and assignment.
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