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