diff --git a/openapi.yaml b/openapi.yaml
index 8cfd12a4b..9f9b51557 100644
--- a/openapi.yaml
+++ b/openapi.yaml
@@ -546,6 +546,8 @@ paths:
/account/credit-card:
x-linode-cli-command: account
post:
+ deprecated: true
+ x-linode-cli-skip: true
x-linode-grant: read_write
tags:
- Account
@@ -566,8 +568,7 @@ paths:
content:
application/json:
schema:
- allOf:
- - $ref: '#/components/schemas/CreditCard'
+ $ref: '#/components/schemas/CreditCard'
responses:
'200':
description: Credit Card updated.
@@ -1351,18 +1352,11 @@ paths:
content:
application/json:
schema:
+ allOf:
+ - $ref: '#/components/schemas/OAuthClient'
required:
- label
- redirect_uri
- allOf:
- - $ref: '#/components/schemas/OAuthClient'
- - type: object
- properties:
- public:
- type: boolean
- description: Whether to create a public or private client.
- example: false
- readOnly: false
responses:
'200':
description: Client created successfully.
@@ -1713,10 +1707,6 @@ paths:
- type
- data
- is_default
- - card_number
- - expiry_month
- - expiry_year
- - cvv
properties:
type:
type: string
@@ -1732,16 +1722,7 @@ paths:
is_default:
$ref: '#/components/schemas/PaymentMethod/properties/is_default'
data:
- type: object
- properties:
- card_number:
- $ref: '#/components/schemas/CreditCard/properties/card_number'
- expiry_month:
- $ref: '#/components/schemas/CreditCard/properties/expiry_month'
- expiry_year:
- $ref: '#/components/schemas/CreditCard/properties/expiry_year'
- cvv:
- $ref: '#/components/schemas/CreditCard/properties/cvv'
+ $ref: '#/components/schemas/CreditCard'
responses:
'200':
description: Payment Method added.
@@ -2738,34 +2719,11 @@ paths:
content:
application/json:
schema:
+ allOf:
+ - $ref: '#/components/schemas/User'
required:
- username
- email
- properties:
- username:
- type: string
- pattern: ^[a-zA-Z0-9]((?![_-]{2,})[a-zA-Z0-9-_])+[a-zA-Z0-9]$
- minLength: 3
- maxLength: 32
- description: >
- The new User's username. This is used for logging in, and may also be
- displayed alongside actions the User performs (for example, in Events
- or public StackScripts).
- example: example_user
- email:
- type: string
- format: email
- description: >
- The new User's email address.
- example: example_user@linode.com
- restricted:
- type: boolean
- description: >
- If true, the new User must be granted access to perform actions or access
- entities on this Account. See
- [/account/users/{username}/grants](/docs/api/account/#users-grants-view)
- for details on how to configure grants for a restricted User.
- example: true
responses:
'200':
description: New User created successfully.
@@ -2790,7 +2748,8 @@ paths:
source: >
linode-cli users create \
--username example_user \
- --email example_user@linode.com
+ --email example_user@linode.com \
+ --restricted true
/account/users/{username}:
x-linode-cli-command: users
parameters:
@@ -2867,7 +2826,8 @@ paths:
curl -H "Content-Type: application/json" \
-H "Authorization: Bearer $TOKEN" \
-X PUT -d '{
- "username": example_user
+ "username": example_user,
+ "email": example@linode.com,
"restricted": true
}' \
https://api.linode.com/v4/account/users/example_user
@@ -2875,6 +2835,7 @@ paths:
source: >
linode-cli users update example_user \
--username example_user \
+ --email example@linode.com \
--restricted true
delete:
x-linode-grant: unrestricted only
@@ -3465,8 +3426,16 @@ paths:
properties:
domain:
type: string
- description: The new domain being created.
- example: example.com
+ pattern: \A(\*\.)?([a-zA-Z0-9-_]{1,63}\.)+([a-zA-Z]{2,3}\.)?([a-zA-Z]{2,16}|xn--[a-zA-Z0-9]+)\Z
+ minLength: 1
+ maxLength: 255
+ description: >
+ The new domain for the clone. Domain labels cannot be longer than
+ 63 characters and must conform to [RFC1035](https://tools.ietf.org/html/rfc1035).
+ Domains must be unique on Linode's platform, including across different Linode
+ accounts; there cannot be two Domains representing the same domain.
+ example: example.org
+ x-linode-filterable: true
responses:
'200':
description: |
@@ -4139,12 +4108,11 @@ paths:
new Linode will incur a charge on your Account.
Linodes can be created using one of the available Types. See
- [GET /linode/types](/docs/api/linode-types/#types-list) to get more
+ Types List ([GET /linode/types](/docs/api/linode-types/#types-list)) to get more
information about each Type's specs and cost.
- Linodes can be created in any one of our available
- [Regions](/docs/api/regions/#regions-list) for a list
- of available Regions you can deploy your Linode in.
+ Linodes can be created in any one of our available Regions, which are accessible from the
+ Regions List ([GET /regions](/docs/api/regions/#regions-list)) endpoint.
In an effort to fight spam, Linode restricts outbound connections on ports 25, 465, and 587
on all Linodes for new accounts created after November 5th, 2019. For more information,
@@ -4152,25 +4120,27 @@ paths:
Linodes can be created in a number of ways:
- * Using a Linode Linux Distribution image or an Image you created based on another Linode.
+ * Using a Linode Public Image distribution or a Private Image you created based on another Linode.
+ * Access the Images List ([GET /images](/docs/api/images/#images-list)) endpoint with authentication to view
+ all available Images.
* The Linode will be `running` after it completes `provisioning`.
* A default config with two Disks, one being a 512 swap disk, is created.
* `swap_size` can be used to customize the swap disk size.
* Requires a `root_pass` be supplied to use for the root User's Account.
* It is recommended to supply SSH keys for the root User using the `authorized_keys` field.
* You may also supply a list of usernames via the `authorized_users` field.
- * These users must have an SSH Key associated with your Profile first. See [/profile/sshkeys](/docs/api/profile/#ssh-key-add) for more information.
+ * These users must have an SSH Key associated with your Profile first. See SSH Key Add ([POST /profile/sshkeys](/docs/api/profile/#ssh-key-add)) for more information.
* Using a StackScript.
- * See [/linode/stackscripts](/docs/api/stackscripts/#stackscripts-list) for
+ * See StackScripts List ([GET /linode/stackscripts](/docs/api/stackscripts/#stackscripts-list)) for
a list of available StackScripts.
* The Linode will be `running` after it completes `provisioning`.
* Requires a compatible Image to be supplied.
- * See [/linode/stackscript/{stackscriptId}](/docs/api/stackscripts/#stackscript-view) for compatible Images.
+ * See StackScript View ([GET /linode/stackscript/{stackscriptId}](/docs/api/stackscripts/#stackscript-view)) for compatible Images.
* Requires a `root_pass` be supplied to use for the root User's Account.
* It is recommended to supply SSH keys for the root User using the `authorized_keys` field.
* You may also supply a list of usernames via the `authorized_users` field.
- * These users must have an SSH Key associated with your Profile first. See [/profile/sshkeys](/docs/api/profile/#ssh-key-add) for more information.
+ * These users must have an SSH Key associated with your Profile first. See SSH Key Add ([POST /profile/sshkeys](/docs/api/profile/#ssh-key-add)) for more information.
* Using one of your other Linode's backups.
* You must create a Linode large enough to accommodate the Backup's size.
@@ -4179,7 +4149,7 @@ paths:
* Create an empty Linode.
* The Linode will remain `offline` and must be manually started.
- * See [POST /linode/instances/{linodeId}/boot](/docs/api/linode-instances/#linode-boot).
+ * See Linode Boot ([POST /linode/instances/{linodeId}/boot](/docs/api/linode-instances/#linode-boot)).
* Disks and Configs must be created manually.
* This is only recommended for advanced use cases.
@@ -4207,7 +4177,6 @@ paths:
required:
- type
- region
- - purpose
type: object
allOf:
- $ref: '#/components/schemas/LinodeRequest'
@@ -4565,11 +4534,11 @@ paths:
post:
x-linode-grant: read_write
summary: Snapshot Create
- description: >
+ description: |
Creates a snapshot Backup of a Linode.
- ** If you already have a snapshot of this Linode, this is a destructive
- action. The previous snapshot will be deleted.**
+ **Important:** If you already have a snapshot of this Linode, this is a destructive
+ action. The previous snapshot will be deleted.
tags:
- Linode Instances
operationId: createSnapshot
@@ -4579,7 +4548,6 @@ paths:
- oauth:
- linodes:read_write
requestBody:
- description: The label for the new snapshot.
required: true
content:
application/json:
@@ -4592,10 +4560,11 @@ paths:
type: string
minLength: 1
maxLength: 255
+ description: The label for the new snapshot.
example: SnapshotLabel
responses:
'200':
- description: Snapshot was successfully taken.
+ description: Snapshot request successful.
content:
application/json:
schema:
@@ -4858,8 +4827,7 @@ paths:
config_id:
type: integer
description: >
- The Linode Config ID to boot into. If omitted, we will attempt to select a
- config to use. (This will do the right thing in most cases.)
+ The Linode Config ID to boot into.
example: null
responses:
'200':
@@ -4925,9 +4893,6 @@ paths:
application/json:
schema:
type: object
- required:
- - region
- - type
properties:
region:
type: string
@@ -4937,7 +4902,7 @@ paths:
To view all available Regions you can deploy to see
[/regions](/docs/api/regions/#regions-list).
- * Region can only be provided when cloning to a new Linode.
+ * Region can only be provided and is required when cloning to a new Linode.
example: us-east
type:
type: string
@@ -4950,12 +4915,12 @@ paths:
To view all available Linode Types you can deploy with
see [/linode/types](/docs/api/linode-types/#types-list).
- * Type can only be provided when cloning to a new Linode.
+ * Type can only be provided and is required when cloning to a new Linode.
example: g6-standard-2
linode_id:
type: integer
description: >
- If an existing Linode is to be the target for the clone,
+ If an existing Linode is the target for the clone,
the ID of that Linode. The existing Linode must have enough
resources to accept the clone.
example: 124
@@ -5134,7 +5099,11 @@ paths:
content:
application/json:
schema:
- $ref: '#/components/schemas/LinodeConfig'
+ required:
+ - label
+ - devices
+ allOf:
+ - $ref: '#/components/schemas/LinodeConfig'
responses:
'200':
description: |
@@ -5258,68 +5227,7 @@ paths:
content:
application/json:
schema:
- required:
- - purpose
- properties:
- id:
- $ref: '#/components/schemas/LinodeConfig/properties/id'
- kernel:
- $ref: '#/components/schemas/LinodeConfig/properties/kernel'
- comments:
- $ref: '#/components/schemas/LinodeConfig/properties/comments'
- memory_limit:
- $ref: '#/components/schemas/LinodeConfig/properties/memory_limit'
- run_level:
- $ref: '#/components/schemas/LinodeConfig/properties/run_level'
- virt_mode:
- $ref: '#/components/schemas/LinodeConfig/properties/virt_mode'
- helpers:
- $ref: '#/components/schemas/LinodeConfig/properties/helpers'
- label:
- $ref: '#/components/schemas/LinodeConfig/properties/label'
- devices:
- type: object
- description: >
- A dictionary of device disks to use as a device map in a Linode's configuration profile.
-
- * An empty device disk dictionary or a dictionary with empty values for device slots is allowed.
- If no devices are specified, booting from this configuration will hold waiting for a device to
- exist before being able to boot.
-
- **Note**: An empty device disk dictionary or a dictionary with empty values for device slots
- previously errored in all cases.
- properties:
- sda:
- $ref: '#/components/schemas/Device'
- sdb:
- $ref: '#/components/schemas/Device'
- sdc:
- $ref: '#/components/schemas/Device'
- sdd:
- $ref: '#/components/schemas/Device'
- sde:
- $ref: '#/components/schemas/Device'
- sdf:
- $ref: '#/components/schemas/Device'
- sdg:
- $ref: '#/components/schemas/Device'
- sdh:
- $ref: '#/components/schemas/Device'
- root_device:
- type: string
- pattern: a-z, A-Z, 0-9, /, _, -
- description: >
- The root device to boot.
-
- * If no value or an invalid value is provided, root device will default
- to `/dev/sda`.
- **Note**: Previous validation errored when no value was provided for root device and an empty device
- map existed for the Linode's configuration profile.
-
- * If the device specified at the root device location is not mounted,
- the Linode will not boot until a device is mounted.
- interfaces:
- $ref: '#/components/schemas/LinodeConfig/properties/interfaces'
+ $ref: '#/components/schemas/LinodeConfig'
x-code-samples:
- lang: Shell
source: >
@@ -5478,13 +5386,27 @@ paths:
- Linode Instances
summary: Disk Create
description: |
- Adds a new Disk to a Linode. You can optionally create a Disk
- from an Image (see [/images](/docs/api/images/#images-list) for a list of available public images,
- or use one of your own), and optionally provide a StackScript to deploy
- with this Disk.
+ Adds a new Disk to a Linode.
+
+ * You can optionally create a Disk from an Image or an Empty Disk if no Image is provided with a request.
+
+ * When creating an Empty Disk, providing a `label` is required.
- The default filesystem for new Disks is `ext4`. If creating a Disk from an Image, the filesystem
+ * If no `label` is provided, an `image` is required instead.
+
+ * When creating a Disk from an Image, `root_pass` is required.
+
+ * The default filesystem for new Disks is `ext4`. If creating a Disk from an Image, the filesystem
of the Image is used unless otherwise specified.
+
+ * When deploying a StackScript on a Disk:
+ * See StackScripts List ([GET /linode/stackscripts](/docs/api/stackscripts/#stackscripts-list)) for
+ a list of available StackScripts.
+ * Requires a compatible Image to be supplied.
+ * See StackScript View ([GET /linode/stackscript/{stackscriptId}](/docs/api/stackscripts/#stackscript-view)) for compatible Images.
+ * It is recommended to supply SSH keys for the root User using the `authorized_keys` field.
+ * You may also supply a list of usernames via the `authorized_users` field.
+ * These users must have an SSH Key associated with their Profiles first. See SSH Key Add ([POST /profile/sshkeys](/docs/api/profile/#ssh-key-add)) for more information.
operationId: addLinodeDisk
x-linode-cli-action: disk-create
security:
@@ -5498,7 +5420,10 @@ paths:
content:
application/json:
schema:
- $ref: '#/components/schemas/DiskRequest'
+ required:
+ - size
+ allOf:
+ - $ref: '#/components/schemas/DiskRequest'
responses:
'200':
description: Disk created.
@@ -5812,7 +5737,7 @@ paths:
application/json:
schema:
required:
- - password
+ - size
properties:
size:
type: integer
@@ -10574,11 +10499,6 @@ paths:
required:
- label
- rules
- - inbound_policy
- - outbound_policy
- - action
- - protocol
- - addresses
properties:
devices:
type: object
@@ -10596,6 +10516,21 @@ paths:
example:
- 123
- 456
+ rules:
+ required:
+ - inbound_policy
+ - outbound_policy
+ properties:
+ inbound:
+ required:
+ - action
+ - addresses
+ - protocol
+ outbound:
+ required:
+ - action
+ - addresses
+ - protocol
responses:
'200':
description: Returns information about the created Firewall.
@@ -11091,12 +11026,7 @@ paths:
content:
application/json:
schema:
- required:
- - action
- - addresses
- - protocol
- allOf:
- - $ref: '#/components/schemas/Firewall/properties/rules'
+ $ref: '#/components/schemas/Firewall/properties/rules'
responses:
'200':
description: Firewall Rules updated successfully.
@@ -16316,8 +16246,7 @@ components:
* An empty device disk dictionary or a dictionary with empty values for device slots is allowed.
- * If no devices are specified, booting from this configuration will hold waiting for a device
- to exist before being able to boot.
+ * If no devices are specified, booting from this configuration will hold until a device exists that allows the boot process to start.
properties:
sda:
$ref: '#/components/schemas/Device'
@@ -16411,12 +16340,15 @@ components:
DiskRequest:
type: object
description: Disk object request.
- required:
- - size
- - label
properties:
size:
- $ref: '#/components/schemas/Disk/properties/size'
+ x-linode-filterable: true
+ type: integer
+ description: |
+ The size of the Disk in MB.
+
+ Images require a minimum size. Access the Image View ([GET /images/{imageID}](/docs/api/images/#image-view)) endpoint to view its size.
+ example: 48640
label:
$ref: '#/components/schemas/Disk/properties/label'
filesystem:
@@ -16424,11 +16356,11 @@ components:
image:
type: string
description: |
- An Image ID to deploy the Disk from.
+ An Image ID to deploy the Linode Disk from.
Access the Images List ([GET /images](/docs/api/images/#images-list)) endpoint with authentication to view
all available Images. Official Linode Images start with `linode/`, while your Account's Images start with `private/`. Creating
- a disk from an Account Image requires `read_only` or `read_write` permissions for that Image. Access the User's
+ a disk from a Private Image requires `read_only` or `read_write` permissions for that Image. Access the User's
Grant Update ([PUT /account/users/{username}/grants](/docs/api/account/#users-grants-update)) endpoint to
adjust permissions for an Account Image.
example: linode/debian9
@@ -16441,9 +16373,7 @@ components:
- ssh-rsa AAAA_valid_public_ssh_key_123456785== user@their-computer
description: |
A list of public SSH keys that will be automatically appended
- to the root user's `~/.ssh/authorized_keys` file.
-
- Only accepted if `image` is provided.
+ to the root user's `~/.ssh/authorized_keys` file when deploying from an Image.
authorized_users:
type: array
items:
@@ -16455,17 +16385,19 @@ components:
description: >
A list of usernames. If the usernames have associated
SSH keys, the keys will be appended to the root users
- `~/.ssh/authorized_keys` file automatically.
+ `~/.ssh/authorized_keys` file automatically when deploying from an Image.
root_pass:
type: string
format: password
writeOnly: true
example: aComplexP@ssword
+ minLength: 7
+ maxLength: 128
description: |
- This will set the root user's password on the newly-created Linode. Linode passwords have the following constraints:
+ This sets the root user's password on a newly-created Linode Disk when deploying from an Image.
- * Must meet a password strength score requirement that is calculated internally by the API.
- If the strength requirement is not met, you will receive a `Password does not meet strength requirement` error.
+ * Must meet a password strength score requirement that is calculated internally by the API.
+ If the strength requirement is not met, you will receive a `Password does not meet strength requirement` error.
stackscript_id:
type: integer
example: 10079
@@ -16474,7 +16406,7 @@ components:
deployment of this Linode. A compatible `image` is required to use a
StackScript. To get a list of available StackScript and their permitted Images
see [/stackscripts](/docs/api/stackscripts/#stackscripts-list).
- This field cannot be used when deploying from a Backup or a private Image.
+ This field cannot be used when deploying from a Backup or a Private Image.
stackscript_data:
type: object
example:
@@ -17347,7 +17279,7 @@ components:
- ACCEPT
- DROP
description: |
- The default behavior for outbound traffic. This setting can be overridden by [updating](/docs/api/networking/#firewall-rules-update) the `action` property for an individual Firewall Rule.
+ The default behavior for outbound traffic. This setting can be overridden by [updating](/docs/api/networking/#firewall-rules-update) the `outbound.action` property of the Firewall Rule.
example: DROP
tags:
x-linode-filterable: true
@@ -17365,8 +17297,6 @@ components:
description: >
One of a Firewall's inbound or outbound access rules. The `ports` property
can be used to allow traffic on a comma-separated list of different ports.
- required:
- - protocol
properties:
protocol:
type: string
@@ -17762,84 +17692,6 @@ components:
a Linode Disk, and will become "available" shortly. Images in a
"pending_upload" status are waiting for data to be [uploaded](/docs/api/images/#image-upload),
and become "available" after the upload and processing are complete.
- LinodeConfigInterface:
- type: object
- description: >
- The Network Interface to apply to this Linode's configuration profile.
- properties:
- label:
- type: string
- minLength: 1
- maxLength: 64
- pattern: '/[a-z0-9-]+/'
- x-linode-filterable: true
- nullable: true
- description: |
- The name of this interface.
-
- Required for `vlan` purpose interfaces. Must be an empty string or `null` for `public` purpose interfaces.
-
- If the VLAN label is new, a VLAN is created. Up to 10 VLANs can be created in each data center region. To view your active VLANs, use the [VLANs List](/docs/api/networking/#vlans-list) endpoint.
-
- May only consist of ASCII letters, numbers, and dashes (`-`).
-
- Must be unique among the Linode's interfaces.
- example: example-interface
- ipam_address:
- type: string
- format: ip/netmask
- nullable: true
- description: |
- This Network Interface's private IP address in Classless Inter-Domain Routing (CIDR) notation.
-
- Only used for `vlan` purpose interfaces. Must be an empty string or `null` for `public` purpose interfaces.
-
- The Linode is configured to use this address for the associated interface upon reboot if Network Helper is enabled. If Network Helper is disabled, the address can be enabled with [manual static IP configuration](/docs/guides/linux-static-ip-configuration/).
-
- Must be unique among the Linode's interfaces.
- example: '10.0.0.1/24'
- purpose:
- type: string
- enum:
- - public
- - vlan
- description: |
- The type of interface.
-
- * `public`
- * Only one `public` interface per Linode can be defined.
- * The Linode's default public IPv4 address is assigned to the `public` interface.
- * If no `public` interface is defined, the Linode is not reachable via the public internet; access can only be established via LISH or other Linodes connected to the same VLAN.
-
- * `vlan`
- * Configuring a `vlan` purpose interface attaches this Linode to the VLAN with the specified `label`.
- * The Linode is configured to use the specified `ipam_address`, if any.
- example: vlan
- LinodeConfigInterfaces:
- type: array
- items:
- $ref: '#/components/schemas/LinodeConfigInterface'
- description: |
- An array of Network Interfaces to add to this Linode's Configuration Profile.
-
- Up to three interface objects can be entered in this array. The position in the array determines the interface to which the settings apply:
-
- - First/0: eth0
- - Second/1: eth1
- - Third/2: eth2
-
- When updating a Linode's interfaces, *each interface must be redefined*. An empty interfaces array results in a default public interface configuration only.
-
- If no public interface is configured, public IP addresses are still assigned to the Linode but will not be usable without manual configuration.
-
- **Note:** Changes to Linode interface configurations can be enabled by rebooting the Linode.
-
- **Note:** Only Next Generation Network (NGN) data centers support VLANs. Use the Regions ([/regions](/docs/api/regions/)) endpoint to view the capabilities of data center regions.
- If a VLAN is attached to your Linode and you attempt to migrate or clone it to a non-NGN data center,
- the migration or cloning will not initiate. If a Linode cannot be migrated because of an incompatibility,
- you will be prompted to select a different data center or contact support.
-
- **Note:** See our guide on [Getting Started with VLANs](/docs/guides/getting-started-with-vlans/) to view additional [limitations](/docs/guides/getting-started-with-vlans/#limitations).
Invoice:
type: object
description: Account Invoice object
@@ -18680,10 +18532,6 @@ components:
example: true
LinodeConfig:
type: object
- required:
- - label
- - devices
- - purpose
properties:
id:
type: integer
@@ -18778,8 +18626,87 @@ components:
* If the device specified at the root device location is not mounted,
the Linode will not boot until a device is mounted.
-
example: /dev/sda
+ LinodeConfigInterface:
+ type: object
+ description: >
+ The Network Interface to apply to this Linode's configuration profile.
+ properties:
+ label:
+ type: string
+ minLength: 1
+ maxLength: 64
+ pattern: '/[a-z0-9-]+/'
+ x-linode-filterable: true
+ nullable: true
+ description: |
+ The name of this interface.
+
+ Required for `vlan` purpose interfaces. Must be an empty string or `null` for `public` purpose interfaces.
+
+ If the VLAN label is new, a VLAN is created. Up to 10 VLANs can be created in each data center region. To view your active VLANs, use the [VLANs List](/docs/api/networking/#vlans-list) endpoint.
+
+ May only consist of ASCII letters, numbers, and dashes (`-`).
+
+ Must be unique among the Linode's interfaces.
+ example: example-interface
+ ipam_address:
+ type: string
+ format: ip/netmask
+ nullable: true
+ description: |
+ This Network Interface's private IP address in Classless Inter-Domain Routing (CIDR) notation.
+
+ Only used for `vlan` purpose interfaces. Must be an empty string or `null` for `public` purpose interfaces.
+
+ The Linode is configured to use this address for the associated interface upon reboot if Network Helper is enabled. If Network Helper is disabled, the address can be enabled with [manual static IP configuration](/docs/guides/linux-static-ip-configuration/).
+
+ Must be unique among the Linode's interfaces.
+ example: '10.0.0.1/24'
+ purpose:
+ type: string
+ enum:
+ - public
+ - vlan
+ description: |
+ The type of interface.
+
+ * `public`
+ * Only one `public` interface per Linode can be defined.
+ * The Linode's default public IPv4 address is assigned to the `public` interface.
+ * If no `public` interface is defined, the Linode is not reachable via the public internet; access can only be established via LISH or other Linodes connected to the same VLAN.
+
+ * `vlan`
+ * Configuring a `vlan` purpose interface attaches this Linode to the VLAN with the specified `label`.
+ * The Linode is configured to use the specified `ipam_address`, if any.
+ example: vlan
+ LinodeConfigInterfaces:
+ type: array
+ items:
+ $ref: '#/components/schemas/LinodeConfigInterface'
+ required:
+ - purpose
+ description: |
+ An array of Network Interfaces to add to this Linode's Configuration Profile.
+
+ Up to three interface objects can be entered in this array. The position in the array determines the interface to which the settings apply:
+
+ - First/0: eth0
+ - Second/1: eth1
+ - Third/2: eth2
+
+ When updating a Linode's interfaces, *each interface must be redefined*. An empty interfaces array results in a default public interface configuration only.
+
+ If no public interface is configured, public IP addresses are still assigned to the Linode but will not be usable without manual configuration.
+
+ **Note:** Changes to Linode interface configurations can be enabled by rebooting the Linode.
+
+ **Note:** Only Next Generation Network (NGN) data centers support VLANs. Use the Regions ([/regions](/docs/api/regions/)) endpoint to view the capabilities of data center regions.
+ If a VLAN is attached to your Linode and you attempt to migrate or clone it to a non-NGN data center,
+ the migration or cloning will not initiate. If a Linode cannot be migrated because of an incompatibility,
+ you will be prompted to select a different data center or contact support.
+
+ **Note:** See our guide on [Getting Started with VLANs](/docs/guides/getting-started-with-vlans/) to view additional [limitations](/docs/guides/getting-started-with-vlans/#limitations).
LinodeRequest:
type: object
description: Common properties for creating and rebuilding Linodes.
@@ -18805,6 +18732,7 @@ components:
If it is deployed from an Image or a Backup and you wish it to remain `offline`
after deployment, set this to `false`.
+ default: true
LinodeStats:
type: object
description: >
@@ -20651,12 +20579,12 @@ components:
public:
x-linode-filterable: true
type: boolean
+ default: false
description: >
If this is a public or private OAuth Client. Public clients have a slightly
different authentication workflow than private clients. See the
OAuth spec for more details.
example: false
- readOnly: true
x-linode-cli-display: 4
ObjectStorageBucket:
type: object
@@ -21916,7 +21844,7 @@ components:
minLength: 3
maxLength: 32
description: >
- This User's username. This is used for logging in, and may also be
+ The User's username. This is used for logging in, and may also be
displayed alongside actions the User performs (for example, in Events
or public StackScripts).
x-linode-filterable: true
@@ -21926,30 +21854,33 @@ components:
type: string
format: email
description: >
- The email address for this User, for account management
- communications, and may be used for other communications as configured.
+ The email address for the User. Linode sends emails to this address for account management
+ communications. May be used for other communications as configured.
example: example_user@linode.com
- readOnly: true
x-linode-cli-display: 2
restricted:
type: boolean
description: >
- If true, this User must be granted access to perform actions or access
- entities on this Account. See
- [/account/users/{username}/grants](/docs/api/account/#users-grants-view)
+ If true, the User must be granted access to perform actions or access
+ entities on this Account. See User Grants View ([GET /account/users/{username}/grants](/docs/api/account/#users-grants-view))
for details on how to configure grants for a restricted User.
example: true
x-linode-cli-display: 3
ssh_keys:
type: array
+ readOnly: true
items:
type: string
- description: >
- A list of SSH Key labels added by this User. These are the keys
- that will be deployed if this User is included in the `authorized_users`
- field of a [create Linode](/docs/api/linode-instances/#linode-create),
- [rebuild Linode](/docs/api/linode-instances/#linode-rebuild),
- or [create Disk](/docs/api/linode-instances/#disk-create) request.
+ description: |
+ A list of SSH Key labels added by this User.
+
+ Users can add keys with the SSH Key Add ([POST /profile/sshkeys](/docs/api/profile/#ssh-key-add)) command.
+
+ These keys are deployed when this User is included in the `authorized_users`
+ field of the following requests:
+ - Linode Create ([POST /linode/instances](/docs/api/linode-instances/#linode-create))
+ - Linode Rebuild ([POST /linode/instances/{linodeId}/rebuild](/docs/api/linode-instances/#linode-rebuild))
+ - Disk Create ([POST /linode/instances/{linodeId}/disks](/docs/api/linode-instances/#disk-create))
example:
- home-pc
- laptop
@@ -21958,7 +21889,7 @@ components:
readOnly: true
description: >
A boolean value indicating if the User has Two Factor Authentication (TFA)
- enabled. See the Create Two Factor Secret ([/profile/tfa-enable](/docs/api/profile/#two-factor-secret-create))
+ enabled. See the Create Two Factor Secret ([POST /profile/tfa-enable](/docs/api/profile/#two-factor-secret-create))
endpoint to enable TFA.
UserDefinedField:
type: object