From 697a80cd06aa446f9b7785fa3f94e956473ffaa1 Mon Sep 17 00:00:00 2001 From: Mikel Olasagasti Uranga Date: Sep 19 2022 21:54:46 +0000 Subject: Update linode-cli to 5.23.0 and API spec to 4.136.0 --- diff --git a/.gitignore b/.gitignore index 078de53..a8bc308 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ /linode-cli-5.13.2.tar.gz /linode-cli-5.15.0.tar.gz /linode-cli-5.17.1.tar.gz +/linode-cli-5.23.0.tar.gz diff --git a/linode-cli.spec b/linode-cli.spec index 4c0375d..72962db 100644 --- a/linode-cli.spec +++ b/linode-cli.spec @@ -1,5 +1,5 @@ Name: linode-cli -Version: 5.17.1 +Version: 5.23.0 Release: %autorelease Summary: Official command-line interface to the Linode platform diff --git a/openapi.yaml b/openapi.yaml index 8d0cd48..a6ab427 100644 --- a/openapi.yaml +++ b/openapi.yaml @@ -1,6 +1,6 @@ openapi: 3.0.1 info: - version: 4.115.0 + version: 4.136.0 title: Linode API description: | @@ -143,7 +143,7 @@ info: |-----------------------|--------| | **Authorization URL** | https://login.linode.com/oauth/authorize | | **Token URL** | https://login.linode.com/oauth/token | - | **Scopes** |
| + | **Scopes** |
| ## Requests @@ -335,6 +335,9 @@ info: ] }' ``` + ## Time Values + + All times returned by the API are in UTC, regardless of the timezone configured within your user's profile (see `timezone` property within [Profile View](/docs/api/profile/#profile-view__responses)). ## Rate Limiting @@ -343,6 +346,11 @@ info: **Note:** There may be rate limiting applied at other levels outside of the API, for example, at the load balancer. + Creating Linodes has a dedicated limit of 10 requests per 30 seconds per user. + That endpoint is: + + * [Linode Create](/docs/api/linode-instances/#linode-create) + `/stats` endpoints have their own dedicated limits of 100 requests per minute per user. These endpoints are: @@ -433,7 +441,12 @@ paths: - oauth: - account:read_write requestBody: - description: Update contact and billing information. + description: | + Update contact and billing information. + + Account properties that are excluded from a request remain unchanged. + + When updating an Account's `country` to "US", an error is returned if the Account's `zip` is not a valid US zip code. required: true content: application/json: @@ -464,15 +477,25 @@ paths: "last_name": "Smith", "phone": "555-555-1212", "state": "PA", - "zip": 19102, - } + "tax_id": "ATU99999999", + "zip": "19102" }' \ https://api.linode.com/v4/account - lang: CLI source: > linode-cli account update \ + --address_1 "123 Main St." \ + --address_2 "Suite 101" \ + --city Philadelphia \ + --company My Company \ LLC \ + --country US \ + --email jsmith@mycompany.com \ --first_name John \ - --last_name Smith + --last_name Smith \ + --phone 555-555-1212 \ + --state PA \ + --tax_id ATU99999999 \ + --zip 19102 /account/cancel: x-linode-cli-command: account post: @@ -2042,13 +2065,7 @@ paths: - Account summary: PayPal Payment Stage description: | - This begins the process of submitting a Payment via PayPal. After calling - this endpoint, you must take the resulting `payment_id` along with - the `payer_id` from your PayPal account and - [POST /account/payments/paypal-execute](/docs/api/account/#stagedapproved-paypal-payment-execute) - to complete the Payment. - - **Note**: This endpoint is deprecated and may be removed in a future release. PayPal can now be + **Note**: This endpoint is disabled and no longer accessible. PayPal can be designated as a Payment Method for automated payments using [Cloud Manager](/docs/guides/manage-billing-in-cloud-manager/#adding-a-new-payment-method). operationId: createPayPalPayment @@ -2116,12 +2133,8 @@ paths: - Account summary: Staged/Approved PayPal Payment Execute description: | - Given a PaymentID and PayerID - as generated by PayPal during the - transaction authorization process - this endpoint executes the Payment - to capture the funds and credit your Linode Account. - - **Note**: This endpoint is deprecated and may be removed in a future release. PayPal can now be - designated as a Payment Method for automated or manual payments using + **Note**: This endpoint is disabled and no longer accessible. PayPal can be + designated as a Payment Method for automated payments using [Cloud Manager](/docs/guides/manage-billing-in-cloud-manager/#adding-a-new-payment-method). operationId: executePayPalPayment x-linode-cli-action: paypal-execute @@ -2621,7 +2634,7 @@ paths: email address. Linode Managed can monitor any service or software stack reachable over TCP or HTTP. See our [Linode Managed guide](/docs/platform/linode-managed/) to learn more. - operationId: enableAccountManged + operationId: enableAccountManaged x-linode-cli-action: enable-managed security: - personalAccessToken: [] @@ -2992,6 +3005,7 @@ paths: "global": { "add_linodes": true, "add_nodebalancers": false, + "add_databases": true; "add_domains": true, "add_longview": false, "add_stackscripts": true, @@ -3062,187 +3076,399 @@ paths: ] }' \ https://api.linode.com/v4/account/users/example_user/grants - /domains: - x-linode-cli-command: domains + /databases/engines: + x-linode-cli-command: databases get: - x-linode-grant: read_only + tags: + - Databases + summary: Managed Database Engines List + operationId: getDatabasesEngines + servers: + - url: https://api.linode.com/v4 + - url: https://api.linode.com/v4beta + x-linode-cli-action: engines parameters: - $ref: '#/components/parameters/pageOffset' - $ref: '#/components/parameters/pageSize' + description: | + Display all available Managed Database engine types and versions. Engine IDs are used when creating new Managed Databases. + responses: + '200': + description: Returns a paginated list of all available Managed Database engines and versions. + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/PaginationEnvelope' + - type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/DatabaseEngine' + default: + $ref: '#/components/responses/ErrorResponse' + x-code-samples: + - lang: Shell + source: > + curl https://api.linode.com/v4/databases/engines/ + - lang: CLI + source: > + linode-cli databases engines + /databases/engines/{engineId}: + parameters: + - name: engineId + in: path + description: The ID of the Managed Database engine. + required: true + schema: + type: string + x-linode-cli-command: databases + get: tags: - - Domains - summary: Domains List - description: > - This is a collection of Domains that you have registered in Linode's DNS - Manager. Linode is not a registrar, and in order for these to work you - must own the domains and point your registrar at Linode's nameservers. - operationId: getDomains + - Databases + summary: Managed Database Engine View + operationId: getDatabasesEngine + servers: + - url: https://api.linode.com/v4 + - url: https://api.linode.com/v4beta + x-linode-cli-action: engine-view + parameters: + - $ref: '#/components/parameters/pageOffset' + - $ref: '#/components/parameters/pageSize' + description: | + Display information for a single Managed Database engine type and version. + responses: + '200': + description: Returns information for a single Managed Database engine type and version. + content: + application/json: + schema: + $ref: '#/components/schemas/DatabaseEngine' + default: + $ref: '#/components/responses/ErrorResponse' + x-code-samples: + - lang: Shell + source: > + curl https://api.linode.com/v4/databases/engines/mysql/5.7.30 + - lang: CLI + source: > + linode-cli databases engine-view mysql/5.7.30 + /databases/instances: + x-linode-cli-command: databases + get: + tags: + - Databases + summary: Managed Databases List All + operationId: getDatabasesInstances + servers: + - url: https://api.linode.com/v4 + - url: https://api.linode.com/v4beta x-linode-cli-action: list + x-linode-grant: read_only + parameters: + - $ref: '#/components/parameters/pageOffset' + - $ref: '#/components/parameters/pageSize' + description: | + Display all Managed Databases that are accessible by your User, regardless of engine type. + + For more detailed information on a particular Database instance, make a request to its `instance_uri`. security: - personalAccessToken: [] - oauth: - - domains:read_only + - databases:read_only responses: '200': - description: A paginated list of Domains you have registered. + description: Returns a paginated list of all accessible Managed Databases on your Account. content: application/json: schema: - type: object - properties: - data: - type: array - items: - $ref: '#/components/schemas/Domain' - page: - $ref: '#/components/schemas/PaginationEnvelope/properties/page' - pages: - $ref: '#/components/schemas/PaginationEnvelope/properties/pages' - results: - $ref: '#/components/schemas/PaginationEnvelope/properties/results' + allOf: + - $ref: '#/components/schemas/PaginationEnvelope' + - type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/Database' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - - lang: Shell - source: > - curl -H "Authorization: Bearer $TOKEN" \ - https://api.linode.com/v4/domains - - lang: CLI - source: > - linode-cli domains list - post: - x-linode-grant: add_domains + - lang: Shell + source: > + curl -H "Authorization: Bearer $TOKEN" \ + https://api.linode.com/v4/databases/instances + - lang: CLI + source: > + linode-cli databases list + /databases/mongodb/instances: + x-linode-cli-command: databases + get: tags: - - Domains - summary: Domain Create - description: > - Adds a new Domain to Linode's DNS Manager. Linode is not a registrar, and - you must own the domain before adding it here. Be sure to point your - registrar to Linode's nameservers so that the records hosted here are - used. - operationId: createDomain - x-linode-cli-action: create + - Databases + summary: Managed MongoDB Databases List + operationId: getDatabasesMongoDBInstances + servers: + - url: https://api.linode.com/v4 + - url: https://api.linode.com/v4beta + x-linode-cli-action: mongodb-list + x-linode-grant: read_only + parameters: + - $ref: '#/components/parameters/pageOffset' + - $ref: '#/components/parameters/pageSize' + description: | + Display all accessible Managed MongoDB Databases. + **Note**: New MongoDB Databases cannot currently be created. security: - personalAccessToken: [] - oauth: - - domains:read_write - requestBody: - description: Information about the domain you are registering. - required: true - content: - application/json: - schema: - required: - - domain - - type - allOf: - - $ref: '#/components/schemas/Domain' + - databases:read_only responses: '200': - description: | - Domain added successfully. + description: Returns a paginated list of all accessible Managed MongoDB Databases on your Account. content: application/json: schema: - $ref: '#/components/schemas/Domain' + allOf: + - $ref: '#/components/schemas/PaginationEnvelope' + - type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/DatabaseMongoDB' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - - lang: Shell - source: > - curl -H "Content-Type: application/json" \ - -H "Authorization: Bearer $TOKEN" \ - -X POST -d '{ - "domain": "example.com", - "type": "master", - "soa_email": "admin@example.com", - "description": "Example Description", - "refresh_sec": 14400, - "retry_sec": 3600, - "expire_sec": 604800, - "ttl_sec": 3600, - "status": "active", - "master_ips": ["127.0.0.1","255.255.255.1","123.123.123.7"], - "axfr_ips": ["44.55.66.77"], - "group": "Example Display Group", - "tags": ["tag1","tag2"] - }' \ - https://api.linode.com/v4/domains - - lang: CLI - source: > - linode-cli domains create \ - --type master \ - --domain example.org \ - --soa_email admin@example.org - /domains/{domainId}: - x-linode-cli-command: domains + - lang: Shell + source: > + curl -H "Authorization: Bearer $TOKEN" \ + https://api.linode.com/v4/databases/mongodb/instances/ + - lang: CLI + source: > + linode-cli databases mongodb-list + # post: + # tags: + # - Databases + # summary: Managed MongoDB Database Create + # operationId: postDatabasesMongoDBInstances + # servers: + # - url: https://api.linode.com/v4 + # - url: https://api.linode.com/v4beta + # x-linode-cli-action: mongodb-create + # x-linode-grant: add_databases + # description: | + # Provision a Managed MongoDB Database. + + # Restricted Users must have the `add_databases` grant to use this command. + + # New instances can take approximately 15 to 30 minutes to provision. + + # The `allow_list` is used to control access to the Managed Database. + + # * IP addresses on this list can access the Managed Database. All other sources are blocked. + # * Entering an empty array (`[]`) blocks all connections (both public and private) to the Managed Database. + + # All Managed Databases include automatic, daily backups. Up to seven backups are automatically stored for each Managed Database, providing restore points for each day of the past week. + + # All Managed Databases include automatic patch updates, which apply security patches and updates to the underlying operating system of the Managed MongoDB Database during configurable maintenance windows. + + # * If your database cluster is configured with a single node, you will experience downtime during this maintenance window when any updates occur. It's recommended that you adjust this window to match a time that will be the least disruptive for your application and users. You may also want to consider upgrading to a high availability plan to avoid any downtime due to maintenance. + + # * **The database software is not updated automatically.** To upgrade to a new database engine version, consider deploying a new Managed Database with your preferred version. You can then migrate your databases from the original Managed Database cluster to the new one. + + # * To modify update the maintenance window for a Database, use the **Managed MongoDB Database Update** ([PUT /databases/mongodb/instances/{instanceId}](/docs/api/databases/#managed-mongodb-database-update)) command. + + # **Note**: Managed MongoDB clusters are currently accessible over public IP addresses. To provide an additional layer of protection, support for private IP addresses is in development. + # security: + # - personalAccessToken: [] + # - oauth: + # - databases:read_write + # requestBody: + # description: Information about the Managed MongoDB Database you are creating. + # x-linode-cli-allowed-defaults: + # - region + # - type + # required: true + # content: + # application/json: + # schema: + # $ref: '#/components/schemas/DatabaseMongoDBRequest' + # responses: + # '200': + # description: A new Managed MongoDB Database is provisioning. + # content: + # application/json: + # schema: + # $ref: '#/components/schemas/DatabaseMongoDB' + # default: + # $ref: '#/components/responses/ErrorResponse' + # x-code-samples: + # - lang: Shell + # source: > + # curl -H "Content-Type: application/json" \ + # -H "Authorization: Bearer $TOKEN" \ + # -X POST -d '{ + # "label": "example-db", + # "region": "us-east", + # "type": "g6-dedicated-2", + # "cluster_size": 3, + # "engine": "mongodb/4.4.10", + # "encrypted": false, + # "ssl_connection": false, + # "replica_set": "example-replica-set", + # "compression_type": "none", + # "storage_engine": "wiredtiger", + # "allow_list": [ + # "203.0.113.1", + # "192.0.1.0/24" + # ] + # }' \ + # https://api.linode.com/v4/databases/mongodb/instances + # - lang: CLI + # source: > + # linode-cli databases mongodb-create \ + # --label example-db \ + # --region us-east \ + # --type g6-dedicated-2 \ + # --cluster_size 3 \ + # --engine mongodb/4.4.10 \ + # --encrypted false \ + # --ssl_connection true \ + # --replica_set example-replica-set \ + # --storage_engine wiredtiger \ + # --compression_type none \ + # --allow_list 203.0.113.1 \ + # --allow_list 192.0.1.0/24 + /databases/mongodb/instances/{instanceId}: + x-linode-cli-command: databases parameters: - - name: domainId + - name: instanceId in: path - description: The ID of the Domain to access. + description: The ID of the Managed MongoDB Database. required: true schema: type: integer get: + tags: + - Databases + summary: Managed MongoDB Database View + operationId: getDatabasesMongoDBInstance + servers: + - url: https://api.linode.com/v4 + - url: https://api.linode.com/v4beta + x-linode-cli-action: mongodb-view x-linode-grant: read_only + description: | + Display information for a single, accessible Managed MongoDB Database. + **Note**: New MongoDB Databases cannot currently be created. + security: + - personalAccessToken: [] + - oauth: + - databases:read_only + responses: + '200': + description: Returns information for a single Managed MongoDB Database. + content: + application/json: + schema: + $ref: '#/components/schemas/DatabaseMongoDB' + default: + $ref: '#/components/responses/ErrorResponse' + x-code-samples: + - lang: Shell + source: > + curl -H "Authorization: Bearer $TOKEN" \ + https://api.linode.com/v4/databases/mongodb/instances/123 + - lang: CLI + source: > + linode-cli databases mongodb-view 123 + delete: tags: - - Domains - summary: Domain View - description: > - This is a single Domain that you have registered in Linode's DNS Manager. - Linode is not a registrar, and in order for this Domain record to work you - must own the domain and point your registrar at Linode's nameservers. - operationId: getDomain - x-linode-cli-action: view + - Databases + summary: Managed MongoDB Database Delete + operationId: deleteDatabasesMongoDBInstance + servers: + - url: https://api.linode.com/v4 + - url: https://api.linode.com/v4beta + x-linode-cli-action: mongodb-delete + x-linode-grant: read_write + description: | + Remove a Managed MongoDB Database from your Account. + Requires `read_write` access to the Database. + The Database must have an `active`, `failed`, or `degraded` status to perform this command. + Only unrestricted Users can access this command, and have access regardless of the acting token's OAuth scopes. + **Note**: New MongoDB Databases cannot currently be created. security: - personalAccessToken: [] - oauth: - - domains:read_only + - databases:read_write responses: '200': - description: | - A single Domain in Linode's DNS Manager. + description: Managed MongoDB Database successfully deleted. content: application/json: schema: - $ref: '#/components/schemas/Domain' + type: object default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > curl -H "Authorization: Bearer $TOKEN" \ - https://api.linode.com/v4/domains/123 + -X DELETE \ + https://api.linode.com/v4/databases/mongodb/instances/123 - lang: CLI source: > - linode-cli domains view 123 + linode-cli databases mongodb-delete 123 put: - x-linode-grant: read_write tags: - - Domains - summary: Domain Update + - Databases + summary: Managed MongoDB Database Update + operationId: putDatabasesMongoDBInstance + servers: + - url: https://api.linode.com/v4 + - url: https://api.linode.com/v4beta + x-linode-cli-action: mongodb-update + x-linode-grant: read_write description: | - Update information about a Domain in Linode's DNS Manager. - operationId: updateDomain - x-linode-cli-action: update + Update a Managed MongoDB Database. + Requires `read_write` access to the Database. + The Database must have an `active` status to perform this command. + Updating addresses in the `allow_list` overwrites any existing addresses. + * IP addresses on this list can access the Managed Database. All other sources are blocked. + * Entering an empty array (`[]`) blocks all connections (both public and private) to the Managed Database. + * **Note**: Updates to the `allow_list` may take a short period of time to complete, making this command inappropriate for rapid successive updates to this property. + All Managed Databases include automatic patch updates, which apply security patches and updates to the underlying operating system of the Managed MongoDB Database. The maintenance window for these updates is configured with the Managed Database's `updates` property. + * If your database cluster is configured with a single node, you will experience downtime during this maintenance window when any updates occur. It's recommended that you adjust this window to match a time that will be the least disruptive for your application and users. You may also want to consider upgrading to a high availability plan to avoid any downtime due to maintenance. + * **The database software is not updated automatically.** To upgrade to a new database engine version, consider deploying a new Managed Database with your preferred version. You can then migrate your databases from the original Managed Database cluster to the new one. + **Note**: New MongoDB Databases cannot currently be created. security: - personalAccessToken: [] - oauth: - - domains:read_write + - databases:read_write requestBody: - description: The Domain information to update. + description: Updated information for the Managed MongoDB Database. required: true content: application/json: schema: - $ref: '#/components/schemas/Domain' + type: object + description: Updated information for the Managed MongoDB Database. + properties: + label: + $ref: '#/components/schemas/DatabaseMongoDBRequest/properties/label' + allow_list: + $ref: '#/components/schemas/DatabaseMongoDBRequest/properties/allow_list' + updates: + $ref: '#/components/schemas/DatabaseMongoDB/properties/updates' responses: '200': - description: Domain update successful. + description: Managed Database updated successfully. content: application/json: schema: - $ref: '#/components/schemas/Domain' + $ref: '#/components/schemas/DatabaseMongoDB' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: @@ -3251,691 +3477,579 @@ paths: curl -H "Content-Type: application/json" \ -H "Authorization: Bearer $TOKEN" \ -X PUT -d '{ - "domain": "example.com", - "type": "master", - "soa_email": "admin@example.com", - "description": "Example Description", - "refresh_sec": 14400, - "retry_sec": 3600, - "expire_sec": 604800, - "ttl_sec": 3600, - "status": "active", - "master_ips": ["127.0.0.1","255.255.255.1","123.123.123.7"], - "axfr_ips": ["44.55.66.77"], - "group": "Example Display Group", - "tags": ["tag1","tag2"] + "label": "example-db", + "allow_list": [ + "203.0.113.1", + "192.0.1.0/24" + ], + "updates" = { + "frequency": "monthly", + "duration": 3, + "hour_of_day": 12, + "day_of_week": 4, + "week_of_month": 3, + } }' \ - https://api.linode.com/v4/domains/123 + https://api.linode.com/v4/databases/mongodb/instances/123 - lang: CLI source: > - linode-cli domains update 1234 \ - --retry_sec 7200 \ - --ttl_sec 300 - delete: - x-linode-grant: read_write - tags: - - Domains - summary: Domain Delete - description: > - Deletes a Domain from Linode's DNS Manager. The Domain will be removed - from Linode's nameservers shortly after this operation completes. This - also deletes all associated Domain Records. - operationId: deleteDomain - x-linode-cli-action: delete - security: - - personalAccessToken: [] - - oauth: - - domains:read_write - responses: - '200': - description: Domain deleted successfully. - content: - application/json: - schema: - type: object - default: - $ref: '#/components/responses/ErrorResponse' - x-code-samples: - - lang: Shell - source: > - curl -H "Authorization: Bearer $TOKEN" \ - -X DELETE \ - https://api.linode.com/v4/domains/1234 - - lang: CLI - source: > - linode-cli domains delete 1234 - /domains/{domainId}/zone-file: - x-linode-cli-command: domains + linode-cli databases mongodb-update 123 \ + --label example-db \ + --allow_list 203.0.113.1 \ + --allow_list 192.0.1.0/24 \ + --updates.frequency monthly \ + --updates.duration 3 \ + --updates.hour_of_day 12 \ + --updates.day_of_week 4 \ + --updates.week_of_month 3 + /databases/mongodb/instances/{instanceId}/backups: + x-linode-cli-command: databases parameters: - - name: domainId - in: path - description: ID of the Domain. - required: true - schema: - type: string + - name: instanceId + in: path + description: The ID of the Managed MongoDB Database. + required: true + schema: + type: integer get: - x-linode-grant: read_only tags: - - Domains - summary: Domain Zone File View - description: > - Returns the zone file for the last rendered zone for the specified domain. - operationId: getDomainZone - x-linode-cli-action: zone-file + - Databases + summary: Managed MongoDB Database Backups List + operationId: getDatabasesMongoDBInstanceBackups + servers: + - url: https://api.linode.com/v4 + - url: https://api.linode.com/v4beta + x-linode-cli-action: mongodb-backups-list + x-linode-grant: read_only + parameters: + - $ref: '#/components/parameters/pageOffset' + - $ref: '#/components/parameters/pageSize' + description: | + Display all backups for an accessible Managed MongoDB Database. + The Database must not be provisioning to perform this command. + Database `auto` type backups are created every 24 hours at 0:00 UTC. Each `auto` backup is retained for 7 days. + Database `snapshot` type backups are created by accessing the **Managed MongoDB Database Backup Snapshot Create** ([POST /databases/mongodb/instances/{instanceId}/backups](/docs/api/databases/#managed-mongodb-database-backup-snapshot-create)) command. + **Note**: New MongoDB Databases cannot currently be created. security: - personalAccessToken: [] - oauth: - - domains:read_only + - databases:read_write responses: '200': - description: | - An array containing the lines of the domain zone file. + description: Returns a paginated list of backups for the Managed MongoDB Database. content: application/json: schema: - properties: - zone_file: - type: array - items: - type: string - example: - - "; example.com [123]" - - "$TTL 864000" - - "@ IN SOA ns1.linode.com. user.example.com. 2021000066 14400 14400 1209600 86400" - - "@ NS ns1.linode.com." - - "@ NS ns2.linode.com." - - "@ NS ns3.linode.com." - - "@ NS ns4.linode.com." - - "@ NS ns5.linode.com." - description: | - The lines of the zone file for the last rendered zone for this domain. + allOf: + - $ref: '#/components/schemas/PaginationEnvelope' + - type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/DatabaseBackup' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > curl -H "Authorization: Bearer $TOKEN" \ - https://api.linode.com/v4/domains/123/zone-file + https://api.linode.com/v4/databases/mongodb/instances/123/backups - lang: CLI source: > - linode-cli domains zone-file 123 - /domains/import: - x-linode-cli-command: domains + linode-cli databases mongodb-backups-list 123 post: - x-linode-grant: read_write - x-linode-cli-command: domains tags: - - Domains - summary: Domain Import - description: > - Imports a domain zone from a remote nameserver. - - Your nameserver must allow zone transfers (AXFR) from the following IPs: - - - 96.126.114.97 - - 96.126.114.98 - - 2600:3c00::5e - - 2600:3c00::5f - operationId: importDomain - x-linode-cli-action: import + - Databases + summary: Managed MongoDB Database Backup Snapshot Create + operationId: postDatabasesMongoDBInstanceBackup + servers: + - url: https://api.linode.com/v4 + - url: https://api.linode.com/v4beta + x-linode-cli-action: mongodb-backup-snapshot + x-linode-grant: read_write + description: | + Creates a snapshot backup of a Managed MongoDB Database. + Requires `read_write` access to the Database. + Backups generated by this command have the type `snapshot`. Snapshot backups may take several minutes to complete, after which they will be accessible to view or restore. + The Database must have an `active` status to perform this command. + **Note**: New MongoDB Databases cannot currently be created. security: - personalAccessToken: [] - oauth: - - domains:read_write + - databases:read_write requestBody: - description: Information about the Domain to import. + description: Information about the snapshot backup to create. content: application/json: schema: required: - - domain - - remote_nameserver + - label + type: object properties: - domain: + label: type: string - description: > - The domain to import. - example: example.com - remote_nameserver: + minLength: 3 + maxLength: 64 + description: | + The label for the Database snapshot backup. + * Must use only letters, numbers, underscores, dashes, and periods. + * Must begin and end with a letter or number. + * Must not include two dashes, underscores, or periods in a row. + example: db-snapshot + target: type: string - description: > - The remote nameserver that allows zone transfers (AXFR). - example: examplenameserver.com + enum: + - primary + - secondary + default: primary + description: | + The Database cluster target. + If the Database is a high availability cluster, choosing `secondary` creates a snapshot backup of a replica node. + example: primary responses: '200': - description: | - A single Domain in Linode's DNS Manager. + description: Database snapshot backup request successful. content: application/json: schema: - $ref: '#/components/schemas/Domain' + type: object default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - - lang: Shell - source: > - curl -H "Content-Type: application/json" \ - -H "Authorization: Bearer $TOKEN" \ - -X POST -d '{ - "domain": "example.com", - "remote_nameserver": "examplenameserver.com" - }' \ - https://api.linode.com/v4/domains/import - - lang: CLI - source: > - linode-cli domains import --domain example.com --remote_nameserver examplenameserver.com - /domains/{domainId}/clone: - x-linode-cli-command: domains + - lang: Shell + source: > + curl -H "Authorization: Bearer $TOKEN" \ + -X POST -d '{ + "label": "db-snapshot", + "target": "primary" + }' \ + https://api.linode.com/v4/databases/mongodb/instances/123/backups/ + - lang: CLI + source: > + linode-cli databases mongodb-backup-snapshot 123 \ + --label db-snapshot \ + --target primary + /databases/mongodb/instances/{instanceId}/backups/{backupId}: + x-linode-cli-command: databases parameters: - - name: domainId - in: path - description: ID of the Domain to clone. - required: true - schema: - type: string - post: - x-linode-grant: read_write + - name: instanceId + in: path + description: The ID of the Managed MongoDB Database. + required: true + schema: + type: integer + - name: backupId + in: path + description: The ID of the Managed MongoDB Database backup. + required: true + schema: + type: integer + get: tags: - - Domains - summary: Domain Clone - description: > - Clones a Domain and all associated DNS records from a Domain that is - registered in Linode's DNS manager. - operationId: cloneDomain - x-linode-cli-action: clone + - Databases + summary: Managed MongoDB Database Backup View + operationId: getDatabasesMongoDBInstanceBackup + servers: + - url: https://api.linode.com/v4 + - url: https://api.linode.com/v4beta + x-linode-cli-action: mongodb-backup-view + x-linode-grant: read_only + description: | + Display information for a single backup for an accessible Managed MongoDB Database. + The Database must not be provisioning to perform this command. + **Note**: New MongoDB Databases cannot currently be created. security: - personalAccessToken: [] - oauth: - - domains:read_write - requestBody: - description: Information about the Domain to clone. - required: true - content: - application/json: - schema: - required: - - domain - type: object - properties: - domain: - type: string - 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 + - databases:read_write responses: '200': - description: | - A new Domain in Linode's DNS Manager, based on a cloned Domain. + description: Returns a single backup for the Managed MongoDB Database. content: application/json: schema: - $ref: '#/components/schemas/Domain' + $ref: '#/components/schemas/DatabaseBackup' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > - curl -H "Content-Type: application/json" \ - -H "Authorization: Bearer $TOKEN" \ - -X POST -d '{ - "domain": "example.com" - }' \ - https://api.linode.com/v4/domains/123/clone + curl -H "Authorization: Bearer $TOKEN" \ + https://api.linode.com/v4/databases/mongodb/instances/123/backups/456 - lang: CLI source: > - linode-cli domains clone 123 --domain example.com - /domains/{domainId}/records: - x-linode-cli-command: domains - parameters: - - name: domainId - in: path - description: The ID of the Domain we are accessing Records for. - required: true - schema: - type: integer - get: - x-linode-grant: read_only + linode-cli databases mongodb-backup-view 123 456 + delete: tags: - - Domains - parameters: - - $ref: '#/components/parameters/pageOffset' - - $ref: '#/components/parameters/pageSize' + - Databases + summary: Managed MongoDB Database Backup Delete + operationId: deleteDatabaseMongoDBInstanceBackup + servers: + - url: https://api.linode.com/v4 + - url: https://api.linode.com/v4beta + x-linode-cli-action: mongodb-backup-delete + x-linode-grant: unrestricted only + description: | + Delete a single backup for an accessible Managed MongoDB Database. + Requires `read_write` access to the Database. + The Database must not be provisioning to perform this command. + **Note**: New MongoDB Databases cannot currently be created. security: - personalAccessToken: [] - oauth: - - domains:read_only - summary: Domain Records List - description: | - Returns a paginated list of Records configured on a Domain in Linode's - DNS Manager. - operationId: getDomainRecords - x-linode-cli-action: records-list + - databases:read_write responses: '200': - description: A list of Domain Records. + description: Request to delete Database backup successful. content: application/json: schema: type: object - properties: - data: - type: array - items: - $ref: '#/components/schemas/DomainRecord' - page: - $ref: '#/components/schemas/PaginationEnvelope/properties/page' - pages: - $ref: '#/components/schemas/PaginationEnvelope/properties/pages' - results: - $ref: '#/components/schemas/PaginationEnvelope/properties/results' + default: + $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > curl -H "Authorization: Bearer $TOKEN" \ - https://api.linode.com/v4/domains/1234/records + -X DELETE \ + https://api.linode.com/v4/databases/mongodb/instances/123/backups/456 - lang: CLI source: > - linode-cli domains records-list 1234 + linode-cli databases mongodb-backup-delete 123 456 + /databases/mongodb/instances/{instanceId}/backups/{backupId}/restore: + x-linode-cli-command: databases + parameters: + - name: instanceId + in: path + description: The ID of the Managed MongoDB Database. + required: true + schema: + type: integer + - name: backupId + in: path + description: The ID of the Managed MongoDB Database backup. + required: true + schema: + type: integer post: - x-linode-grant: read_write tags: - - Domains + - Databases + summary: Managed MongoDB Database Backup Restore + operationId: postDatabasesMongoDBInstanceBackupRestore + servers: + - url: https://api.linode.com/v4 + - url: https://api.linode.com/v4beta + x-linode-cli-action: mongodb-backup-restore + x-linode-grant: read_write + description: | + Restore a backup to a Managed MongoDB Database on your Account. + Requires `read_write` access to the Database. + The Database must have an `active` status to perform this command. + **Note**: Restoring from a backup will erase all existing data on the database instance and replace it with backup data. + **Note**: Currently, restoring a backup after resetting Managed Database credentials results in a failed cluster. Please contact Customer Support if this occurs. + **Note**: New MongoDB Databases cannot currently be created. security: - personalAccessToken: [] - oauth: - - domains:read_write - summary: Domain Record Create - description: > - Adds a new Domain Record to the zonefile this Domain represents. - operationId: createDomainRecord - x-linode-cli-action: records-create - requestBody: - description: > - Information about the new Record to add. - required: true - content: - application/json: - schema: - required: - - type - allOf: - - $ref: '#/components/schemas/DomainRecord' + - databases:read_write responses: '200': - description: Domain Record created successfully. + description: Request to restore backup successful. content: application/json: schema: - $ref: '#/components/schemas/DomainRecord' + type: object default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > - curl -H "Content-Type: application/json" \ - -H "Authorization: Bearer $TOKEN" \ - -X POST -d '{ - "type": "A", - "name": "test", - "target": "12.34.56.78", - "priority": 50, - "weight": 50, - "port": 80, - "service": null, - "protocol": null, - "ttl_sec": 604800 - }' \ - https://api.linode.com/v4/domains/123/records + curl -H "Authorization: Bearer $TOKEN" \ + -X POST https://api.linode.com/v4/databases/mongodb/instances/123/backups/456/restore - lang: CLI source: > - linode-cli domains records-create 123 \ - --type A \ - --name test \ - --target 12.34.56.78 \ - --priority 50 \ - --weight 50 \ - --port 80 \ - --ttl_sec 604800 - /domains/{domainId}/records/{recordId}: - x-linode-cli-command: domains + linode-cli databases mongodb-backup-restore 123 456 + /databases/mongodb/instances/{instanceId}/credentials: + x-linode-cli-command: databases parameters: - - name: domainId - in: path - description: The ID of the Domain whose Record you are accessing. - required: true - schema: - type: integer - - name: recordId - in: path - description: The ID of the Record you are accessing. - required: true - schema: - type: integer + - name: instanceId + in: path + description: The ID of the Managed MongoDB Database. + required: true + schema: + type: integer get: - x-linode-grant: read_only tags: - - Domains + - Databases + summary: Managed MongoDB Database Credentials View + operationId: getDatabasesMongoDBInstanceCredentials + servers: + - url: https://api.linode.com/v4 + - url: https://api.linode.com/v4beta + x-linode-cli-action: mongodb-creds-view + x-linode-grant: read_only + description: | + Display the root username and password for an accessible Managed MongoDB Database. + The Database must have an `active` status to perform this command. + **Note**: New MongoDB Databases cannot currently be created. security: - personalAccessToken: [] - oauth: - - domains:read_only - summary: Domain Record View - description: > - View a single Record on this Domain. - operationId: getDomainRecord - x-linode-cli-action: records-view + - databases:read_only responses: '200': - description: A Domain Record object. + description: Managed Database root username and password. content: application/json: schema: - $ref: '#/components/schemas/DomainRecord' + $ref: '#/components/schemas/DatabaseCredentials' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > curl -H "Authorization: Bearer $TOKEN" \ - https://api.linode.com/v4/domains/123/records/234 + https://api.linode.com/v4/databases/mongodb/instances/123/credentials/ - lang: CLI source: > - linode-cli domains records-view 123 234 - put: - x-linode-grant: read_write + linode-cli databases mongodb-creds-view 123 + /databases/mongodb/instances/{instanceId}/credentials/reset: + x-linode-cli-command: databases + parameters: + - name: instanceId + in: path + description: The ID of the Managed MongoDB Database. + required: true + schema: + type: integer + post: tags: - - Domains + - Databases + summary: Managed MongoDB Database Credentials Reset + operationId: postDatabasesMongoDBInstanceCredentialsReset + servers: + - url: https://api.linode.com/v4 + - url: https://api.linode.com/v4beta + x-linode-cli-action: mongodb-creds-reset + x-linode-grant: read_write + description: | + Reset the root password for a Managed MongoDB Database. + Requires `read_write` access to the Database. + A new root password is randomly generated and accessible with the **Managed MongoDB Database Credentials View** ([GET /databases/mongodb/instances/{instanceId}/credentials](/docs/api/databases/#managed-mongodb-database-credentials-view)) command. + Only unrestricted Users can access this command, and have access regardless of the acting token's OAuth scopes. + **Note**: Note that it may take several seconds for credentials to reset. + **Note**: New MongoDB Databases cannot currently be created. security: - personalAccessToken: [] - oauth: - - domains:read_write - summary: Domain Record Update - description: > - Updates a single Record on this Domain. - operationId: updateDomainRecord - x-linode-cli-action: records-update - requestBody: - description: The values to change. - required: true - content: - application/json: - schema: - $ref: '#/components/schemas/DomainRecord' + - databases:read_write responses: '200': - description: Domain Record updated. + description: Managed Database instance credentials successfully reset. content: application/json: schema: - $ref: '#/components/schemas/DomainRecord' + type: object default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > - curl -H "Content-Type: application/json" \ - -H "Authorization: Bearer $TOKEN" \ - -X PUT -d '{ - "type": "A", - "name": "test", - "target": "12.34.56.78", - "priority": 50, - "weight": 50, - "port": 80, - "service": null, - "protocol": null, - "ttl_sec": 604800, - "tag": null - }' \ - https://api.linode.com/v4/domains/123/records/234 + curl -H "Authorization: Bearer $TOKEN" \ + -X POST https://api.linode.com/v4/databases/mongodb/instances/123/credentials/reset - lang: CLI source: > - linode-cli domains records-update 123 234 \ - --type A \ - --name test \ - --target 12.34.56.78 \ - --priority 50 \ - --weight 50 \ - --port 80 \ - --ttl_sec 604800 - delete: - x-linode-grant: read_write + linode-cli databases mongodb-creds-reset 123 + /databases/mongodb/instances/{instanceId}/ssl: + x-linode-cli-command: databases + parameters: + - name: instanceId + in: path + description: The ID of the Managed MongoDB Database. + required: true + schema: + type: integer + get: tags: - - Domains + - Databases + summary: Managed MongoDB Database SSL Certificate View + operationId: getDatabasesMongoDBInstanceSSL + servers: + - url: https://api.linode.com/v4 + - url: https://api.linode.com/v4beta + x-linode-cli-action: mongodb-ssl-cert + x-linode-grant: read_only + description: | + Display the SSL CA certificate for an accessible Managed MongoDB Database. + The Database must have an `active` status to perform this command. + **Note**: New MongoDB Databases cannot currently be created. security: - personalAccessToken: [] - oauth: - - domains:read_write - summary: Domain Record Delete - description: > - Deletes a Record on this Domain. - operationId: deleteDomainRecord - x-linode-cli-action: records-delete + - databases:read_only responses: '200': - description: Record deleted successfully. + description: Returns the SSL CA certificate of a single Managed MongoDB Database. content: application/json: schema: - type: object + $ref: '#/components/schemas/DatabaseSSL' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > curl -H "Authorization: Bearer $TOKEN" \ - -X DELETE \ - https://api.linode.com/v4/domains/123/records/234 + https://api.linode.com/v4/databases/mongodb/instances/123/ssl - lang: CLI source: > - linode-cli domains records-delete 123 234 - /images: - x-linode-cli-command: images - get: - parameters: - - $ref: '#/components/parameters/pageOffset' - - $ref: '#/components/parameters/pageSize' + linode-cli databases mongodb-ssl-cert 123 + /databases/mongodb/instances/{instanceId}/patch: + x-linode-cli-command: databases + parameters: + - name: instanceId + in: path + description: The ID of the Managed MongoDB Database. + required: true + schema: + type: integer + post: tags: - - Images - summary: Images List + - Databases + summary: Managed MongoDB Database Patch + operationId: postDatabasesMongoDBInstancePatch + servers: + - url: https://api.linode.com/v4 + - url: https://api.linode.com/v4beta + x-linode-cli-action: mongodb-patch + x-linode-grant: read_write description: | - Returns a paginated list of Images. - - * **Public** Images have IDs that begin with "linode/". These distribution images are generally available to - all users. - - * **Private** Images have IDs that begin with "private/". These Images are Account-specific and only - accessible to Users with appropriate [Grants](/docs/api/account/#users-grants-view). - - * To view only public Images, call this endpoint with or without authentication. To view private Images as well, call this endpoint with authentication. - x-linode-redoc-load-ids: true - operationId: getImages - x-linode-cli-action: list + Apply security patches and updates to the underlying operating system of the Managed MongoDB Database. This function runs during regular maintenance windows, which are configurable with the **Managed MongoDB Database Update** ([PUT /databases/mongodb/instances/{instanceId}](/docs/api/databases/#managed-mongodb-database-update)) command. + Requires `read_write` access to the Database. + The Database must have an `active` status to perform this command. + **Note** + * If your database cluster is configured with a single node, you will experience downtime during this maintenance. Consider upgrading to a high availability plan to avoid any downtime due to maintenance. + * **The database software is not updated automatically.** To upgrade to a new database engine version, consider deploying a new Managed Database with your preferred version. You can then migrate your databases from the original Managed Database cluster to the new one. + **Note**: New MongoDB Databases cannot currently be created. security: - personalAccessToken: [] - oauth: - - images:read_only + - databases:read_write responses: '200': - description: A paginated list of Images. + description: Managed Database instance patch request successful. content: application/json: schema: type: object - properties: - data: - type: array - items: - $ref: '#/components/schemas/Image' - page: - $ref: '#/components/schemas/PaginationEnvelope/properties/page' - pages: - $ref: '#/components/schemas/PaginationEnvelope/properties/pages' - results: - $ref: '#/components/schemas/PaginationEnvelope/properties/results' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell - source: | - # Returns public Images only - curl https://api.linode.com/v4/images - - # Returns private and public Images + source: > curl -H "Authorization: Bearer $TOKEN" \ - https://api.linode.com/v4/images + -X POST https://api.linode.com/v4/databases/mongodb/instances/123/patch - lang: CLI source: > - linode-cli images list - post: - x-linode-grant: add_images + linode-cli databases mongodb-patch 123 + /databases/mysql/instances: + x-linode-cli-command: databases + get: tags: - - Images - summary: Image Create + - Databases + summary: Managed MySQL Databases List + operationId: getDatabasesMySQLInstances + servers: + - url: https://api.linode.com/v4 + - url: https://api.linode.com/v4beta + x-linode-cli-action: mysql-list + x-linode-grant: read_only + parameters: + - $ref: '#/components/parameters/pageOffset' + - $ref: '#/components/parameters/pageSize' description: | - Captures a private gold-master Image from a Linode Disk. - operationId: createImage - x-linode-cli-action: create + Display all accessible Managed MySQL Databases. security: - personalAccessToken: [] - oauth: - - images:read_write - - linodes:read_only - requestBody: - description: Information about the Image to create. - content: - application/json: - schema: - required: - - disk_id - properties: - disk_id: - type: integer - description: > - The ID of the Linode Disk that this Image will be - created from. - example: 42 - label: - type: string - description: > - A short title of this Image. Defaults to the label of the - Disk it is being created from if not provided. - description: - type: string - description: > - A detailed description of this Image. + - databases:read_only responses: '200': - description: New private Image created successfully. + description: Returns a paginated list of all accessible Managed MySQL Databases on your Account. content: application/json: schema: - $ref: '#/components/schemas/Image' + allOf: + - $ref: '#/components/schemas/PaginationEnvelope' + - type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/DatabaseMySQL' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > - curl -H "Content-Type: application/json" \ - -H "Authorization: Bearer $TOKEN" \ - -X POST -d '{ - "disk_id": 123, - "label": "this_is_a_label", - "description": "A longer description of the image" - }' \ - https://api.linode.com/v4/images + curl -H "Authorization: Bearer $TOKEN" \ + https://api.linode.com/v4/databases/mysql/instances/ - lang: CLI source: > - linode-cli images create \ - --label this_is_a_label \ - --description "A longer description \ - of the image" \ - --disk_id 123 - /images/upload: - x-linode-cli-command: images + linode-cli databases mysql-list post: - x-linode-grant: add_images + tags: + - Databases + summary: Managed MySQL Database Create + operationId: postDatabasesMySQLInstances servers: - url: https://api.linode.com/v4 - url: https://api.linode.com/v4beta - tags: - - Images - summary: Image Upload + x-linode-cli-action: mysql-create + x-linode-grant: add_databases description: | - Initiates an Image upload. + Provision a Managed MySQL Database. - This endpoint creates a new private Image object and returns it along - with the URL to which image data can be uploaded. + Restricted Users must have the `add_databases` grant to use this command. - - Image data must be uploaded within 24 hours of creation or the - upload will be cancelled and the image deleted. + New instances can take approximately 15 to 30 minutes to provision. - - Image uploads should be made as an HTTP PUT request to the URL returned in the `upload_to` - response parameter, with a `Content-type: application/octet-stream` header included in the - request. For example: + The `allow_list` is used to control access to the Managed Database. - curl -v \ - -H "Content-Type: application/octet-stream" \ - --upload-file example.img.gz \ - $UPLOAD_URL \ - --progress-bar \ - --output /dev/null + * IP addresses on this list can access the Managed Database. All other sources are blocked. + * Entering an empty array (`[]`) blocks all connections (both public and private) to the Managed Database. - - Uploaded image data should be compressed in gzip (`.gz`) format. The uncompressed disk should be in raw - disk image (`.img`) format. A maximum compressed file size of 5GB is supported for upload at this time. + All Managed Databases include automatic, daily backups. Up to seven backups are automatically stored for each Managed Database, providing restore points for each day of the past week. - **Note:** To initiate and complete an Image upload in a single step, see our guide on how to [Upload an Image](/docs/products/tools/images/guides/upload-an-image/) using Cloud Manager or the Linode CLI `image-upload` plugin. - x-linode-cli-action: upload + All Managed Databases include automatic patch updates, which apply security patches and updates to the underlying operating system of the Managed MySQL Database during configurable maintenance windows. + + * If your database cluster is configured with a single node, you will experience downtime during this maintenance window when any updates occur. It's recommended that you adjust this window to match a time that will be the least disruptive for your application and users. You may also want to consider upgrading to a high availability plan to avoid any downtime due to maintenance. + + * **The database software is not updated automatically.** To upgrade to a new database engine version, consider deploying a new Managed Database with your preferred version. You can then [migrate your databases](/docs/products/databases/managed-databases/guides/migrate-mysql/) from the original Managed Database cluster to the new one. + + * To modify update the maintenance window for a Database, use the **Managed MySQL Database Update** ([PUT /databases/mysql/instances/{instanceId}](/docs/api/databases/#managed-mysql-database-update)) command. security: - personalAccessToken: [] - oauth: - - images:read_write + - databases:read_write requestBody: - description: The uploaded Image details. + description: Information about the Managed MySQL Database you are creating. x-linode-cli-allowed-defaults: - region + - type + required: true content: application/json: schema: - type: object - required: - - label - - region - properties: - region: - type: string - description: > - The region to upload to. Once uploaded, the Image can be used in any region. - example: eu-central - label: - type: string - description: Label for the uploaded Image. - example: my-image-label - description: - type: string - description: Description for the uploaded Image. - example: This is an example image in the docs. + $ref: '#/components/schemas/DatabaseMySQLRequest' responses: '200': - description: Image Upload object including the upload URL and Image object. + description: A new Managed MySQL Database is provisioning. content: application/json: schema: - type: object - properties: - upload_to: - type: string - description: The URL to upload the Image to. - x-linode-cli-display: 1 - image: - $ref: '#/components/schemas/Image' + $ref: '#/components/schemas/DatabaseMySQL' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: @@ -3944,104 +4058,169 @@ paths: curl -H "Content-Type: application/json" \ -H "Authorization: Bearer $TOKEN" \ -X POST -d '{ - "description": "Optional details about the Image", - "label": "Example Image", - "region": "us-east" + "label": "example-db", + "region": "us-east", + "type": "g6-dedicated-2", + "cluster_size": 3, + "engine": "mysql/8.0.26", + "encrypted": false, + "ssl_connection": true, + "replication_type": "semi_synch", + "allow_list": [ + "203.0.113.1", + "192.0.1.0/24" + ] }' \ - https://api.linode.com/v4/images/upload + https://api.linode.com/v4/databases/mysql/instances - lang: CLI - source: | - # Upload the Image file in a single step - linode-cli image-upload \ - --description "Optional details about the Image" \ - --label "Example Image" \ + source: > + linode-cli databases mysql-create \ + --label example-db1 \ --region us-east \ - /path/to/image-file.img.gz - - # Returns the upload_to URL - linode-cli images upload \ - --description "Optional details about the Image" \ - --label "Example Image" \ - --region us-east - /images/{imageId}: - x-linode-cli-command: images + --type g6-dedicated-2 \ + --cluster_size 3 \ + --engine mysql/8.0.26 \ + --encrypted false \ + --ssl_connection false \ + --replication_type semi_synch \ + --allow_list 203.0.113.1 \ + --allow_list 192.0.1.0/24 + /databases/mysql/instances/{instanceId}: + x-linode-cli-command: databases parameters: - - name: imageId - in: path - description: ID of the Image to look up. - required: true - schema: - type: string + - name: instanceId + in: path + description: The ID of the Managed MySQL Database. + required: true + schema: + type: integer get: tags: - - Images - summary: Image View + - Databases + summary: Managed MySQL Database View + operationId: getDatabasesMySQLInstance + servers: + - url: https://api.linode.com/v4 + - url: https://api.linode.com/v4beta + x-linode-cli-action: mysql-view + x-linode-grant: read_only description: | - Get information about a single Image. + Display information for a single, accessible Managed MySQL Database. + security: + - personalAccessToken: [] + - oauth: + - databases:read_only + responses: + '200': + description: Returns information for a single Managed MySQL Database. + content: + application/json: + schema: + $ref: '#/components/schemas/DatabaseMySQL' + default: + $ref: '#/components/responses/ErrorResponse' + x-code-samples: + - lang: Shell + source: > + curl -H "Authorization: Bearer $TOKEN" \ + https://api.linode.com/v4/databases/mysql/instances/123 + - lang: CLI + source: > + linode-cli databases mysql-view 123 + delete: + tags: + - Databases + summary: Managed MySQL Database Delete + operationId: deleteDatabasesMySQLInstance + servers: + - url: https://api.linode.com/v4 + - url: https://api.linode.com/v4beta + x-linode-cli-action: mysql-delete + x-linode-grant: read_write + description: | + Remove a Managed MySQL Database from your Account. - * **Public** Images have IDs that begin with "linode/". These distribution images are generally available to - all users. + Requires `read_write` access to the Database. - * **Private** Images have IDs that begin with "private/". These Images are Account-specific and only - accessible to Users with appropriate [Grants](/docs/api/account/#users-grants-view). + The Database must have an `active`, `failed`, or `degraded` status to perform this command. - * To view a public Image, call this endpoint with or without authentication. To view a private Image, call this endpoint with authentication. - operationId: getImage - x-linode-cli-action: view + Only unrestricted Users can access this command, and have access regardless of the acting token's OAuth scopes. security: - personalAccessToken: [] - oauth: - - images:read_only + - databases:read_write responses: '200': - description: A single Image object. + description: Managed MySQL Database successfully deleted. content: application/json: schema: - $ref: '#/components/schemas/Image' + type: object default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell - source: | - # Public Image - curl https://api.linode.com/v4/images/linode/debian11 - - # Private Image + source: > curl -H "Authorization: Bearer $TOKEN" \ - https://api.linode.com/v4/images/private/12345 + -X DELETE \ + https://api.linode.com/v4/databases/mysql/instances/123 - lang: CLI source: > - linode-cli images view linode/debian9 + linode-cli databases mysql-delete 123 put: - x-linode-grant: read_write tags: - - Images - summary: Image Update - description: > - Updates a private Image that you have permission to - `read_write`. - operationId: updateImage - x-linode-cli-action: update + - Databases + summary: Managed MySQL Database Update + operationId: putDatabasesMySQLInstance + servers: + - url: https://api.linode.com/v4 + - url: https://api.linode.com/v4beta + x-linode-cli-action: mysql-update + x-linode-grant: read_write + description: | + Update a Managed MySQL Database. + + Requires `read_write` access to the Database. + + The Database must have an `active` status to perform this command. + + Updating addresses in the `allow_list` overwrites any existing addresses. + + * IP addresses on this list can access the Managed Database. All other sources are blocked. + * Entering an empty array (`[]`) blocks all connections (both public and private) to the Managed Database. + * **Note**: Updates to the `allow_list` may take a short period of time to complete, making this command inappropriate for rapid successive updates to this property. + + All Managed Databases include automatic patch updates, which apply security patches and updates to the underlying operating system of the Managed MySQL Database. The maintenance window for these updates is configured with the Managed Database's `updates` property. + + * If your database cluster is configured with a single node, you will experience downtime during this maintenance window when any updates occur. It's recommended that you adjust this window to match a time that will be the least disruptive for your application and users. You may also want to consider upgrading to a high availability plan to avoid any downtime due to maintenance. + + * **The database software is not updated automatically.** To upgrade to a new database engine version, consider deploying a new Managed Database with your preferred version. You can then [migrate your databases](/docs/products/databases/managed-databases/guides/migrate-mysql/) from the original Managed Database cluster to the new one. security: - personalAccessToken: [] - oauth: - - images:read_write + - databases:read_write requestBody: - description: > - The fields to update. + description: Updated information for the Managed MySQL Database. required: true content: application/json: schema: - $ref: '#/components/schemas/Image' + type: object + description: Updated information for the Managed MySQL Database. + properties: + label: + $ref: '#/components/schemas/DatabaseMySQLRequest/properties/label' + allow_list: + $ref: '#/components/schemas/DatabaseMySQLRequest/properties/allow_list' + updates: + $ref: '#/components/schemas/DatabaseMySQL/properties/updates' responses: '200': - description: The updated image. + description: Managed Database updated successfully. content: application/json: schema: - $ref: '#/components/schemas/Image' + $ref: '#/components/schemas/DatabaseMySQL' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: @@ -4050,455 +4229,389 @@ paths: curl -H "Content-Type: application/json" \ -H "Authorization: Bearer $TOKEN" \ -X PUT -d '{ - "label": "My gold-master image", - "description": "The detailed description of my Image." + "label": "example-db", + "allow_list": [ + "203.0.113.1", + "192.0.1.0/24" + ], + "updates" = { + "frequency": "monthly", + "duration": 3, + "hour_of_day": 12, + "day_of_week": 4, + "week_of_month": 3, + } }' \ - https://api.linode.com/v4/images/private/12345 + https://api.linode.com/v4/databases/mysql/instances/123 - lang: CLI source: > - linode-cli images update private/12345 \ - --label "My gold-master image" \ - --description "The detailed description \ - of my Image." - delete: - x-linode-grant: read_write + linode-cli databases mysql-update 123 \ + --label example-db \ + --allow_list 203.0.113.1 \ + --allow_list 192.0.1.0/24 \ + --updates.frequency monthly \ + --updates.duration 3 \ + --updates.hour_of_day 12 \ + --updates.day_of_week 4 \ + --updates.week_of_month 3 + /databases/mysql/instances/{instanceId}/backups: + x-linode-cli-command: databases + parameters: + - name: instanceId + in: path + description: The ID of the Managed MySQL Database. + required: true + schema: + type: integer + get: tags: - - Images - summary: Image Delete + - Databases + summary: Managed MySQL Database Backups List + operationId: getDatabasesMySQLInstanceBackups + servers: + - url: https://api.linode.com/v4 + - url: https://api.linode.com/v4beta + x-linode-cli-action: mysql-backups-list + x-linode-grant: read_only + parameters: + - $ref: '#/components/parameters/pageOffset' + - $ref: '#/components/parameters/pageSize' description: | - Deletes a private Image you have permission to `read_write`. + Display all backups for an accessible Managed MySQL Database. + The Database must not be provisioning to perform this command. - **Deleting an Image is a destructive action and cannot be undone.** - operationId: deleteImage - x-linode-cli-action: delete + Database `auto` type backups are created every 24 hours at 0:00 UTC. Each `auto` backup is retained for 7 days. + + Database `snapshot` type backups are created by accessing the **Managed MySQL Database Backup Snapshot Create** ([POST /databases/mysql/instances/{instanceId}/backups](/docs/api/databases/#managed-mysql-database-backup-snapshot-create)) command. security: - personalAccessToken: [] - oauth: - - images:read_write + - databases:read_write responses: '200': - description: Delete successful + description: Returns a paginated list of backups for the Managed MySQL Database. content: application/json: schema: - type: object + allOf: + - $ref: '#/components/schemas/PaginationEnvelope' + - type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/DatabaseBackup' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > curl -H "Authorization: Bearer $TOKEN" \ - -X DELETE \ - https://api.linode.com/v4/images/private/12345 + https://api.linode.com/v4/databases/mysql/instances/123/backups - lang: CLI source: > - linode-cli images delete 12345 - /linode/instances: - x-linode-cli-command: linodes - get: - x-linode-grant: read_only - parameters: - - $ref: '#/components/parameters/pageOffset' - - $ref: '#/components/parameters/pageSize' - summary: Linodes List - description: > - Returns a paginated list of Linodes you have permission to view. + linode-cli databases mysql-backups-list 123 + post: tags: - - Linode Instances - operationId: getLinodeInstances - x-linode-cli-action: list + - Databases + summary: Managed MySQL Database Backup Snapshot Create + operationId: postDatabasesMySQLInstanceBackup + servers: + - url: https://api.linode.com/v4 + - url: https://api.linode.com/v4beta + x-linode-cli-action: mysql-backup-snapshot + x-linode-grant: read_write + description: | + Creates a snapshot backup of a Managed MySQL Database. + + Requires `read_write` access to the Database. + + Backups generated by this command have the type `snapshot`. Snapshot backups may take several minutes to complete, after which they will be accessible to view or restore. + + The Database must have an `active` status to perform this command. security: - personalAccessToken: [] - oauth: - - linodes:read_only + - databases:read_write + requestBody: + description: Information about the snapshot backup to create. + content: + application/json: + schema: + required: + - label + type: object + properties: + label: + type: string + minLength: 3 + maxLength: 64 + description: | + The label for the Database snapshot backup. + + * Must use only letters, numbers, underscores, dashes, and periods. + * Must begin and end with a letter or number. + * Must not include two dashes, underscores, or periods in a row. + example: db-snapshot + target: + type: string + enum: + - primary + - secondary + default: primary + description: | + The Database cluster target. + + If the Database is a high availability cluster, choosing `secondary` creates a snapshot backup of a replica node. + example: primary responses: '200': - description: Returns an array of all Linodes on your Account. + description: Database snapshot backup request successful. content: application/json: schema: type: object - properties: - data: - type: array - items: - $ref: '#/components/schemas/Linode' - page: - $ref: '#/components/schemas/PaginationEnvelope/properties/page' - pages: - $ref: '#/components/schemas/PaginationEnvelope/properties/pages' - results: - $ref: '#/components/schemas/PaginationEnvelope/properties/results' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > curl -H "Authorization: Bearer $TOKEN" \ - https://api.linode.com/v4/linode/instances + -X POST -d '{ + "label": "db-snapshot", + "target": "primary" + }' \ + https://api.linode.com/v4/databases/mysql/instances/123/backups/ - lang: CLI source: > - linode-cli linodes list - post: - x-linode-charge: true - x-linode-grant: add_linodes - summary: Linode Create + linode-cli databases mysql-backup-snapshot 123 \ + --label db-snapshot \ + --target primary + /databases/mysql/instances/{instanceId}/backups/{backupId}: + x-linode-cli-command: databases + parameters: + - name: instanceId + in: path + description: The ID of the Managed MySQL Database. + required: true + schema: + type: integer + - name: backupId + in: path + description: The ID of the Managed MySQL Database backup. + required: true + schema: + type: integer + get: + tags: + - Databases + summary: Managed MySQL Database Backup View + operationId: getDatabasesMySQLInstanceBackup + servers: + - url: https://api.linode.com/v4 + - url: https://api.linode.com/v4beta + x-linode-cli-action: mysql-backup-view + x-linode-grant: read_only description: | - Creates a Linode Instance on your Account. In order for this - request to complete successfully, your User must have the `add_linodes` grant. Creating a - new Linode will incur a charge on your Account. - - Linodes can be created using one of the available Types. See - 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, 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, - see [Sending Email on Linode](/docs/email/running-a-mail-server/#sending-email-on-linode). - - Linodes can be created in a number of ways: - - * 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 SSH Key Add ([POST /profile/sshkeys](/docs/api/profile/#ssh-key-add)) for more information. - - * Using a StackScript. - * 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 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 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. - * The Disks and Config will match that of the Linode that was backed up. - * The `root_pass` will match that of the Linode that was backed up. - - * Attached to a private VLAN. - * Review the `interfaces` property of the [Request Body Schema](/docs/api/linode-instances/#linode-create__request-body-schema) for details. - * For more information, see our guide on [Getting Started with VLANs](/docs/guides/getting-started-with-vlans/). - - * Create an empty Linode. - * The Linode will remain `offline` and must be manually started. - * 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. + Display information for a single backup for an accessible Managed MySQL Database. - **Important**: You must be an unrestricted User in order to add or modify - tags on Linodes. - tags: - - Linode Instances - operationId: createLinodeInstance - x-linode-cli-action: create + The Database must not be provisioning to perform this command. security: - personalAccessToken: [] - oauth: - - linodes:read_write - requestBody: - description: The requested initial state of a new Linode. - required: true - x-linode-cli-allowed-defaults: - - region - - image - - type - content: - application/json: - schema: - required: - - type - - region - type: object - allOf: - - $ref: '#/components/schemas/LinodeRequest' - - properties: - backup_id: - type: integer - example: 1234 - description: | - A Backup ID from another Linode's available backups. Your User must have - `read_write` access to that Linode, the Backup must have a `status` of - `successful`, and the Linode must be deployed to the same `region` as the Backup. - See [GET /linode/instances/{linodeId}/backups](/docs/api/linode-instances/#backups-list) - for a Linode's available backups. - - This field and the `image` field are mutually exclusive. - backups_enabled: - type: boolean - description: | - If this field is set to `true`, the created Linode will automatically be - enrolled in the Linode Backup service. This will incur an additional charge. - The cost for the Backup service is dependent on the Type of Linode deployed. - - This option is always treated as `true` if the account-wide `backups_enabled` - setting is `true`. See [account settings](/docs/api/account/#account-settings-view) - for more information. - - Backup pricing is included in the response from [/linodes/types](/docs/api/linode-types/#types-list) - swap_size: - type: integer - example: 512 - description: > - When deploying from an Image, this field is optional, otherwise it is ignored. - This is used to set the swap disk size for the newly-created Linode. - default: 512 - type: - type: string - description: > - The [Linode Type](/docs/api/linode-types/#types-list) of the Linode - you are creating. - example: g6-standard-2 - region: - type: string - description: > - The [Region](/docs/api/regions/#regions-list) where the Linode - will be located. - example: us-east - label: - $ref: '#/components/schemas/Linode/properties/label' - tags: - $ref: '#/components/schemas/Linode/properties/tags' - group: - $ref: '#/components/schemas/Linode/properties/group' - private_ip: - type: boolean - description: > - If true, the created Linode will have private networking enabled and assigned a private IPv4 address. - example: true - interfaces: - $ref: '#/components/schemas/LinodeConfigInterfaces' + - databases:read_write responses: '200': - description: > - A new Linode is being created. + description: Returns a single backup for the Managed MySQL Database. content: application/json: schema: - $ref: '#/components/schemas/Linode' + $ref: '#/components/schemas/DatabaseBackup' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > - curl -H "Content-Type: application/json" \ - -H "Authorization: Bearer $TOKEN" \ - -X POST -d '{ - "backup_id": 1234, - "backups_enabled": true, - "swap_size": 512, - "image": "linode/debian9", - "root_pass": "aComplexP@ssword", - "stackscript_id": 10079, - "stackscript_data": { - "gh_username": "linode" - }, - "interfaces": [ - { - "purpose": "public", - "label": "", - "ipam_address": "" - }, - { - "purpose": "vlan", - "label": "vlan-1", - "ipam_address": "10.0.0.1/24" - } - ], - "authorized_keys": [ - "ssh-rsa AAAA_valid_public_ssh_key_123456785== user@their-computer" - ], - "authorized_users": [ - "myUser", - "secondaryUser" - ], - "booted": true, - "label": "linode123", - "type": "g6-standard-2", - "region": "us-east", - "group": "Linode-Group" - }' \ - https://api.linode.com/v4/linode/instances + curl -H "Authorization: Bearer $TOKEN" \ + https://api.linode.com/v4/databases/mysql/instances/123/backups/456 - lang: CLI source: > - linode-cli linodes create \ - --label linode123 \ - --root_pass aComplex@Password \ - --booted true \ - --stackscript_id 10079 \ - --stackscript_data '{"gh_username": "linode"}' \ - --region us-east \ - --type g6-standard-2 \ - --authorized_keys "ssh-rsa AAAA_valid_public_ssh_key_123456785== user@their-computer" - --authorized_users "myUser" - --authorized_users "secondaryUser" - /linode/instances/{linodeId}: - parameters: - - name: linodeId - in: path - description: ID of the Linode to look up - required: true - schema: - type: integer - x-linode-cli-command: linodes - get: - x-linode-grant: read_only + linode-cli databases mysql-backup-view 123 456 + delete: tags: - - Linode Instances - summary: Linode View - description: Get a specific Linode by ID. - operationId: getLinodeInstance - x-linode-cli-action: view + - Databases + summary: Managed MySQL Database Backup Delete + operationId: deleteDatabaseMySQLInstanceBackup + servers: + - url: https://api.linode.com/v4 + - url: https://api.linode.com/v4beta + x-linode-cli-action: mysql-backup-delete + x-linode-grant: unrestricted only + description: | + Delete a single backup for an accessible Managed MySQL Database. + + Requires `read_write` access to the Database. + + The Database must not be provisioning to perform this command. security: - personalAccessToken: [] - oauth: - - linodes:read_only + - databases:read_write responses: '200': - description: Returns a single Linode object. + description: Request to delete Database backup successful. content: application/json: schema: - $ref: '#/components/schemas/Linode' - links: - boot: - $ref: '#/components/links/bootLinode' - reboot: - $ref: '#/components/links/rebootLinode' - shutdown: - $ref: '#/components/links/shutdownLinode' - update: - $ref: '#/components/links/updateLinode' - delete: - $ref: '#/components/links/deleteLinode' - rebuild: - $ref: '#/components/links/rebuildLinode' - mutate: - $ref: '#/components/links/mutateLinode' - resize: - $ref: '#/components/links/resizeLinode' - rescue: - $ref: '#/components/links/rescueLinode' - clone: - $ref: '#/components/links/cloneLinode' + type: object default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > curl -H "Authorization: Bearer $TOKEN" \ - https://api.linode.com/v4/linode/instances/123 + -X DELETE \ + https://api.linode.com/v4/databases/mysql/instances/123/backups/456 - lang: CLI source: > - linode-cli linodes view 123 - put: - x-linode-grant: read_write + linode-cli databases mysql-backup-delete 123 456 + /databases/mysql/instances/{instanceId}/backups/{backupId}/restore: + x-linode-cli-command: databases + parameters: + - name: instanceId + in: path + description: The ID of the Managed MySQL Database. + required: true + schema: + type: integer + - name: backupId + in: path + description: The ID of the Managed MySQL Database backup. + required: true + schema: + type: integer + post: tags: - - Linode Instances - summary: Linode Update - description: > - Updates a Linode that you have permission to `read_write`. + - Databases + summary: Managed MySQL Database Backup Restore + operationId: postDatabasesMySQLInstanceBackupRestore + servers: + - url: https://api.linode.com/v4 + - url: https://api.linode.com/v4beta + x-linode-cli-action: mysql-backup-restore + x-linode-grant: read_write + description: | + Restore a backup to a Managed MySQL Database on your Account. + Requires `read_write` access to the Database. - **Important**: You must be an unrestricted User in order to add or modify - tags on Linodes. - operationId: updateLinodeInstance - x-linode-cli-action: update + The Database must have an `active` status to perform this command. + + **Note**: Restoring from a backup will erase all existing data on the database instance and replace it with backup data. + + **Note**: Currently, restoring a backup after resetting Managed Database credentials results in a failed cluster. Please contact Customer Support if this occurs. security: - personalAccessToken: [] - oauth: - - linodes:read_write - requestBody: - description: > - Any field that is not marked as `readOnly` may be updated. Fields that are marked - `readOnly` will be ignored. If any updated field fails to pass validation, the Linode will - not be updated. + - databases:read_write + responses: + '200': + description: Request to restore backup successful. + content: + application/json: + schema: + type: object + default: + $ref: '#/components/responses/ErrorResponse' + x-code-samples: + - lang: Shell + source: > + curl -H "Authorization: Bearer $TOKEN" \ + -X POST https://api.linode.com/v4/databases/mysql/instances/123/backups/456/restore + - lang: CLI + source: > + linode-cli databases mysql-backup-restore 123 456 + /databases/mysql/instances/{instanceId}/credentials: + x-linode-cli-command: databases + parameters: + - name: instanceId + in: path + description: The ID of the Managed MySQL Database. required: true - content: - application/json: - schema: - $ref: '#/components/schemas/Linode' + schema: + type: integer + get: + tags: + - Databases + summary: Managed MySQL Database Credentials View + operationId: getDatabasesMySQLInstanceCredentials + servers: + - url: https://api.linode.com/v4 + - url: https://api.linode.com/v4beta + x-linode-cli-action: mysql-creds-view + x-linode-grant: read_only + description: | + Display the root username and password for an accessible Managed MySQL Database. + + The Database must have an `active` status to perform this command. + security: + - personalAccessToken: [] + - oauth: + - databases:read_only responses: '200': - description: The updated Linode. + description: Managed Database root username and password. content: application/json: schema: - $ref: '#/components/schemas/Linode' + $ref: '#/components/schemas/DatabaseCredentials' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > - curl -H "Content-Type: application/json" \ - -H "Authorization: Bearer $TOKEN" \ - -X PUT -d '{ - "label": "linode123", - "group": "Linode-Group", - "alerts": { - "cpu": 180, - "network_in": 10, - "network_out": 10, - "transfer_quota": 80, - "io": 10000 - }, - "backups": { - "schedule": { - "day": "Saturday", - "window": "W22" - } - } - }' \ - https://api.linode.com/v4/linode/instances/123 + curl -H "Authorization: Bearer $TOKEN" \ + https://api.linode.com/v4/databases/mysql/instances/123/credentials/ - lang: CLI source: > - linode-cli linodes update 7833080 \ - --label linode123 \ - --backups.schedule.day "Saturday" \ - --backups.schedule.window "W22" \ - --alerts.cpu 180 \ - --alerts.network_in 10 \ - --alerts.network_out 10 \ - --alerts.transfer_quota 80 \ - --alerts.io 10000 - delete: - x-linode-grant: read_write + linode-cli databases mysql-creds-view 123 + /databases/mysql/instances/{instanceId}/credentials/reset: + x-linode-cli-command: databases + parameters: + - name: instanceId + in: path + description: The ID of the Managed MySQL Database. + required: true + schema: + type: integer + post: tags: - - Linode Instances - summary: Linode Delete + - Databases + summary: Managed MySQL Database Credentials Reset + operationId: postDatabasesMySQLInstanceCredentialsReset + servers: + - url: https://api.linode.com/v4 + - url: https://api.linode.com/v4beta + x-linode-cli-action: mysql-creds-reset + x-linode-grant: read_write description: | - Deletes a Linode you have permission to `read_write`. + Reset the root password for a Managed MySQL Database. - **Deleting a Linode is a destructive action and cannot be undone.** + Requires `read_write` access to the Database. - Additionally, deleting a Linode: + A new root password is randomly generated and accessible with the **Managed MySQL Database Credentials View** ([GET /databases/mysql/instances/{instanceId}/credentials](/docs/api/databases/#managed-mysql-database-credentials-view)) command. - * Gives up any IP addresses the Linode was assigned. - * Deletes all Disks, Backups, Configs, etc. - * Stops billing for the Linode and its associated services. You will be billed for time used - within the billing period the Linode was active. - operationId: deleteLinodeInstance - x-linode-cli-action: delete + Only unrestricted Users can access this command, and have access regardless of the acting token's OAuth scopes. + + **Note**: Note that it may take several seconds for credentials to reset. security: - personalAccessToken: [] - oauth: - - linodes:read_write + - databases:read_write responses: '200': - description: Delete successful + description: Managed Database instance credentials successfully reset. content: application/json: schema: @@ -4509,313 +4622,376 @@ paths: - lang: Shell source: > curl -H "Authorization: Bearer $TOKEN" \ - -X DELETE \ - https://api.linode.com/v4/linode/instances/123 + -X POST https://api.linode.com/v4/databases/mysql/instances/123/credentials/reset - lang: CLI source: > - linode-cli linodes delete 123 - /linode/instances/{linodeId}/backups: + linode-cli databases mysql-creds-reset 123 + /databases/mysql/instances/{instanceId}/ssl: + x-linode-cli-command: databases parameters: - - name: linodeId - in: path - description: The ID of the Linode the backups belong to. - required: true - schema: - type: integer - x-linode-cli-command: linodes + - name: instanceId + in: path + description: The ID of the Managed MySQL Database. + required: true + schema: + type: integer get: - x-linode-grant: read_only - summary: Backups List - description: > - Returns information about this Linode's available backups. tags: - - Linode Instances - operationId: getBackups - x-linode-cli-action: backups-list + - Databases + summary: Managed MySQL Database SSL Certificate View + operationId: getDatabasesMySQLInstanceSSL + servers: + - url: https://api.linode.com/v4 + - url: https://api.linode.com/v4beta + x-linode-cli-action: mysql-ssl-cert + x-linode-grant: read_only + description: | + Display the SSL CA certificate for an accessible Managed MySQL Database. + + The Database must have an `active` status to perform this command. security: - personalAccessToken: [] - oauth: - - linodes:read_only + - databases:read_only responses: '200': - description: A collection of the specified Linode's available backups. + description: Returns the SSL CA certificate of a single Managed MySQL Database. content: application/json: - x-linode-cli-rows: - - automatic - - snapshot.current - - snapshot.in_progress - x-linode-cli-use-schema: - $ref: '#/components/schemas/Backup' schema: - type: object - properties: - automatic: - type: array - items: - allOf: - - $ref: '#/components/schemas/Backup' - - properties: - type: - type: string - example: automatic - snapshot: - type: object - properties: - in_progress: - $ref: '#/components/schemas/Backup' - current: - $ref: '#/components/schemas/Backup' + $ref: '#/components/schemas/DatabaseSSL' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > curl -H "Authorization: Bearer $TOKEN" \ - https://api.linode.com/v4/linode/instances/123/backups + https://api.linode.com/v4/databases/mysql/instances/123/ssl - lang: CLI source: > - linode-cli linodes backups-list 123 + linode-cli databases mysql-ssl-cert 123 + /databases/mysql/instances/{instanceId}/patch: + x-linode-cli-command: databases + parameters: + - name: instanceId + in: path + description: The ID of the Managed MySQL Database. + required: true + schema: + type: integer post: + tags: + - Databases + summary: Managed MySQL Database Patch + operationId: postDatabasesMySQLInstancePatch + servers: + - url: https://api.linode.com/v4 + - url: https://api.linode.com/v4beta + x-linode-cli-action: mysql-patch x-linode-grant: read_write - summary: Snapshot Create description: | - Creates a snapshot Backup of a Linode. + Apply security patches and updates to the underlying operating system of the Managed MySQL Database. This function runs during regular maintenance windows, which are configurable with the **Managed MySQL Database Update** ([PUT /databases/mysql/instances/{instanceId}](/docs/api/databases/#managed-mysql-database-update)) command. - **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 - x-linode-cli-action: snapshot + Requires `read_write` access to the Database. + + The Database must have an `active` status to perform this command. + + **Note** + + * If your database cluster is configured with a single node, you will experience downtime during this maintenance. Consider upgrading to a high availability plan to avoid any downtime due to maintenance. + + * **The database software is not updated automatically.** To upgrade to a new database engine version, consider deploying a new Managed Database with your preferred version. You can then [migrate your databases](/docs/products/databases/managed-databases/guides/migrate-mysql/) from the original Managed Database cluster to the new one. security: - personalAccessToken: [] - oauth: - - linodes:read_write - requestBody: - required: true - content: - application/json: - schema: - required: - - label - type: object - properties: - label: - type: string - minLength: 1 - maxLength: 255 - description: The label for the new snapshot. - example: SnapshotLabel + - databases:read_write responses: '200': - description: Snapshot request successful. + description: Managed Database instance patch request successful. content: application/json: schema: - $ref: '#/components/schemas/Backup' + type: object default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > - curl -H "Content-Type: application/json" \ - -H "Authorization: Bearer $TOKEN" \ - -X POST -d '{ - "label": "MyNewSnapshot" - }' \ - https://api.linode.com/v4/linode/instances/123/backups + curl -H "Authorization: Bearer $TOKEN" \ + -X POST https://api.linode.com/v4/databases/mysql/instances/123/patch - lang: CLI source: > - linode-cli linodes snapshot 123 - /linode/instances/{linodeId}/backups/cancel: - parameters: - - name: linodeId - in: path - description: The ID of the Linode to cancel backup service for. - required: true - schema: - type: integer - x-linode-cli-command: linodes - post: - x-linode-grant: read_write - summary: Backups Cancel - description: > - Cancels the Backup service on the given Linode. Deletes all of this Linode's - existing backups forever. + linode-cli databases mysql-patch 123 + /databases/postgresql/instances: + x-linode-cli-command: databases + get: tags: - - Linode Instances - operationId: cancelBackups - x-linode-cli-action: backups-cancel + - Databases + summary: Managed PostgreSQL Databases List + operationId: getDatabasesPostgreSQLInstances + servers: + - url: https://api.linode.com/v4 + - url: https://api.linode.com/v4beta + x-linode-cli-action: postgresql-list + x-linode-grant: read_only + parameters: + - $ref: '#/components/parameters/pageOffset' + - $ref: '#/components/parameters/pageSize' + description: | + Display all accessible Managed PostgreSQL Databases. security: - personalAccessToken: [] - oauth: - - linodes:read_write + - databases:read_only responses: '200': - description: Backup service was cancelled for the specified Linode. + description: Returns a paginated list of all accessible Managed PostgreSQL Databases on your Account. content: application/json: schema: - type: object + allOf: + - $ref: '#/components/schemas/PaginationEnvelope' + - type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/DatabasePostgreSQL' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > - curl -H "Content-Type: application/json" \ - -H "Authorization: Bearer $TOKEN" \ - -X POST \ - https://api.linode.com/v4/linode/instances/123/backups/cancel + curl -H "Authorization: Bearer $TOKEN" \ + https://api.linode.com/v4/databases/postgresql/instances/ - lang: CLI source: > - linode-cli linodes backups-cancel 123 - /linode/instances/{linodeId}/backups/enable: - parameters: - - name: linodeId - in: path - description: The ID of the Linode to enable backup service for. - required: true - schema: - type: integer - x-linode-cli-command: linodes + linode-cli databases postgresql-list post: - x-linode-grant: read_write - summary: Backups Enable - description: > - Enables backups for the specified Linode. tags: - - Linode Instances - operationId: enableBackups - x-linode-cli-action: backups-enable + - Databases + summary: Managed PostgreSQL Database Create + operationId: postDatabasesPostgreSQLInstances + servers: + - url: https://api.linode.com/v4 + - url: https://api.linode.com/v4beta + x-linode-cli-action: postgresql-create + x-linode-grant: add_databases + description: | + Provision a Managed PostgreSQL Database. + + Restricted Users must have the `add_databases` grant to use this command. + + New instances can take approximately 15 to 30 minutes to provision. + + The `allow_list` is used to control access to the Managed Database. + + * IP addresses on this list can access the Managed Database. All other sources are blocked. + * Entering an empty array (`[]`) blocks all connections (both public and private) to the Managed Database. + + All Managed Databases include automatic, daily backups. Up to seven backups are automatically stored for each Managed Database, providing restore points for each day of the past week. + + All Managed Databases include automatic patch updates, which apply security patches and updates to the underlying operating system of the Managed PostgreSQL Database during configurable maintenance windows. + + * If your database cluster is configured with a single node, you will experience downtime during this maintenance window when any updates occur. It's recommended that you adjust this window to match a time that will be the least disruptive for your application and users. You may also want to consider upgrading to a high availability plan to avoid any downtime due to maintenance. + + * **The database software is not updated automatically.** To upgrade to a new database engine version, consider deploying a new Managed Database with your preferred version. You can then migrate your databases from the original Managed Database cluster to the new one. + + * To modify update the maintenance window for a Database, use the **Managed PostgreSQL Database Update** ([PUT /databases/postgresql/instances/{instanceId}](/docs/api/databases/#managed-postgresql-database-update)) command. security: - personalAccessToken: [] - oauth: - - linodes:read_write + - databases:read_write + requestBody: + description: Information about the Managed PostgreSQL Database you are creating. + x-linode-cli-allowed-defaults: + - region + - type + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/DatabasePostgreSQLRequest' responses: '200': - description: Backup service was enabled. + description: A new Managed PostgreSQL Database is provisioning. content: application/json: schema: - type: object + $ref: '#/components/schemas/DatabasePostgreSQL' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > curl -H "Content-Type: application/json" \ - -H "Authorization: Bearer $TOKEN" \ - -X POST \ - https://api.linode.com/v4/linode/instances/123/backups/enable + -H "Authorization: Bearer $TOKEN" \ + -X POST -d '{ + "label": "example-db", + "region": "us-east", + "type": "g6-dedicated-2", + "cluster_size": 3, + "engine": "postgresql/13.2", + "encrypted": false, + "ssl_connection": false, + "replication_type": "asynch", + "replication_commit_type": "local", + "allow_list": [ + "203.0.113.1", + "192.0.1.0/24" + ] + }' \ + https://api.linode.com/v4/databases/postgresql/instances - lang: CLI source: > - linode-cli linodes backups-enable 123 - /linode/instances/{linodeId}/backups/{backupId}: + linode-cli databases postgresql-create \ + --label example-db \ + --region us-east \ + --type g6-dedicated-2 \ + --cluster_size 3 \ + --engine postgresql/13.2 \ + --encrypted false \ + --ssl_connection false \ + --replication_type asynch \ + --replication_commit_type local \ + --allow_list 203.0.113.1 \ + --allow_list 192.0.1.0/24 + /databases/postgresql/instances/{instanceId}: + x-linode-cli-command: databases parameters: - - name: linodeId - in: path - description: The ID of the Linode the Backup belongs to. - required: true - schema: - type: integer - - name: backupId - in: path - description: The ID of the Backup to look up. - required: true - schema: - type: integer - x-linode-cli-command: linodes + - name: instanceId + in: path + description: The ID of the Managed PostgreSQL Database. + required: true + schema: + type: integer get: - x-linode-grant: read_only - summary: Backup View - description: > - Returns information about a Backup. tags: - - Linode Instances - operationId: getBackup - x-linode-cli-action: backup-view + - Databases + summary: Managed PostgreSQL Database View + operationId: getDatabasesPostgreSQLInstance + servers: + - url: https://api.linode.com/v4 + - url: https://api.linode.com/v4beta + x-linode-cli-action: postgresql-view + x-linode-grant: read_only + description: | + Display information for a single, accessible Managed PostgreSQL Database. security: - personalAccessToken: [] - oauth: - - linodes:read_only + - databases:read_only responses: '200': - description: A single Backup. + description: Returns information for a single Managed PostgreSQL Database. content: application/json: schema: - $ref: '#/components/schemas/Backup' + $ref: '#/components/schemas/DatabasePostgreSQL' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > curl -H "Authorization: Bearer $TOKEN" \ - https://api.linode.com/v4/linode/instances/123/backups/123456 + https://api.linode.com/v4/databases/postgresql/instances/123 - lang: CLI source: > - linode-cli linodes backup-view 123 123456 - /linode/instances/{linodeId}/backups/{backupId}/restore: - parameters: - - name: linodeId - in: path - description: The ID of the Linode that the Backup belongs to. - required: true - schema: - type: integer - - name: backupId - in: path - description: The ID of the Backup to restore. - required: true - schema: - type: integer - x-linode-cli-command: linodes - post: + linode-cli databases postgresql-view 123 + delete: + tags: + - Databases + summary: Managed PostgreSQL Database Delete + operationId: deleteDatabasesPostgreSQLInstance + servers: + - url: https://api.linode.com/v4 + - url: https://api.linode.com/v4beta + x-linode-cli-action: postgresql-delete x-linode-grant: read_write - summary: Backup Restore - description: > - Restores a Linode's Backup to the specified Linode. + description: | + Remove a Managed PostgreSQL Database from your Account. + + Requires `read_write` access to the Database. + + The Database must have an `active`, `failed`, or `degraded` status to perform this command. + + Only unrestricted Users can access this command, and have access regardless of the acting token's OAuth scopes. + security: + - personalAccessToken: [] + - oauth: + - databases:read_write + responses: + '200': + description: Managed PostgreSQL Database successfully deleted. + content: + application/json: + schema: + type: object + default: + $ref: '#/components/responses/ErrorResponse' + x-code-samples: + - lang: Shell + source: > + curl -H "Authorization: Bearer $TOKEN" \ + -X DELETE \ + https://api.linode.com/v4/databases/postgresql/instances/123 + - lang: CLI + source: > + linode-cli databases postgresql-delete 123 + put: tags: - - Linode Instances - operationId: restoreBackup - x-linode-cli-action: backup-restore + - Databases + summary: Managed PostgreSQL Database Update + operationId: putDatabasesPostgreSQLInstance + servers: + - url: https://api.linode.com/v4 + - url: https://api.linode.com/v4beta + x-linode-cli-action: postgresql-update + x-linode-grant: read_write + description: | + Update a Managed PostgreSQL Database. + + Requires `read_write` access to the Database. + + The Database must have an `active` status to perform this command. + + Updating addresses in the `allow_list` overwrites any existing addresses. + + * IP addresses on this list can access the Managed Database. All other sources are blocked. + * Entering an empty array (`[]`) blocks all connections (both public and private) to the Managed Database. + * **Note**: Updates to the `allow_list` may take a short period of time to complete, making this command inappropriate for rapid successive updates to this property. + + All Managed Databases include automatic patch updates, which apply security patches and updates to the underlying operating system of the Managed PostgreSQL Database. The maintenance window for these updates is configured with the Managed Database's `updates` property. + + * If your database cluster is configured with a single node, you will experience downtime during this maintenance window when any updates occur. It's recommended that you adjust this window to match a time that will be the least disruptive for your application and users. You may also want to consider upgrading to a high availability plan to avoid any downtime due to maintenance. + + * **The database software is not updated automatically.** To upgrade to a new database engine version, consider deploying a new Managed Database with your preferred version. You can then migrate your databases from the original Managed Database cluster to the new one. security: - personalAccessToken: [] - oauth: - - linodes:read_write + - databases:read_write requestBody: - description: Parameters to provide when restoring the Backup. + description: Updated information for the Managed PostgreSQL Database. required: true content: application/json: schema: type: object - required: - - linode_id + description: Updated information for the Managed PostgreSQL Database. properties: - linode_id: - type: integer - description: > - The ID of the Linode to restore a Backup to. - example: 234 - overwrite: - type: boolean - description: | - If True, deletes all Disks and Configs on the target Linode - before restoring. - - If False, and the Disk image size is larger than the available - space on the Linode, an error message indicating insufficient - space is returned. - example: true + label: + $ref: '#/components/schemas/DatabasePostgreSQLRequest/properties/label' + allow_list: + $ref: '#/components/schemas/DatabasePostgreSQLRequest/properties/allow_list' + updates: + $ref: '#/components/schemas/DatabasePostgreSQL/properties/updates' responses: '200': - description: Restore from Backup was initiated. + description: Managed Database updated successfully. content: application/json: schema: - type: object + $ref: '#/components/schemas/DatabasePostgreSQL' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: @@ -4823,543 +4999,390 @@ paths: source: > curl -H "Content-Type: application/json" \ -H "Authorization: Bearer $TOKEN" \ - -X POST -d '{ - "linode_id": 234, - "overwrite": true + -X PUT -d '{ + "label": "example-db", + "allow_list": [ + "203.0.113.1", + "192.0.1.0/24" + ], + "updates" = { + "frequency": "monthly", + "duration": 3, + "hour_of_day": 12, + "day_of_week": 4, + "week_of_month": 3, + } }' \ - https://api.linode.com/v4/linode/instances/123/backups/123456/restore + https://api.linode.com/v4/databases/postgresql/instances/123 - lang: CLI source: > - linode-cli linodes backup-restore 123 123456 \ - --linode_id 234 \ - --overwrite true - /linode/instances/{linodeId}/boot: + linode-cli databases postgresql-update 123 \ + --label example-db \ + --allow_list 203.0.113.1 \ + --allow_list 192.0.1.0/24 \ + --updates.frequency monthly \ + --updates.duration 3 \ + --updates.hour_of_day 12 \ + --updates.day_of_week 4 \ + --updates.week_of_month 3 + /databases/postgresql/instances/{instanceId}/backups: + x-linode-cli-command: databases parameters: - - name: linodeId - in: path - description: The ID of the Linode to boot. - required: true - schema: - type: integer - x-linode-cli-command: linodes - post: - x-linode-grant: read_write - summary: Linode Boot + - name: instanceId + in: path + description: The ID of the Managed PostgreSQL Database. + required: true + schema: + type: integer + get: + tags: + - Databases + summary: Managed PostgreSQL Database Backups List + operationId: getDatabasesPostgreSQLInstanceBackups + servers: + - url: https://api.linode.com/v4 + - url: https://api.linode.com/v4beta + x-linode-cli-action: postgresql-backups-list + x-linode-grant: read_only + parameters: + - $ref: '#/components/parameters/pageOffset' + - $ref: '#/components/parameters/pageSize' description: | - Boots a Linode you have permission to modify. If no parameters are given, a Config profile - will be chosen for this boot based on the following criteria: + Display all backups for an accessible Managed PostgreSQL Database. - * If there is only one Config profile for this Linode, it will be used. - * If there is more than one Config profile, the last booted config will be used. - * If there is more than one Config profile and none were the last to be booted (because the - Linode was never booted or the last booted config was deleted) an error will be returned. - tags: - - Linode Instances - operationId: bootLinodeInstance - x-linode-cli-action: boot + The Database must not be provisioning to perform this command. + + Database `auto` type backups are created every 24 hours at 0:00 UTC. Each `auto` backup is retained for 7 days. + + Database `snapshot` type backups are created by accessing the **Managed PostgreSQL Database Backup Snapshot Create** ([POST /databases/postgresql/instances/{instanceId}/backups](/docs/api/databases/#managed-postgresql-database-backup-snapshot-create)) command. security: - personalAccessToken: [] - oauth: - - linodes:read_write - requestBody: - description: Optional configuration to boot into (see above). - required: false - content: - application/json: - schema: - type: object - properties: - config_id: - type: integer - description: > - The Linode Config ID to boot into. - example: null + - databases:read_write responses: '200': - description: Boot started. + description: Returns a paginated list of backups for the Managed PostgreSQL Database. content: application/json: schema: - type: object + allOf: + - $ref: '#/components/schemas/PaginationEnvelope' + - type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/DatabaseBackup' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > - curl -H "Content-Type: application/json" \ - -H "Authorization: Bearer $TOKEN" \ - -X POST \ - https://api.linode.com/v4/linode/instances/123/boot + curl -H "Authorization: Bearer $TOKEN" \ + https://api.linode.com/v4/databases/postgresql/instances/123/backups - lang: CLI source: > - linode-cli linodes boot 123 - /linode/instances/{linodeId}/clone: - parameters: - - name: linodeId - in: path - description: ID of the Linode to clone. - required: true - schema: - type: integer - x-linode-cli-command: linodes + linode-cli databases postgresql-backups-list 123 post: - x-linode-charge: true - x-linode-grant: add_linodes - summary: Linode Clone + tags: + - Databases + summary: Managed PostgreSQL Database Backup Snapshot Create + operationId: postDatabasesPostgreSQLInstanceBackup + servers: + - url: https://api.linode.com/v4 + - url: https://api.linode.com/v4beta + x-linode-cli-action: postgresql-backup-snapshot + x-linode-grant: read_write description: | - You can clone your Linode's existing Disks or Configuration profiles to - another Linode on your Account. In order for this request to complete - successfully, your User must have the `add_linodes` grant. Cloning to a - new Linode will incur a charge on your Account. + Creates a snapshot backup of a Managed PostgreSQL Database. - If cloning to an existing Linode, any actions currently running or - queued must be completed first before you can clone to it. + Requires `read_write` access to the Database. - Up to five clone operations from any given source Linode can be run concurrently. - If more concurrent clones are attempted, an HTTP 400 error will be - returned by this endpoint. + Backups generated by this command have the type `snapshot`. Snapshot backups may take several minutes to complete, after which they will be accessible to view or restore. - Any [tags](/docs/api/tags/#tags-list) existing on the source Linode will be cloned to the target Linode. - tags: - - Linode Instances - operationId: cloneLinodeInstance - x-linode-cli-action: clone + The Database must have an `active` status to perform this command. security: - personalAccessToken: [] - oauth: - - linodes:read_write + - databases:read_write requestBody: - description: The requested state your Linode will be cloned into. - required: true - x-linode-cli-allowed-defaults: - - region - - type + description: Information about the snapshot backup to create. content: application/json: schema: + required: + - label type: object properties: - region: - type: string - description: > - This is the Region where the Linode will be deployed. - - To view all available Regions you can deploy to see - [/regions](/docs/api/regions/#regions-list). - - * Region can only be provided and is required when cloning to a new Linode. - example: us-east - type: - type: string - description: | - A Linode's Type determines what resources are available to - it, including disk space, memory, and virtual cpus. The - amounts available to a specific Linode are returned as - `specs` on the Linode object. - - To view all available Linode Types you can deploy with - see [/linode/types](/docs/api/linode-types/#types-list). - - * 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 the target for the clone, - the ID of that Linode. The existing Linode must have enough - resources to accept the clone. - example: 124 label: type: string minLength: 3 maxLength: 64 - description: > - The label to assign this Linode when cloning to a new Linode. + description: | + The label for the Database snapshot backup. - * Can only be provided when cloning to a new Linode. - * Defaults to "linode". - example: cloned-linode - group: - deprecated: true + * Must use only letters, numbers, underscores, dashes, and periods. + * Must begin and end with a letter or number. + * Must not include two dashes, underscores, or periods in a row. + example: db-snapshot + target: type: string - description: > - A label used to group Linodes for display. Linodes are not - required to have a group. - example: Linode-Group - backups_enabled: - type: boolean + enum: + - primary + - secondary + default: primary description: | - If this field is set to `true`, the created Linode will - automatically be enrolled in the Linode Backup service. This - will incur an additional charge. Pricing is included in the - response from - [/linodes/types](/docs/api/linode-types/#types-list). - - * Can only be included when cloning to a new Linode. - example: true - disks: - type: array - description: > - An array of disk IDs. - - * If the `disks` parameter **is not provided**, then **no extra disks - will be cloned** from the source Linode. All disks associated - with the configuration profiles specified by the `configs` - parameter will still be cloned. + The Database cluster target. - * **If an empty array is provided** for the `disks` parameter, then **no extra disks - will be cloned** from the source Linode. All disks associated - with the configuration profiles specified by the `configs` - parameter will still be cloned. - - * **If a non-empty array is provided** for the `disks` parameter, then **the disks - specified in the array will be cloned** from the source Linode, in addition to - any disks associated with the configuration profiles specified by the `configs` - parameter. - items: - type: integer - example: 25674 - configs: - type: array - description: > - An array of configuration profile IDs. - - * If the `configs` parameter **is not provided**, then **all configuration profiles and their associated disks - will be cloned** from the source Linode. Any disks specified by the `disks` - parameter will also be cloned. - - * **If an empty array is provided** for the `configs` parameter, then **no - configuration profiles (nor their associated disks) will be cloned** from - the source Linode. Any disks specified by the `disks` - parameter will still be cloned. - - * **If a non-empty array is provided** for the `configs` parameter, then **the configuration profiles - specified in the array (and their associated disks) will be cloned** from the source Linode. - Any disks specified by the `disks` parameter will also be cloned. - items: - type: integer - example: 23456 + If the Database is a high availability cluster, choosing `secondary` creates a snapshot backup of a replica node. + example: primary responses: '200': - description: Clone started. + description: Database snapshot backup request successful. content: application/json: schema: - $ref: '#/components/schemas/Linode' + type: object default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > - curl -H "Content-Type: application/json" \ - -H "Authorization: Bearer $TOKEN" \ + curl -H "Authorization: Bearer $TOKEN" \ -X POST -d '{ - "region": "us-east", - "type": "g6-standard-2", - "linode_id": 124, - "label": "cloned-linode", - "group": "Linode-Group", - "backups_enabled": true, - "disks": [25674], - "configs": [23456] + "label": "db-snapshot", + "target": "primary" }' \ - https://api.linode.com/v4/linode/instances/123/clone + https://api.linode.com/v4/databases/postgresql/instances/123/backups/ - lang: CLI source: > - linode-cli linodes clone 123 \ - --linode_id 124 \ - --region us-east \ - --type g6-standard-2 \ - --label cloned-linode \ - --backups_enabled true \ - --disks 25674 \ - --configs 23456 - /linode/instances/{linodeId}/configs: + linode-cli databases postgresql-backup-snapshot 123 \ + --label db-snapshot \ + --target primary + /databases/postgresql/instances/{instanceId}/backups/{backupId}: + x-linode-cli-command: databases parameters: - - name: linodeId - in: path - description: ID of the Linode to look up Configuration profiles for. - required: true - schema: - type: integer - x-linode-cli-command: linodes + - name: instanceId + in: path + description: The ID of the Managed PostgreSQL Database. + required: true + schema: + type: integer + - name: backupId + in: path + description: The ID of the Managed PostgreSQL Database backup. + required: true + schema: + type: integer get: - parameters: - - $ref: '#/components/parameters/pageOffset' - - $ref: '#/components/parameters/pageSize' tags: - - Linode Instances - summary: Configuration Profiles List + - Databases + summary: Managed PostgreSQL Database Backup View + operationId: getDatabasesPostgreSQLInstanceBackup + servers: + - url: https://api.linode.com/v4 + - url: https://api.linode.com/v4beta + x-linode-cli-action: postgresql-backup-view + x-linode-grant: read_only description: | - Lists Configuration profiles associated with a Linode. - operationId: getLinodeConfigs - x-linode-cli-action: configs-list + Display information for a single backup for an accessible Managed PostgreSQL Database. + + The Database must not be provisioning to perform this command. security: - personalAccessToken: [] - oauth: - - linodes:read_only + - databases:read_write responses: '200': - description: > - Returns an array of Configuration profiles associated with this Linode. + description: Returns a single backup for the Managed PostgreSQL Database. content: application/json: schema: - type: object - properties: - data: - type: array - items: - $ref: '#/components/schemas/LinodeConfig' - page: - $ref: '#/components/schemas/PaginationEnvelope/properties/page' - pages: - $ref: '#/components/schemas/PaginationEnvelope/properties/pages' - results: - $ref: '#/components/schemas/PaginationEnvelope/properties/results' + $ref: '#/components/schemas/DatabaseBackup' + default: + $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > curl -H "Authorization: Bearer $TOKEN" \ - https://api.linode.com/v4/linode/instances/123/configs + https://api.linode.com/v4/databases/postgresql/instances/123/backups/456 - lang: CLI source: > - linode-cli linodes configs-list 123 - post: + linode-cli databases postgresql-backup-view 123 456 + delete: tags: - - Linode Instances - summary: Configuration Profile Create - description: > - Adds a new Configuration profile to a Linode. - operationId: addLinodeConfig - x-linode-cli-action: config-create + - Databases + summary: Managed PostgreSQL Database Backup Delete + operationId: deleteDatabasePostgreSQLInstanceBackup + servers: + - url: https://api.linode.com/v4 + - url: https://api.linode.com/v4beta + x-linode-cli-action: postgresql-backup-delete + x-linode-grant: unrestricted only + description: | + Delete a single backup for an accessible Managed PostgreSQL Database. + + Requires `read_write` access to the Database. + + The Database must not be provisioning to perform this command. security: - personalAccessToken: [] - oauth: - - linodes:read_write - requestBody: - description: > - The parameters to set when creating the Configuration profile. - - This determines which kernel, devices, how much memory, etc. a Linode boots with. - required: true - content: - application/json: - schema: - required: - - label - - devices - allOf: - - $ref: '#/components/schemas/LinodeConfig' + - databases:read_write responses: '200': - description: | - A Configuration profile was created. + description: Request to delete Database backup successful. content: application/json: schema: - $ref: '#/components/schemas/LinodeConfig' + type: object default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > - curl -H "Content-Type: application/json" \ - -H "Authorization: Bearer $TOKEN" \ - -X POST -d '{ - "kernel": "linode/latest-64bit", - "comments": "This is my main Config", - "memory_limit": 2048, - "run_level": "default", - "virt_mode": "paravirt", - "interfaces": [ - { - "purpose": "public", - "label": "", - "ipam_address": "" - }, - { - "purpose": "vlan", - "label": "vlan-1", - "ipam_address": "10.0.0.1/24" - } - ], - "helpers": { - "updatedb_disabled": true, - "distro": true, - "modules_dep": true, - "network": true, - "devtmpfs_automount": false - }, - "label": "My Config", - "devices": { - "sda": { - "disk_id": 123456, - "volume_id": null - }, - "sdb": { - "disk_id": 123457, - "volume_id": null - } - } - }' \ - https://api.linode.com/v4/linode/instances/123/configs + curl -H "Authorization: Bearer $TOKEN" \ + -X DELETE \ + https://api.linode.com/v4/databases/postgresql/instances/123/backups/456 - lang: CLI source: > - linode-cli linodes config-create 7590910 \ - --label "My Config" \ - --devices.sda.disk_id 123456 \ - --devices.sdb.disk_id 123457 - /linode/instances/{linodeId}/configs/{configId}: + linode-cli databases postgresql-backup-delete 123 456 + /databases/postgresql/instances/{instanceId}/backups/{backupId}/restore: + x-linode-cli-command: databases parameters: - - name: linodeId - in: path - description: The ID of the Linode whose Configuration profile to look up. - required: true - schema: - type: integer - - name: configId - in: path - description: The ID of the Configuration profile to look up. - required: true - schema: - type: integer - x-linode-cli-command: linodes - get: + - name: instanceId + in: path + description: The ID of the Managed PostgreSQL Database. + required: true + schema: + type: integer + - name: backupId + in: path + description: The ID of the Managed PostgreSQL Database backup. + required: true + schema: + type: integer + post: tags: - - Linode Instances - x-linode-grant: read_only - summary: Configuration Profile View - description: > - Returns information about a specific Configuration profile. - operationId: getLinodeConfig - x-linode-cli-action: config-view + - Databases + summary: Managed PostgreSQL Database Backup Restore + operationId: postDatabasesPostgreSQLInstanceBackupRestore + servers: + - url: https://api.linode.com/v4 + - url: https://api.linode.com/v4beta + x-linode-cli-action: postgresql-backup-restore + x-linode-grant: read_write + description: | + Restore a backup to a Managed PostgreSQL Database on your Account. + + Requires `read_write` access to the Database. + + The Database must have an `active` status to perform this command. + + **Note**: Restoring from a backup will erase all existing data on the database instance and replace it with backup data. + + **Note**: Currently, restoring a backup after resetting Managed Database credentials results in a failed cluster. Please contact Customer Support if this occurs. security: - personalAccessToken: [] - oauth: - - linodes:read_only + - databases:read_write responses: '200': - description: A Configuration profile object. + description: Request to restore backup successful. content: application/json: schema: - $ref: '#/components/schemas/LinodeConfig' + type: object default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > curl -H "Authorization: Bearer $TOKEN" \ - https://api.linode.com/v4/linode/instances/123/configs/23456 + -X POST https://api.linode.com/v4/databases/postgresql/instances/123/backups/456/restore - lang: CLI source: > - linode-cli linodes config-view 123 23456 - put: - x-linode-grant: read_write - summary: Configuration Profile Update - description: > - Updates a Configuration profile. + linode-cli databases postgresql-backup-restore 123 456 + /databases/postgresql/instances/{instanceId}/credentials: + x-linode-cli-command: databases + parameters: + - name: instanceId + in: path + description: The ID of the Managed PostgreSQL Database. + required: true + schema: + type: integer + get: tags: - - Linode Instances - operationId: updateLinodeConfig - x-linode-cli-action: config-update + - Databases + summary: Managed PostgreSQL Database Credentials View + operationId: getDatabasesPostgreSQLInstanceCredentials + servers: + - url: https://api.linode.com/v4 + - url: https://api.linode.com/v4beta + x-linode-cli-action: postgresql-creds-view + x-linode-grant: read_only + description: | + Display the root username and password for an accessible Managed PostgreSQL Database. + + The Database must have an `active` status to perform this command. security: - personalAccessToken: [] - oauth: - - linodes:read_write - requestBody: - description: The Configuration profile parameters to modify. - required: true - content: - application/json: - schema: - $ref: '#/components/schemas/LinodeConfig' - x-code-samples: - - lang: Shell - source: > - curl -H "Content-Type: application/json" \ - -H "Authorization: Bearer $TOKEN" \ - -X PUT -d '{ - "kernel": "linode/latest-64bit", - "comments": "This is my main Config", - "memory_limit": 2048, - "run_level": "default", - "virt_mode": "paravirt", - "interfaces": [ - { - "purpose": "public", - "label": "", - "ipam_address": "" - }, - { - "purpose": "vlan", - "label": "vlan-1", - "ipam_address": "10.0.0.1/24" - } - ], - "helpers": { - "updatedb_disabled": true, - "distro": true, - "modules_dep": true, - "network": true, - "devtmpfs_automount": false - }, - "label": "My Config", - "devices": { - "sda": { - "disk_id": 123456, - "volume_id": null - }, - "sdb": { - "disk_id": 123457, - "volume_id": null - } - } - }' \ - https://api.linode.com/v4/linode/instances/123/configs/23456 - - lang: CLI - source: > - linode-cli linodes config-update 123 23456 \ - --kernel "linode/latest-64bit" \ - --comments "This is my main Config" \ - --memory_limit 2048 \ - --run_level default \ - --virt_mode paravirt \ - --helpers.updatedb_disabled true \ - --helpers.distro true \ - --helpers.modules_dep true \ - --helpers.network true \ - --helpers.devtmpfs_automount false \ - --label "My Config" \ - --devices.sda.disk_id 123456 \ - --devices.sdb.disk_id 123457 + - databases:read_only responses: '200': - description: Configuration profile successfully updated. + description: Managed Database root username and password. content: application/json: schema: - $ref: '#/components/schemas/LinodeConfig' + $ref: '#/components/schemas/DatabaseCredentials' default: $ref: '#/components/responses/ErrorResponse' - delete: - summary: Configuration Profile Delete - description: > - Deletes the specified Configuration profile from the specified Linode. - x-linode-grant: read_write + x-code-samples: + - lang: Shell + source: > + curl -H "Authorization: Bearer $TOKEN" \ + https://api.linode.com/v4/databases/postgresql/instances/123/credentials/ + - lang: CLI + source: > + linode-cli databases postgresql-creds-view 123 + /databases/postgresql/instances/{instanceId}/credentials/reset: + x-linode-cli-command: databases + parameters: + - name: instanceId + in: path + description: The ID of the Managed PostgreSQL Database. + required: true + schema: + type: integer + post: tags: - - Linode Instances - operationId: deleteLinodeConfig - x-linode-cli-action: config-delete + - Databases + summary: Managed PostgreSQL Database Credentials Reset + operationId: postDatabasesPostgreSQLInstanceCredentialsReset + servers: + - url: https://api.linode.com/v4 + - url: https://api.linode.com/v4beta + x-linode-cli-action: postgresql-creds-reset + x-linode-grant: read_write + description: | + Reset the root password for a Managed PostgreSQL Database. + + Requires `read_write` access to the Database. + + A new root password is randomly generated and accessible with the **Managed PostgreSQL Database Credentials View** ([GET /databases/postgresql/instances/{instanceId}/credentials](/docs/api/databases/#managed-postgresql-database-credentials-view)) command. + + Only unrestricted Users can access this command, and have access regardless of the acting token's OAuth scopes. + + **Note**: Note that it may take several seconds for credentials to reset. security: - personalAccessToken: [] - oauth: - - linodes:read_write + - databases:read_write responses: '200': - description: > - Configuration profile successfully deleted. + description: Managed Database instance credentials successfully reset. content: application/json: schema: @@ -5370,435 +5393,407 @@ paths: - lang: Shell source: > curl -H "Authorization: Bearer $TOKEN" \ - -X DELETE \ - https://api.linode.com/v4/linode/instances/123/configs/23456 + -X POST https://api.linode.com/v4/databases/postgresql/instances/123/credentials/reset - lang: CLI source: > - linode-cli linodes config-delete 123 23456 - /linode/instances/{linodeId}/disks: + linode-cli databases postgresql-creds-reset 123 + /databases/postgresql/instances/{instanceId}/ssl: + x-linode-cli-command: databases parameters: - - name: linodeId - in: path - description: ID of the Linode to look up. - required: true - schema: - type: integer - x-linode-cli-command: linodes + - name: instanceId + in: path + description: The ID of the Managed PostgreSQL Database. + required: true + schema: + type: integer get: - x-linode-grant: read_only - parameters: - - $ref: '#/components/parameters/pageOffset' - - $ref: '#/components/parameters/pageSize' tags: - - Linode Instances - summary: Disks List - description: > - View Disk information for Disks associated with this Linode. - operationId: getLinodeDisks - x-linode-cli-action: disks-list + - Databases + summary: Managed PostgreSQL Database SSL Certificate View + operationId: getDatabasesPostgreSQLInstanceSSL + servers: + - url: https://api.linode.com/v4 + - url: https://api.linode.com/v4beta + x-linode-cli-action: postgresql-ssl-cert + x-linode-grant: read_only + description: | + Display the SSL CA certificate for an accessible Managed PostgreSQL Database. + + The Database must have an `active` status to perform this command. security: - personalAccessToken: [] - oauth: - - linodes:read_only + - databases:read_only responses: '200': - description: Returns a paginated list of disks associated with this Linode. + description: Returns the SSL CA certificate of a single Managed PostgreSQL Database. content: application/json: schema: - type: object - properties: - data: - type: array - items: - $ref: '#/components/schemas/Disk' - page: - $ref: '#/components/schemas/PaginationEnvelope/properties/page' - pages: - $ref: '#/components/schemas/PaginationEnvelope/properties/pages' - results: - $ref: '#/components/schemas/PaginationEnvelope/properties/results' + $ref: '#/components/schemas/DatabaseSSL' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > curl -H "Authorization: Bearer $TOKEN" \ - https://api.linode.com/v4/linode/instances/123/disks + https://api.linode.com/v4/databases/postgresql/instances/123/ssl - lang: CLI source: > - linode-cli linodes disks-list 123 + linode-cli databases postgresql-ssl-cert 123 + /databases/postgresql/instances/{instanceId}/patch: + x-linode-cli-command: databases + parameters: + - name: instanceId + in: path + description: The ID of the Managed PostgreSQL Database. + required: true + schema: + type: integer post: tags: - - Linode Instances - summary: Disk Create + - Databases + summary: Managed PostgreSQL Database Patch + operationId: postDatabasesPostgreSQLInstancePatch + servers: + - url: https://api.linode.com/v4 + - url: https://api.linode.com/v4beta + x-linode-cli-action: postgresql-patch + x-linode-grant: read_write description: | - 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. + Apply security patches and updates to the underlying operating system of the Managed PostgreSQL Database. This function runs during regular maintenance windows, which are configurable with the **Managed PostgreSQL Database Update** ([PUT /databases/postgresql/instances/{instanceId}](/docs/api/databases/#managed-postgresql-database-update)) command. - * When creating an Empty Disk, providing a `label` is required. + Requires `read_write` access to the Database. - * If no `label` is provided, an `image` is required instead. + The Database must have an `active` status to perform this command. - * When creating a Disk from an Image, `root_pass` is required. + **Note** - * 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. + * If your database cluster is configured with a single node, you will experience downtime during this maintenance. Consider upgrading to a high availability plan to avoid any downtime due to maintenance. - * 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 + * **The database software is not updated automatically.** To upgrade to a new database engine version, consider deploying a new Managed Database with your preferred version. You can then migrate your databases from the original Managed Database cluster to the new one. security: - personalAccessToken: [] - oauth: - - linodes:read_write - requestBody: - description: > - The parameters to set when creating the Disk. - required: true - content: - application/json: - schema: - required: - - size - allOf: - - $ref: '#/components/schemas/DiskRequest' + - databases:read_write responses: '200': - description: Disk created. + description: Managed Database instance patch request successful. content: application/json: schema: - $ref: '#/components/schemas/Disk' + type: object default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > - curl -H "Content-Type: application/json" \ - -H "Authorization: Bearer $TOKEN" \ - -X POST -d '{ - "label": "Debian 9 Disk", - "image": "linode/debian9", - "size": 1300, - "authorized_keys": [ - "ssh-rsa AAAA_valid_public_ssh_key_123456785== user@their-computer" - ], - "authorized_users": [ - "myUser", - "secondaryUser" - ], - "root_pass": "aComplexP@ssword", - "stackscript_id": 10079, - "stackscript_data": { - "gh_username": "linode" - } - }' \ - https://api.linode.com/v4/linode/instances/123/disks + curl -H "Authorization: Bearer $TOKEN" \ + -X POST https://api.linode.com/v4/databases/postgresql/instances/123/patch - lang: CLI source: > - linode-cli linodes disk-create 123 \ - --size 1300 \ - --authorized_keys "ssh-rsa AAAA_valid_public_ssh_key_123456785== user@their-computer" \ - --authorized_users "myUser" \ - --authorized_users "secondaryUser" \ - --root_pass aComplex@Password \ - --image "linode/debian9" \ - --stackscript_id 10079 \ - --stackscript_data '{"gh_username": "linode"}' - /linode/instances/{linodeId}/disks/{diskId}: - parameters: - - name: linodeId - in: path - description: ID of the Linode to look up. - required: true - schema: - type: integer - - name: diskId - in: path - description: ID of the Disk to look up. - required: true - schema: - type: integer - x-linode-cli-command: linodes + linode-cli databases postgresql-patch 123 + /databases/types: + x-linode-cli-command: databases get: - x-linode-grant: read_only tags: - - Linode Instances - summary: Disk View - description: > - View Disk information for a Disk associated with this Linode. - operationId: getLinodeDisk - x-linode-cli-action: disk-view - security: - - personalAccessToken: [] - - oauth: - - linodes:read_only + - Databases + summary: Managed Database Types List + operationId: getDatabasesTypes + servers: + - url: https://api.linode.com/v4 + - url: https://api.linode.com/v4beta + x-linode-cli-action: types + parameters: + - $ref: '#/components/parameters/pageOffset' + - $ref: '#/components/parameters/pageSize' + description: | + Display all Managed Database node types. The type and number of nodes determine the resources and price of a Managed Database instance. + + Each Managed Database can have one node type. In the case of a high availabilty Database, all nodes are provisioned according to the chosen type. responses: '200': - description: Returns a single Disk object. + description: Returns a paginated list of all Managed Database types. content: application/json: + x-linode-cli-nested-list: engines.mysql, engines.postgresql, engines.mongodb + x-linode-cli-use-schema: + type: object + properties: + id: + x-linode-cli-display: 1 + label: + x-linode-cli-display: 2 + _split: + x-linode-cli-display: 2.5 + engines: + properties: + quantity: + x-linode-cli-display: 3 + price: + properties: + hourly: + x-linode-cli-display: 4 + monthly: + x-linode-cli-display: 5 schema: - $ref: '#/components/schemas/Disk' + allOf: + - $ref: '#/components/schemas/PaginationEnvelope' + - type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/DatabaseType' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > - curl -H "Authorization: Bearer $TOKEN" \ - https://api.linode.com/v4/linode/instances/123/disks/25674 + curl https://api.linode.com/v4/databases/types - lang: CLI source: > - linode-cli linodes disk-view 123 25674 - put: - x-linode-grant: read_write - tags: - - Linode Instances - summary: Disk Update - description: > - Updates a Disk that you have permission to `read_write`. - operationId: updateDisk - x-linode-cli-action: disk-update - security: - - personalAccessToken: [] - - oauth: - - linodes:read_write - requestBody: - description: > - Updates the parameters of a single Disk. + linode-cli databases types + /databases/types/{typeId}: + parameters: + - name: typeId + in: path + description: The ID of the Managed Database type. required: true - content: - application/json: - schema: - $ref: '#/components/schemas/Disk' + schema: + type: string + x-linode-cli-command: databases + get: + tags: + - Databases + summary: Managed Database Type View + operationId: getDatabasesType + servers: + - url: https://api.linode.com/v4 + - url: https://api.linode.com/v4beta + x-linode-cli-action: type-view + parameters: + - $ref: '#/components/parameters/pageOffset' + - $ref: '#/components/parameters/pageSize' + description: | + Display the details of a single Managed Database type. The type and number of nodes determine the resources and price of a Managed Database instance. responses: '200': - description: The updated Disk. + description: Returns a single Managed Database type. content: application/json: + x-linode-cli-nested-list: engines.mysql, engines.postgresql, engines.mongodb + x-linode-cli-use-schema: + type: object + properties: + id: + x-linode-cli-display: 1 + label: + x-linode-cli-display: 2 + _split: + x-linode-cli-display: 2.5 + engines: + properties: + quantity: + x-linode-cli-display: 3 + price: + properties: + hourly: + x-linode-cli-display: 4 + monthly: + x-linode-cli-display: 5 schema: - $ref: '#/components/schemas/Disk' + $ref: '#/components/schemas/DatabaseType' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > - curl -H "Content-Type: application/json" \ - -H "Authorization: Bearer $TOKEN" \ - -X PUT -d '{ - "label": "Debian 9 Disk" - }' \ - https://api.linode.com/v4/linode/instances/123/disks/25674 + curl https://api.linode.com/v4/databases/types/g6-nanode-1 - lang: CLI source: > - linode-cli linodes disk-update 123 25674 \ - --label "Debian 9 Disk" - delete: - x-linode-grant: read_write + linode-cli databases type-view g6-nanode-1 + /domains: + x-linode-cli-command: domains + get: + x-linode-grant: read_only + parameters: + - $ref: '#/components/parameters/pageOffset' + - $ref: '#/components/parameters/pageSize' tags: - - Linode Instances - summary: Disk Delete - description: | - Deletes a Disk you have permission to `read_write`. - - **Deleting a Disk is a destructive action and cannot be undone.** - operationId: deleteDisk - x-linode-cli-action: disk-delete + - Domains + summary: Domains List + description: > + This is a collection of Domains that you have registered in Linode's DNS + Manager. Linode is not a registrar, and in order for these to work you + must own the domains and point your registrar at Linode's nameservers. + operationId: getDomains + x-linode-cli-action: list security: - personalAccessToken: [] - oauth: - - linodes:read_write + - domains:read_only responses: '200': - description: Delete successful + description: A paginated list of Domains you have registered. content: application/json: schema: type: object - default: - $ref: '#/components/responses/ErrorResponse' + properties: + data: + type: array + items: + $ref: '#/components/schemas/Domain' + page: + $ref: '#/components/schemas/PaginationEnvelope/properties/page' + pages: + $ref: '#/components/schemas/PaginationEnvelope/properties/pages' + results: + $ref: '#/components/schemas/PaginationEnvelope/properties/results' + default: + $ref: '#/components/responses/ErrorResponse' x-code-samples: - - lang: Shell - source: > - curl -H "Authorization: Bearer $TOKEN" \ - -X DELETE \ - https://api.linode.com/v4/linode/instances/123/disks/25674 - - lang: CLI - source: > - linode-cli linodes disk-delete 123 24674 - /linode/instances/{linodeId}/disks/{diskId}/clone: - parameters: - - name: linodeId - in: path - description: ID of the Linode to look up. - required: true - schema: - type: integer - - name: diskId - in: path - description: ID of the Disk to clone. - required: true - schema: - type: integer - x-linode-cli-command: linodes + - lang: Shell + source: > + curl -H "Authorization: Bearer $TOKEN" \ + https://api.linode.com/v4/domains + - lang: CLI + source: > + linode-cli domains list post: - x-linode-grant: read_write + x-linode-grant: add_domains tags: - - Linode Instances - summary: Disk Clone + - Domains + summary: Domain Create description: > - Copies a disk, byte-for-byte, into a new Disk belonging to the same Linode. - The Linode must have enough storage space available to accept a new Disk - of the same size as this one or this operation will fail. - operationId: cloneLinodeDisk - x-linode-cli-action: disk-clone + Adds a new Domain to Linode's DNS Manager. Linode is not a registrar, and + you must own the domain before adding it here. Be sure to point your + registrar to Linode's nameservers so that the records hosted here are + used. + operationId: createDomain + x-linode-cli-action: create security: - personalAccessToken: [] - oauth: - - linodes:read_write + - domains:read_write + requestBody: + description: Information about the domain you are registering. + required: true + content: + application/json: + schema: + required: + - domain + - type + allOf: + - $ref: '#/components/schemas/Domain' responses: '200': - description: Disk clone initiated. + description: | + Domain added successfully. content: application/json: schema: - $ref: '#/components/schemas/Disk' + $ref: '#/components/schemas/Domain' default: $ref: '#/components/responses/ErrorResponse' - /linode/instances/{linodeId}/disks/{diskId}/password: + x-code-samples: + - lang: Shell + source: > + curl -H "Content-Type: application/json" \ + -H "Authorization: Bearer $TOKEN" \ + -X POST -d '{ + "domain": "example.com", + "type": "master", + "soa_email": "admin@example.com", + "description": "Example Description", + "refresh_sec": 14400, + "retry_sec": 3600, + "expire_sec": 604800, + "ttl_sec": 3600, + "status": "active", + "master_ips": ["127.0.0.1","255.255.255.1","123.123.123.7"], + "axfr_ips": ["44.55.66.77"], + "group": "Example Display Group", + "tags": ["tag1","tag2"] + }' \ + https://api.linode.com/v4/domains + - lang: CLI + source: > + linode-cli domains create \ + --type master \ + --domain example.org \ + --soa_email admin@example.org + /domains/{domainId}: + x-linode-cli-command: domains parameters: - - name: linodeId - in: path - description: ID of the Linode to look up. - required: true - schema: - type: integer - - name: diskId - in: path - description: ID of the Disk to look up. - required: true - schema: - type: integer - x-linode-cli-command: linodes - post: - x-linode-grant: read_write + - name: domainId + in: path + description: The ID of the Domain to access. + required: true + schema: + type: integer + get: + x-linode-grant: read_only tags: - - Linode Instances - summary: Disk Root Password Reset + - Domains + summary: Domain View description: > - Resets the password of a Disk you have permission to `read_write`. - operationId: resetDiskPassword - x-linode-cli-action: disk-reset-password + This is a single Domain that you have registered in Linode's DNS Manager. + Linode is not a registrar, and in order for this Domain record to work you + must own the domain and point your registrar at Linode's nameservers. + operationId: getDomain + x-linode-cli-action: view security: - personalAccessToken: [] - oauth: - - linodes:read_write - requestBody: - description: The new password. - required: true - content: - application/json: - schema: - required: - - password - properties: - password: - type: string - description: > - The new root password for the OS installed on this Disk. - - The password must meet the complexity strength validation requirements for a strong password. - example: another@complex^Password123 + - domains:read_only responses: '200': - description: Returns a single Disk object. + description: | + A single Domain in Linode's DNS Manager. content: application/json: schema: - type: object + $ref: '#/components/schemas/Domain' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > - curl -H "Content-Type: application/json" \ - -H "Authorization: Bearer $TOKEN" \ - -X POST -d '{ - "password": "another@complex^Password123" - }' \ - https://api.linode.com/v4/linode/instances/123/disks/25674/password + curl -H "Authorization: Bearer $TOKEN" \ + https://api.linode.com/v4/domains/123 - lang: CLI source: > - linode-cli linodes disk-reset-password \ - 123 25674 \ - --password aComplex@Password - /linode/instances/{linodeId}/disks/{diskId}/resize: - parameters: - - name: linodeId - in: path - description: ID of the Linode to look up. - required: true - schema: - type: integer - - name: diskId - in: path - description: ID of the Disk to look up. - required: true - schema: - type: integer - x-linode-cli-command: linodes - post: + linode-cli domains view 123 + put: x-linode-grant: read_write tags: - - Linode Instances - summary: Disk Resize + - Domains + summary: Domain Update description: | - Resizes a Disk you have permission to `read_write`. - - The Disk must not be in use. If the Disk is in use, the request will - succeed but the resize will ultimately fail. For a request to succeed, - the Linode must be shut down prior to resizing the Disk, or the Disk - must not be assigned to the Linode's active Configuration Profile. - - If you are resizing the Disk to a smaller size, it cannot be made smaller - than what is required by the total size of the files current on the Disk. - operationId: resizeDisk - x-linode-cli-action: disk-resize + Update information about a Domain in Linode's DNS Manager. + operationId: updateDomain + x-linode-cli-action: update security: - personalAccessToken: [] - oauth: - - linodes:read_write + - domains:read_write requestBody: - description: The new size of the Disk. + description: The Domain information to update. required: true content: application/json: schema: - required: - - size - properties: - size: - type: integer - description: > - The desired size, in MB, of the disk. - minimum: 1 - example: 2048 + $ref: '#/components/schemas/Domain' responses: '200': - description: Resize started. + description: Domain update successful. content: application/json: schema: - type: object + $ref: '#/components/schemas/Domain' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: @@ -5806,330 +5801,330 @@ paths: source: > curl -H "Content-Type: application/json" \ -H "Authorization: Bearer $TOKEN" \ - -X POST -d '{ - "size": 2048 + -X PUT -d '{ + "domain": "example.com", + "type": "master", + "soa_email": "admin@example.com", + "description": "Example Description", + "refresh_sec": 14400, + "retry_sec": 3600, + "expire_sec": 604800, + "ttl_sec": 3600, + "status": "active", + "master_ips": ["127.0.0.1","255.255.255.1","123.123.123.7"], + "axfr_ips": ["44.55.66.77"], + "group": "Example Display Group", + "tags": ["tag1","tag2"] }' \ - https://api.linode.com/v4/linode/instances/123/disks/25674/resize + https://api.linode.com/v4/domains/123 - lang: CLI source: > - linode-cli linodes disk-resize 123 25674 \ - --size 2048 - /linode/instances/{linodeId}/firewalls: - parameters: - - name: linodeId - in: path - description: ID of the Linode to look up. - required: true - schema: - type: integer - x-linode-cli-command: linodes - get: - x-linode-grant: read_only - parameters: - - $ref: '#/components/parameters/pageOffset' - - $ref: '#/components/parameters/pageSize' + linode-cli domains update 1234 \ + --retry_sec 7200 \ + --ttl_sec 300 + delete: + x-linode-grant: read_write tags: - - Linode Instances - summary: Firewalls List + - Domains + summary: Domain Delete description: > - View Firewall information for Firewalls associated with this Linode. - operationId: getLinodeFirewalls - x-linode-cli-action: firewalls-list + Deletes a Domain from Linode's DNS Manager. The Domain will be removed + from Linode's nameservers shortly after this operation completes. This + also deletes all associated Domain Records. + operationId: deleteDomain + x-linode-cli-action: delete security: - personalAccessToken: [] - oauth: - - linodes:read_only + - domains:read_write responses: '200': - description: Returns a paginated list of Firewalls associated with this Linode. + description: Domain deleted successfully. content: application/json: schema: type: object - properties: - data: - type: array - items: - $ref: '#/components/schemas/Firewall' - page: - $ref: '#/components/schemas/PaginationEnvelope/properties/page' - pages: - $ref: '#/components/schemas/PaginationEnvelope/properties/pages' - results: - $ref: '#/components/schemas/PaginationEnvelope/properties/results' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - - lang: Shell - source: > - curl -H "Authorization: Bearer $TOKEN" \ - https://api.linode.com/v4/linode/instances/123/firewalls - - lang: CLI - source: > - linode-cli linodes firewalls-list 123 - /linode/instances/{linodeId}/ips: + - lang: Shell + source: > + curl -H "Authorization: Bearer $TOKEN" \ + -X DELETE \ + https://api.linode.com/v4/domains/1234 + - lang: CLI + source: > + linode-cli domains delete 1234 + /domains/{domainId}/zone-file: + x-linode-cli-command: domains parameters: - - name: linodeId + - name: domainId in: path - description: ID of the Linode to look up. + description: ID of the Domain. required: true schema: - type: integer - x-linode-cli-command: linodes + type: string get: x-linode-grant: read_only tags: - - Linode Instances - summary: Networking Information List + - Domains + summary: Domain Zone File View description: > - Returns networking information for a single Linode. - operationId: getLinodeIPs - x-linode-cli-action: ips-list + Returns the zone file for the last rendered zone for the specified domain. + operationId: getDomainZone + x-linode-cli-action: zone-file security: - personalAccessToken: [] - oauth: - - linodes:read_only + - domains:read_only responses: '200': - description: Requested Linode's networking configuration. + description: | + An array containing the lines of the domain zone file. content: application/json: schema: properties: - ipv4: - type: object - description: > - Information about this Linode's IPv4 addresses. - readOnly: true - properties: - public: - type: array - items: - $ref: '#/components/schemas/IPAddress' - description: > - A list of public IP Address objects belonging to this Linode. - readOnly: true - private: - type: array - items: - $ref: '#/components/schemas/IPAddressPrivate' - description: > - A list of private IP Address objects belonging to this Linode. - readOnly: true - shared: - type: array - readOnly: true - items: - $ref: '#/components/schemas/IPAddress' - description: > - A list of shared IP Address objects assigned to this Linode. - reserved: - type: array - readOnly: true - items: - $ref: '#/components/schemas/IPAddress' - description: > - A list of reserved IP Address objects belonging to this Linode. - ipv6: - type: object - description: > - Information about this Linode's IPv6 addresses. - readOnly: true - properties: - link_local: - $ref: '#/components/schemas/IPAddressV6LinkLocal' - slaac: - $ref: '#/components/schemas/IPAddressV6Slaac' - global: - $ref: '#/components/schemas/IPv6Pool' + zone_file: + type: array + items: + type: string + example: + - "; example.com [123]" + - "$TTL 864000" + - "@ IN SOA ns1.linode.com. user.example.com. 2021000066 14400 14400 1209600 86400" + - "@ NS ns1.linode.com." + - "@ NS ns2.linode.com." + - "@ NS ns3.linode.com." + - "@ NS ns4.linode.com." + - "@ NS ns5.linode.com." + description: | + The lines of the zone file for the last rendered zone for this domain. default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > - curl -H "Content-Type: application/json" \ - https://api.linode.com/v4/linode/instances/123/ips + curl -H "Authorization: Bearer $TOKEN" \ + https://api.linode.com/v4/domains/123/zone-file - lang: CLI source: > - linode-cli linodes 123 ips-list + linode-cli domains zone-file 123 + /domains/import: + x-linode-cli-command: domains post: x-linode-grant: read_write + x-linode-cli-command: domains tags: - - Linode Instances - summary: IPv4 Address Allocate + - Domains + summary: Domain Import description: > - Allocates a public or private IPv4 address to a Linode. - Public IP Addresses, after the one included with each Linode, - incur an additional monthly charge. If you need an additional public - IP Address you must request one - please - [open a support ticket](/docs/api/support/#support-ticket-open). - You may not add more than one private IPv4 address to a single Linode. - operationId: addLinodeIP - x-linode-cli-action: ip-add + Imports a domain zone from a remote nameserver. + + Your nameserver must allow zone transfers (AXFR) from the following IPs: + + - 96.126.114.97 + - 96.126.114.98 + - 2600:3c00::5e + - 2600:3c00::5f + operationId: importDomain + x-linode-cli-action: import security: - personalAccessToken: [] - oauth: - - linodes:read_write + - domains:read_write requestBody: - description: Information about the address you are creating. - required: true + description: Information about the Domain to import. content: application/json: schema: required: - - type - - public + - domain + - remote_nameserver properties: - type: + domain: type: string - enum: - - ipv4 description: > - The type of address you are allocating. Only IPv4 addresses - may be allocated through this endpoint. - example: ipv4 - public: - type: boolean + The domain to import. + example: example.com + remote_nameserver: + type: string description: > - Whether to create a public or private IPv4 address. - example: true + The remote nameserver that allows zone transfers (AXFR). + example: examplenameserver.com responses: '200': - description: IP address was successfully allocated. + description: | + A single Domain in Linode's DNS Manager. content: application/json: schema: - $ref: '#/components/schemas/IPAddress' + $ref: '#/components/schemas/Domain' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - - lang: Shell - source: > - curl -H "Content-Type: application/json" \ - -H "Authorization: Bearer $TOKEN" \ - -X POST -d '{ - "type": "ipv4", - "public": true - }' \ - https://api.linode.com/v4/linode/instances/123/ips - - lang: CLI - source: > - linode-cli linodes ip-add 123 \ - --type ipv4 \ - --public true - /linode/instances/{linodeId}/ips/{address}: + - lang: Shell + source: > + curl -H "Content-Type: application/json" \ + -H "Authorization: Bearer $TOKEN" \ + -X POST -d '{ + "domain": "example.com", + "remote_nameserver": "examplenameserver.com" + }' \ + https://api.linode.com/v4/domains/import + - lang: CLI + source: > + linode-cli domains import --domain example.com --remote_nameserver examplenameserver.com + /domains/{domainId}/clone: + x-linode-cli-command: domains parameters: - - name: linodeId - in: path - description: The ID of the Linode to look up. - required: true - schema: - type: integer - - name: address + - name: domainId in: path - description: The IP address to look up. + description: ID of the Domain to clone. required: true schema: type: string - format: ip - x-linode-cli-command: linodes - get: - x-linode-grant: read_only + post: + x-linode-grant: read_write tags: - - Linode Instances - summary: IP Address View + - Domains + summary: Domain Clone description: > - View information about the specified IP address associated - with the specified Linode. - operationId: getLinodeIP - x-linode-cli-action: ip-view + Clones a Domain and all associated DNS records from a Domain that is + registered in Linode's DNS manager. + operationId: cloneDomain + x-linode-cli-action: clone security: - personalAccessToken: [] - oauth: - - linodes:read_only + - domains:read_write + requestBody: + description: Information about the Domain to clone. + required: true + content: + application/json: + schema: + required: + - domain + type: object + properties: + domain: + type: string + 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: A single IP address. + description: | + A new Domain in Linode's DNS Manager, based on a cloned Domain. content: application/json: schema: - $ref: '#/components/schemas/IPAddress' + $ref: '#/components/schemas/Domain' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > curl -H "Content-Type: application/json" \ - https://api.linode.com/v4/linode/instances/123/ips/97.107.143.141 + -H "Authorization: Bearer $TOKEN" \ + -X POST -d '{ + "domain": "example.com" + }' \ + https://api.linode.com/v4/domains/123/clone - lang: CLI source: > - linode-cli linodes ip-view 123 97.107.143.141 - put: - x-linode-grant: read_write + linode-cli domains clone 123 --domain example.com + /domains/{domainId}/records: + x-linode-cli-command: domains + parameters: + - name: domainId + in: path + description: The ID of the Domain we are accessing Records for. + required: true + schema: + type: integer + get: + x-linode-grant: read_only tags: - - Linode Instances - summary: IP Address Update - description: > - Updates a particular IP Address associated with this Linode. - Only allows setting/resetting reverse DNS. - operationId: updateLinodeIP - x-linode-cli-action: ip-update + - Domains + parameters: + - $ref: '#/components/parameters/pageOffset' + - $ref: '#/components/parameters/pageSize' security: - personalAccessToken: [] - oauth: - - linodes:read_write - requestBody: - description: The information to update for the IP address. - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/IPAddress' + - domains:read_only + summary: Domain Records List + description: | + Returns a paginated list of Records configured on a Domain in Linode's + DNS Manager. + operationId: getDomainRecords + x-linode-cli-action: records-list responses: '200': - description: The updated IP address record. + description: A list of Domain Records. content: application/json: schema: - $ref: '#/components/schemas/IPAddress' - default: - $ref: '#/components/responses/ErrorResponse' + type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/DomainRecord' + page: + $ref: '#/components/schemas/PaginationEnvelope/properties/page' + pages: + $ref: '#/components/schemas/PaginationEnvelope/properties/pages' + results: + $ref: '#/components/schemas/PaginationEnvelope/properties/results' x-code-samples: - lang: Shell source: > - curl -H "Content-Type: application/json" \ - -H "Authorization: Bearer $TOKEN" \ - -X PUT -d '{ - "rdns": "test.example.org" - }' \ - https://api.linode.com/v4/linode/instances/123/ips/97.107.143.141 + curl -H "Authorization: Bearer $TOKEN" \ + https://api.linode.com/v4/domains/1234/records - lang: CLI source: > - linode-cli linodes ip-update 123 \ - 97.107.143.141 \ - --rdns test.example.org - delete: + linode-cli domains records-list 1234 + post: x-linode-grant: read_write tags: - - Linode Instances - summary: IPv4 Address Delete - description: > - Deletes a public IPv4 address associated with this Linode. This will - fail if it is the Linode's last remaining public IPv4 address. Private - IPv4 addresses cannot be removed via this endpoint. - operationId: removeLinodeIP - x-linode-cli-action: ip-delete + - Domains security: - personalAccessToken: [] - oauth: - - linodes:read_write + - domains:read_write + summary: Domain Record Create + description: > + Adds a new Domain Record to the zonefile this Domain represents. + operationId: createDomainRecord + x-linode-cli-action: records-create + requestBody: + description: > + Information about the new Record to add. + required: true + content: + application/json: + schema: + required: + - type + allOf: + - $ref: '#/components/schemas/DomainRecord' responses: '200': - description: IP address successfully removed. + description: Domain Record created successfully. content: application/json: schema: - type: object + $ref: '#/components/schemas/DomainRecord' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: @@ -6137,225 +6132,146 @@ paths: source: > curl -H "Content-Type: application/json" \ -H "Authorization: Bearer $TOKEN" \ - -X DELETE \ - https://api.linode.com/v4/linode/instances/123/ips/97.107.143.141 + -X POST -d '{ + "type": "A", + "name": "test", + "target": "12.34.56.78", + "priority": 50, + "weight": 50, + "port": 80, + "service": null, + "protocol": null, + "ttl_sec": 604800 + }' \ + https://api.linode.com/v4/domains/123/records - lang: CLI source: > - linode-cli linodes ip-delete 97.107.143.141 - /linode/kernels: - x-linode-cli-command: kernels + linode-cli domains records-create 123 \ + --type A \ + --name test \ + --target 12.34.56.78 \ + --priority 50 \ + --weight 50 \ + --port 80 \ + --ttl_sec 604800 + /domains/{domainId}/records/{recordId}: + x-linode-cli-command: domains + parameters: + - name: domainId + in: path + description: The ID of the Domain whose Record you are accessing. + required: true + schema: + type: integer + - name: recordId + in: path + description: The ID of the Record you are accessing. + required: true + schema: + type: integer get: - parameters: - - $ref: '#/components/parameters/pageOffset' - - $ref: '#/components/parameters/pageSize' + x-linode-grant: read_only tags: - - Linode Instances - summary: Kernels List - description: | - Lists available Kernels. - operationId: getKernels - x-linode-cli-action: list + - Domains + security: + - personalAccessToken: [] + - oauth: + - domains:read_only + summary: Domain Record View + description: > + View a single Record on this Domain. + operationId: getDomainRecord + x-linode-cli-action: records-view responses: '200': - description: Returns an array of Kernels. + description: A Domain Record object. content: application/json: schema: - type: object - properties: - data: - type: array - items: - $ref: '#/components/schemas/Kernel' - page: - $ref: '#/components/schemas/PaginationEnvelope/properties/page' - pages: - $ref: '#/components/schemas/PaginationEnvelope/properties/pages' - results: - $ref: '#/components/schemas/PaginationEnvelope/properties/results' + $ref: '#/components/schemas/DomainRecord' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > - curl https://api.linode.com/v4/linode/kernels + curl -H "Authorization: Bearer $TOKEN" \ + https://api.linode.com/v4/domains/123/records/234 - lang: CLI source: > - linode-cli kernels list - /linode/kernels/{kernelId}: - parameters: - - name: kernelId - in: path - description: ID of the Kernel to look up. - required: true - schema: - type: string - x-linode-cli-command: kernels - get: + linode-cli domains records-view 123 234 + put: + x-linode-grant: read_write tags: - - Linode Instances - summary: Kernel View + - Domains + security: + - personalAccessToken: [] + - oauth: + - domains:read_write + summary: Domain Record Update description: > - Returns information about a single Kernel. - operationId: getKernel - x-linode-cli-action: view + Updates a single Record on this Domain. + operationId: updateDomainRecord + x-linode-cli-action: records-update + requestBody: + description: The values to change. + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/DomainRecord' responses: '200': - description: A single Kernel object. + description: Domain Record updated. content: application/json: schema: - $ref: '#/components/schemas/Kernel' - default: - $ref: '#/components/responses/ErrorResponse' - x-code-samples: - - lang: Shell - source: > - curl https://api.linode.com/v4/linode/kernels/linode/latest-64bit - - lang: CLI - source: > - linode-cli kernels view latest-64bit - /linode/instances/{linodeId}/migrate: - parameters: - - name: linodeId - in: path - description: ID of the Linode to migrate. - required: true - schema: - type: integer - x-linode-cli-command: linodes - post: - x-linode-grant: read_write - summary: DC Migration/Pending Host Migration Initiate - description: > - Initiate a pending host migration that has been scheduled by Linode or - initiate a cross data center (DC) migration. A list of pending migrations, - if any, can be accessed from [GET /account/notifications](/docs/api/account/#notifications-list). - When the migration begins, your Linode will be shutdown if not already off. - If the migration initiated the shutdown, it will reboot the Linode when completed. - - - To initiate a cross DC migration, you must pass a `region` parameter to the - request body specifying the target data center region. - You can view a list of all available regions and their feature capabilities - from [GET /regions](/docs/api/regions/#regions-list). If your Linode has a DC migration already queued - or you have initiated a previously scheduled migration, you will not be able to initiate - a DC migration until it has completed. - - - **Note:** Next Generation Network (NGN) data centers do not support IPv6 `/116` pools or IP Failover. - If you have these features enabled on your Linode and attempt to migrate to an NGN data center, - the migration 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. - tags: - - Linode Instances - operationId: migrateLinodeInstance - x-linode-cli-action: migrate - security: - - personalAccessToken: [] - - oauth: - - linodes:read_write - requestBody: - content: - 'application/json': - schema: - properties: - region: - type: string - description: > - The region to which the Linode will be migrated. - Must be a valid region slug. A list of regions can be viewed - by using the [GET /regions](/docs/api/regions/#regions-list) endpoint. - A cross data center migration will cancel a pending migration - that has not yet been initiated. - - A cross data center migration will initiate a `linode_migrate_datacenter_create` event. - example: us-east - upgrade: - type: boolean - description: > - When initiating a cross DC migration, setting this value to - true will also ensure that the Linode is upgraded to the latest - generation of hardware that corresponds to your Linode's Type, if - any free upgrades are available for it. - - If no free upgrades are available, and this value is set to true, - then the endpoint will return a 400 error code and the migration - will not be performed. - - If the data center set in the `region` field does not allow upgrades, - then the endpoint will return a 400 error code and the migration - will not be performed. - example: false - default: false - responses: - '200': - description: Scheduled migration started - content: - 'application/json': - schema: - type: object + $ref: '#/components/schemas/DomainRecord' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > curl -H "Content-Type: application/json" \ - -H "Authorization: Bearer $TOKEN" \ - -X POST -d '{ - "region": "us-central" + -H "Authorization: Bearer $TOKEN" \ + -X PUT -d '{ + "type": "A", + "name": "test", + "target": "12.34.56.78", + "priority": 50, + "weight": 50, + "port": 80, + "service": null, + "protocol": null, + "ttl_sec": 604800, + "tag": null }' \ - https://api.linode.com/v4/linode/instances/123/migrate + https://api.linode.com/v4/domains/123/records/234 - lang: CLI source: > - linode-cli linodes migrate 123 --region us-central - /linode/instances/{linodeId}/mutate: - parameters: - - name: linodeId - in: path - description: ID of the Linode to mutate. - required: true - schema: - type: integer - x-linode-cli-command: linodes - post: + linode-cli domains records-update 123 234 \ + --type A \ + --name test \ + --target 12.34.56.78 \ + --priority 50 \ + --weight 50 \ + --port 80 \ + --ttl_sec 604800 + delete: x-linode-grant: read_write - summary: Linode Upgrade - description: > - Linodes created with now-deprecated Types are entitled to a free - upgrade to the next generation. A mutating Linode will be allocated any new - resources the upgraded Type provides, and will be subsequently restarted - if it was currently running. - - If any actions are currently running or queued, those actions must be - completed first before you can initiate a mutate. tags: - - Linode Instances - operationId: mutateLinodeInstance - x-linode-cli-action: upgrade + - Domains security: - personalAccessToken: [] - oauth: - - linodes:read_write - requestBody: - description: Whether to automatically resize disks or not. - required: false - content: - application/json: - schema: - type: object - properties: - allow_auto_disk_resize: - type: boolean - description: > - Automatically resize disks when resizing a Linode. - When resizing down to a smaller plan your Linode's - data must fit within the smaller disk size. - example: true - default: true + - domains:read_write + summary: Domain Record Delete + description: > + Deletes a Record on this Domain. + operationId: deleteDomainRecord + x-linode-cli-action: records-delete responses: '200': - description: Mutate started. + description: Record deleted successfully. content: application/json: schema: @@ -6365,41 +6281,41 @@ paths: x-code-samples: - lang: Shell source: > - curl -H "Content-Type: application/json" \ - -H "Authorization: Bearer $TOKEN" \ - -X POST \ - https://api.linode.com/v4/linode/instances/123/mutate + curl -H "Authorization: Bearer $TOKEN" \ + -X DELETE \ + https://api.linode.com/v4/domains/123/records/234 - lang: CLI source: > - linode-cli linodes upgrade 123 - /linode/instances/{linodeId}/nodebalancers: - parameters: - - name: linodeId - in: path - description: ID of the Linode to look up - required: true - schema: - type: integer - x-linode-cli-command: linodes + linode-cli domains records-delete 123 234 + /images: + x-linode-cli-command: images get: - x-linode-grant: read_only + parameters: + - $ref: '#/components/parameters/pageOffset' + - $ref: '#/components/parameters/pageSize' tags: - - Linode Instances - summary: Linode NodeBalancers View + - Images + summary: Images List description: | - Returns a list of NodeBalancers that are assigned to this Linode and readable by the requesting User. + Returns a paginated list of Images. - Read permission to a NodeBalancer can be given to a User by accessing the User's Grants Update - ([PUT /account/users/{username}/grants](/docs/api/account/#users-grants-update)) endpoint. - operationId: getLinodeNodeBalancers - x-linode-cli-action: nodebalancers + * **Public** Images have IDs that begin with "linode/". These distribution images are generally available to + all users. + + * **Private** Images have IDs that begin with "private/". These Images are Account-specific and only + accessible to Users with appropriate [Grants](/docs/api/account/#users-grants-view). + + * To view only public Images, call this endpoint with or without authentication. To view private Images as well, call this endpoint with authentication. + x-linode-redoc-load-ids: true + operationId: getImages + x-linode-cli-action: list security: - personalAccessToken: [] - oauth: - - linodes:read_only + - images:read_only responses: '200': - description: Returns a paginated list of NodeBalancers. + description: A paginated list of Images. content: application/json: schema: @@ -6408,132 +6324,169 @@ paths: data: type: array items: - $ref: '#/components/schemas/NodeBalancer' + $ref: '#/components/schemas/Image' page: $ref: '#/components/schemas/PaginationEnvelope/properties/page' pages: $ref: '#/components/schemas/PaginationEnvelope/properties/pages' results: $ref: '#/components/schemas/PaginationEnvelope/properties/results' + default: + $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell - source: > + source: | + # Returns public Images only + curl https://api.linode.com/v4/images + + # Returns private and public Images curl -H "Authorization: Bearer $TOKEN" \ - https://api.linode.com/v4/linode/instances/123/nodebalancers + https://api.linode.com/v4/images - lang: CLI source: > - linode-cli linodes nodebalancers 123 - /linode/instances/{linodeId}/password: - parameters: - - name: linodeId - in: path - description: ID of the Linode for which to reset its root password. - required: true - schema: - type: integer - x-linode-cli-command: linodes + linode-cli images list post: - x-linode-grant: read_write - summary: Linode Root Password Reset - description: > - Resets the root password for this Linode. - - * Your Linode must be [shut down](/docs/api/linode-instances/#linode-shut-down) for a password reset to complete. - - * If your Linode has more than one disk (not counting its swap disk), use the - [Reset Disk Root Password](/docs/api/linode-instances/#disk-root-password-reset) endpoint to update a specific disk's root password. - - * A `password_reset` event is generated when a root password reset is successful. + x-linode-grant: add_images tags: - - Linode Instances - operationId: resetLinodePassword - x-linode-cli-action: linode-reset-password - security: - - personalAccessToken: [] - - oauth: - - linodes:read_write - requestBody: - description: This Linode's new root password. + - Images + summary: Image Create + description: | + Captures a private gold-master Image from a Linode Disk. + operationId: createImage + x-linode-cli-action: create + security: + - personalAccessToken: [] + - oauth: + - images:read_write + - linodes:read_only + requestBody: + description: Information about the Image to create. content: - 'application/json': + application/json: schema: required: - - root_pass + - disk_id properties: - root_pass: + disk_id: + type: integer + description: > + The ID of the Linode Disk that this Image will be + created from. + example: 42 + label: type: string description: > - The root user's password on this Linode. Linode passwords - 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. - example: a$eCure4assw0rd!43v51 + A short title of this Image. Defaults to the label of the + Disk it is being created from if not provided. + description: + type: string + description: > + A detailed description of this Image. responses: '200': - description: Password Reset. + description: New private Image created successfully. content: application/json: schema: - type: object + $ref: '#/components/schemas/Image' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > curl -H "Content-Type: application/json" \ - -H "Authorization: Bearer $TOKEN" \ + -H "Authorization: Bearer $TOKEN" \ -X POST -d '{ - "root_pass": "a$eCure4assw0rd!43v51" + "disk_id": 123, + "label": "this_is_a_label", + "description": "A longer description of the image" }' \ - https://api.linode.com/v4/linode/instances/123/password + https://api.linode.com/v4/images - lang: CLI source: > - linode-cli linodes linode-reset-password 123 a$eCure4assw0rd!43v51 - /linode/instances/{linodeId}/reboot: - parameters: - - name: linodeId - in: path - description: ID of the linode to reboot. - required: true - schema: - type: integer - x-linode-cli-command: linodes + linode-cli images create \ + --label this_is_a_label \ + --description "A longer description \ + of the image" \ + --disk_id 123 + /images/upload: + x-linode-cli-command: images post: - x-linode-grant: read_write - summary: Linode Reboot - description: > - Reboots a Linode you have permission to modify. If any actions are currently running or - queued, those actions must be completed first before you can initiate a reboot. + x-linode-grant: add_images + servers: + - url: https://api.linode.com/v4 + - url: https://api.linode.com/v4beta tags: - - Linode Instances - operationId: rebootLinodeInstance - x-linode-cli-action: reboot + - Images + summary: Image Upload + description: | + Initiates an Image upload. + + This endpoint creates a new private Image object and returns it along + with the URL to which image data can be uploaded. + + - Image data must be uploaded within 24 hours of creation or the + upload will be cancelled and the image deleted. + + - Image uploads should be made as an HTTP PUT request to the URL returned in the `upload_to` + response parameter, with a `Content-type: application/octet-stream` header included in the + request. For example: + + curl -v \ + -H "Content-Type: application/octet-stream" \ + --upload-file example.img.gz \ + $UPLOAD_URL \ + --progress-bar \ + --output /dev/null + + - Uploaded image data should be compressed in gzip (`.gz`) format. The uncompressed disk should be in raw + disk image (`.img`) format. A maximum compressed file size of 5GB is supported for upload at this time. + + **Note:** To initiate and complete an Image upload in a single step, see our guide on how to [Upload an Image](/docs/products/tools/images/guides/upload-an-image/) using Cloud Manager or the Linode CLI `image-upload` plugin. + x-linode-cli-action: upload security: - personalAccessToken: [] - oauth: - - linodes:read_write + - images:read_write requestBody: - description: Optional reboot parameters. + description: The uploaded Image details. + x-linode-cli-allowed-defaults: + - region content: - 'application/json': + application/json: schema: + type: object + required: + - label + - region properties: - config_id: - type: integer + region: + type: string description: > - The Linode Config ID to reboot into. If null or omitted, - the last booted config will be used. If there was no last - booted config and this Linode only has one config, it will - be used. If a config cannot be determined, an error will - be returned. - example: null + The region to upload to. Once uploaded, the Image can be used in any region. + example: eu-central + label: + type: string + description: Label for the uploaded Image. + example: my-image-label + description: + type: string + description: Description for the uploaded Image. + example: This is an example image in the docs. responses: '200': - description: Reboot started. + description: Image Upload object including the upload URL and Image object. content: application/json: schema: type: object + properties: + upload_to: + type: string + description: The URL to upload the Image to. + x-linode-cli-display: 1 + image: + $ref: '#/components/schemas/Image' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: @@ -6541,228 +6494,105 @@ paths: source: > curl -H "Content-Type: application/json" \ -H "Authorization: Bearer $TOKEN" \ - -X POST \ - https://api.linode.com/v4/linode/instances/123/reboot + -X POST -d '{ + "description": "Optional details about the Image", + "label": "Example Image", + "region": "us-east" + }' \ + https://api.linode.com/v4/images/upload - lang: CLI - source: > - linode-cli linodes reboot 123 - /linode/instances/{linodeId}/rebuild: + source: | + # Upload the Image file in a single step + linode-cli image-upload \ + --description "Optional details about the Image" \ + --label "Example Image" \ + --region us-east \ + /path/to/image-file.img.gz + + # Returns the upload_to URL + linode-cli images upload \ + --description "Optional details about the Image" \ + --label "Example Image" \ + --region us-east + /images/{imageId}: + x-linode-cli-command: images parameters: - - name: linodeId + - name: imageId in: path - description: ID of the Linode to rebuild. + description: ID of the Image to look up. required: true schema: - type: integer - x-linode-cli-command: linodes - post: - x-linode-grant: read_write - summary: Linode Rebuild - description: > - Rebuilds a Linode you have the `read_write` permission to modify. + type: string + get: + tags: + - Images + summary: Image View + description: | + Get information about a single Image. - A rebuild will first shut down the Linode, delete all disks and configs - on the Linode, and then deploy a new `image` to the Linode with the given - attributes. Additionally: + * **Public** Images have IDs that begin with "linode/". These distribution images are generally available to + all users. - * Requires an `image` be supplied. - * 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. - tags: - - Linode Instances - operationId: rebuildLinodeInstance - x-linode-cli-action: rebuild + * **Private** Images have IDs that begin with "private/". These Images are Account-specific and only + accessible to Users with appropriate [Grants](/docs/api/account/#users-grants-view). + + * To view a public Image, call this endpoint with or without authentication. To view a private Image, call this endpoint with authentication. + operationId: getImage + x-linode-cli-action: view security: - personalAccessToken: [] - oauth: - - linodes:read_write - requestBody: - description: The requested state your Linode will be rebuilt into. - required: true - content: - application/json: - schema: - type: object - required: - - image - - root_pass - allOf: - - $ref: '#/components/schemas/LinodeRequest' + - images:read_only responses: '200': - description: Rebuild started. + description: A single Image object. content: application/json: schema: - $ref: '#/components/schemas/Linode' + $ref: '#/components/schemas/Image' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell - source: > - curl -H "Content-Type: application/json" \ - -H "Authorization: Bearer $TOKEN" \ - -X POST -d '{ - "image": "linode/debian9", - "root_pass": "aComplexP@ssword", - "authorized_keys": [ - "ssh-rsa AAAA_valid_public_ssh_key_123456785== user@their-computer" - ], - "authorized_users": [ - "myUsername", - "secondaryUsername" - ], - "booted": true, - "stackscript_id": 10079, - "stackscript_data": { - "gh_username": "linode" - } - }' \ - https://api.linode.com/v4/linode/instances/123/rebuild + source: | + # Public Image + curl https://api.linode.com/v4/images/linode/debian11 + + # Private Image + curl -H "Authorization: Bearer $TOKEN" \ + https://api.linode.com/v4/images/private/12345 - lang: CLI source: > - linode-cli linodes rebuild 123 \ - --image "linode/debian9" \ - --root_pass aComplex@Password \ - --authorized_keys "ssh-rsa AAAA_valid_public_ssh_key_123456785== user@their-computer" \ - --authorized_users "myUsername" \ - --authorized_users "secondaryUsername" \ - --booted true \ - --stackscript_id 10079 \ - --stackscript_data '{"gh_username": "linode"}' - /linode/instances/{linodeId}/rescue: - parameters: - - name: linodeId - in: path - description: ID of the Linode to rescue. - required: true - schema: - type: integer - x-linode-cli-command: linodes - post: + linode-cli images view linode/debian9 + put: x-linode-grant: read_write - summary: Linode Boot into Rescue Mode - description: > - Rescue Mode is a safe environment for performing many system recovery - and disk management tasks. Rescue Mode is based on the Finnix recovery - distribution, a self-contained and bootable Linux distribution. You can - also use Rescue Mode for tasks other than disaster recovery, such as - formatting disks to use different filesystems, copying data between - disks, and downloading files from a disk via SSH and SFTP. - - * Note that "sdh" is reserved and unavailable during rescue. tags: - - Linode Instances - operationId: rescueLinodeInstance - x-linode-cli-action: rescue - security: - - personalAccessToken: [] - - oauth: - - linodes:read_write - requestBody: - description: Optional object of devices to be mounted. - required: false - content: - application/json: - schema: - type: object - properties: - devices: - $ref: '#/components/schemas/RescueDevices' - responses: - '200': - description: Rescue started. - content: - application/json: - schema: - type: object - default: - $ref: '#/components/responses/ErrorResponse' - x-code-samples: - - lang: Shell - source: > - curl -H "Content-Type: application/json" \ - -H "Authorization: Bearer $TOKEN" \ - -X POST -d '{ - "devices": { - "sda": { - "disk_id": 124458, - "volume_id": null - }, - "sdb": { - "disk_id": null, - "volume_id": null - } - } - }' \ - https://api.linode.com/v4/linode/instances/123/rescue - - lang: CLI - source: > - linode-cli linodes rescue 123 \ - --devices.sda.disk_id 124458 - /linode/instances/{linodeId}/resize: - parameters: - - name: linodeId - in: path - description: ID of the Linode to resize. - required: true - schema: - type: integer - x-linode-cli-command: linodes - post: - x-linode-grant: read_write - summary: Linode Resize + - Images + summary: Image Update description: > - Resizes a Linode you have the `read_write` permission to a different - Type. If any actions are currently running or queued, those actions must - be completed first before you can initiate a resize. Additionally, the - following criteria must be met in order to resize a Linode: - - * The Linode must not have a pending migration. - * Your Account cannot have an outstanding balance. - * The Linode must not have more disk allocation than the new Type allows. - * In that situation, you must first delete or resize the disk to be smaller. - tags: - - Linode Instances - operationId: resizeLinodeInstance - x-linode-cli-action: resize + Updates a private Image that you have permission to + `read_write`. + operationId: updateImage + x-linode-cli-action: update security: - personalAccessToken: [] - oauth: - - linodes:read_write + - images:read_write requestBody: description: > - The Type your current Linode will resize to, and whether to attempt - to automatically resize the Linode's disks. + The fields to update. required: true content: application/json: schema: - type: object - required: - - type - properties: - type: - type: string - description: The ID representing the Linode Type. - example: g6-standard-2 - x-linode-cli-display: 1 - allow_auto_disk_resize: - type: boolean - description: > - Automatically resize disks when resizing a Linode. - When resizing down to a smaller plan your Linode's - data must fit within the smaller disk size. - example: true - default: true + $ref: '#/components/schemas/Image' responses: '200': - description: Resize started. + description: The updated image. content: application/json: schema: - type: object + $ref: '#/components/schemas/Image' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: @@ -6770,40 +6600,36 @@ paths: source: > curl -H "Content-Type: application/json" \ -H "Authorization: Bearer $TOKEN" \ - -X POST -d '{ - "type": "g6-standard-2" + -X PUT -d '{ + "label": "My gold-master image", + "description": "The detailed description of my Image." }' \ - https://api.linode.com/v4/linode/instances/123/resize + https://api.linode.com/v4/images/private/12345 - lang: CLI source: > - linode-cli linodes resize 123 \ - --type g6-standard-2 - /linode/instances/{linodeId}/shutdown: - parameters: - - name: linodeId - in: path - description: ID of the Linode to shutdown. - required: true - schema: - type: integer - x-linode-cli-command: linodes - post: + linode-cli images update private/12345 \ + --label "My gold-master image" \ + --description "The detailed description \ + of my Image." + delete: x-linode-grant: read_write - summary: Linode Shut Down - description: > - Shuts down a Linode you have permission to modify. If any actions are currently running or - queued, those actions must be completed first before you can initiate a shutdown. tags: - - Linode Instances - operationId: shutdownLinodeInstance - x-linode-cli-action: shutdown + - Images + summary: Image Delete + description: | + Deletes a private Image you have permission to `read_write`. + + + **Deleting an Image is a destructive action and cannot be undone.** + operationId: deleteImage + x-linode-cli-action: delete security: - personalAccessToken: [] - oauth: - - linodes:read_write + - images:read_write responses: '200': - description: Shutdown started. + description: Delete successful content: application/json: schema: @@ -6813,371 +6639,534 @@ paths: x-code-samples: - lang: Shell source: > - curl -H "Content-Type: application/json" \ - -H "Authorization: Bearer $TOKEN" \ - -X POST \ - https://api.linode.com/v4/linode/instances/123/shutdown + curl -H "Authorization: Bearer $TOKEN" \ + -X DELETE \ + https://api.linode.com/v4/images/private/12345 - lang: CLI source: > - linode-cli linodes shutdown 123 - /linode/instances/{linodeId}/transfer: - parameters: - - name: linodeId - in: path - description: ID of the Linode to look up. - required: true - schema: - type: integer + linode-cli images delete 12345 + /linode/instances: x-linode-cli-command: linodes get: x-linode-grant: read_only + parameters: + - $ref: '#/components/parameters/pageOffset' + - $ref: '#/components/parameters/pageSize' + summary: Linodes List + description: > + Returns a paginated list of Linodes you have permission to view. tags: - Linode Instances - summary: Network Transfer View - description: > - Returns a Linode's network transfer pool statistics for the current month. - operationId: getLinodeTransfer - x-linode-cli-action: transfer-view + operationId: getLinodeInstances + x-linode-cli-action: list security: - personalAccessToken: [] - oauth: - linodes:read_only responses: '200': - description: A collection of the specified Linode's network transfer statistics. + description: Returns an array of all Linodes on your Account. content: application/json: schema: + type: object properties: - used: - type: integer - description: > - The amount of network transfer used by this Linode, in bytes, for the current month's billing cycle. - example: 22956600198 - readOnly: true - quota: - type: integer - description: > - The amount of network transfer this Linode adds to your transfer pool, in GB, for the current month's billing cycle. - example: 2000 - readOnly: true - billable: - type: integer - description: > - The amount of network transfer this Linode has used, in GB, past your monthly quota. - example: 0 - readOnly: true + data: + type: array + items: + $ref: '#/components/schemas/Linode' + page: + $ref: '#/components/schemas/PaginationEnvelope/properties/page' + pages: + $ref: '#/components/schemas/PaginationEnvelope/properties/pages' + results: + $ref: '#/components/schemas/PaginationEnvelope/properties/results' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > curl -H "Authorization: Bearer $TOKEN" \ - https://api.linode.com/v4/linode/instances/123/transfer + https://api.linode.com/v4/linode/instances - lang: CLI source: > - linode-cli linodes transfer-view 123 - /linode/instances/{linodeId}/transfer/{year}/{month}: - parameters: - - name: linodeId - in: path - description: ID of the Linode to look up. - required: true - schema: - type: integer - - name: year - in: path - description: Numeric value representing the year to look up. - required: true - schema: - type: integer - minimum: 2000 - maximum: 2037 - - name: month - in: path - description: Numeric value representing the month to look up. - required: true - schema: - type: integer - minimum: 1 - maximum: 12 - x-linode-cli-command: linodes - get: - x-linode-grant: read_only + linode-cli linodes list + post: + x-linode-charge: true + x-linode-grant: add_linodes + summary: Linode Create + description: | + Creates a Linode Instance on your Account. In order for this + request to complete successfully, your User must have the `add_linodes` grant. Creating a + new Linode will incur a charge on your Account. + + Linodes can be created using one of the available Types. See + 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, 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, + see [Sending Email on Linode](/docs/email/running-a-mail-server/#sending-email-on-linode). + + Linodes can be created in a number of ways: + + * 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 SSH Key Add ([POST /profile/sshkeys](/docs/api/profile/#ssh-key-add)) for more information. + + * Using a StackScript. + * 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 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 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. + * The Disks and Config will match that of the Linode that was backed up. + * The `root_pass` will match that of the Linode that was backed up. + + * Attached to a private VLAN. + * Review the `interfaces` property of the [Request Body Schema](/docs/api/linode-instances/#linode-create__request-body-schema) for details. + * For more information, see our guide on [Getting Started with VLANs](/docs/guides/getting-started-with-vlans/). + + * Create an empty Linode. + * The Linode will remain `offline` and must be manually started. + * 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. + + **Important**: You must be an unrestricted User in order to add or modify + tags on Linodes. tags: - Linode Instances - summary: Network Transfer View (year/month) - description: > - Returns a Linode's network transfer statistics for a specific month. The year/month - values must be either a date in the past, or the current month. - operationId: getLinodeTransferByYearMonth - x-linode-cli-skip: true - x-linode-cli-action: transfer-month + operationId: createLinodeInstance + x-linode-cli-action: create security: - personalAccessToken: [] - oauth: - - linodes:read_only + - linodes:read_write + requestBody: + description: The requested initial state of a new Linode. + required: true + x-linode-cli-allowed-defaults: + - region + - image + - type + content: + application/json: + schema: + required: + - type + - region + type: object + allOf: + - $ref: '#/components/schemas/LinodeRequest' + - properties: + backup_id: + type: integer + example: 1234 + description: | + A Backup ID from another Linode's available backups. Your User must have + `read_write` access to that Linode, the Backup must have a `status` of + `successful`, and the Linode must be deployed to the same `region` as the Backup. + See [GET /linode/instances/{linodeId}/backups](/docs/api/linode-instances/#backups-list) + for a Linode's available backups. + + This field and the `image` field are mutually exclusive. + backups_enabled: + type: boolean + description: | + If this field is set to `true`, the created Linode will automatically be + enrolled in the Linode Backup service. This will incur an additional charge. + The cost for the Backup service is dependent on the Type of Linode deployed. + + This option is always treated as `true` if the account-wide `backups_enabled` + setting is `true`. See [account settings](/docs/api/account/#account-settings-view) + for more information. + + Backup pricing is included in the response from [/linodes/types](/docs/api/linode-types/#types-list) + swap_size: + type: integer + example: 512 + description: > + When deploying from an Image, this field is optional, otherwise it is ignored. + This is used to set the swap disk size for the newly-created Linode. + default: 512 + type: + type: string + description: > + The [Linode Type](/docs/api/linode-types/#types-list) of the Linode + you are creating. + example: g6-standard-2 + region: + type: string + description: > + The [Region](/docs/api/regions/#regions-list) where the Linode + will be located. + example: us-east + label: + $ref: '#/components/schemas/Linode/properties/label' + tags: + $ref: '#/components/schemas/Linode/properties/tags' + group: + $ref: '#/components/schemas/Linode/properties/group' + private_ip: + type: boolean + description: > + If true, the created Linode will have private networking enabled and assigned a private IPv4 address. + example: true + interfaces: + $ref: '#/components/schemas/LinodeConfigInterfaces' responses: '200': description: > - A collection of the specified Linode's network transfer statistics for the requested - month. + A new Linode is being created. content: application/json: schema: - properties: - bytes_in: - type: integer - description: > - The amount of inbound public network traffic received by this Linode, in - bytes, for a specific year/month. - example: 30471077120 - readOnly: true - bytes_out: - type: integer - description: > - The amount of outbound public network traffic sent by this Linode, in bytes, - for a specific year/month. - example: 22956600198 - readOnly: true - bytes_total: - type: integer - description: > - The total amount of public network traffic sent and received by this Linode, - in bytes, for a specific year/month. - example: 53427677318 - readOnly: true + $ref: '#/components/schemas/Linode' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > - curl -H "Authorization: Bearer $TOKEN" \ - https://api.linode.com/v4/linode/instances/123/transfer/2018/01 - /linode/instances/{linodeId}/stats: + curl -H "Content-Type: application/json" \ + -H "Authorization: Bearer $TOKEN" \ + -X POST -d '{ + "backup_id": 1234, + "backups_enabled": true, + "swap_size": 512, + "image": "linode/debian9", + "root_pass": "aComplexP@ssword", + "stackscript_id": 10079, + "stackscript_data": { + "gh_username": "linode" + }, + "interfaces": [ + { + "purpose": "public", + "label": "", + "ipam_address": "" + }, + { + "purpose": "vlan", + "label": "vlan-1", + "ipam_address": "10.0.0.1/24" + } + ], + "authorized_keys": [ + "ssh-rsa AAAA_valid_public_ssh_key_123456785== user@their-computer" + ], + "authorized_users": [ + "myUser", + "secondaryUser" + ], + "booted": true, + "label": "linode123", + "type": "g6-standard-2", + "region": "us-east", + "group": "Linode-Group" + }' \ + https://api.linode.com/v4/linode/instances + - lang: CLI + source: > + linode-cli linodes create \ + --label linode123 \ + --root_pass aComplex@Password \ + --booted true \ + --stackscript_id 10079 \ + --stackscript_data '{"gh_username": "linode"}' \ + --region us-east \ + --type g6-standard-2 \ + --authorized_keys "ssh-rsa AAAA_valid_public_ssh_key_123456785== user@their-computer" + --authorized_users "myUser" + --authorized_users "secondaryUser" + /linode/instances/{linodeId}: parameters: - name: linodeId in: path - description: ID of the Linode to look up. + description: ID of the Linode to look up required: true schema: type: integer x-linode-cli-command: linodes get: + x-linode-grant: read_only tags: - Linode Instances - summary: Linode Statistics View - description: > - Returns CPU, IO, IPv4, and IPv6 statistics for your Linode - for the past 24 hours. - operationId: getLinodeStats - x-linode-cli-skip: true - x-linode-cli-action: stats + summary: Linode View + description: Get a specific Linode by ID. + operationId: getLinodeInstance + x-linode-cli-action: view security: - personalAccessToken: [] - oauth: - linodes:read_only responses: '200': - description: The Linode's stats for the past 24 hours. + description: Returns a single Linode object. content: application/json: schema: - $ref: '#/components/schemas/LinodeStats' + $ref: '#/components/schemas/Linode' + links: + boot: + $ref: '#/components/links/bootLinode' + reboot: + $ref: '#/components/links/rebootLinode' + shutdown: + $ref: '#/components/links/shutdownLinode' + update: + $ref: '#/components/links/updateLinode' + delete: + $ref: '#/components/links/deleteLinode' + rebuild: + $ref: '#/components/links/rebuildLinode' + mutate: + $ref: '#/components/links/mutateLinode' + resize: + $ref: '#/components/links/resizeLinode' + rescue: + $ref: '#/components/links/rescueLinode' + clone: + $ref: '#/components/links/cloneLinode' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > curl -H "Authorization: Bearer $TOKEN" \ - https://api.linode.com/v4/linode/instances/123/stats - /linode/instances/{linodeId}/stats/{year}/{month}: - parameters: - - name: linodeId - in: path - description: ID of the Linode to look up. - required: true - schema: - type: integer - - name: year - in: path - description: Numeric value representing the year to look up. - required: true - schema: - type: integer - - name: month - in: path - description: Numeric value representing the month to look up. - required: true - schema: - type: integer - minimum: 1 - maximum: 12 - x-linode-cli-command: linodes - get: + https://api.linode.com/v4/linode/instances/123 + - lang: CLI + source: > + linode-cli linodes view 123 + put: + x-linode-grant: read_write tags: - Linode Instances - summary: Statistics View (year/month) + summary: Linode Update description: > - Returns statistics for a specific month. The year/month - values must be either a date in the past, or the current month. If the - current month, statistics will be retrieved for the past 30 days. - operationId: getLinodeStatsByYearMonth - x-linode-cli-skip: true - x-linode-cli-action: stats-month + Updates a Linode that you have permission to `read_write`. + + + **Important**: You must be an unrestricted User in order to add or modify + tags on Linodes. + operationId: updateLinodeInstance + x-linode-cli-action: update security: - personalAccessToken: [] - oauth: - - linodes:read_only + - linodes:read_write + requestBody: + description: > + Any field that is not marked as `readOnly` may be updated. Fields that are marked + `readOnly` will be ignored. If any updated field fails to pass validation, the Linode will + not be updated. + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/Linode' responses: '200': - description: The Linode's statistics for the requested period. + description: The updated Linode. content: application/json: schema: - $ref: '#/components/schemas/LinodeStats' + $ref: '#/components/schemas/Linode' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > - curl -H "Authorization: Bearer $TOKEN" \ - https://api.linode.com/v4/linode/instances/123/stats/2018/01 - /linode/instances/{linodeId}/volumes: - parameters: - - name: linodeId - in: path - description: ID of the Linode to look up. - required: true - schema: - type: integer - x-linode-cli-command: linodes - get: - parameters: - - $ref: '#/components/parameters/pageOffset' - - $ref: '#/components/parameters/pageSize' + curl -H "Content-Type: application/json" \ + -H "Authorization: Bearer $TOKEN" \ + -X PUT -d '{ + "label": "linode123", + "group": "Linode-Group", + "alerts": { + "cpu": 180, + "network_in": 10, + "network_out": 10, + "transfer_quota": 80, + "io": 10000 + }, + "backups": { + "schedule": { + "day": "Saturday", + "window": "W22" + } + } + }' \ + https://api.linode.com/v4/linode/instances/123 + - lang: CLI + source: > + linode-cli linodes update 7833080 \ + --label linode123 \ + --backups.schedule.day "Saturday" \ + --backups.schedule.window "W22" \ + --alerts.cpu 180 \ + --alerts.network_in 10 \ + --alerts.network_out 10 \ + --alerts.transfer_quota 80 \ + --alerts.io 10000 + delete: + x-linode-grant: read_write tags: - Linode Instances - summary: Linode's Volumes List - description: > - View Block Storage Volumes attached to this Linode. - operationId: getLinodeVolumes - x-linode-cli-action: volumes + summary: Linode Delete + description: | + Deletes a Linode you have permission to `read_write`. + + **Deleting a Linode is a destructive action and cannot be undone.** + + Additionally, deleting a Linode: + + * Gives up any IP addresses the Linode was assigned. + * Deletes all Disks, Backups, Configs, etc. + * Stops billing for the Linode and its associated services. You will be billed for time used + within the billing period the Linode was active. + + Linodes that are in the process of [cloning](/docs/api/linode-instances/#linode-clone) or [backup restoration](/docs/api/linode-instances/#backup-restore) cannot be deleted. + operationId: deleteLinodeInstance + x-linode-cli-action: delete security: - personalAccessToken: [] - oauth: - - linodes:read_only + - linodes:read_write responses: '200': - description: > - Returns an array of Block Storage Volumes attached to this Linode. + description: Delete successful content: application/json: schema: type: object - properties: - data: - type: array - items: - $ref: '#/components/schemas/Volume' - page: - $ref: '#/components/schemas/PaginationEnvelope/properties/page' - pages: - $ref: '#/components/schemas/PaginationEnvelope/properties/pages' - results: - $ref: '#/components/schemas/PaginationEnvelope/properties/results' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > curl -H "Authorization: Bearer $TOKEN" \ - https://api.linode.com/v4/linode/instances/123/volumes + -X DELETE \ + https://api.linode.com/v4/linode/instances/123 - lang: CLI source: > - linode-cli linode volumes 123 - /linode/stackscripts: - x-linode-cli-command: stackscripts + linode-cli linodes delete 123 + /linode/instances/{linodeId}/backups: + parameters: + - name: linodeId + in: path + description: The ID of the Linode the backups belong to. + required: true + schema: + type: integer + x-linode-cli-command: linodes get: x-linode-grant: read_only - parameters: - - $ref: '#/components/parameters/pageOffset' - - $ref: '#/components/parameters/pageSize' - tags: - - StackScripts - summary: StackScripts List + summary: Backups List description: > - If the request is not authenticated, only public StackScripts are returned. - - - For more information on StackScripts, please read our [StackScripts guides](/docs/platform/stackscripts/). - operationId: getStackScripts - x-linode-cli-action: list + Returns information about this Linode's available backups. + tags: + - Linode Instances + operationId: getBackups + x-linode-cli-action: backups-list security: - personalAccessToken: [] - oauth: - - stackscripts:read_only + - linodes:read_only responses: '200': - description: > - A list of StackScripts available to the User, including private - StackScripts owned by the User if the request is authenticated. + description: A collection of the specified Linode's available backups. content: application/json: + x-linode-cli-rows: + - automatic + - snapshot.current + - snapshot.in_progress + x-linode-cli-use-schema: + $ref: '#/components/schemas/Backup' schema: type: object properties: - data: + automatic: type: array items: - $ref: '#/components/schemas/StackScript' - page: - $ref: '#/components/schemas/PaginationEnvelope/properties/page' - pages: - $ref: '#/components/schemas/PaginationEnvelope/properties/pages' - results: - $ref: '#/components/schemas/PaginationEnvelope/properties/results' + allOf: + - $ref: '#/components/schemas/Backup' + - properties: + type: + type: string + example: automatic + snapshot: + type: object + properties: + in_progress: + $ref: '#/components/schemas/Backup' + current: + $ref: '#/components/schemas/Backup' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > - curl https://api.linode.com/v4/linode/stackscripts + curl -H "Authorization: Bearer $TOKEN" \ + https://api.linode.com/v4/linode/instances/123/backups - lang: CLI source: > - linode-cli stackscripts list + linode-cli linodes backups-list 123 post: - x-linode-grant: add_stackscripts + x-linode-grant: read_write + summary: Snapshot Create + description: | + Creates a snapshot Backup of a Linode. + + **Important:** If you already have a snapshot of this Linode, this is a destructive + action. The previous snapshot will be deleted. tags: - - StackScripts - summary: StackScript Create - description: > - Creates a StackScript in your Account. - operationId: addStackScript - x-linode-cli-action: create + - Linode Instances + operationId: createSnapshot + x-linode-cli-action: snapshot security: - personalAccessToken: [] - oauth: - - stackscripts:read_write + - linodes:read_write requestBody: - description: The properties to set for the new StackScript. required: true content: application/json: schema: required: - - script - label - - images - allOf: - - $ref: '#/components/schemas/StackScript' + type: object + properties: + label: + type: string + minLength: 1 + maxLength: 255 + description: The label for the new snapshot. + example: SnapshotLabel responses: '200': - description: StackScript successfully created. + description: Snapshot request successful. content: application/json: schema: - $ref: '#/components/schemas/StackScript' + $ref: '#/components/schemas/Backup' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: @@ -7186,95 +7175,83 @@ paths: curl -H "Content-Type: application/json" \ -H "Authorization: Bearer $TOKEN" \ -X POST -d '{ - "label": "a-stackscript", - "description": "This StackScript installs and configures MySQL", - "images": [ - "linode/debian9", - "linode/debian8" - ], - "is_public": true, - "rev_note": "Set up MySQL", - "script": "#!/bin/bash" + "label": "MyNewSnapshot" }' \ - https://api.linode.com/v4/linode/stackscripts + https://api.linode.com/v4/linode/instances/123/backups - lang: CLI source: > - linode-cli stackscripts create \ - --label a-stackscript \ - --description "This StackScript install and configures MySQL" \ - --images "linode/debian9" \ - --images "linode/debian8" \ - --is_public true \ - --rev_note "Set up MySQL" \ - --script '#!/bin/bash' - /linode/stackscripts/{stackscriptId}: + linode-cli linodes snapshot 123 + /linode/instances/{linodeId}/backups/cancel: parameters: - - name: stackscriptId + - name: linodeId in: path - description: The ID of the StackScript to look up. + description: The ID of the Linode to cancel backup service for. required: true schema: - type: string - x-linode-cli-command: stackscripts - get: - x-linode-grant: read_only - tags: - - StackScripts - summary: StackScript View + type: integer + x-linode-cli-command: linodes + post: + x-linode-grant: read_write + summary: Backups Cancel description: > - Returns all of the information about a specified - StackScript, including the contents of the script. - operationId: getStackScript - x-linode-cli-action: view + Cancels the Backup service on the given Linode. Deletes all of this Linode's + existing backups forever. + tags: + - Linode Instances + operationId: cancelBackups + x-linode-cli-action: backups-cancel security: - personalAccessToken: [] - oauth: - - stackscripts:read_only + - linodes:read_write responses: '200': - description: A single StackScript. + description: Backup service was cancelled for the specified Linode. content: application/json: schema: - $ref: '#/components/schemas/StackScript' + type: object default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > - curl https://api.linode.com/v4/linode/stackscripts/10079 + curl -H "Content-Type: application/json" \ + -H "Authorization: Bearer $TOKEN" \ + -X POST \ + https://api.linode.com/v4/linode/instances/123/backups/cancel - lang: CLI source: > - linode-cli stackscripts view 10079 - put: + linode-cli linodes backups-cancel 123 + /linode/instances/{linodeId}/backups/enable: + parameters: + - name: linodeId + in: path + description: The ID of the Linode to enable backup service for. + required: true + schema: + type: integer + x-linode-cli-command: linodes + post: x-linode-grant: read_write - tags: - - StackScripts - summary: StackScript Update + summary: Backups Enable description: > - Updates a StackScript. - - - **Once a StackScript is made public, it cannot be made private.** - operationId: updateStackScript - x-linode-cli-action: update + Enables backups for the specified Linode. + tags: + - Linode Instances + operationId: enableBackups + x-linode-cli-action: backups-enable security: - personalAccessToken: [] - oauth: - - stackscripts:read_write - requestBody: - description: The fields to update. - content: - application/json: - schema: - $ref: '#/components/schemas/StackScript' + - linodes:read_write responses: '200': - description: StackScript was successfully modified. + description: Backup service was enabled. content: application/json: schema: - $ref: '#/components/schemas/StackScript' + type: object default: $ref: '#/components/responses/ErrorResponse' x-code-samples: @@ -7282,629 +7259,660 @@ paths: source: > curl -H "Content-Type: application/json" \ -H "Authorization: Bearer $TOKEN" \ - -X PUT -d '{ - "label": "a-stackscript", - "description": "This StackScript installs and configures MySQL", - "images": [ - "linode/debian9", - "linode/debian8" - ], - "is_public": true, - "rev_note": "Set up MySQL", - "script": "#!/bin/bash" - }' \ - https://api.linode.com/v4/linode/stackscripts/10079 + -X POST \ + https://api.linode.com/v4/linode/instances/123/backups/enable - lang: CLI source: > - linode-cli stackscripts update 10079 \ - --label a-stackscript \ - --description "This StackScript installs \ - and configures MySQL" \ - --images "linode/debian9" \ - --images "linode/debian8" \ - --is_public true \ - --rev_note "Set up MySQL" \ - --script '#!/bin/bash' - delete: - x-linode-grant: read_write - tags: - - StackScripts - summary: StackScript Delete + linode-cli linodes backups-enable 123 + /linode/instances/{linodeId}/backups/{backupId}: + parameters: + - name: linodeId + in: path + description: The ID of the Linode the Backup belongs to. + required: true + schema: + type: integer + - name: backupId + in: path + description: The ID of the Backup to look up. + required: true + schema: + type: integer + x-linode-cli-command: linodes + get: + x-linode-grant: read_only + summary: Backup View description: > - Deletes a private StackScript you have permission to `read_write`. You cannot delete a public StackScript. - operationId: deleteStackScript - x-linode-cli-action: delete + Returns information about a Backup. + tags: + - Linode Instances + operationId: getBackup + x-linode-cli-action: backup-view security: - personalAccessToken: [] - oauth: - - stackscripts:read_write + - linodes:read_only responses: '200': - description: StackScript was deleted. + description: A single Backup. content: application/json: schema: - type: object + $ref: '#/components/schemas/Backup' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > curl -H "Authorization: Bearer $TOKEN" \ - -X DELETE \ - https://api.linode.com/v4/linode/stackscripts/10079 + https://api.linode.com/v4/linode/instances/123/backups/123456 - lang: CLI source: > - linode-cli stackscripts delete 10079 - /linode/types: + linode-cli linodes backup-view 123 123456 + /linode/instances/{linodeId}/backups/{backupId}/restore: + parameters: + - name: linodeId + in: path + description: The ID of the Linode that the Backup belongs to. + required: true + schema: + type: integer + - name: backupId + in: path + description: The ID of the Backup to restore. + required: true + schema: + type: integer x-linode-cli-command: linodes - get: - tags: - - Linode Types - summary: Types List + post: + x-linode-grant: read_write + summary: Backup Restore description: > - Returns collection of Linode Types, including pricing and - specifications for each Type. These are used when - [creating](/docs/api/linode-instances/#linode-create) - or [resizing](/docs/api/linode-instances/#linode-resize) - Linodes. - x-linode-redoc-load-ids: true - operationId: getLinodeTypes - x-linode-cli-action: types + Restores a Linode's Backup to the specified Linode. + tags: + - Linode Instances + operationId: restoreBackup + x-linode-cli-action: backup-restore + security: + - personalAccessToken: [] + - oauth: + - linodes:read_write + requestBody: + description: Parameters to provide when restoring the Backup. + required: true + content: + application/json: + schema: + type: object + required: + - linode_id + properties: + linode_id: + type: integer + description: > + The ID of the Linode to restore a Backup to. + example: 234 + overwrite: + type: boolean + description: | + If True, deletes all Disks and Configs on the target Linode + before restoring. + + If False, and the Disk image size is larger than the available + space on the Linode, an error message indicating insufficient + space is returned. + example: true responses: '200': - description: A collection of Linode Types. + description: Restore from Backup was initiated. content: application/json: schema: type: object - properties: - data: - type: array - items: - $ref: '#/components/schemas/LinodeType' - page: - $ref: '#/components/schemas/PaginationEnvelope/properties/page' - pages: - $ref: '#/components/schemas/PaginationEnvelope/properties/pages' - results: - $ref: '#/components/schemas/PaginationEnvelope/properties/results' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > - curl https://api.linode.com/v4/linode/types + curl -H "Content-Type: application/json" \ + -H "Authorization: Bearer $TOKEN" \ + -X POST -d '{ + "linode_id": 234, + "overwrite": true + }' \ + https://api.linode.com/v4/linode/instances/123/backups/123456/restore - lang: CLI source: > - linode-cli linodes types - /linode/types/{typeId}: + linode-cli linodes backup-restore 123 123456 \ + --linode_id 234 \ + --overwrite true + /linode/instances/{linodeId}/boot: parameters: - - name: typeId + - name: linodeId in: path - description: The ID of the Linode Type to look up. + description: The ID of the Linode to boot. required: true schema: - type: string + type: integer x-linode-cli-command: linodes - get: + post: + x-linode-grant: read_write + summary: Linode Boot + description: | + Boots a Linode you have permission to modify. If no parameters are given, a Config profile + will be chosen for this boot based on the following criteria: + + * If there is only one Config profile for this Linode, it will be used. + * If there is more than one Config profile, the last booted config will be used. + * If there is more than one Config profile and none were the last to be booted (because the + Linode was never booted or the last booted config was deleted) an error will be returned. tags: - - Linode Types - summary: Type View - description: > - Returns information about a specific Linode Type, including pricing and - specifications. This is used when - [creating](/docs/api/linode-instances/#linode-create) - or [resizing](/docs/api/linode-instances/#linode-resize) - Linodes. - operationId: getLinodeType - x-linode-cli-action: type-view - responses: - '200': - description: A single Linode Type. - content: - application/json: - schema: - $ref: '#/components/schemas/LinodeType' - default: - $ref: '#/components/responses/ErrorResponse' - x-code-samples: - - lang: Shell - source: > - curl https://api.linode.com/v4/linode/types/g6-standard-2 - - lang: CLI - source: > - linode-cli linodes type-view g6-standard-2 - /lke/clusters: - x-linode-cli-command: lke - get: - operationId: getLKEClusters - x-linode-cli-action: clusters-list - x-linode-grant: read_only + - Linode Instances + operationId: bootLinodeInstance + x-linode-cli-action: boot security: - personalAccessToken: [] - oauth: - - lke:read_only - tags: - - Linode Kubernetes Engine (LKE) - summary: Kubernetes Clusters List - description: > - Lists current Kubernetes clusters available on your account. + - linodes:read_write + requestBody: + description: Optional configuration to boot into (see above). + required: false + content: + application/json: + schema: + type: object + properties: + config_id: + type: integer + description: > + The Linode Config ID to boot into. + example: null responses: '200': - description: Returns an array of all Kubernetes clusters on your Account. + description: Boot started. content: application/json: schema: type: object - properties: - data: - type: array - items: - $ref: '#/components/schemas/LKECluster' - page: - $ref: '#/components/schemas/PaginationEnvelope/properties/page' - pages: - $ref: '#/components/schemas/PaginationEnvelope/properties/pages' - results: - $ref: '#/components/schemas/PaginationEnvelope/properties/results' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > - curl -H "Authorization: Bearer $TOKEN" \ - https://api.linode.com/v4/lke/clusters + curl -H "Content-Type: application/json" \ + -H "Authorization: Bearer $TOKEN" \ + -X POST \ + https://api.linode.com/v4/linode/instances/123/boot - lang: CLI source: > - linode-cli lke clusters-list + linode-cli linodes boot 123 + /linode/instances/{linodeId}/clone: + parameters: + - name: linodeId + in: path + description: ID of the Linode to clone. + required: true + schema: + type: integer + x-linode-cli-command: linodes post: - operationId: createLKECluster - x-linode-cli-action: cluster-create x-linode-charge: true - x-linode-grant: add_clusters + x-linode-grant: add_linodes + summary: Linode Clone + description: | + You can clone your Linode's existing Disks or Configuration profiles to + another Linode on your Account. In order for this request to complete + successfully, your User must have the `add_linodes` grant. Cloning to a + new Linode will incur a charge on your Account. + + If cloning to an existing Linode, any actions currently running or + queued must be completed first before you can clone to it. + + Up to five clone operations from any given source Linode can be run concurrently. + If more concurrent clones are attempted, an HTTP 400 error will be + returned by this endpoint. + + Any [tags](/docs/api/tags/#tags-list) existing on the source Linode will be cloned to the target Linode. + tags: + - Linode Instances + operationId: cloneLinodeInstance + x-linode-cli-action: clone security: - personalAccessToken: [] - oauth: - - lke:read_write - tags: - - Linode Kubernetes Engine (LKE) - summary: Kubernetes Cluster Create - description: | - Creates a Kubernetes cluster. The Kubernetes cluster will be created - asynchronously. You can use the events system to determine when the - Kubernetes cluster is ready to use. Please note that it often takes 2-5 minutes before the - [Kubernetes API server endpoint](/docs/api/linode-kubernetes-engine-lke/#kubernetes-api-endpoints-list) and - the [Kubeconfig file](/docs/api/linode-kubernetes-engine-lke/#kubeconfig-view) for the new cluster - are ready. + - linodes:read_write requestBody: - description: Configuration for the Kubernetes cluster + description: The requested state your Linode will be cloned into. + required: true x-linode-cli-allowed-defaults: - region + - type content: application/json: schema: type: object - required: - - label - - region - - k8s_version - - node_pools properties: - label: - $ref: '#/components/schemas/LKECluster/properties/label' region: - $ref: '#/components/schemas/LKECluster/properties/region' - k8s_version: - $ref: '#/components/schemas/LKECluster/properties/k8s_version' - tags: - $ref: '#/components/schemas/LKECluster/properties/tags' - node_pools: + type: string + description: > + This is the Region where the Linode will be deployed. + + To view all available Regions you can deploy to see + [/regions](/docs/api/regions/#regions-list). + + * Region can only be provided and is required when cloning to a new Linode. + example: us-east + type: + type: string + description: | + A Linode's Type determines what resources are available to + it, including disk space, memory, and virtual cpus. The + amounts available to a specific Linode are returned as + `specs` on the Linode object. + + To view all available Linode Types you can deploy with + see [/linode/types](/docs/api/linode-types/#types-list). + + * 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 the target for the clone, + the ID of that Linode. The existing Linode must have enough + resources to accept the clone. + example: 124 + label: + type: string + minLength: 3 + maxLength: 64 + description: > + The label to assign this Linode when cloning to a new Linode. + + * Can only be provided when cloning to a new Linode. + * Defaults to "linode". + example: cloned-linode + group: + deprecated: true + type: string + description: > + A label used to group Linodes for display. Linodes are not + required to have a group. + example: Linode-Group + backups_enabled: + type: boolean + description: | + If this field is set to `true`, the created Linode will + automatically be enrolled in the Linode Backup service. This + will incur an additional charge. Pricing is included in the + response from + [/linodes/types](/docs/api/linode-types/#types-list). + + * Can only be included when cloning to a new Linode. + example: true + disks: type: array - required: - - type - - count - items: - $ref: '#/components/schemas/LKENodePoolRequestBody' - control_plane: - type: object description: > - Defines settings for the Kubernetes Control Plane. Allows for the enabling of High Availability (HA) for Control Plane Components. Enabling High Availability for LKE is an **irreversible** change. - properties: - high_availability: - type: boolean - description: > - Defines whether High Availability is enabled for the Control Plane Components of the cluster. Defaults to `false`. - example: true - responses: - '200': - description: Kubernetes cluster creation has started. - content: - application/json: + An array of disk IDs. + + * If the `disks` parameter **is not provided**, then **no extra disks + will be cloned** from the source Linode. All disks associated + with the configuration profiles specified by the `configs` + parameter will still be cloned. + + * **If an empty array is provided** for the `disks` parameter, then **no extra disks + will be cloned** from the source Linode. All disks associated + with the configuration profiles specified by the `configs` + parameter will still be cloned. + + * **If a non-empty array is provided** for the `disks` parameter, then **the disks + specified in the array will be cloned** from the source Linode, in addition to + any disks associated with the configuration profiles specified by the `configs` + parameter. + items: + type: integer + example: 25674 + configs: + type: array + description: > + An array of configuration profile IDs. + + * If the `configs` parameter **is not provided**, then **all configuration profiles and their associated disks + will be cloned** from the source Linode. Any disks specified by the `disks` + parameter will also be cloned. + + * **If an empty array is provided** for the `configs` parameter, then **no + configuration profiles (nor their associated disks) will be cloned** from + the source Linode. Any disks specified by the `disks` + parameter will still be cloned. + + * **If a non-empty array is provided** for the `configs` parameter, then **the configuration profiles + specified in the array (and their associated disks) will be cloned** from the source Linode. + Any disks specified by the `disks` parameter will also be cloned. + items: + type: integer + example: 23456 + responses: + '200': + description: Clone started. + content: + application/json: schema: - $ref: '#/components/schemas/LKECluster' + $ref: '#/components/schemas/Linode' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > curl -H "Content-Type: application/json" \ - -H "Authorization: Bearer $TOKEN" \ - -X POST -d '{ - "label": "cluster12345", - "region": "us-central", - "k8s_version": "1.21", - "tags": ["ecomm", "blogs"], - "control_plane": { - "high_availability": true - }, - "node_pools": [ - { - "type": "g6-standard-4", - "count": 6, - "autoscaler": { - "enabled": true, - "max": 12, - "min": 3 - } - }, - { - "type": "g6-standard-8", - "count": 3 - } - ] - }' \ - https://api.linode.com/v4/lke/clusters + -H "Authorization: Bearer $TOKEN" \ + -X POST -d '{ + "region": "us-east", + "type": "g6-standard-2", + "linode_id": 124, + "label": "cloned-linode", + "group": "Linode-Group", + "backups_enabled": true, + "disks": [25674], + "configs": [23456] + }' \ + https://api.linode.com/v4/linode/instances/123/clone - lang: CLI source: > - linode-cli lke cluster-create \ - --label cluster12345 \ - --region us-central \ - --k8s_version 1.21 \ - --node_pools.type g6-standard-4 --node_pools.count 6 \ - --node_pools.type g6-standard-8 --node_pools.count 3 \ - --tags ecomm - /lke/clusters/{clusterId}: + linode-cli linodes clone 123 \ + --linode_id 124 \ + --region us-east \ + --type g6-standard-2 \ + --label cloned-linode \ + --backups_enabled true \ + --disks 25674 \ + --configs 23456 + /linode/instances/{linodeId}/configs: parameters: - - name: clusterId + - name: linodeId in: path - description: ID of the Kubernetes cluster to look up. + description: ID of the Linode to look up Configuration profiles for. required: true schema: type: integer - x-linode-cli-command: lke + x-linode-cli-command: linodes get: - operationId: getLKECluster - x-linode-cli-action: cluster-view + parameters: + - $ref: '#/components/parameters/pageOffset' + - $ref: '#/components/parameters/pageSize' + tags: + - Linode Instances + summary: Configuration Profiles List + description: | + Lists Configuration profiles associated with a Linode. + operationId: getLinodeConfigs + x-linode-cli-action: configs-list security: - personalAccessToken: [] - oauth: - - lke:read_only - tags: - - Linode Kubernetes Engine (LKE) - summary: Kubernetes Cluster View - description: > - Get a specific Cluster by ID. + - linodes:read_only responses: '200': - description: Returns a single Kubernetes cluster. + description: > + Returns an array of Configuration profiles associated with this Linode. content: application/json: schema: - $ref: '#/components/schemas/LKECluster' - default: - $ref: '#/components/responses/ErrorResponse' + type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/LinodeConfig' + page: + $ref: '#/components/schemas/PaginationEnvelope/properties/page' + pages: + $ref: '#/components/schemas/PaginationEnvelope/properties/pages' + results: + $ref: '#/components/schemas/PaginationEnvelope/properties/results' x-code-samples: - lang: Shell source: > curl -H "Authorization: Bearer $TOKEN" \ - https://api.linode.com/v4/lke/clusters/12345 + https://api.linode.com/v4/linode/instances/123/configs - lang: CLI - source: - linode-cli lke cluster-view 12345 - put: - operationId: putLKECluster - x-linode-cli-action: cluster-update + source: > + linode-cli linodes configs-list 123 + post: + tags: + - Linode Instances + summary: Configuration Profile Create + description: > + Adds a new Configuration profile to a Linode. + operationId: addLinodeConfig + x-linode-cli-action: config-create security: - personalAccessToken: [] - oauth: - - lke:read_write - tags: - - Linode Kubernetes Engine (LKE) - summary: Kubernetes Cluster Update - description: > - Updates a Kubernetes cluster. + - linodes:read_write requestBody: - description: The fields to update the Kubernetes cluster. + description: > + The parameters to set when creating the Configuration profile. + + This determines which kernel, devices, how much memory, etc. a Linode boots with. + required: true content: application/json: schema: - properties: - label: - $ref: '#/components/schemas/LKECluster/properties/label' - tags: - type: array - items: - type: string - example: - - prod - - monitoring - - ecomm - - blog - description: > - An array of tags applied to the Kubernetes cluster. Tags are for organizational purposes only. - To delete a tag, exclude it from your `tags` array. - k8s_version: - type: string - description: > - The desired Kubernetes version for this Kubernetes cluster in the format of - <major>.<minor>. New and recycled Nodes in this cluster will be installed with the - latest available patch for the Cluster's Kubernetes version. - - - When upgrading the Kubernetes version, only the next latest minor version following the current - version can be deployed. For example, a cluster with Kubernetes version 1.19 can be upgraded to - version 1.20, but not directly to 1.21. - - - The Kubernetes version of a cluster can not be downgraded. - control_plane: - type: object - description: | - Defines settings for the Kubernetes Control Plane. Allows for the enabling of High Availability (HA) for Control Plane Components. - - Enabling High Availability for LKE is an **irreversible** change. - - When upgrading pre-existing LKE clusters to use the HA Control Plane, the following changes will additionally occur: - - - All nodes will be deleted and new nodes will be created to replace them. - - - Any local storage (such as `hostPath` volumes) will be erased. - - - The upgrade process may take several minutes to complete, as nodes will be replaced on a rolling basis. - properties: - high_availability: - type: boolean - description: > - Defines whether High Availability is enabled for the Control Plane Components of the cluster. Defaults to `false`. - example: true + required: + - label + - devices + allOf: + - $ref: '#/components/schemas/LinodeConfig' responses: '200': - description: Returns a single Kubernetes cluster. + description: | + A Configuration profile was created. content: application/json: schema: - properties: - label: - $ref: '#/components/schemas/LKECluster/properties/label' - tags: - type: array - items: - type: string - example: - - prod - - monitoring - - ecomm - - blog - description: > - An array of tags applied to the Kubernetes cluster. Tags are for organizational purposes only. - To delete a tag, exclude it from your `tags` array. - created: - $ref: '#/components/schemas/LKECluster/properties/created' - updated: - $ref: '#/components/schemas/LKECluster/properties/updated' - region: - $ref: '#/components/schemas/LKECluster/properties/region' - k8s_version: - $ref: '#/components/schemas/LKECluster/properties/k8s_version' + $ref: '#/components/schemas/LinodeConfig' + default: + $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > curl -H "Content-Type: application/json" \ - -H "Authorization: Bearer $TOKEN" \ - -X PUT -d '{ - "label": "lkecluster54321" - "tags" : ["ecomm", "blog", "prod", "monitoring"] - "control_plane": { - "high_availability": true - }, - "k8s_version": "1.17" - }' \ - https://api.linode.com/v4/lke/clusters/12345 - - lang: CLI - source: > - linode-cli lke cluster-update 12345 \ - --label lkecluster54321 \ - --tags ecomm \ - --tags blog \ - --tags prod \ - --tags monitoring - delete: - operationId: deleteLKECluster - x-linode-cli-action: cluster-delete - security: - - personalAccessToken: [] - - oauth: - - lke:read_write - tags: - - Linode Kubernetes Engine (LKE) - summary: Kubernetes Cluster Delete - description: | - Deletes a Cluster you have permission to `read_write`. - - **Deleting a Cluster is a destructive action and cannot be undone.** - - Deleting a Cluster: - - Deletes all Linodes in all pools within this Kubernetes cluster - - Deletes all supporting Kubernetes services for this Kubernetes - cluster (API server, etcd, etc) - - Deletes all NodeBalancers created by this Kubernetes cluster - - Does not delete any of the volumes created by this Kubernetes - cluster - responses: - '200': - description: Delete successful - content: - application/json: - schema: - type: object - default: - $ref: '#/components/responses/ErrorResponse' - x-code-samples: - - lang: Shell - source: > - curl -H "Authorization: Bearer $TOKEN" \ - -X DELETE \ - https://api.linode.com/v4/lke/clusters/12345 + -H "Authorization: Bearer $TOKEN" \ + -X POST -d '{ + "kernel": "linode/latest-64bit", + "comments": "This is my main Config", + "memory_limit": 2048, + "run_level": "default", + "virt_mode": "paravirt", + "interfaces": [ + { + "purpose": "public", + "label": "", + "ipam_address": "" + }, + { + "purpose": "vlan", + "label": "vlan-1", + "ipam_address": "10.0.0.1/24" + } + ], + "helpers": { + "updatedb_disabled": true, + "distro": true, + "modules_dep": true, + "network": true, + "devtmpfs_automount": false + }, + "label": "My Config", + "devices": { + "sda": { + "disk_id": 123456, + "volume_id": null + }, + "sdb": { + "disk_id": 123457, + "volume_id": null + } + } + }' \ + https://api.linode.com/v4/linode/instances/123/configs - lang: CLI source: > - linode-cli lke cluster-delete 12345 - /lke/clusters/{clusterId}/pools: + linode-cli linodes config-create 7590910 \ + --label "My Config" \ + --devices.sda.disk_id 123456 \ + --devices.sdb.disk_id 123457 + /linode/instances/{linodeId}/configs/{configId}: parameters: - - name: clusterId + - name: linodeId in: path - description: ID of the Kubernetes cluster to look up. + description: The ID of the Linode whose Configuration profile to look up. required: true schema: type: integer - x-linode-cli-command: lke + - name: configId + in: path + description: The ID of the Configuration profile to look up. + required: true + schema: + type: integer + x-linode-cli-command: linodes get: - operationId: getLKEClusterPools - x-linode-cli-action: pools-list + tags: + - Linode Instances + x-linode-grant: read_only + summary: Configuration Profile View + description: > + Returns information about a specific Configuration profile. + operationId: getLinodeConfig + x-linode-cli-action: config-view security: - personalAccessToken: [] - oauth: - - lke:read_only - tags: - - Linode Kubernetes Engine (LKE) - summary: Node Pools List - description: > - Returns all active Node Pools on a Kubernetes cluster. + - linodes:read_only responses: '200': - description: Returns an array of all Pools in this Kubernetes cluster. + description: A Configuration profile object. content: application/json: - x-linode-cli-nested-list: nodes - x-linode-cli-use-schema: - type: object - properties: - id: - x-linode-cli-display: 1 - type: - x-linode-cli-display: 2 - nodes.id: - x-linode-cli-display: 3 - nodes.instance_id: - x-linode-cli-display: 4 - nodes.status: - x-linode-cli-display: 5 schema: - type: object - properties: - data: - type: array - items: - $ref: '#/components/schemas/LKENodePool' - page: - $ref: '#/components/schemas/PaginationEnvelope/properties/page' - pages: - $ref: '#/components/schemas/PaginationEnvelope/properties/pages' - results: - $ref: '#/components/schemas/PaginationEnvelope/properties/results' + $ref: '#/components/schemas/LinodeConfig' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > curl -H "Authorization: Bearer $TOKEN" \ - https://api.linode.com/v4/lke/clusters/12345/pools + https://api.linode.com/v4/linode/instances/123/configs/23456 - lang: CLI source: > - linode-cli lke pools-list 12345 - post: - operationId: postLKEClusterPools - x-linode-cli-action: pool-create + linode-cli linodes config-view 123 23456 + put: + x-linode-grant: read_write + summary: Configuration Profile Update + description: > + Updates a Configuration profile. + tags: + - Linode Instances + operationId: updateLinodeConfig + x-linode-cli-action: config-update security: - personalAccessToken: [] - oauth: - - lke:read_write - tags: - - Linode Kubernetes Engine (LKE) - summary: Node Pool Create - description: > - Creates a new Node Pool for the designated Kubernetes cluster. + - linodes:read_write requestBody: - description: Configuration for the Node Pool + description: The Configuration profile parameters to modify. required: true content: application/json: schema: - type: object - required: - - type - - count - allOf: - - $ref: '#/components/schemas/LKENodePoolRequestBody' - responses: - '200': - description: Node Pool has been created. - content: - application/json: - schema: - $ref: '#/components/schemas/LKENodePool' - default: - $ref: '#/components/responses/ErrorResponse' + $ref: '#/components/schemas/LinodeConfig' x-code-samples: - lang: Shell source: > curl -H "Content-Type: application/json" \ - -H "Authorization: Bearer $TOKEN" \ - -X POST -d '{ - "type": "g6-standard-4", - "count": 6, - "tags": ["example-tag"], - "autoscaler": { - "enabled": true, - "max": 12, - "min": 3 + -H "Authorization: Bearer $TOKEN" \ + -X PUT -d '{ + "kernel": "linode/latest-64bit", + "comments": "This is my main Config", + "memory_limit": 2048, + "run_level": "default", + "virt_mode": "paravirt", + "interfaces": [ + { + "purpose": "public", + "label": "", + "ipam_address": "" + }, + { + "purpose": "vlan", + "label": "vlan-1", + "ipam_address": "10.0.0.1/24" } - }' \ - https://api.linode.com/v4/lke/clusters/12345/pools + ], + "helpers": { + "updatedb_disabled": true, + "distro": true, + "modules_dep": true, + "network": true, + "devtmpfs_automount": false + }, + "label": "My Config", + "devices": { + "sda": { + "disk_id": 123456, + "volume_id": null + }, + "sdb": { + "disk_id": 123457, + "volume_id": null + } + } + }' \ + https://api.linode.com/v4/linode/instances/123/configs/23456 - lang: CLI source: > - linode-cli lke pool-create 12345 \ - --type g6-standard-4 \ - --count 6 \ - --tags example-tag - /lke/clusters/{clusterId}/recycle: - parameters: - - name: clusterId - in: path - description: ID of the Kubernetes cluster which contains nodes to be recycled. - required: true - schema: - type: integer - x-linode-cli-command: lke - post: - operationId: postLKEClusterRecycle - x-linode-cli-action: cluster-nodes-recycle + linode-cli linodes config-update 123 23456 \ + --kernel "linode/latest-64bit" \ + --comments "This is my main Config" \ + --memory_limit 2048 \ + --run_level default \ + --virt_mode paravirt \ + --helpers.updatedb_disabled true \ + --helpers.distro true \ + --helpers.modules_dep true \ + --helpers.network true \ + --helpers.devtmpfs_automount false \ + --label "My Config" \ + --devices.sda.disk_id 123456 \ + --devices.sdb.disk_id 123457 + responses: + '200': + description: Configuration profile successfully updated. + content: + application/json: + schema: + $ref: '#/components/schemas/LinodeConfig' + default: + $ref: '#/components/responses/ErrorResponse' + delete: + summary: Configuration Profile Delete + description: > + Deletes the specified Configuration profile from the specified Linode. + x-linode-grant: read_write + tags: + - Linode Instances + operationId: deleteLinodeConfig + x-linode-cli-action: config-delete security: - personalAccessToken: [] - oauth: - - lke:read_write - tags: - - Linode Kubernetes Engine (LKE) - summary: Cluster Nodes Recycle - description: | - Recycles all nodes in all pools of a designated Kubernetes Cluster. All Linodes within the Cluster will be deleted - and replaced with new Linodes on a rolling basis, which may take several minutes. Replacement Nodes are - installed with the latest available [patch version](https://github.com/kubernetes/community/blob/master/contributors/design-proposals/release/versioning.md#kubernetes-release-versioning) for the Cluster's current Kubernetes minor release. - - **Any local storage on deleted Linodes (such as "hostPath" and "emptyDir" volumes, or "local" PersistentVolumes) will be erased.** + - linodes:read_write responses: '200': - description: Recycle request succeeded and is in progress. + description: > + Configuration profile successfully deleted. content: application/json: schema: @@ -7914,368 +7922,479 @@ paths: x-code-samples: - lang: Shell source: > - curl -H "Content-Type: application/json" \ - -H "Authorization: Bearer $TOKEN" \ - -X POST \ - https://api.linode.com/v4/lke/clusters/12345/recycle + curl -H "Authorization: Bearer $TOKEN" \ + -X DELETE \ + https://api.linode.com/v4/linode/instances/123/configs/23456 - lang: CLI source: > - linode-cli lke cluster-nodes-recycle 12345 - /lke/clusters/{clusterId}/pools/{poolId}: + linode-cli linodes config-delete 123 23456 + /linode/instances/{linodeId}/disks: parameters: - - name: clusterId - in: path - description: ID of the Kubernetes cluster to look up. - required: true - schema: - type: integer - - name: poolId + - name: linodeId in: path - description: ID of the Pool to look up + description: ID of the Linode to look up. required: true schema: type: integer - x-linode-cli-command: lke + x-linode-cli-command: linodes get: - operationId: getLKENodePool - x-linode-cli-action: pool-view + x-linode-grant: read_only + parameters: + - $ref: '#/components/parameters/pageOffset' + - $ref: '#/components/parameters/pageSize' + tags: + - Linode Instances + summary: Disks List + description: > + View Disk information for Disks associated with this Linode. + operationId: getLinodeDisks + x-linode-cli-action: disks-list security: - personalAccessToken: [] - oauth: - - lke:read_only - tags: - - Linode Kubernetes Engine (LKE) - summary: Node Pool View - description: > - Get a specific Node Pool by ID. + - linodes:read_only responses: '200': - description: Returns the requested Node Pool. + description: Returns a paginated list of disks associated with this Linode. content: application/json: schema: - $ref: '#/components/schemas/LKENodePool' + type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/Disk' + page: + $ref: '#/components/schemas/PaginationEnvelope/properties/page' + pages: + $ref: '#/components/schemas/PaginationEnvelope/properties/pages' + results: + $ref: '#/components/schemas/PaginationEnvelope/properties/results' + default: + $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > curl -H "Authorization: Bearer $TOKEN" \ - https://api.linode.com/v4/lke/clusters/12345/pools/456 + https://api.linode.com/v4/linode/instances/123/disks - lang: CLI source: > - linode-cli lke pool-view 12345 456 - put: - operationId: putLKENodePool - x-linode-cli-action: pool-update - security: - - personalAccessToken: [] - - oauth: - - lke:read_write + linode-cli linodes disks-list 123 + post: tags: - - Linode Kubernetes Engine (LKE) - summary: Node Pool Update + - Linode Instances + summary: Disk Create description: | - Updates a Node Pool's count. + Adds a new Disk to a Linode. - Linodes will be created or deleted to match changes to the Node Pool's count. + * You can optionally create a Disk from an Image or an Empty Disk if no Image is provided with a request. - **Any local storage on deleted Linodes (such as "hostPath" and "emptyDir" volumes, or "local" PersistentVolumes) will be erased.** + * When creating an Empty Disk, providing a `label` is required. + + * 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: + - personalAccessToken: [] + - oauth: + - linodes:read_write requestBody: - description: The fields to update + description: > + The parameters to set when creating the Disk. + required: true content: application/json: schema: - properties: - count: - $ref: '#/components/schemas/LKENodePoolRequestBody/properties/count' + required: + - size + allOf: + - $ref: '#/components/schemas/DiskRequest' responses: '200': - description: Node Pool was successfully modified. + description: Disk created. content: application/json: schema: - $ref: '#/components/schemas/LKENodePool' + $ref: '#/components/schemas/Disk' + default: + $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > curl -H "Content-Type: application/json" \ - -H "Authorization: Bearer $TOKEN" \ - -X PUT -d '{ - "count": 6 - }' \ - https://api.linode.com/v4/lke/clusters/12345/pools/456 + -H "Authorization: Bearer $TOKEN" \ + -X POST -d '{ + "label": "Debian 9 Disk", + "image": "linode/debian9", + "size": 1300, + "authorized_keys": [ + "ssh-rsa AAAA_valid_public_ssh_key_123456785== user@their-computer" + ], + "authorized_users": [ + "myUser", + "secondaryUser" + ], + "root_pass": "aComplexP@ssword", + "stackscript_id": 10079, + "stackscript_data": { + "gh_username": "linode" + } + }' \ + https://api.linode.com/v4/linode/instances/123/disks - lang: CLI source: > - linode-cli lke pool-update 12345 456 \ - --count 6 \ - delete: - operationId: deleteLKENodePool - x-linode-cli-action: pool-delete + linode-cli linodes disk-create 123 \ + --size 1300 \ + --authorized_keys "ssh-rsa AAAA_valid_public_ssh_key_123456785== user@their-computer" \ + --authorized_users "myUser" \ + --authorized_users "secondaryUser" \ + --root_pass aComplex@Password \ + --image "linode/debian9" \ + --stackscript_id 10079 \ + --stackscript_data '{"gh_username": "linode"}' + /linode/instances/{linodeId}/disks/{diskId}: + parameters: + - name: linodeId + in: path + description: ID of the Linode to look up. + required: true + schema: + type: integer + - name: diskId + in: path + description: ID of the Disk to look up. + required: true + schema: + type: integer + x-linode-cli-command: linodes + get: + x-linode-grant: read_only + tags: + - Linode Instances + summary: Disk View + description: > + View Disk information for a Disk associated with this Linode. + operationId: getLinodeDisk + x-linode-cli-action: disk-view security: - personalAccessToken: [] - oauth: - - lke:read_write - tags: - - Linode Kubernetes Engine (LKE) - summary: Node Pool Delete - description: | - Delete a specific Node Pool from a Kubernetes cluster. - - **Deleting a Node Pool is a destructive action and cannot be undone.** - - Deleting a Node Pool will delete all Linodes within that Pool. + - linodes:read_only responses: '200': - description: Delete successful + description: Returns a single Disk object. content: application/json: schema: - type: object + $ref: '#/components/schemas/Disk' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > curl -H "Authorization: Bearer $TOKEN" \ - -X DELETE \ - https://api.linode.com/v4/lke/clusters/12345/pools/456 + https://api.linode.com/v4/linode/instances/123/disks/25674 - lang: CLI source: > - linode-cli lke pool-delete 12345 456 - /lke/clusters/{clusterId}/pools/{poolId}/recycle: - parameters: - - name: clusterId - in: path - description: ID of the Kubernetes cluster this Node Pool is attached to. - required: true - schema: - type: integer - - name: poolId - in: path - description: ID of the Node Pool to be recycled. - required: true - schema: - type: integer - x-linode-cli-command: lke - post: - operationId: postLKEClusterPoolRecycle - x-linode-cli-action: pool-recycle + linode-cli linodes disk-view 123 25674 + put: + x-linode-grant: read_write + tags: + - Linode Instances + summary: Disk Update + description: > + Updates a Disk that you have permission to `read_write`. + operationId: updateDisk + x-linode-cli-action: disk-update security: - personalAccessToken: [] - oauth: - - lke:read_write - tags: - - Linode Kubernetes Engine (LKE) - summary: Node Pool Recycle - description: | - Recycles a Node Pool for the designated Kubernetes Cluster. All Linodes within the Node Pool will be deleted - and replaced with new Linodes on a rolling basis, which may take several minutes. Replacement Nodes are - installed with the latest available patch for the Cluster's Kubernetes Version. - - **Any local storage on deleted Linodes (such as "hostPath" and "emptyDir" volumes, or "local" PersistentVolumes) will be erased.** + - linodes:read_write + requestBody: + description: > + Updates the parameters of a single Disk. + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/Disk' responses: '200': - description: Recycle request succeeded and is in progress. + description: The updated Disk. content: application/json: schema: - type: object + $ref: '#/components/schemas/Disk' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > curl -H "Content-Type: application/json" \ - -H "Authorization: Bearer $TOKEN" \ - -X POST \ - https://api.linode.com/v4/lke/clusters/12345/pools/456/recycle + -H "Authorization: Bearer $TOKEN" \ + -X PUT -d '{ + "label": "Debian 9 Disk" + }' \ + https://api.linode.com/v4/linode/instances/123/disks/25674 - lang: CLI source: > - linode-cli lke pool-recycle 12345 456 - /lke/clusters/{clusterId}/nodes/{nodeId}: - parameters: - - name: clusterId - in: path - description: ID of the Kubernetes cluster containing the Node. - required: true - schema: - type: integer - - name: nodeId - in: path - description: ID of the Node to look up. - required: true - schema: - type: string - x-linode-cli-command: lke - get: - operationId: getLKEClusterNode - x-linode-cli-action: node-view + linode-cli linodes disk-update 123 25674 \ + --label "Debian 9 Disk" + delete: + x-linode-grant: read_write + tags: + - Linode Instances + summary: Disk Delete + description: | + Deletes a Disk you have permission to `read_write`. + + **Deleting a Disk is a destructive action and cannot be undone.** + operationId: deleteDisk + x-linode-cli-action: disk-delete security: - personalAccessToken: [] - oauth: - - lke:read_write - tags: - - Linode Kubernetes Engine (LKE) - summary: Node View - description: > - Returns the values for a specified node object. + - linodes:read_write responses: '200': - description: Returns the values of a node object in the form that it appears currently in the node pool array. + description: Delete successful content: application/json: schema: type: object - properties: - data: - type: object - description: > - The selected node in the cluster. - properties: - id: - type: string - readOnly: true - description: > - The Node's ID. - example: "12345-6aa78910bc" - instance_id: - type: integer - description: > - The Linode's ID. If no Linode is currently provisioned for this Node, this is `null`. - example: 123456 - status: - type: string - description: > - The creation status of this Node. This status is distinct from this Node's readiness as a - Kubernetes Node Object as determined by the command `kubectl get nodes`. - - - `not_ready` indicates that the Linode is still being created. - - - `ready` indicates that the Linode has successfully been created and is running Kubernetes software. - enum: - - ready - - not_ready - example: ready default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > curl -H "Authorization: Bearer $TOKEN" \ - https://api.linode.com/v4/lke/clusters/12345/nodes/12345-6aa78910bc + -X DELETE \ + https://api.linode.com/v4/linode/instances/123/disks/25674 - lang: CLI source: > - linode-cli lke node-view 123456 12345-6aa78910bc - delete: - operationId: deleteLKEClusterNode - x-linode-cli-action: node-delete + linode-cli linodes disk-delete 123 24674 + /linode/instances/{linodeId}/disks/{diskId}/clone: + parameters: + - name: linodeId + in: path + description: ID of the Linode to look up. + required: true + schema: + type: integer + - name: diskId + in: path + description: ID of the Disk to clone. + required: true + schema: + type: integer + x-linode-cli-command: linodes + post: + x-linode-grant: read_write + tags: + - Linode Instances + summary: Disk Clone + description: > + Copies a disk, byte-for-byte, into a new Disk belonging to the same Linode. + The Linode must have enough storage space available to accept a new Disk + of the same size as this one or this operation will fail. + operationId: cloneLinodeDisk + x-linode-cli-action: disk-clone security: - personalAccessToken: [] - oauth: - - lke:read_write - tags: - - Linode Kubernetes Engine (LKE) - summary: Node Delete - description: | - Deletes a specific Node from a Node Pool. - - **Deleting a Node is a destructive action and cannot be undone.** - - Deleting a Node will reduce the size of the Node Pool it belongs to. + - linodes:read_write responses: '200': - description: Delete successful + description: Disk clone initiated. content: application/json: schema: - type: object + $ref: '#/components/schemas/Disk' default: $ref: '#/components/responses/ErrorResponse' - x-code-samples: - - lang: Shell - source: > - curl -H "Authorization: Bearer $TOKEN" \ - -X DELETE \ - https://api.linode.com/v4/lke/clusters/12345/nodes/12345-6aa78910bc - - lang: CLI - source: > - linode-cli lke node-delete 12345 12345-6aa78910bc - /lke/clusters/{clusterId}/nodes/{nodeId}/recycle: + /linode/instances/{linodeId}/disks/{diskId}/password: parameters: - - name: clusterId + - name: linodeId in: path - description: ID of the Kubernetes cluster containing the Node. + description: ID of the Linode to look up. required: true schema: type: integer - - name: nodeId + - name: diskId in: path - description: ID of the Node to be recycled. + description: ID of the Disk to look up. required: true schema: - type: string - x-linode-cli-command: lke + type: integer + x-linode-cli-command: linodes post: - operationId: postLKEClusterNodeRecycle - x-linode-cli-action: node-recycle + x-linode-grant: read_write + tags: + - Linode Instances + summary: Disk Root Password Reset + description: > + Resets the password of a Disk you have permission to `read_write`. + operationId: resetDiskPassword + x-linode-cli-action: disk-reset-password security: - personalAccessToken: [] - oauth: - - lke:read_write - tags: - - Linode Kubernetes Engine (LKE) - summary: Node Recycle - description: | - Recycles an individual Node in the designated Kubernetes Cluster. The Node will be deleted - and replaced with a new Linode, which may take a few minutes. Replacement Nodes are - installed with the latest available patch for the Cluster's Kubernetes Version. + - linodes:read_write + requestBody: + description: The new password. + required: true + content: + application/json: + schema: + required: + - password + properties: + password: + type: string + description: > + The new root password for the OS installed on this Disk. - **Any local storage on deleted Linodes (such as "hostPath" and "emptyDir" volumes, or "local" PersistentVolumes) will be erased.** + The password must meet the complexity strength validation requirements for a strong password. + example: another@complex^Password123 responses: '200': - description: Recycle request succeeded and is in progress. + description: Returns a single Disk object. content: application/json: schema: - type: object + type: object default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > curl -H "Content-Type: application/json" \ - -H "Authorization: Bearer $TOKEN" \ - -X POST \ - https://api.linode.com/v4/lke/clusters/12345/nodes/12345-6aa78910bc/recycle + -H "Authorization: Bearer $TOKEN" \ + -X POST -d '{ + "password": "another@complex^Password123" + }' \ + https://api.linode.com/v4/linode/instances/123/disks/25674/password - lang: CLI source: > - linode-cli lke node-recycle 12345 12345-6aa78910bc - /lke/clusters/{clusterId}/api-endpoints: + linode-cli linodes disk-reset-password \ + 123 25674 \ + --password aComplex@Password + /linode/instances/{linodeId}/disks/{diskId}/resize: parameters: - - name: clusterId + - name: linodeId in: path - description: ID of the Kubernetes cluster to look up. + description: ID of the Linode to look up. required: true schema: type: integer - x-linode-cli-command: lke - get: - operationId: getLKEClusterAPIEndpoints - x-linode-cli-action: api-endpoints-list + - name: diskId + in: path + description: ID of the Disk to look up. + required: true + schema: + type: integer + x-linode-cli-command: linodes + post: + x-linode-grant: read_write + tags: + - Linode Instances + summary: Disk Resize + description: | + Resizes a Disk you have permission to `read_write`. + + The Disk must not be in use. If the Disk is in use, the request will + succeed but the resize will ultimately fail. For a request to succeed, + the Linode must be shut down prior to resizing the Disk, or the Disk + must not be assigned to the Linode's active Configuration Profile. + + If you are resizing the Disk to a smaller size, it cannot be made smaller + than what is required by the total size of the files current on the Disk. + operationId: resizeDisk + x-linode-cli-action: disk-resize security: - personalAccessToken: [] - oauth: - - lke:read_only + - linodes:read_write + requestBody: + description: The new size of the Disk. + required: true + content: + application/json: + schema: + required: + - size + properties: + size: + type: integer + description: > + The desired size, in MB, of the disk. + minimum: 1 + example: 2048 + responses: + '200': + description: Resize started. + content: + application/json: + schema: + type: object + default: + $ref: '#/components/responses/ErrorResponse' + x-code-samples: + - lang: Shell + source: > + curl -H "Content-Type: application/json" \ + -H "Authorization: Bearer $TOKEN" \ + -X POST -d '{ + "size": 2048 + }' \ + https://api.linode.com/v4/linode/instances/123/disks/25674/resize + - lang: CLI + source: > + linode-cli linodes disk-resize 123 25674 \ + --size 2048 + /linode/instances/{linodeId}/firewalls: + parameters: + - name: linodeId + in: path + description: ID of the Linode to look up. + required: true + schema: + type: integer + x-linode-cli-command: linodes + get: + x-linode-grant: read_only + parameters: + - $ref: '#/components/parameters/pageOffset' + - $ref: '#/components/parameters/pageSize' tags: - - Linode Kubernetes Engine (LKE) - summary: Kubernetes API Endpoints List + - Linode Instances + summary: Firewalls List description: > - List the Kubernetes API server endpoints for this cluster. Please note that it often takes - 2-5 minutes before the endpoint is ready after first [creating a new cluster](/docs/api/linode-kubernetes-engine-lke/#kubernetes-cluster-create). + View Firewall information for Firewalls associated with this Linode. + operationId: getLinodeFirewalls + x-linode-cli-action: firewalls-list + security: + - personalAccessToken: [] + - oauth: + - linodes:read_only responses: '200': - description: Returns the Kubernetes API server endpoints for this cluster. + description: Returns a paginated list of Firewalls associated with this Linode. content: application/json: schema: @@ -8284,16 +8403,7 @@ paths: data: type: array items: - type: object - description: > - The Kubernetes API server endpoints for this cluster. - properties: - endpoint: - type: string - readOnly: true - description: > - A Kubernetes API server endpoint for this cluster. - example: "https://192.0.2.1:6443" + $ref: '#/components/schemas/Firewall' page: $ref: '#/components/schemas/PaginationEnvelope/properties/page' pages: @@ -8306,372 +8416,497 @@ paths: - lang: Shell source: > curl -H "Authorization: Bearer $TOKEN" \ - https://api.linode.com/v4/lke/clusters/12345/api-endpoints + https://api.linode.com/v4/linode/instances/123/firewalls - lang: CLI source: > - linode-cli lke api-endpoints-list 12345 - /lke/clusters/{clusterId}/kubeconfig: + linode-cli linodes firewalls-list 123 + /linode/instances/{linodeId}/ips: parameters: - - name: clusterId + - name: linodeId in: path - description: ID of the Kubernetes cluster to look up. + description: ID of the Linode to look up. required: true schema: type: integer - x-linode-cli-command: lke + x-linode-cli-command: linodes get: - operationId: getLKEClusterKubeconfig - x-linode-cli-action: kubeconfig-view + x-linode-grant: read_only + tags: + - Linode Instances + summary: Networking Information List + description: > + Returns networking information for a single Linode. + operationId: getLinodeIPs + x-linode-cli-action: ips-list security: - personalAccessToken: [] - oauth: - - lke:read_write - tags: - - Linode Kubernetes Engine (LKE) - summary: Kubeconfig View - description: | - Get the Kubeconfig file for a Cluster. Please note that it often takes 2-5 minutes before - the Kubeconfig file is ready after first [creating a new cluster](/docs/api/linode-kubernetes-engine-lke/#kubernetes-cluster-create). + - linodes:read_only responses: '200': - description: Returns the Base64-encoded Kubeconfig file for this Kubernetes cluster. + description: Requested Linode's networking configuration. content: application/json: schema: - type: object properties: - kubeconfig: - type: string + ipv4: + type: object + description: > + Information about this Linode's IPv4 addresses. readOnly: true + properties: + public: + type: array + items: + $ref: '#/components/schemas/IPAddress' + description: > + A list of public IP Address objects belonging to this Linode. + readOnly: true + private: + type: array + items: + $ref: '#/components/schemas/IPAddressPrivate' + description: > + A list of private IP Address objects belonging to this Linode. + readOnly: true + shared: + type: array + readOnly: true + items: + $ref: '#/components/schemas/IPAddress' + description: > + A list of shared IP Address objects assigned to this Linode. + reserved: + type: array + readOnly: true + items: + $ref: '#/components/schemas/IPAddress' + description: > + A list of reserved IP Address objects belonging to this Linode. + ipv6: + type: object description: > - The Base64-encoded Kubeconfig file for this Cluster. + Information about this Linode's IPv6 addresses. + readOnly: true + properties: + link_local: + $ref: '#/components/schemas/IPAddressV6LinkLocal' + slaac: + $ref: '#/components/schemas/IPAddressV6Slaac' + global: + $ref: '#/components/schemas/IPv6Pool' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > - curl -H "Authorization: Bearer $TOKEN" \ - https://api.linode.com/v4/lke/clusters/12345/kubeconfig + curl -H "Content-Type: application/json" \ + https://api.linode.com/v4/linode/instances/123/ips - lang: CLI source: > - linode-cli lke kubeconfig-view 12345 - delete: - operationId: deleteLKEClusterKubeconfig - x-linode-cli-action: kubeconfig-delete + linode-cli linodes 123 ips-list + post: + x-linode-grant: read_write + tags: + - Linode Instances + summary: IPv4 Address Allocate + description: > + Allocates a public or private IPv4 address to a Linode. + Public IP Addresses, after the one included with each Linode, + incur an additional monthly charge. If you need an additional public + IP Address you must request one - please + [open a support ticket](/docs/api/support/#support-ticket-open). + You may not add more than one private IPv4 address to a single Linode. + operationId: addLinodeIP + x-linode-cli-action: ip-add security: - personalAccessToken: [] - oauth: - - lke:read_write - tags: - - Linode Kubernetes Engine (LKE) - summary: Kubeconfig Delete - description: | - Delete and regenerate the Kubeconfig file for a Cluster. + - linodes:read_write + requestBody: + description: Information about the address you are creating. + required: true + content: + application/json: + schema: + required: + - type + - public + properties: + type: + type: string + enum: + - ipv4 + description: > + The type of address you are allocating. Only IPv4 addresses + may be allocated through this endpoint. + example: ipv4 + public: + type: boolean + description: > + Whether to create a public or private IPv4 address. + example: true responses: '200': - description: Kubeconfig file deleted and regenerated successfully. + description: IP address was successfully allocated. content: application/json: schema: - type: object + $ref: '#/components/schemas/IPAddress' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > - curl -H "Authorization: Bearer $TOKEN" \ - -X DELETE \ - https://api.linode.com/v4/lke/clusters/12345/kubeconfig + curl -H "Content-Type: application/json" \ + -H "Authorization: Bearer $TOKEN" \ + -X POST -d '{ + "type": "ipv4", + "public": true + }' \ + https://api.linode.com/v4/linode/instances/123/ips - lang: CLI source: > - linode-cli lke kubeconfig-delete 12345 - /lke/versions: - x-linode-cli-command: lke + linode-cli linodes ip-add 123 \ + --type ipv4 \ + --public true + /linode/instances/{linodeId}/ips/{address}: + parameters: + - name: linodeId + in: path + description: The ID of the Linode to look up. + required: true + schema: + type: integer + - name: address + in: path + description: The IP address to look up. + required: true + schema: + type: string + format: ip + x-linode-cli-command: linodes get: - operationId: getLKEVersions - x-linode-cli-action: versions-list x-linode-grant: read_only + tags: + - Linode Instances + summary: IP Address View + description: > + View information about the specified IP address associated + with the specified Linode. + operationId: getLinodeIP + x-linode-cli-action: ip-view security: - personalAccessToken: [] - oauth: - - lke:read_only - tags: - - Linode Kubernetes Engine (LKE) - summary: Kubernetes Versions List - description: > - List the Kubernetes versions available for deployment - to a Kubernetes cluster. + - linodes:read_only responses: '200': - description: > - Returns a list of Kubernetes versions available for deployment - to a Kubernetes cluster. + description: A single IP address. content: application/json: schema: - type: object - properties: - data: - type: array - items: - $ref: '#/components/schemas/LKEVersion' - page: - $ref: '#/components/schemas/PaginationEnvelope/properties/page' - pages: - $ref: '#/components/schemas/PaginationEnvelope/properties/pages' - results: - $ref: '#/components/schemas/PaginationEnvelope/properties/results' + $ref: '#/components/schemas/IPAddress' default: - $ref: '#/components/responses/ErrorResponse' + $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > - curl -H "Authorization: Bearer $TOKEN" \ - https://api.linode.com/v4/lke/versions + curl -H "Content-Type: application/json" \ + https://api.linode.com/v4/linode/instances/123/ips/97.107.143.141 - lang: CLI source: > - linode-cli lke versions-list - /lke/versions/{version}: - parameters: - - name: version - in: path - required: true - description: The LKE version to view. - schema: - type: string - x-linode-cli-command: lke - get: - operationId: getLKEVersion - x-linode-cli-action: version-view - x-linode-grant: read_only + linode-cli linodes ip-view 123 97.107.143.141 + put: + x-linode-grant: read_write + tags: + - Linode Instances + summary: IP Address Update + description: > + Updates a particular IP Address associated with this Linode. + Only allows setting/resetting reverse DNS. + operationId: updateLinodeIP + x-linode-cli-action: ip-update security: - personalAccessToken: [] - oauth: - - lke:read_only - tags: - - Linode Kubernetes Engine (LKE) - summary: Kubernetes Version View - description: > - View a Kubernetes version available for deployment - to a Kubernetes cluster. + - linodes:read_write + requestBody: + description: The information to update for the IP address. + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/IPAddress' responses: '200': - description: > - Returns a Kubernetes version object that is available for deployment - to a Kubernetes cluster. + description: The updated IP address record. content: application/json: schema: - $ref: '#/components/schemas/LKEVersion' + $ref: '#/components/schemas/IPAddress' default: - $ref: '#/components/responses/ErrorResponse' + $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > - curl -H "Authorization: Bearer $TOKEN" \ - https://api.linode.com/v4/lke/versions/1.21 + curl -H "Content-Type: application/json" \ + -H "Authorization: Bearer $TOKEN" \ + -X PUT -d '{ + "rdns": "test.example.org" + }' \ + https://api.linode.com/v4/linode/instances/123/ips/97.107.143.141 - lang: CLI source: > - linode-cli lke version-view 1.21 - /longview/clients: - x-linode-cli-command: longview - get: - x-linode-grant: read_only - parameters: - - $ref: '#/components/parameters/pageOffset' - - $ref: '#/components/parameters/pageSize' + linode-cli linodes ip-update 123 \ + 97.107.143.141 \ + --rdns test.example.org + delete: + x-linode-grant: read_write tags: - - Longview - summary: Longview Clients List + - Linode Instances + summary: IPv4 Address Delete description: > - Returns a paginated list of Longview Clients you have access - to. Longview Client is used to monitor stats on your Linode - with the help of the Longview Client application. - operationId: getLongviewClients - x-linode-cli-action: list + Deletes a public or private IPv4 address associated with this Linode. This will fail if it is the Linode's last remaining public IPv4 address. + operationId: removeLinodeIP + x-linode-cli-action: ip-delete security: - personalAccessToken: [] - oauth: - - longview:read_only + - linodes:read_write responses: '200': - description: A paginated list of Longview Clients. + description: IP address successfully removed. content: application/json: schema: type: object - properties: - data: - type: array - items: - $ref: '#/components/schemas/LongviewClient' - page: - $ref: '#/components/schemas/PaginationEnvelope/properties/page' - pages: - $ref: '#/components/schemas/PaginationEnvelope/properties/pages' - results: - $ref: '#/components/schemas/PaginationEnvelope/properties/results' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > - curl -H "Authorization: Bearer $TOKEN" \ - https://api.linode.com/v4/longview/clients + curl -H "Content-Type: application/json" \ + -H "Authorization: Bearer $TOKEN" \ + -X DELETE \ + https://api.linode.com/v4/linode/instances/123/ips/97.107.143.141 - lang: CLI source: > - linode-cli longview list - post: - x-linode-grant: add_longview + linode-cli linodes ip-delete 97.107.143.141 + /linode/kernels: + x-linode-cli-command: kernels + get: + parameters: + - $ref: '#/components/parameters/pageOffset' + - $ref: '#/components/parameters/pageSize' tags: - - Longview - summary: Longview Client Create - description: > - Creates a Longview Client. This Client will not begin monitoring - the status of your server until you configure the Longview - Client application on your Linode using the returning `install_code` - and `api_key`. - operationId: createLongviewClient - x-linode-cli-action: create - security: - - personalAccessToken: [] - - oauth: - - longview:read_write - requestBody: - description: Information about the LongviewClient to create. - required: true - content: - application/json: - schema: - $ref: '#/components/schemas/LongviewClient' + - Linode Instances + summary: Kernels List + description: | + Lists available Kernels. + operationId: getKernels + x-linode-cli-action: list responses: '200': - description: Longview Client created successfully. + description: Returns an array of Kernels. content: application/json: schema: - $ref: '#/components/schemas/LongviewClient' + type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/Kernel' + page: + $ref: '#/components/schemas/PaginationEnvelope/properties/page' + pages: + $ref: '#/components/schemas/PaginationEnvelope/properties/pages' + results: + $ref: '#/components/schemas/PaginationEnvelope/properties/results' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > - curl -H "Content-Type: application/json" \ - -H "Authorization: Bearer $TOKEN" \ - -X POST -d '{ - "label": "client789" - }' \ - https://api.linode.com/v4/longview/clients + curl https://api.linode.com/v4/linode/kernels - lang: CLI source: > - linode-cli longview create \ - --label client789 - /longview/clients/{clientId}: + linode-cli kernels list + /linode/kernels/{kernelId}: parameters: - - name: clientId + - name: kernelId in: path + description: ID of the Kernel to look up. required: true - description: The Longview Client ID to access. schema: - type: integer - x-linode-cli-command: longview + type: string + x-linode-cli-command: kernels get: - x-linode-grant: read_only tags: - - Longview - summary: Longview Client View + - Linode Instances + summary: Kernel View description: > - Returns a single Longview Client you can access. - operationId: getLongviewClient + Returns information about a single Kernel. + operationId: getKernel x-linode-cli-action: view - security: - - personalAccessToken: [] - - oauth: - - longview:read_only responses: '200': - description: The requested Longview Client. + description: A single Kernel object. content: application/json: schema: - $ref: '#/components/schemas/LongviewClient' + $ref: '#/components/schemas/Kernel' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > - curl -H "Authorization: Bearer $TOKEN" \ - https://api.linode.com/v4/longview/clients/789 + curl https://api.linode.com/v4/linode/kernels/linode/latest-64bit - lang: CLI source: > - linode-cli longview view 789 - put: - x-linode-grant: read_write - tags: - - Longview - summary: Longview Client Update + linode-cli kernels view latest-64bit + /linode/instances/{linodeId}/migrate: + parameters: + - name: linodeId + in: path + description: ID of the Linode to migrate. + required: true + schema: + type: integer + x-linode-cli-command: linodes + post: + x-linode-grant: read_write + summary: DC Migration/Pending Host Migration Initiate description: > - Updates a Longview Client. This cannot update how it monitors your - server; use the Longview Client application on your Linode for - monitoring configuration. - operationId: updateLongviewClient - x-linode-cli-action: update + Initiate a pending host migration that has been scheduled by Linode or + initiate a cross data center (DC) migration. A list of pending migrations, + if any, can be accessed from [GET /account/notifications](/docs/api/account/#notifications-list). + When the migration begins, your Linode will be shutdown if not already off. + If the migration initiated the shutdown, it will reboot the Linode when completed. + + + To initiate a cross DC migration, you must pass a `region` parameter to the + request body specifying the target data center region. + You can view a list of all available regions and their feature capabilities + from [GET /regions](/docs/api/regions/#regions-list). If your Linode has a DC migration already queued + or you have initiated a previously scheduled migration, you will not be able to initiate + a DC migration until it has completed. + + + **Note:** Next Generation Network (NGN) data centers do not support IPv6 `/116` pools or IP Failover. + If you have these features enabled on your Linode and attempt to migrate to an NGN data center, + the migration 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. + tags: + - Linode Instances + operationId: migrateLinodeInstance + x-linode-cli-action: migrate security: - personalAccessToken: [] - oauth: - - longview:read_write + - linodes:read_write requestBody: - description: The fields to update. - required: true content: - application/json: + 'application/json': schema: - $ref: '#/components/schemas/LongviewClient' + properties: + region: + type: string + description: > + The region to which the Linode will be migrated. + Must be a valid region slug. A list of regions can be viewed + by using the [GET /regions](/docs/api/regions/#regions-list) endpoint. + A cross data center migration will cancel a pending migration + that has not yet been initiated. + + A cross data center migration will initiate a `linode_migrate_datacenter_create` event. + example: us-east + upgrade: + type: boolean + description: > + When initiating a cross DC migration, setting this value to + true will also ensure that the Linode is upgraded to the latest + generation of hardware that corresponds to your Linode's Type, if + any free upgrades are available for it. + + If no free upgrades are available, and this value is set to true, + then the endpoint will return a 400 error code and the migration + will not be performed. + + If the data center set in the `region` field does not allow upgrades, + then the endpoint will return a 400 error code and the migration + will not be performed. + example: false + default: false responses: '200': - description: Longview Client updated successfully. + description: Scheduled migration started content: - application/json: + 'application/json': schema: - $ref: '#/components/schemas/LongviewClient' + type: object default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > curl -H "Content-Type: application/json" \ - -H "Authorization: Bearer $TOKEN" \ + -H "Authorization: Bearer $TOKEN" \ -X POST -d '{ - "label": "client789" + "region": "us-central" }' \ - https://api.linode.com/v4/longview/clients/789 + https://api.linode.com/v4/linode/instances/123/migrate - lang: CLI source: > - linode-cli longview update 789 \ - --label client789 - delete: + linode-cli linodes migrate 123 --region us-central + /linode/instances/{linodeId}/mutate: + parameters: + - name: linodeId + in: path + description: ID of the Linode to mutate. + required: true + schema: + type: integer + x-linode-cli-command: linodes + post: x-linode-grant: read_write - tags: - - Longview - summary: Longview Client Delete + summary: Linode Upgrade description: > - Deletes a Longview Client from your Account. - - - **All information stored for this client will be lost.** - + Linodes created with now-deprecated Types are entitled to a free + upgrade to the next generation. A mutating Linode will be allocated any new + resources the upgraded Type provides, and will be subsequently restarted + if it was currently running. - This _does not_ uninstall the Longview Client application for your - Linode - you must do that manually. - operationId: deleteLongviewClient - x-linode-cli-action: delete + If any actions are currently running or queued, those actions must be + completed first before you can initiate a mutate. + tags: + - Linode Instances + operationId: mutateLinodeInstance + x-linode-cli-action: upgrade security: - personalAccessToken: [] - oauth: - - longview:read_write + - linodes:read_write + requestBody: + description: Whether to automatically resize disks or not. + required: false + content: + application/json: + schema: + type: object + properties: + allow_auto_disk_resize: + type: boolean + description: > + Automatically resize disks when resizing a Linode. + When resizing down to a smaller plan your Linode's + data must fit within the smaller disk size. + example: true + default: true responses: '200': - description: Longview Client deleted successfully. + description: Mutate started. content: application/json: schema: @@ -8681,257 +8916,237 @@ paths: x-code-samples: - lang: Shell source: > - curl -H "Authorization: Bearer $TOKEN" \ - -X DELETE \ - https://api.linode.com/v4/longview/clients/789 + curl -H "Content-Type: application/json" \ + -H "Authorization: Bearer $TOKEN" \ + -X POST \ + https://api.linode.com/v4/linode/instances/123/mutate - lang: CLI source: > - linode-cli longview delete 789 - /longview/plan: - x-linode-cli-command: longview + linode-cli linodes upgrade 123 + /linode/instances/{linodeId}/nodebalancers: + parameters: + - name: linodeId + in: path + description: ID of the Linode to look up + required: true + schema: + type: integer + x-linode-cli-command: linodes get: + x-linode-grant: read_only tags: - - Longview - summary: Longview Plan View - description: > - Get the details of your current Longview plan. This returns a `LongviewSubscription` object - for your current Longview Pro plan, or an empty set `{}` if your current plan is Longview Free. - - - You must have at least one of the following `global` [User Grants](/docs/api/account/#users-grants-view) - in order to access this endpoint: - - - `"account_access": read_write` - - `"account_access": read_only` - - `"longview_subscription": true` - - `"add_longview": true` - + - Linode Instances + summary: Linode NodeBalancers View + description: | + Returns a list of NodeBalancers that are assigned to this Linode and readable by the requesting User. - To update your subscription plan, send a request to [Update Longview Plan](/docs/api/longview/#longview-plan-update). - operationId: getLongviewPlan - x-linode-cli-action: plan-view + Read permission to a NodeBalancer can be given to a User by accessing the User's Grants Update + ([PUT /account/users/{username}/grants](/docs/api/account/#users-grants-update)) endpoint. + operationId: getLinodeNodeBalancers + x-linode-cli-action: nodebalancers security: - personalAccessToken: [] - oauth: - - longview:read_only + - linodes:read_only responses: '200': - description: The Longview plan details for this account. + description: Returns a paginated list of NodeBalancers. content: application/json: schema: - $ref: '#/components/schemas/LongviewSubscription' - default: - $ref: '#/components/responses/ErrorResponse' + type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/NodeBalancer' + page: + $ref: '#/components/schemas/PaginationEnvelope/properties/page' + pages: + $ref: '#/components/schemas/PaginationEnvelope/properties/pages' + results: + $ref: '#/components/schemas/PaginationEnvelope/properties/results' x-code-samples: - lang: Shell source: > curl -H "Authorization: Bearer $TOKEN" \ - https://api.linode.com/v4/longview/plan + https://api.linode.com/v4/linode/instances/123/nodebalancers - lang: CLI source: > - linode-cli longview plan-view - put: - tags: - - Longview - summary: Longview Plan Update + linode-cli linodes nodebalancers 123 + /linode/instances/{linodeId}/password: + parameters: + - name: linodeId + in: path + description: ID of the Linode for which to reset its root password. + required: true + schema: + type: integer + x-linode-cli-command: linodes + post: + x-linode-grant: read_write + summary: Linode Root Password Reset description: > - Update your Longview plan to that of the given subcription ID. This returns a `LongviewSubscription` object for - the updated Longview Pro plan, or an empty set `{}` if the updated plan is Longview Free. - + Resets the root password for this Linode. - You must have `"longview_subscription": true` configured as a `global` - [User Grant](/docs/api/account/#users-grants-view) in order to access this endpoint. + * Your Linode must be [shut down](/docs/api/linode-instances/#linode-shut-down) for a password reset to complete. + * If your Linode has more than one disk (not counting its swap disk), use the + [Reset Disk Root Password](/docs/api/linode-instances/#disk-root-password-reset) endpoint to update a specific disk's root password. - You can send a request to the [List Longview Subscriptions](/docs/api/longview/#longview-subscriptions-list) - endpoint to receive the details, including `id`'s, of each plan. - operationId: updateLongviewPlan - x-linode-cli-action: plan-update + * A `password_reset` event is generated when a root password reset is successful. + tags: + - Linode Instances + operationId: resetLinodePassword + x-linode-cli-action: linode-reset-password security: - personalAccessToken: [] - oauth: - - longview:read_write + - linodes:read_write requestBody: - description: Update your Longview subscription plan. - required: true + description: This Linode's new root password. content: - application/json: + 'application/json': schema: - $ref: '#/components/schemas/LongviewPlan' - responses: - '200': - description: The updated Longview plan details for this account. - content: - application/json: - schema: - $ref: '#/components/schemas/LongviewSubscription' - default: - $ref: '#/components/responses/ErrorResponse' - x-code-samples: - - lang: Shell - source: > - curl -H "Content-Type: application/json" \ - -H "Authorization: Bearer $TOKEN" \ - -X PUT -d '{ - "longview_subscription": "longview-10" - }' \ - https://api.linode.com/v4/longview/plan - - lang: CLI - source: > - linode-cli longview plan-update --longview_subscription longview-10 - /longview/subscriptions: - x-linode-cli-command: longview - get: - parameters: - - $ref: '#/components/parameters/pageOffset' - - $ref: '#/components/parameters/pageSize' - tags: - - Longview - summary: Longview Subscriptions List - description: > - Returns a paginated list of available Longview Subscriptions. This is - a public endpoint and requires no authentication. - operationId: getLongviewSubscriptions - x-linode-cli-action: subscriptions-list + required: + - root_pass + properties: + root_pass: + type: string + description: > + The root user's password on this Linode. Linode passwords + 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. + example: a$eCure4assw0rd!43v51 responses: '200': - description: A paginated list of Longview Subscriptions. + description: Password Reset. content: application/json: schema: type: object - properties: - data: - type: array - items: - $ref: '#/components/schemas/LongviewSubscription' - page: - $ref: '#/components/schemas/PaginationEnvelope/properties/page' - pages: - $ref: '#/components/schemas/PaginationEnvelope/properties/pages' - results: - $ref: '#/components/schemas/PaginationEnvelope/properties/results' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > - curl -H "Authorization: Bearer $TOKEN" \ - https://api.linode.com/v4/longview/subscriptions + curl -H "Content-Type: application/json" \ + -H "Authorization: Bearer $TOKEN" \ + -X POST -d '{ + "root_pass": "a$eCure4assw0rd!43v51" + }' \ + https://api.linode.com/v4/linode/instances/123/password - lang: CLI source: > - linode-cli longview subscriptions-list - /longview/subscriptions/{subscriptionId}: + linode-cli linodes linode-reset-password 123 a$eCure4assw0rd!43v51 + /linode/instances/{linodeId}/reboot: parameters: - - name: subscriptionId + - name: linodeId in: path + description: ID of the linode to reboot. required: true - description: The Longview Subscription to look up. schema: - type: string - x-linode-cli-command: longview - get: - tags: - - Longview - summary: Longview Subscription View + type: integer + x-linode-cli-command: linodes + post: + x-linode-grant: read_write + summary: Linode Reboot description: > - Get the Longview plan details as a single `LongviewSubscription` object for the provided subscription ID. This is a public endpoint - and requires no authentication. - operationId: getLongviewSubscription - x-linode-cli-action: subscription-view - responses: - '200': - description: The requested Longview Subscription details. - content: - application/json: - schema: - $ref: '#/components/schemas/LongviewSubscription' - default: - $ref: '#/components/responses/ErrorResponse' - x-code-samples: - - lang: Shell - source: > - curl -H "Authorization: Bearer $TOKEN" \ - https://api.linode.com/v4/longview/subscriptions/longview-10 - - lang: CLI - source: > - linode-cli longview subscription-view \ - longview-10 - /managed/contacts: - x-linode-cli-command: managed - get: - x-linode-grant: unrestricted only - parameters: - - $ref: '#/components/parameters/pageOffset' - - $ref: '#/components/parameters/pageSize' + Reboots a Linode you have permission to modify. If any actions are currently running or + queued, those actions must be completed first before you can initiate a reboot. tags: - - Managed - summary: Managed Contacts List - description: > - Returns a paginated list of Managed Contacts on your Account. - operationId: getManagedContacts - x-linode-cli-action: contacts-list + - Linode Instances + operationId: rebootLinodeInstance + x-linode-cli-action: reboot security: - personalAccessToken: [] - oauth: - - account:read_only + - linodes:read_write + requestBody: + description: Optional reboot parameters. + content: + 'application/json': + schema: + properties: + config_id: + type: integer + description: > + The Linode Config ID to reboot into. If null or omitted, + the last booted config will be used. If there was no last + booted config and this Linode only has one config, it will + be used. If a config cannot be determined, an error will + be returned. + example: null responses: '200': - description: A paginated list of ManagedContacts + description: Reboot started. content: application/json: schema: type: object - properties: - data: - type: array - items: - $ref: '#/components/schemas/ManagedContact' - page: - $ref: '#/components/schemas/PaginationEnvelope/properties/page' - pages: - $ref: '#/components/schemas/PaginationEnvelope/properties/pages' - results: - $ref: '#/components/schemas/PaginationEnvelope/properties/results' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > - curl -H "Authorization: Bearer $TOKEN" \ - https://api.linode.com/v4/managed/contacts + curl -H "Content-Type: application/json" \ + -H "Authorization: Bearer $TOKEN" \ + -X POST \ + https://api.linode.com/v4/linode/instances/123/reboot - lang: CLI source: > - linode-cli managed contacts-list + linode-cli linodes reboot 123 + /linode/instances/{linodeId}/rebuild: + parameters: + - name: linodeId + in: path + description: ID of the Linode to rebuild. + required: true + schema: + type: integer + x-linode-cli-command: linodes post: - x-linode-grant: unrestricted only - tags: - - Managed - summary: Managed Contact Create + x-linode-grant: read_write + summary: Linode Rebuild description: > - Creates a Managed Contact. A Managed Contact is someone Linode - special forces can contact in the course of attempting to resolve an issue - with a Managed Service. - operationId: createManagedContact - x-linode-cli-action: contact-create + Rebuilds a Linode you have the `read_write` permission to modify. + + A rebuild will first shut down the Linode, delete all disks and configs + on the Linode, and then deploy a new `image` to the Linode with the given + attributes. Additionally: + + * Requires an `image` be supplied. + * 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. + tags: + - Linode Instances + operationId: rebuildLinodeInstance + x-linode-cli-action: rebuild security: - personalAccessToken: [] - oauth: - - account:read_write + - linodes:read_write requestBody: - description: Information about the contact to create. + description: The requested state your Linode will be rebuilt into. + required: true content: application/json: schema: - $ref: '#/components/schemas/ManagedContact' + type: object + required: + - image + - root_pass + allOf: + - $ref: '#/components/schemas/LinodeRequest' responses: '200': - description: Contact created. + description: Rebuild started. content: application/json: schema: - $ref: '#/components/schemas/ManagedContact' + $ref: '#/components/schemas/Linode' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: @@ -8940,87 +9155,165 @@ paths: curl -H "Content-Type: application/json" \ -H "Authorization: Bearer $TOKEN" \ -X POST -d '{ - "name": "John Doe", - "email": "john.doe@example.org", - "phone": { - "primary": "123-456-7890", - "secondary": null - }, - "group": "on-call" + "image": "linode/debian9", + "root_pass": "aComplexP@ssword", + "authorized_keys": [ + "ssh-rsa AAAA_valid_public_ssh_key_123456785== user@their-computer" + ], + "authorized_users": [ + "myUsername", + "secondaryUsername" + ], + "booted": true, + "stackscript_id": 10079, + "stackscript_data": { + "gh_username": "linode" + } }' \ - https://api.linode.com/v4/managed/contacts + https://api.linode.com/v4/linode/instances/123/rebuild - lang: CLI source: > - linode-cli managed contact-create \ - --name "John Doe" \ - --email "john.doe@example.org" \ - --phone.primary "123-456-7890" - /managed/contacts/{contactId}: - parameters: - - name: contactId - in: path - required: true - description: The ID of the contact to access. - schema: - type: integer - x-linode-cli-command: managed - get: - x-linode-grant: unrestricted only - tags: - - Managed - summary: Managed Contact View + linode-cli linodes rebuild 123 \ + --image "linode/debian9" \ + --root_pass aComplex@Password \ + --authorized_keys "ssh-rsa AAAA_valid_public_ssh_key_123456785== user@their-computer" \ + --authorized_users "myUsername" \ + --authorized_users "secondaryUsername" \ + --booted true \ + --stackscript_id 10079 \ + --stackscript_data '{"gh_username": "linode"}' + /linode/instances/{linodeId}/rescue: + parameters: + - name: linodeId + in: path + description: ID of the Linode to rescue. + required: true + schema: + type: integer + x-linode-cli-command: linodes + post: + x-linode-grant: read_write + summary: Linode Boot into Rescue Mode description: > - Returns a single Managed Contact. - operationId: getManagedContact - x-linode-cli-action: contact-view + Rescue Mode is a safe environment for performing many system recovery + and disk management tasks. Rescue Mode is based on the Finnix recovery + distribution, a self-contained and bootable Linux distribution. You can + also use Rescue Mode for tasks other than disaster recovery, such as + formatting disks to use different filesystems, copying data between + disks, and downloading files from a disk via SSH and SFTP. + + * Note that "sdh" is reserved and unavailable during rescue. + tags: + - Linode Instances + operationId: rescueLinodeInstance + x-linode-cli-action: rescue security: - personalAccessToken: [] - oauth: - - account:read_write + - linodes:read_write + requestBody: + description: Optional object of devices to be mounted. + required: false + content: + application/json: + schema: + type: object + properties: + devices: + $ref: '#/components/schemas/RescueDevices' responses: '200': - description: The requested Managed Contact. + description: Rescue started. content: application/json: schema: - $ref: '#/components/schemas/ManagedContact' + type: object default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > - curl -H "Authorization: Bearer $TOKEN" \ - https://api.linode.com/v4/managed/contacts/567 + curl -H "Content-Type: application/json" \ + -H "Authorization: Bearer $TOKEN" \ + -X POST -d '{ + "devices": { + "sda": { + "disk_id": 124458, + "volume_id": null + }, + "sdb": { + "disk_id": null, + "volume_id": null + } + } + }' \ + https://api.linode.com/v4/linode/instances/123/rescue - lang: CLI source: > - linode-cli managed contact-view 567 - put: - x-linode-grant: unrestricted only - tags: - - Managed - summary: Managed Contact Update + linode-cli linodes rescue 123 \ + --devices.sda.disk_id 124458 + /linode/instances/{linodeId}/resize: + parameters: + - name: linodeId + in: path + description: ID of the Linode to resize. + required: true + schema: + type: integer + x-linode-cli-command: linodes + post: + x-linode-grant: read_write + summary: Linode Resize description: > - Updates information about a Managed Contact. - operationId: updateManagedContact - x-linode-cli-action: contact-update + Resizes a Linode you have the `read_write` permission to a different + Type. If any actions are currently running or queued, those actions must + be completed first before you can initiate a resize. Additionally, the + following criteria must be met in order to resize a Linode: + + * The Linode must not have a pending migration. + * Your Account cannot have an outstanding balance. + * The Linode must not have more disk allocation than the new Type allows. + * In that situation, you must first delete or resize the disk to be smaller. + tags: + - Linode Instances + operationId: resizeLinodeInstance + x-linode-cli-action: resize security: - personalAccessToken: [] - oauth: - - account:read_write + - linodes:read_write requestBody: - description: The fields to update. + description: > + The Type your current Linode will resize to, and whether to attempt + to automatically resize the Linode's disks. required: true content: application/json: schema: - $ref: '#/components/schemas/ManagedContact' + type: object + required: + - type + properties: + type: + type: string + description: The ID representing the Linode Type. + example: g6-standard-2 + x-linode-cli-display: 1 + allow_auto_disk_resize: + type: boolean + description: > + Automatically resize disks when resizing a Linode. + When resizing down to a smaller plan your Linode's + data must fit within the smaller disk size. + example: true + default: true responses: '200': - description: Contact updated successfully. + description: Resize started. content: application/json: schema: - $ref: '#/components/schemas/ManagedContact' + type: object default: $ref: '#/components/responses/ErrorResponse' x-code-samples: @@ -9028,38 +9321,40 @@ paths: source: > curl -H "Content-Type: application/json" \ -H "Authorization: Bearer $TOKEN" \ - -X PUT -d '{ - "name": "John Doe", - "email": "john.doe@example.org", - "phone": { - "primary": "123-456-7890", - "secondary": null - }, - "group": "on-call" + -X POST -d '{ + "type": "g6-standard-2" }' \ - https://api.linode.com/v4/managed/contacts/567 + https://api.linode.com/v4/linode/instances/123/resize - lang: CLI source: > - linode-cli managed contact-update 567 \ - --name "John Doe" \ - --email "john.doe@example.org" \ - --phone.primary "123-456-7890" - delete: - x-linode-grant: unrestricted only - tags: - - Managed - summary: Managed Contact Delete + linode-cli linodes resize 123 \ + --type g6-standard-2 + /linode/instances/{linodeId}/shutdown: + parameters: + - name: linodeId + in: path + description: ID of the Linode to shutdown. + required: true + schema: + type: integer + x-linode-cli-command: linodes + post: + x-linode-grant: read_write + summary: Linode Shut Down description: > - Deletes a Managed Contact. - operationId: deleteManagedContact - x-linode-cli-action: contact-delete + Shuts down a Linode you have permission to modify. If any actions are currently running or + queued, those actions must be completed first before you can initiate a shutdown. + tags: + - Linode Instances + operationId: shutdownLinodeInstance + x-linode-cli-action: shutdown security: - personalAccessToken: [] - oauth: - - account:read_write + - linodes:read_write responses: '200': - description: Contact deleted successfully. + description: Shutdown started. content: application/json: schema: @@ -9069,609 +9364,626 @@ paths: x-code-samples: - lang: Shell source: > - curl -H "Authorization: Bearer $TOKEN" \ - -X DELETE \ - https://api.linode.com/v4/managed/contacts/567 + curl -H "Content-Type: application/json" \ + -H "Authorization: Bearer $TOKEN" \ + -X POST \ + https://api.linode.com/v4/linode/instances/123/shutdown - lang: CLI source: > - linode-cli managed contact-delete 567 - /managed/credentials: - x-linode-cli-command: managed + linode-cli linodes shutdown 123 + /linode/instances/{linodeId}/transfer: + parameters: + - name: linodeId + in: path + description: ID of the Linode to look up. + required: true + schema: + type: integer + x-linode-cli-command: linodes get: - x-linode-grant: unrestricted only - parameters: - - $ref: '#/components/parameters/pageOffset' - - $ref: '#/components/parameters/pageSize' + x-linode-grant: read_only tags: - - Managed - summary: Managed Credentials List + - Linode Instances + summary: Network Transfer View description: > - Returns a paginated list of Managed Credentials on your Account. - operationId: getManagedCredentials - x-linode-cli-action: credentials-list + Returns a Linode's network transfer pool statistics for the current month. + operationId: getLinodeTransfer + x-linode-cli-action: transfer-view security: - personalAccessToken: [] - oauth: - - account:read_only + - linodes:read_only responses: '200': - description: A paginated list of ManagedCredentials + description: A collection of the specified Linode's network transfer statistics. content: application/json: schema: - type: object properties: - data: - type: array - items: - $ref: '#/components/schemas/ManagedCredential' - page: - $ref: '#/components/schemas/PaginationEnvelope/properties/page' - pages: - $ref: '#/components/schemas/PaginationEnvelope/properties/pages' - results: - $ref: '#/components/schemas/PaginationEnvelope/properties/results' + used: + type: integer + description: > + The amount of network transfer used by this Linode, in bytes, for the current month's billing cycle. + example: 22956600198 + readOnly: true + quota: + type: integer + description: > + The amount of network transfer this Linode adds to your transfer pool, in GB, for the current month's billing cycle. + example: 2000 + readOnly: true + billable: + type: integer + description: > + The amount of network transfer this Linode has used, in GB, past your monthly quota. + example: 0 + readOnly: true default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > curl -H "Authorization: Bearer $TOKEN" \ - https://api.linode.com/v4/managed/credentials + https://api.linode.com/v4/linode/instances/123/transfer - lang: CLI source: > - linode-cli managed credentials-list - post: - x-linode-grant: unrestricted only + linode-cli linodes transfer-view 123 + /linode/instances/{linodeId}/transfer/{year}/{month}: + parameters: + - name: linodeId + in: path + description: ID of the Linode to look up. + required: true + schema: + type: integer + - name: year + in: path + description: Numeric value representing the year to look up. + required: true + schema: + type: integer + minimum: 2000 + maximum: 2037 + - name: month + in: path + description: Numeric value representing the month to look up. + required: true + schema: + type: integer + minimum: 1 + maximum: 12 + x-linode-cli-command: linodes + get: + x-linode-grant: read_only tags: - - Managed - summary: Managed Credential Create + - Linode Instances + summary: Network Transfer View (year/month) description: > - Creates a Managed Credential. A Managed Credential is stored securely - to allow Linode special forces to access your Managed Services and resolve - issues. - operationId: createManagedCredential - x-linode-cli-action: credential-create + Returns a Linode's network transfer statistics for a specific month. The year/month + values must be either a date in the past, or the current month. + operationId: getLinodeTransferByYearMonth + x-linode-cli-skip: true + x-linode-cli-action: transfer-month security: - personalAccessToken: [] - oauth: - - account:read_write - requestBody: - description: Information about the Credential to create. - content: - application/json: - schema: - required: - - label - - password - allOf: - - $ref: '#/components/schemas/ManagedCredential' - - type: object - properties: - username: - type: string - minLength: 0 - maxLength: 5000 - description: > - The username to use when accessing the Managed Service. - example: johndoe - password: - type: string - description: > - The password to use when accessing the Managed Service. - example: s3cur3P@ssw0rd + - linodes:read_only responses: '200': - description: Credential created. + description: > + A collection of the specified Linode's network transfer statistics for the requested + month. content: application/json: schema: - $ref: '#/components/schemas/ManagedCredential' + properties: + bytes_in: + type: integer + description: > + The amount of inbound public network traffic received by this Linode, in + bytes, for a specific year/month. + example: 30471077120 + readOnly: true + bytes_out: + type: integer + description: > + The amount of outbound public network traffic sent by this Linode, in bytes, + for a specific year/month. + example: 22956600198 + readOnly: true + bytes_total: + type: integer + description: > + The total amount of public network traffic sent and received by this Linode, + in bytes, for a specific year/month. + example: 53427677318 + readOnly: true default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > - curl -H "Content-Type: application/json" \ - -H "Authorization: Bearer $TOKEN" \ - -X POST -d '{ - "label": "prod-password-1", - "username": "johndoe", - "password": "s3cur3P@ssw0rd" - }' \ - https://api.linode.com/v4/managed/credentials - - lang: CLI - source: > - linode-cli managed credential-create \ - --label prod-password-1 \ - --username johndoe \ - --password s3cur3P@ssw0rd - /managed/credentials/{credentialId}: + curl -H "Authorization: Bearer $TOKEN" \ + https://api.linode.com/v4/linode/instances/123/transfer/2018/01 + /linode/instances/{linodeId}/stats: parameters: - - name: credentialId + - name: linodeId in: path + description: ID of the Linode to look up. required: true - description: The ID of the Credential to access. schema: type: integer - x-linode-cli-command: managed + x-linode-cli-command: linodes get: - x-linode-grant: unrestricted only tags: - - Managed - summary: Managed Credential View + - Linode Instances + summary: Linode Statistics View description: > - Returns a single Managed Credential. - operationId: getManagedCredential - x-linode-cli-action: credential-view + Returns CPU, IO, IPv4, and IPv6 statistics for your Linode + for the past 24 hours. + operationId: getLinodeStats + x-linode-cli-skip: true + x-linode-cli-action: stats security: - personalAccessToken: [] - oauth: - - account:read_write + - linodes:read_only responses: '200': - description: The requested Managed Credential. + description: The Linode's stats for the past 24 hours. content: application/json: schema: - $ref: '#/components/schemas/ManagedCredential' + $ref: '#/components/schemas/LinodeStats' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > curl -H "Authorization: Bearer $TOKEN" \ - https://api.linode.com/v4/managed/credentials/9991 - - lang: CLI - source: > - linode-cli managed credential-view 9991 - put: - x-linode-grant: unrestricted only + https://api.linode.com/v4/linode/instances/123/stats + /linode/instances/{linodeId}/stats/{year}/{month}: + parameters: + - name: linodeId + in: path + description: ID of the Linode to look up. + required: true + schema: + type: integer + - name: year + in: path + description: Numeric value representing the year to look up. + required: true + schema: + type: integer + - name: month + in: path + description: Numeric value representing the month to look up. + required: true + schema: + type: integer + minimum: 1 + maximum: 12 + x-linode-cli-command: linodes + get: tags: - - Managed - summary: Managed Credential Update + - Linode Instances + summary: Statistics View (year/month) description: > - Updates the label of a Managed Credential. This endpoint - does not update the username and password for a Managed Credential. - To do this, use the Managed Credential Username and Password Update - ([POST /managed/credentials/{credentialId}/update](/docs/api/managed/#managed-credential-username-and-password-update)) - endpoint instead. - operationId: updateManagedCredential - x-linode-cli-action: credential-update + Returns statistics for a specific month. The year/month + values must be either a date in the past, or the current month. If the + current month, statistics will be retrieved for the past 30 days. + operationId: getLinodeStatsByYearMonth + x-linode-cli-skip: true + x-linode-cli-action: stats-month security: - personalAccessToken: [] - oauth: - - account:read_write - requestBody: - description: The fields to update. - required: true - content: - application/json: - schema: - $ref: '#/components/schemas/ManagedCredential' + - linodes:read_only responses: '200': - description: Credential updated successfully. + description: The Linode's statistics for the requested period. content: application/json: schema: - $ref: '#/components/schemas/ManagedCredential' + $ref: '#/components/schemas/LinodeStats' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > - curl -H "Content-Type: application/json" \ - -H "Authorization: Bearer $TOKEN" \ - -X PUT -d '{ - "label": "prod-password-1" - }' \ - https://api.linode.com/v4/managed/credentials/9991 - - lang: CLI - source: > - linode-cli managed credential-update 9991 \ - --label prod-password-1 - /managed/credentials/{credentialId}/update: + curl -H "Authorization: Bearer $TOKEN" \ + https://api.linode.com/v4/linode/instances/123/stats/2018/01 + /linode/instances/{linodeId}/volumes: parameters: - - name: credentialId + - name: linodeId in: path + description: ID of the Linode to look up. required: true - description: The ID of the Credential to update. schema: type: integer - x-linode-cli-command: managed - post: - x-linode-grant: unrestricted only + x-linode-cli-command: linodes + get: + parameters: + - $ref: '#/components/parameters/pageOffset' + - $ref: '#/components/parameters/pageSize' tags: - - Managed - summary: Managed Credential Username and Password Update + - Linode Instances + summary: Linode's Volumes List description: > - Updates the username and password for a Managed Credential. - operationId: updateManagedCredentialUsernamePassword - x-linode-cli-action: credential-update-username-password + View Block Storage Volumes attached to this Linode. + operationId: getLinodeVolumes + x-linode-cli-action: volumes security: - personalAccessToken: [] - oauth: - - account:read_write - requestBody: - description: > - The new username and password to assign to the - Managed Credential. - content: - application/json: - schema: - required: - - password - properties: - username: - type: string - minLength: 0 - maxLength: 5000 - description: > - The username to use when accessing the Managed Service. - example: johndoe - password: - type: string - description: > - The password to use when accessing the Managed Service. - example: s3cur3P@ssw0rd + - linodes:read_only responses: '200': - description: Credential username and password updated. + description: > + Returns an array of Block Storage Volumes attached to this Linode. content: application/json: schema: type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/Volume' + page: + $ref: '#/components/schemas/PaginationEnvelope/properties/page' + pages: + $ref: '#/components/schemas/PaginationEnvelope/properties/pages' + results: + $ref: '#/components/schemas/PaginationEnvelope/properties/results' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > - curl -H "Content-Type: application/json" \ - -H "Authorization: Bearer $TOKEN" \ - -X POST -d '{ - "username": "johndoe", - "password": "s3cur3P@ssw0rd" - }' \ - https://api.linode.com/v4/managed/credentials/9991/update + curl -H "Authorization: Bearer $TOKEN" \ + https://api.linode.com/v4/linode/instances/123/volumes - lang: CLI source: > - linode-cli managed credential-update-username-password 9991 \ - --username johndoe \ - --password s3cur3P@ssw0rd - /managed/credentials/{credentialId}/revoke: - parameters: - - name: credentialId - in: path - required: true - description: The ID of the Credential to access. - schema: - type: integer - x-linode-cli-command: managed - post: - x-linode-grant: unrestricted only + linode-cli linode volumes 123 + /linode/stackscripts: + x-linode-cli-command: stackscripts + get: + x-linode-grant: read_only + parameters: + - $ref: '#/components/parameters/pageOffset' + - $ref: '#/components/parameters/pageSize' tags: - - Managed - summary: Managed Credential Delete + - StackScripts + summary: StackScripts List description: > - Deletes a Managed Credential. Linode special forces will no longer - have access to this Credential when attempting to resolve issues. - operationId: deleteManagedCredential - x-linode-cli-action: credential-revoke + If the request is not authenticated, only public StackScripts are returned. + + + For more information on StackScripts, please read our [StackScripts guides](/docs/platform/stackscripts/). + operationId: getStackScripts + x-linode-cli-action: list security: - personalAccessToken: [] - oauth: - - account:read_write + - stackscripts:read_only responses: '200': - description: Credential deleted successfully. + description: > + A list of StackScripts available to the User, including private + StackScripts owned by the User if the request is authenticated. content: application/json: schema: type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/StackScript' + page: + $ref: '#/components/schemas/PaginationEnvelope/properties/page' + pages: + $ref: '#/components/schemas/PaginationEnvelope/properties/pages' + results: + $ref: '#/components/schemas/PaginationEnvelope/properties/results' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > - curl -H "Authorization: Bearer $TOKEN" \ - -X DELETE \ - https://api.linode.com/v4/managed/credentials/9991 + curl https://api.linode.com/v4/linode/stackscripts - lang: CLI source: > - linode-cli managed credential-revoke 9991 - /managed/credentials/sshkey: - x-linode-cli-command: managed - get: - x-linode-grant: unrestricted only + linode-cli stackscripts list + post: + x-linode-grant: add_stackscripts tags: - - Managed - summary: Managed SSH Key View + - StackScripts + summary: StackScript Create description: > - Returns the unique SSH public key assigned to your Linode account's - Managed service. If you [add this public key](/docs/platform/linode-managed/#adding-the-public-key) to a Linode on your account, - Linode special forces will be able to log in to the Linode with this key - when attempting to resolve issues. - operationId: viewManagedSSHKey - x-linode-cli-action: credential-sshkey-view + Creates a StackScript in your Account. + operationId: addStackScript + x-linode-cli-action: create security: - personalAccessToken: [] - oauth: - - account:read_only + - stackscripts:read_write + requestBody: + description: The properties to set for the new StackScript. + required: true + content: + application/json: + schema: + required: + - script + - label + - images + allOf: + - $ref: '#/components/schemas/StackScript' responses: '200': - description: The requested Managed SSH public key. + description: StackScript successfully created. content: application/json: schema: - type: object - description: > - A unique SSH public key that allows Linode's special forces - to access a Managed server to respond to Issues. - properties: - ssh_key: - type: string - description: > - The unique SSH public key assigned to your Linode account's Managed service. - example: ssh-rsa AAAAB...oD2ZQ== managedservices@linode - readOnly: true - x-linode-cli-display: 1 + $ref: '#/components/schemas/StackScript' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > - curl -H "Authorization: Bearer $TOKEN" \ - https://api.linode.com/v4/managed/credentials/sshkey + curl -H "Content-Type: application/json" \ + -H "Authorization: Bearer $TOKEN" \ + -X POST -d '{ + "label": "a-stackscript", + "description": "This StackScript installs and configures MySQL", + "images": [ + "linode/debian9", + "linode/debian8" + ], + "is_public": true, + "rev_note": "Set up MySQL", + "script": "#!/bin/bash" + }' \ + https://api.linode.com/v4/linode/stackscripts - lang: CLI source: > - linode-cli managed credential-sshkey-view - /managed/issues: - x-linode-cli-command: managed + linode-cli stackscripts create \ + --label a-stackscript \ + --description "This StackScript install and configures MySQL" \ + --images "linode/debian9" \ + --images "linode/debian8" \ + --is_public true \ + --rev_note "Set up MySQL" \ + --script '#!/bin/bash' + /linode/stackscripts/{stackscriptId}: + parameters: + - name: stackscriptId + in: path + description: The ID of the StackScript to look up. + required: true + schema: + type: string + x-linode-cli-command: stackscripts get: - x-linode-grant: unrestricted only - parameters: - - $ref: '#/components/parameters/pageOffset' - - $ref: '#/components/parameters/pageSize' + x-linode-grant: read_only tags: - - Managed - summary: Managed Issues List + - StackScripts + summary: StackScript View description: > - Returns a paginated list of recent and ongoing issues detected on your - Managed Services. - operationId: getManagedIssues - x-linode-cli-action: issues-list + Returns all of the information about a specified + StackScript, including the contents of the script. + operationId: getStackScript + x-linode-cli-action: view security: - personalAccessToken: [] - oauth: - - account:read_only + - stackscripts:read_only responses: '200': - description: > - A paginated list of open or ongoing Managed Issues. + description: A single StackScript. content: application/json: schema: - type: object - properties: - data: - type: array - items: - $ref: '#/components/schemas/ManagedIssue' - page: - $ref: '#/components/schemas/PaginationEnvelope/properties/page' - pages: - $ref: '#/components/schemas/PaginationEnvelope/properties/pages' - results: - $ref: '#/components/schemas/PaginationEnvelope/properties/results' + $ref: '#/components/schemas/StackScript' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > - curl -H "Authorization: Bearer $TOKEN" \ - https://api.linode.com/v4/managed/issues + curl https://api.linode.com/v4/linode/stackscripts/10079 - lang: CLI source: > - linode-cli managed issues-list - /managed/issues/{issueId}: - parameters: - - name: issueId - in: path - required: true - description: The Issue to look up. - schema: - type: integer - x-linode-cli-command: managed - get: - x-linode-grant: unrestricted only + linode-cli stackscripts view 10079 + put: + x-linode-grant: read_write tags: - - Managed - summary: Managed Issue View + - StackScripts + summary: StackScript Update description: > - Returns a single Issue that is impacting or did impact one of your - Managed Services. - operationId: getManagedIssue - x-linode-cli-action: issue-view + Updates a StackScript. + + + **Once a StackScript is made public, it cannot be made private.** + operationId: updateStackScript + x-linode-cli-action: update security: - personalAccessToken: [] - oauth: - - account:read_only + - stackscripts:read_write + requestBody: + description: The fields to update. + content: + application/json: + schema: + $ref: '#/components/schemas/StackScript' responses: '200': - description: The requested issue. + description: StackScript was successfully modified. content: application/json: schema: - $ref: '#/components/schemas/ManagedIssue' + $ref: '#/components/schemas/StackScript' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > - curl -H "Authorization: Bearer $TOKEN" \ - https://api.linode.com/v4/managed/issues/823 - - lang: CLI - source: > - linode-cli managed issue-view 823 - /managed/linode-settings: - x-linode-cli-command: managed - get: - x-linode-grant: unrestricted only - parameters: - - $ref: '#/components/parameters/pageOffset' - - $ref: '#/components/parameters/pageSize' + curl -H "Content-Type: application/json" \ + -H "Authorization: Bearer $TOKEN" \ + -X PUT -d '{ + "label": "a-stackscript", + "description": "This StackScript installs and configures MySQL", + "images": [ + "linode/debian9", + "linode/debian8" + ], + "is_public": true, + "rev_note": "Set up MySQL", + "script": "#!/bin/bash" + }' \ + https://api.linode.com/v4/linode/stackscripts/10079 + - lang: CLI + source: > + linode-cli stackscripts update 10079 \ + --label a-stackscript \ + --description "This StackScript installs \ + and configures MySQL" \ + --images "linode/debian9" \ + --images "linode/debian8" \ + --is_public true \ + --rev_note "Set up MySQL" \ + --script '#!/bin/bash' + delete: + x-linode-grant: read_write tags: - - Managed - summary: Managed Linode Settings List + - StackScripts + summary: StackScript Delete description: > - Returns a paginated list of Managed Settings for your Linodes. There will - be one entry per Linode on your Account. - operationId: getManagedLinodeSettings - x-linode-cli-action: linode-settings-list + Deletes a private StackScript you have permission to `read_write`. You cannot delete a public StackScript. + operationId: deleteStackScript + x-linode-cli-action: delete security: - personalAccessToken: [] - oauth: - - account:read_only + - stackscripts:read_write responses: '200': - description: > - A paginated list of Managed settings for your Linodes. + description: StackScript was deleted. content: application/json: schema: type: object - properties: - data: - type: array - items: - $ref: '#/components/schemas/ManagedLinodeSettings' - page: - $ref: '#/components/schemas/PaginationEnvelope/properties/page' - pages: - $ref: '#/components/schemas/PaginationEnvelope/properties/pages' - results: - $ref: '#/components/schemas/PaginationEnvelope/properties/results' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > curl -H "Authorization: Bearer $TOKEN" \ - https://api.linode.com/v4/managed/linode-settings + -X DELETE \ + https://api.linode.com/v4/linode/stackscripts/10079 - lang: CLI source: > - linode-cli managed linode-settings-list - /managed/linode-settings/{linodeId}: - parameters: - - name: linodeId - in: path - required: true - description: The Linode ID whose settings we are accessing. - schema: - type: integer - x-linode-cli-command: managed + linode-cli stackscripts delete 10079 + /linode/types: + x-linode-cli-command: linodes get: - x-linode-grant: unrestricted only tags: - - Managed - summary: Linode's Managed Settings View + - Linode Types + summary: Types List description: > - Returns a single Linode's Managed settings. - operationId: getManagedLinodeSetting - x-linode-cli-action: linode-setting-view - security: - - personalAccessToken: [] - - oauth: - - account:read_only + Returns collection of Linode Types, including pricing and + specifications for each Type. These are used when + [creating](/docs/api/linode-instances/#linode-create) + or [resizing](/docs/api/linode-instances/#linode-resize) + Linodes. + x-linode-redoc-load-ids: true + operationId: getLinodeTypes + x-linode-cli-action: types responses: '200': - description: The requested Linode's Managed settings. + description: A collection of Linode Types. content: application/json: schema: - $ref: '#/components/schemas/ManagedLinodeSettings' + type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/LinodeType' + page: + $ref: '#/components/schemas/PaginationEnvelope/properties/page' + pages: + $ref: '#/components/schemas/PaginationEnvelope/properties/pages' + results: + $ref: '#/components/schemas/PaginationEnvelope/properties/results' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > - curl -H "Authorization: Bearer $TOKEN" \ - https://api.linode.com/v4/managed/linode-settings/123 + curl https://api.linode.com/v4/linode/types - lang: CLI source: > - linode-cli managed linode-setting-view 123 - put: - x-linode-grant: unrestricted only + linode-cli linodes types + /linode/types/{typeId}: + parameters: + - name: typeId + in: path + description: The ID of the Linode Type to look up. + required: true + schema: + type: string + x-linode-cli-command: linodes + get: tags: - - Managed - summary: Linode's Managed Settings Update + - Linode Types + summary: Type View description: > - Updates a single Linode's Managed settings. - operationId: updateManagedLinodeSetting - x-linode-cli-action: linode-setting-update - security: - - personalAccessToken: [] - - oauth: - - account:read_write - requestBody: - description: The settings to update. - required: true - content: - application/json: - schema: - $ref: '#/components/schemas/ManagedLinodeSettings' + Returns information about a specific Linode Type, including pricing and + specifications. This is used when + [creating](/docs/api/linode-instances/#linode-create) + or [resizing](/docs/api/linode-instances/#linode-resize) + Linodes. + operationId: getLinodeType + x-linode-cli-action: type-view responses: '200': - description: Settings updated successfully. + description: A single Linode Type. content: application/json: schema: - $ref: '#/components/schemas/ManagedLinodeSettings' + $ref: '#/components/schemas/LinodeType' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > - curl -H "Content-Type: application/json" \ - -H "Authorization: Bearer $TOKEN" \ - -X PUT -d '{ - "ssh": { - "access": true, - "user": "linode", - "ip": "12.34.56.78", - "port": 22 - } - }' \ - https://api.linode.com/v4/managed/linode-settings/123 + curl https://api.linode.com/v4/linode/types/g6-standard-2 - lang: CLI source: > - linode-cli managed linode-setting-update \ - 7833234 \ - --ssh.access true \ - --ssh.user linode \ - --ssh.port 22 \ - --ssh.ip 12.34.56.78 - /managed/services: - x-linode-cli-command: managed + linode-cli linodes type-view g6-standard-2 + /lke/clusters: + x-linode-cli-command: lke get: - x-linode-grant: unrestricted only - tags: - - Managed - summary: Managed Services List - description: > - Returns a paginated list of Managed Services on your Account. These - are the services Linode Managed is monitoring and will report and attempt - to resolve issues with. - operationId: getManagedServices - x-linode-cli-action: services-list + operationId: getLKEClusters + x-linode-cli-action: clusters-list + x-linode-grant: read_only security: - personalAccessToken: [] - oauth: - - account:read_only + - lke:read_only + tags: + - Linode Kubernetes Engine (LKE) + summary: Kubernetes Clusters List + description: > + Lists current Kubernetes clusters available on your account. responses: '200': - description: A paginated list of Managed Services + description: Returns an array of all Kubernetes clusters on your Account. content: application/json: schema: @@ -9680,7 +9992,7 @@ paths: data: type: array items: - $ref: '#/components/schemas/ManagedService' + $ref: '#/components/schemas/LKECluster' page: $ref: '#/components/schemas/PaginationEnvelope/properties/page' pages: @@ -9693,189 +10005,302 @@ paths: - lang: Shell source: > curl -H "Authorization: Bearer $TOKEN" \ - https://api.linode.com/v4/managed/services + https://api.linode.com/v4/lke/clusters - lang: CLI source: > - linode-cli managed services-list + linode-cli lke clusters-list post: - x-linode-grant: unrestricted only - tags: - - Managed - summary: Managed Service Create - description: > - Creates a Managed Service. Linode Managed will begin monitoring this - service and reporting and attempting to resolve any Issues. - operationId: createManagedService - x-linode-cli-action: service-create + operationId: createLKECluster + x-linode-cli-action: cluster-create + x-linode-charge: true + x-linode-grant: add_clusters security: - personalAccessToken: [] - oauth: - - account:read_write + - lke:read_write + tags: + - Linode Kubernetes Engine (LKE) + summary: Kubernetes Cluster Create + description: | + Creates a Kubernetes cluster. The Kubernetes cluster will be created + asynchronously. You can use the events system to determine when the + Kubernetes cluster is ready to use. Please note that it often takes 2-5 minutes before the + [Kubernetes API server endpoint](/docs/api/linode-kubernetes-engine-lke/#kubernetes-api-endpoints-list) and + the [Kubeconfig file](/docs/api/linode-kubernetes-engine-lke/#kubeconfig-view) for the new cluster + are ready. requestBody: - description: Information about the service to monitor. + description: Configuration for the Kubernetes cluster + x-linode-cli-allowed-defaults: + - region content: application/json: schema: + type: object required: - label - - service_type - - address - - timeout - allOf: - - $ref: '#/components/schemas/ManagedService' - responses: - '200': - description: Service created. - content: - application/json: - schema: - $ref: '#/components/schemas/ManagedService' - default: - $ref: '#/components/responses/ErrorResponse' - x-code-samples: - - lang: Shell - source: > - curl -H "Content-Type: application/json" \ - -H "Authorization: Bearer $TOKEN" \ - -X POST -d '{ - "service_type": "url", - "label": "prod-1", - "address": "https://example.org", - "timeout": 30, - "body": "it worked", - "consultation_group": "on-call", - "notes": "The service name is my-cool-application", - "credentials": [ - 9991 - ] - }' \ - https://api.linode.com/v4/managed/services + - region + - k8s_version + - node_pools + properties: + label: + $ref: '#/components/schemas/LKECluster/properties/label' + region: + $ref: '#/components/schemas/LKECluster/properties/region' + k8s_version: + $ref: '#/components/schemas/LKECluster/properties/k8s_version' + tags: + $ref: '#/components/schemas/LKECluster/properties/tags' + node_pools: + type: array + required: + - type + - count + items: + $ref: '#/components/schemas/LKENodePoolRequestBody' + control_plane: + type: object + description: > + Defines settings for the Kubernetes Control Plane. Allows for the enabling of High Availability (HA) for Control Plane Components. Enabling High Availability for LKE is an **irreversible** change. + properties: + high_availability: + type: boolean + description: > + Defines whether High Availability is enabled for the Control Plane Components of the cluster. Defaults to `false`. + example: true + responses: + '200': + description: Kubernetes cluster creation has started. + content: + application/json: + schema: + $ref: '#/components/schemas/LKECluster' + default: + $ref: '#/components/responses/ErrorResponse' + x-code-samples: + - lang: Shell + source: > + curl -H "Content-Type: application/json" \ + -H "Authorization: Bearer $TOKEN" \ + -X POST -d '{ + "label": "cluster12345", + "region": "us-central", + "k8s_version": "1.23", + "tags": ["ecomm", "blogs"], + "control_plane": { + "high_availability": true + }, + "node_pools": [ + { + "type": "g6-standard-4", + "count": 6, + "autoscaler": { + "enabled": true, + "max": 12, + "min": 3 + } + }, + { + "type": "g6-standard-8", + "count": 3 + } + ] + }' \ + https://api.linode.com/v4/lke/clusters - lang: CLI source: > - linode-cli managed service-create \ - --service_type url \ - --label prod-1 \ - --address "https://example.org" \ - --timeout 30 \ - --body "it worked" \ - --consultation_group on-call \ - --notes "The service name is \ - my-cool-application" \ - --credentials 9991 - /managed/services/{serviceId}: + linode-cli lke cluster-create \ + --label cluster12345 \ + --region us-central \ + --k8s_version 1.23 \ + --control_plane.high_availability true \ + --node_pools.type g6-standard-4 --node_pools.count 6 \ + --node_pools.type g6-standard-8 --node_pools.count 3 \ + --node_pools.autoscaler.enabled true \ + --node_pools.autoscaler.max 12 \ + --node_pools.autoscaler.min 3 \ + --tags ecomm + /lke/clusters/{clusterId}: parameters: - - name: serviceId + - name: clusterId in: path + description: ID of the Kubernetes cluster to look up. required: true - description: The ID of the Managed Service to access. schema: type: integer - x-linode-cli-command: managed + x-linode-cli-command: lke get: - x-linode-grant: unrestricted only - tags: - - Managed - summary: Managed Service View - description: > - Returns information about a single Managed Service on your Account. - operationId: getManagedService - x-linode-cli-action: service-view + operationId: getLKECluster + x-linode-cli-action: cluster-view security: - personalAccessToken: [] - oauth: - - account:read_only + - lke:read_only + tags: + - Linode Kubernetes Engine (LKE) + summary: Kubernetes Cluster View + description: > + Get a specific Cluster by ID. responses: '200': - description: The requested Managed Service. + description: Returns a single Kubernetes cluster. content: application/json: schema: - $ref: '#/components/schemas/ManagedService' + $ref: '#/components/schemas/LKECluster' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > curl -H "Authorization: Bearer $TOKEN" \ - https://api.linode.com/v4/managed/services/9994 + https://api.linode.com/v4/lke/clusters/12345 - lang: CLI - source: > - linode-cli managed service-view 9994 + source: + linode-cli lke cluster-view 12345 put: - x-linode-grant: unrestricted only - tags: - - Managed - summary: Managed Service Update - description: > - Updates information about a Managed Service. - operationId: updateManagedService - x-linode-cli-action: service-update + operationId: putLKECluster + x-linode-cli-action: cluster-update security: - personalAccessToken: [] - oauth: - - account:read_write + - lke:read_write + tags: + - Linode Kubernetes Engine (LKE) + summary: Kubernetes Cluster Update + description: > + Updates a Kubernetes cluster. requestBody: - description: The fields to update. - required: true + description: The fields to update the Kubernetes cluster. content: application/json: schema: - $ref: '#/components/schemas/ManagedService' + properties: + label: + $ref: '#/components/schemas/LKECluster/properties/label' + tags: + type: array + items: + type: string + example: + - prod + - monitoring + - ecomm + - blog + description: > + An array of tags applied to the Kubernetes cluster. Tags are for organizational purposes only. + To delete a tag, exclude it from your `tags` array. + k8s_version: + type: string + description: > + The desired Kubernetes version for this Kubernetes cluster in the format of + <major>.<minor>. New and recycled Nodes in this cluster will be installed with the + latest available patch for the Cluster's Kubernetes version. + + + When upgrading the Kubernetes version, only the next latest minor version following the current + version can be deployed. For example, a cluster with Kubernetes version 1.19 can be upgraded to + version 1.20, but not directly to 1.21. + + + The Kubernetes version of a cluster can not be downgraded. + control_plane: + type: object + description: | + Defines settings for the Kubernetes Control Plane. Allows for the enabling of High Availability (HA) for Control Plane Components. + + Enabling High Availability for LKE is an **irreversible** change. + + When upgrading pre-existing LKE clusters to use the HA Control Plane, the following changes will additionally occur: + + - All nodes will be deleted and new nodes will be created to replace them. + + - Any local storage (such as `hostPath` volumes) will be erased. + + - The upgrade process may take several minutes to complete, as nodes will be replaced on a rolling basis. + properties: + high_availability: + type: boolean + description: > + Defines whether High Availability is enabled for the Control Plane Components of the cluster. Defaults to `false`. + example: true responses: '200': - description: Service updated successfully. + description: Returns a single Kubernetes cluster. content: application/json: schema: - $ref: '#/components/schemas/ManagedService' - default: - $ref: '#/components/responses/ErrorResponse' + properties: + label: + $ref: '#/components/schemas/LKECluster/properties/label' + tags: + type: array + items: + type: string + example: + - prod + - monitoring + - ecomm + - blog + description: > + An array of tags applied to the Kubernetes cluster. Tags are for organizational purposes only. + To delete a tag, exclude it from your `tags` array. + created: + $ref: '#/components/schemas/LKECluster/properties/created' + updated: + $ref: '#/components/schemas/LKECluster/properties/updated' + region: + $ref: '#/components/schemas/LKECluster/properties/region' + k8s_version: + $ref: '#/components/schemas/LKECluster/properties/k8s_version' x-code-samples: - lang: Shell source: > curl -H "Content-Type: application/json" \ - -H "Authorization: Bearer $TOKEN" \ - -X PUT -d '{ - "service_type": "url", - "label": "prod-1", - "address": "https://example.org", - "timeout": 30, - "body": "it worked", - "consultation_group": "on-call", - "notes": "The service name is my-cool-application", - "credentials": [ - 9991 - ] - }' \ - https://api.linode.com/v4/managed/services/9994 + -H "Authorization: Bearer $TOKEN" \ + -X PUT -d '{ + "label": "lkecluster54321" + "tags" : ["ecomm", "blog", "prod", "monitoring"] + "control_plane": { + "high_availability": true + }, + "k8s_version": "1.17" + }' \ + https://api.linode.com/v4/lke/clusters/12345 - lang: CLI source: > - linode-cli managed service-update 9994 \ - --service_type url \ - --label prod-1 \ - --address "https://example.org" \ - --timeout 30 \ - --body "it worked" \ - --consultation_group on-call \ - --notes "The service name is my-cool-application" \ - --credentials 9991 + linode-cli lke cluster-update 12345 \ + --label lkecluster54321 \ + --control_plane.high_availability true \ + --k8s_version 1.23 \ + --tags ecomm \ + --tags blog \ + --tags prod \ + --tags monitoring delete: - x-linode-grant: unrestricted only - tags: - - Managed - summary: Managed Service Delete - description: > - Deletes a Managed Service. This service will no longer be monitored by - Linode Managed. - operationId: deleteManagedService - x-linode-cli-action: service-delete + operationId: deleteLKECluster + x-linode-cli-action: cluster-delete security: - personalAccessToken: [] - oauth: - - account:read_write + - lke:read_write + tags: + - Linode Kubernetes Engine (LKE) + summary: Kubernetes Cluster Delete + description: | + Deletes a Cluster you have permission to `read_write`. + + **Deleting a Cluster is a destructive action and cannot be undone.** + + Deleting a Cluster: + - Deletes all Linodes in all pools within this Kubernetes cluster + - Deletes all supporting Kubernetes services for this Kubernetes + cluster (API server, etcd, etc) + - Deletes all NodeBalancers created by this Kubernetes cluster + - Does not delete any of the volumes created by this Kubernetes + cluster responses: '200': - description: Service deleted successfully. + description: Delete successful content: application/json: schema: @@ -9886,421 +10311,450 @@ paths: - lang: Shell source: > curl -H "Authorization: Bearer $TOKEN" \ - -X DELETE \ - https://api.linode.com/v4/managed/services/9994 + -X DELETE \ + https://api.linode.com/v4/lke/clusters/12345 - lang: CLI source: > - linode-cli managed service-delete 9994 - /managed/services/{serviceId}/disable: + linode-cli lke cluster-delete 12345 + /lke/clusters/{clusterId}/pools: parameters: - - name: serviceId + - name: clusterId in: path + description: ID of the Kubernetes cluster to look up. required: true - description: The ID of the Managed Service to disable. schema: type: integer - x-linode-cli-command: managed - post: - x-linode-grant: unrestricted only - tags: - - Managed - summary: Managed Service Disable - description: > - Temporarily disables monitoring of a Managed Service. - operationId: disableManagedService - x-linode-cli-action: service-disable + x-linode-cli-command: lke + get: + operationId: getLKEClusterPools + x-linode-cli-action: pools-list security: - personalAccessToken: [] - oauth: - - account:read_write + - lke:read_only + tags: + - Linode Kubernetes Engine (LKE) + summary: Node Pools List + description: > + Returns all active Node Pools on a Kubernetes cluster. responses: '200': - description: Service disabled. + description: Returns an array of all Pools in this Kubernetes cluster. content: application/json: + x-linode-cli-nested-list: nodes + x-linode-cli-use-schema: + type: object + properties: + id: + x-linode-cli-display: 1 + type: + x-linode-cli-display: 2 + nodes.id: + x-linode-cli-display: 3 + nodes.instance_id: + x-linode-cli-display: 4 + nodes.status: + x-linode-cli-display: 5 schema: - $ref: '#/components/schemas/ManagedService' + type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/LKENodePool' + page: + $ref: '#/components/schemas/PaginationEnvelope/properties/page' + pages: + $ref: '#/components/schemas/PaginationEnvelope/properties/pages' + results: + $ref: '#/components/schemas/PaginationEnvelope/properties/results' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > - curl -H "Content-Type: application/json" \ - -H "Authorization: Bearer $TOKEN" \ - -X POST \ - https://api.linode.com/v4/managed/services/9994/disable + curl -H "Authorization: Bearer $TOKEN" \ + https://api.linode.com/v4/lke/clusters/12345/pools - lang: CLI source: > - linode-cli managed service-disable 9994 - /managed/services/{serviceId}/enable: - parameters: - - name: serviceId - in: path - required: true - description: The ID of the Managed Service to enable. - schema: - type: integer - x-linode-cli-command: managed + linode-cli lke pools-list 12345 post: - x-linode-grant: unrestricted only - tags: - - Managed - summary: Managed Service Enable - description: > - Enables monitoring of a Managed Service. - operationId: enableManagedService - x-linode-cli-action: service-enable + operationId: postLKEClusterPools + x-linode-cli-action: pool-create security: - personalAccessToken: [] - oauth: - - account:read_write + - lke:read_write + tags: + - Linode Kubernetes Engine (LKE) + summary: Node Pool Create + description: > + Creates a new Node Pool for the designated Kubernetes cluster. + requestBody: + description: Configuration for the Node Pool + required: true + content: + application/json: + schema: + type: object + required: + - type + - count + allOf: + - $ref: '#/components/schemas/LKENodePoolRequestBody' responses: '200': - description: Service enabled. + description: Node Pool has been created. content: application/json: schema: - $ref: '#/components/schemas/ManagedService' + $ref: '#/components/schemas/LKENodePool' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > curl -H "Content-Type: application/json" \ - -H "Authorization: Bearer $TOKEN" \ - -X POST \ - https://api.linode.com/v4/managed/services/9994/enable + -H "Authorization: Bearer $TOKEN" \ + -X POST -d '{ + "type": "g6-standard-4", + "count": 6, + "tags": ["example-tag"], + "autoscaler": { + "enabled": true, + "max": 12, + "min": 3 + } + }' \ + https://api.linode.com/v4/lke/clusters/12345/pools - lang: CLI source: > - linode-cli managed service-enable 9994 - /managed/stats: - x-linode-cli-command: managed - get: - x-linode-grant: unrestricted only - tags: - - Managed - summary: Managed Stats List - description: | - Returns a list of Managed Stats on your Account in the form of x and y data points. - You can use these data points to plot your own graph visualizations. These stats - reflect the last 24 hours of combined usage across all managed Linodes on your account - giving you a high-level snapshot of data for the following: - - - * cpu - * disk - * swap - * network in - * network out - operationId: getManagedStats - x-linode-cli-action: stats-list + linode-cli lke pool-create 12345 \ + --type g6-standard-4 \ + --count 6 \ + --tags example-tag \ + --autoscaler.enabled true \ + --autoscaler.max 12 \ + --autoscaler.min 3 + /lke/clusters/{clusterId}/recycle: + parameters: + - name: clusterId + in: path + description: ID of the Kubernetes cluster which contains nodes to be recycled. + required: true + schema: + type: integer + x-linode-cli-command: lke + post: + operationId: postLKEClusterRecycle + x-linode-cli-action: cluster-nodes-recycle security: - personalAccessToken: [] - oauth: - - account:read_only + - lke:read_write + tags: + - Linode Kubernetes Engine (LKE) + summary: Cluster Nodes Recycle + description: | + Recycles all nodes in all pools of a designated Kubernetes Cluster. All Linodes within the Cluster will be deleted + and replaced with new Linodes on a rolling basis, which may take several minutes. Replacement Nodes are + installed with the latest available [patch version](https://github.com/kubernetes/community/blob/master/contributors/design-proposals/release/versioning.md#kubernetes-release-versioning) for the Cluster's current Kubernetes minor release. + + **Any local storage on deleted Linodes (such as "hostPath" and "emptyDir" volumes, or "local" PersistentVolumes) will be erased.** responses: '200': - description: A list of Managed Stats from the last 24 hours. + description: Recycle request succeeded and is in progress. content: application/json: schema: type: object - properties: - data: - type: object - oneOf: - - x-linode-ref-name: "Stats Available" - $ref: '#/components/schemas/StatsDataAvailable' - - x-linode-ref-name: "Stats Unavailable" - $ref: '#/components/schemas/StatsDataUnavailable' - discriminator: - propertyName: x-linode-ref-name default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > - curl -H "Authorization: Bearer $TOKEN" \ - https://api.linode.com/v4/managed/stats + curl -H "Content-Type: application/json" \ + -H "Authorization: Bearer $TOKEN" \ + -X POST \ + https://api.linode.com/v4/lke/clusters/12345/recycle - lang: CLI source: > - linode-cli managed stats-list - /networking/ips: - x-linode-cli-command: networking + linode-cli lke cluster-nodes-recycle 12345 + /lke/clusters/{clusterId}/pools/{poolId}: + parameters: + - name: clusterId + in: path + description: ID of the Kubernetes cluster to look up. + required: true + schema: + type: integer + - name: poolId + in: path + description: ID of the Pool to look up + required: true + schema: + type: integer + x-linode-cli-command: lke get: - x-linode-grant: read_only - tags: - - Networking - summary: IP Addresses List - description: > - Returns a paginated list of IP Addresses on your Account, excluding - private addresses. - operationId: getIPs - x-linode-cli-action: ips-list + operationId: getLKENodePool + x-linode-cli-action: pool-view security: - personalAccessToken: [] - oauth: - - ips:read_only + - lke:read_only + tags: + - Linode Kubernetes Engine (LKE) + summary: Node Pool View + description: > + Get a specific Node Pool by ID. responses: '200': - description: A paginated list of IP Addresses. + description: Returns the requested Node Pool. content: application/json: schema: - type: object - properties: - data: - type: array - items: - $ref: '#/components/schemas/IPAddress' - page: - $ref: '#/components/schemas/PaginationEnvelope/properties/page' - pages: - $ref: '#/components/schemas/PaginationEnvelope/properties/pages' - results: - $ref: '#/components/schemas/PaginationEnvelope/properties/results' - default: - $ref: '#/components/responses/ErrorResponse' + $ref: '#/components/schemas/LKENodePool' x-code-samples: - lang: Shell source: > curl -H "Authorization: Bearer $TOKEN" \ - https://api.linode.com/v4/networking/ips + https://api.linode.com/v4/lke/clusters/12345/pools/456 - lang: CLI source: > - linode-cli networking ips-list - post: - x-linode-grant: read_write - tags: - - Networking - summary: IP Address Allocate - description: > - Allocates a new IPv4 Address on your Account. The Linode must be - configured to support additional addresses - please - [open a support ticket](/docs/api/support/#support-ticket-open) requesting additional - addresses before attempting allocation. - operationId: allocateIP - x-linode-cli-action: ip-add + linode-cli lke pool-view 12345 456 + put: + operationId: putLKENodePool + x-linode-cli-action: pool-update security: - personalAccessToken: [] - oauth: - - ips:read_write - - linodes:read_write + - lke:read_write + tags: + - Linode Kubernetes Engine (LKE) + summary: Node Pool Update + description: | + Updates a Node Pool's count and autoscaler configuration. + + Linodes will be created or deleted to match changes to the Node Pool's count. + + **Any local storage on deleted Linodes (such as "hostPath" and "emptyDir" volumes, or "local" PersistentVolumes) will be erased.** requestBody: - description: Information about the address you are creating. - required: true + description: The fields to update content: application/json: schema: - required: - - type - - public - - linode_id properties: - type: - type: string - enum: - - ipv4 - description: > - The type of address you are requesting. Only - IPv4 addresses may be allocated through this endpoint. - example: ipv4 - public: - type: boolean - description: > - Whether to create a public or private IPv4 address. - example: true - linode_id: - type: integer - description: > - The ID of a Linode you you have access to that this address - will be allocated to. - example: 123 + count: + $ref: '#/components/schemas/LKENodePoolRequestBody/properties/count' + autoscaler: + $ref: '#/components/schemas/LKENodePoolRequestBody/properties/autoscaler' responses: '200': - description: IP Address allocated successfully. + description: Node Pool was successfully modified. content: application/json: schema: - $ref: '#/components/schemas/IPAddress' - default: - $ref: '#/components/responses/ErrorResponse' + $ref: '#/components/schemas/LKENodePool' x-code-samples: - lang: Shell source: > curl -H "Content-Type: application/json" \ - -H "Authorization: Bearer $TOKEN" \ - -X POST -d '{ - "type": "ipv4", - "public": true, - "linode_id": 123 - }' \ - https://api.linode.com/v4/networking/ips + -H "Authorization: Bearer $TOKEN" \ + -X PUT -d '{ + "count": 6, + "autoscaler": { + "enabled": true, + "max": 12, + "min": 3 + }' \ + https://api.linode.com/v4/lke/clusters/12345/pools/456 - lang: CLI source: > - linode-cli networking ip-add \ - --type ipv4 \ - --public true \ - --linode_id 123 - /networking/ips/{address}: - parameters: - - name: address - in: path - required: true - description: The address to operate on. - schema: - type: string - format: ip - x-linode-cli-command: networking - get: - x-linode-grant: read_only - tags: - - Networking - summary: IP Address View - description: > - Returns information about a single IP Address on your Account. - operationId: getIP - x-linode-cli-action: ip-view + linode-cli lke pool-update 12345 456 \ + --count 6 \ + --autoscaler.enabled true \ + --autoscaler.max 12 \ + --autoscaler.min 3 + delete: + operationId: deleteLKENodePool + x-linode-cli-action: pool-delete security: - personalAccessToken: [] - oauth: - - ips:read_only + - lke:read_write + tags: + - Linode Kubernetes Engine (LKE) + summary: Node Pool Delete + description: | + Delete a specific Node Pool from a Kubernetes cluster. + + **Deleting a Node Pool is a destructive action and cannot be undone.** + + Deleting a Node Pool will delete all Linodes within that Pool. responses: '200': - description: The requested IP Address. + description: Delete successful content: application/json: schema: - $ref: '#/components/schemas/IPAddress' + type: object default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > curl -H "Authorization: Bearer $TOKEN" \ - https://api.linode.com/v4/networking/ips/97.107.143.141 + -X DELETE \ + https://api.linode.com/v4/lke/clusters/12345/pools/456 - lang: CLI source: > - linode-cli networking ip-view 97.107.143.141 - put: - x-linode-grant: read_write - tags: - - Networking - summary: IP Address RDNS Update - description: > - Sets RDNS on an IP Address. Forward DNS must already be set up for - reverse DNS to be applied. If you set the RDNS to `null` for public - IPv4 addresses, it will be reset to the default _ip.linodeusercontent.com_ - RDNS value. - operationId: updateIP - x-linode-cli-action: ip-update + linode-cli lke pool-delete 12345 456 + /lke/clusters/{clusterId}/pools/{poolId}/recycle: + parameters: + - name: clusterId + in: path + description: ID of the Kubernetes cluster this Node Pool is attached to. + required: true + schema: + type: integer + - name: poolId + in: path + description: ID of the Node Pool to be recycled. + required: true + schema: + type: integer + x-linode-cli-command: lke + post: + operationId: postLKEClusterPoolRecycle + x-linode-cli-action: pool-recycle security: - personalAccessToken: [] - oauth: - - ips:read_write - requestBody: - description: The information to update. - required: true - content: - application/json: - schema: - $ref: '#/components/schemas/IPAddress' + - lke:read_write + tags: + - Linode Kubernetes Engine (LKE) + summary: Node Pool Recycle + description: | + Recycles a Node Pool for the designated Kubernetes Cluster. All Linodes within the Node Pool will be deleted + and replaced with new Linodes on a rolling basis, which may take several minutes. Replacement Nodes are + installed with the latest available patch for the Cluster's Kubernetes Version. + + **Any local storage on deleted Linodes (such as "hostPath" and "emptyDir" volumes, or "local" PersistentVolumes) will be erased.** responses: '200': - description: RDNS set successfully + description: Recycle request succeeded and is in progress. content: application/json: schema: - $ref: '#/components/schemas/IPAddress' + type: object default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > curl -H "Content-Type: application/json" \ - -H "Authorization: Bearer $TOKEN" \ - -X PUT -d '{ - "rdns": "test.example.org" - }' \ - https://api.linode.com/v4/networking/ips/97.107.143.141 + -H "Authorization: Bearer $TOKEN" \ + -X POST \ + https://api.linode.com/v4/lke/clusters/12345/pools/456/recycle - lang: CLI source: > - linode-cli networking ip-update \ - 97.107.143.141 \ - --rdns "test.example.org" - /networking/ips/assign: - x-linode-cli-command: networking - post: - x-linode-grant: read_write + linode-cli lke pool-recycle 12345 456 + /lke/clusters/{clusterId}/nodes/{nodeId}: + parameters: + - name: clusterId + in: path + description: ID of the Kubernetes cluster containing the Node. + required: true + schema: + type: integer + - name: nodeId + in: path + description: ID of the Node to look up. + required: true + schema: + type: string + x-linode-cli-command: lke + get: + operationId: getLKEClusterNode + x-linode-cli-action: node-view + security: + - personalAccessToken: [] + - oauth: + - lke:read_write tags: - - Networking - summary: Linodes Assign IPs - description: | - Assign multiple IPv4 addresses and/or IPv6 ranges to multiple Linodes in one Region. This allows - swapping, shuffling, or otherwise reorganizing IPs to your Linodes. - - The following restrictions apply: - * All Linodes involved must have at least one public IPv4 address after assignment. - * Linodes may have no more than one assigned private IPv4 address. - * Linodes may have no more than one assigned IPv6 range. - * [Open a Support Ticket](/docs/api/support/#support-ticket-open) to request additional IPv4 addresses or IPv6 ranges. - operationId: assignIPs - x-linode-cli-action: ip-assign - security: - - personalAccessToken: [] - - oauth: - - ips:read_write - - linodes:read_write - requestBody: - description: > - Information about what IPv4 address or IPv6 range to assign, and to which Linode. - required: true - content: - application/json: - schema: - required: - - region - - assignments - properties: - region: - type: string - description: > - The ID of the Region in which these assignments are to take - place. All IPs and Linodes must exist in this Region. - example: us-east - assignments: - type: array - description: > - The list of assignments to make. You must have read_write - access to all IPs being assigned and all Linodes being - assigned to in order for the assignments to succeed. - required: - - address - - linode_id - items: + - Linode Kubernetes Engine (LKE) + summary: Node View + description: > + Returns the values for a specified node object. + responses: + '200': + description: Returns the values of a node object in the form that it appears currently in the node pool array. + content: + application/json: + schema: + type: object + properties: + data: type: object + description: > + The selected node in the cluster. properties: - address: + id: type: string - format: ipv4|ipv6/prefix_length - description: | - The IPv4 address or IPv6 range for this assignment. - * Must be an IPv4 address or an IPv6 range you can access in the Region specified. - * IPv6 ranges must include a prefix length of `/56` or `/64`, for example: `2001:db8:3c4d:15::/64`. - * Assignment of an IPv6 range to a Linode updates the route target of the range to the assigned Linode's SLAAC address. - * May be a public or private address. - example: 12.34.56.78 - linode_id: + readOnly: true + description: > + The Node's ID. + example: "12345-6aa78910bc" + instance_id: type: integer description: > - The ID of the Linode to assign this address to. The IP's - previous Linode will lose this address, and must end up - with at least one public address and no more than one - private address once all assignments have been made. - example: 123 + The Linode's ID. If no Linode is currently provisioned for this Node, this is `null`. + example: 123456 + status: + type: string + description: > + The creation status of this Node. This status is distinct from this Node's readiness as a + Kubernetes Node Object as determined by the command `kubectl get nodes`. + + + `not_ready` indicates that the Linode is still being created. + + + `ready` indicates that the Linode has successfully been created and is running Kubernetes software. + enum: + - ready + - not_ready + example: ready + default: + $ref: '#/components/responses/ErrorResponse' + x-code-samples: + - lang: Shell + source: > + curl -H "Authorization: Bearer $TOKEN" \ + https://api.linode.com/v4/lke/clusters/12345/nodes/12345-6aa78910bc + - lang: CLI + source: > + linode-cli lke node-view 123456 12345-6aa78910bc + delete: + operationId: deleteLKEClusterNode + x-linode-cli-action: node-delete + security: + - personalAccessToken: [] + - oauth: + - lke:read_write + tags: + - Linode Kubernetes Engine (LKE) + summary: Node Delete + description: | + Deletes a specific Node from a Node Pool. + + **Deleting a Node is a destructive action and cannot be undone.** + + Deleting a Node will reduce the size of the Node Pool it belongs to. responses: '200': - description: All assignments completed successfully. + description: Delete successful content: application/json: schema: @@ -10310,87 +10764,46 @@ paths: x-code-samples: - lang: Shell source: > - curl -H "Content-Type: application/json" \ - -H "Authorization: Bearer $TOKEN" \ - -X POST -d '{ - "region": "us-east", - "assignments": [ - { - "address": "12.34.56.100", - "linode_id": 123 - }, - { - "address": "2001:db8:3c4d:15::/64", - "linode_id": 234 - } - ] - }' \ - https://api.linode.com/v4/networking/ipvs/assign + curl -H "Authorization: Bearer $TOKEN" \ + -X DELETE \ + https://api.linode.com/v4/lke/clusters/12345/nodes/12345-6aa78910bc - lang: CLI source: > - linode-cli networking ip-assign \ - --region us-east \ - --assignments.address 2001:db8:3c4d:15::/64 \ - --assignments.linode_id 123 - /networking/ips/share: - x-linode-cli-command: networking + linode-cli lke node-delete 12345 12345-6aa78910bc + /lke/clusters/{clusterId}/nodes/{nodeId}/recycle: + parameters: + - name: clusterId + in: path + description: ID of the Kubernetes cluster containing the Node. + required: true + schema: + type: integer + - name: nodeId + in: path + description: ID of the Node to be recycled. + required: true + schema: + type: string + x-linode-cli-command: lke post: - servers: - - url: https://api.linode.com/v4beta - - url: https://api.linode.com/v4 - x-linode-grant: read_write - tags: - - Networking - summary: IP Addresses Share - description: | - Configure shared IPs. - - IP sharing allows IP address reassignment (also referred to as IP failover) from one Linode to another if - the primary Linode becomes unresponsive. This means that requests to the primary Linode's IP address can be - automatically rerouted to secondary Linodes at the configured shared IP addresses. - - IP failover requires configuration of a failover service (such as [Keepalived](/docs/guides/ip-failover-keepalived)) - within the internal system of the primary Linode. - - **Note**: IPv6 range sharing has limited availability in certain regions. Please contact customer support for - assistance in enabling IPv6 range sharing for your Linodes. - operationId: shareIPs - x-linode-cli-action: ip-share + operationId: postLKEClusterNodeRecycle + x-linode-cli-action: node-recycle security: - personalAccessToken: [] - oauth: - - ips:read_write - - linodes:read_write - requestBody: - description: Information about what IPs to share with which Linode. - required: true - content: - application/json: - schema: - required: - - linode_id - - ips - properties: - linode_id: - type: integer - description: > - The ID of the primary Linode that the addresses will be shared with. - example: 123 - ips: - type: array - items: - type: string - format: ip - description: | - A list of secondary Linode IPs to share with the primary Linode. - * Can include both IPv4 addresses and IPv6 ranges (omit /56 and /64 prefix lengths) - * Can include both private and public IPv4 addresses. - * You must have access to all of these addresses and they must be in the same Region as the primary - Linode. - * Enter an empty array to remove all shared IP addresses. + - lke:read_write + tags: + - Linode Kubernetes Engine (LKE) + summary: Node Recycle + description: | + Recycles an individual Node in the designated Kubernetes Cluster. The Node will be deleted + and replaced with a new Linode, which may take a few minutes. Replacement Nodes are + installed with the latest available patch for the Cluster's Kubernetes Version. + + **Any local storage on deleted Linodes (such as "hostPath" and "emptyDir" volumes, or "local" PersistentVolumes) will be erased.** responses: '200': - description: IP Address sharing successful. + description: Recycle request succeeded and is in progress. content: application/json: schema: @@ -10401,479 +10814,306 @@ paths: - lang: Shell source: > curl -H "Content-Type: application/json" \ - -H "Authorization: Bearer $TOKEN" \ - -X POST -d '{ - "linode_id": 123, - "ips": [ - "192.0.2.1", - "2001:db8:3c4d:15::" - ] - }' \ - https://api.linode.com/v4beta2/networking/ips/share + -H "Authorization: Bearer $TOKEN" \ + -X POST \ + https://api.linode.com/v4/lke/clusters/12345/nodes/12345-6aa78910bc/recycle - lang: CLI source: > - linode-cli networking ip-share \ - --linode_id 123 \ - --ips 192.0.2.1 \ - --ips 2001:db8:3c4d:15:: - /networking/ipv4/assign: - x-linode-cli-command: networking - post: - x-linode-grant: read_write - tags: - - Networking - summary: Linodes Assign IPv4s - description: > - Assign multiple IPv4s to multiple Linodes in one Region. This allows - swapping, shuffling, or otherwise reorganizing IPv4 Addresses to your - Linodes. When the assignment is finished, all Linodes must end up with - at least one public IPv4 and no more than one private IPv4. - - To assign IPv6 ranges or to use the CLI, see the Linodes Assign IPs ([POST /networking/ips/assign](/docs/api/networking/#linodes-assign-ips)) command. - operationId: assignIPv4s - x-linode-cli-skip: true + linode-cli lke node-recycle 12345 12345-6aa78910bc + /lke/clusters/{clusterId}/api-endpoints: + parameters: + - name: clusterId + in: path + description: ID of the Kubernetes cluster to look up. + required: true + schema: + type: integer + x-linode-cli-command: lke + get: + operationId: getLKEClusterAPIEndpoints + x-linode-cli-action: api-endpoints-list security: - personalAccessToken: [] - oauth: - - ips:read_write - - linodes:read_write - requestBody: - description: > - Information about what IPv4 address to assign, and to which Linode. - required: true - content: - application/json: - schema: - required: - - region - - assignments - properties: - region: - type: string - description: > - The ID of the Region in which these assignments are to take - place. All IPs and Linodes must exist in this Region. - example: us-east - assignments: - type: array - description: > - The list of assignments to make. You must have read_write - access to all IPs being assigned and all Linodes being - assigned to in order for the assignments to succeed. - required: - - address - - linode_id - items: - type: object - properties: - address: - type: string - format: ip - description: > - Ths IP Address for this assignment. Must be a IPv4 - address you can access in the Region specified. May - be a public or private address. - example: 12.34.56.78 - linode_id: - type: integer - description: > - The ID of the Linode to assign this address to. The IP's - previous Linode will lose this address, and must end up - with at least one public address and no more than one - private address once all assignments have been made. - example: 123 + - lke:read_only + tags: + - Linode Kubernetes Engine (LKE) + summary: Kubernetes API Endpoints List + description: > + List the Kubernetes API server endpoints for this cluster. Please note that it often takes + 2-5 minutes before the endpoint is ready after first [creating a new cluster](/docs/api/linode-kubernetes-engine-lke/#kubernetes-cluster-create). responses: '200': - description: All assignments completed successfully. + description: Returns the Kubernetes API server endpoints for this cluster. content: application/json: schema: type: object + properties: + data: + type: array + items: + type: object + description: > + The Kubernetes API server endpoints for this cluster. + properties: + endpoint: + type: string + readOnly: true + description: > + A Kubernetes API server endpoint for this cluster. + example: "https://192.0.2.1:6443" + page: + $ref: '#/components/schemas/PaginationEnvelope/properties/page' + pages: + $ref: '#/components/schemas/PaginationEnvelope/properties/pages' + results: + $ref: '#/components/schemas/PaginationEnvelope/properties/results' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > - curl -H "Content-Type: application/json" \ - -H "Authorization: Bearer $TOKEN" \ - -X POST -d '{ - "region": "us-east", - "assignments": [ - { - "address": "12.34.56.100", - "linode_id": 123 - }, - { - "address": "23.45.67.200", - "linode_id": 234 - } - ] - }' \ - https://api.linode.com/v4/networking/ipv4/assign - /networking/ipv4/share: - x-linode-cli-command: networking - post: - x-linode-grant: read_write - tags: - - Networking - summary: IPv4 Sharing Configure - description: > - Configure shared IPs. A shared IP may be brought up on a Linode other - than the one it lists in its response. This can be used to allow one - Linode to begin serving requests should another become unresponsive. - operationId: shareIPv4s - x-linode-cli-skip: true + curl -H "Authorization: Bearer $TOKEN" \ + https://api.linode.com/v4/lke/clusters/12345/api-endpoints + - lang: CLI + source: > + linode-cli lke api-endpoints-list 12345 + /lke/clusters/{clusterId}/dashboard: + parameters: + - name: clusterId + in: path + description: ID of the Kubernetes cluster to look up. + required: true + schema: + type: integer + x-linode-cli-command: lke + get: + operationId: getLKEClusterDashboard + x-linode-cli-action: cluster-dashboard-url security: - personalAccessToken: [] - oauth: - - ips:read_write - - linodes:read_write - requestBody: - description: Information about what IPs to share with which Linode. - required: true - content: - application/json: - schema: - required: - - linode_id - - ips - properties: - linode_id: - type: integer - description: > - The ID of the Linode that the addresses will be shared with. - example: 123 - ips: - type: array - items: - type: string - format: ip - example: 12.34.56.78 - description: > - A list of IPs that will be shared with this Linode. When - this is finished, the given Linode will be able to bring up - these addresses in addition to the Linodes that these - addresses belong to. You must have access to all of these - addresses and they must be in the same Region as the - Linode. + - lke:read_only + tags: + - Linode Kubernetes Engine (LKE) + summary: Kubernetes Cluster Dashboard URL View + description: | + Get a [Kubernetes Dashboard](https://github.com/kubernetes/dashboard) access URL for this Cluster, which enables performance of administrative tasks through a web interface. + + Dashboards are installed for Clusters by default. + + To access the Cluster Dashboard login prompt, enter the URL in a web browser. Select either **Token** or **Kubeconfig** authentication, then select **Sign in**. + + For additional guidance on using the Cluster Dashboard, see the [Navigating the Cluster Dashboard](/docs/guides/using-the-kubernetes-dashboard-on-lke/#navigating-the-cluster-dashboard) section of our guide on [Using the Kubernetes Dashboard on LKE](/docs/guides/using-the-kubernetes-dashboard-on-lke/). responses: '200': - description: Sharing configured successfully. + description: Returns a Kubernetes Cluster Dashboard URL. content: application/json: schema: type: object + properties: + url: + type: string + example: https://example.dashboard.linodelke.net + description: The Cluster Dashboard access URL. default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > - curl -H "Content-Type: application/json" \ - -H "Authorization: Bearer $TOKEN" \ - -X POST -d '{ - "linode_id": 123, - "ips": [ - "12.34.56.78" - ] - }' \ - https://api.linode.com/v4/networking/ipv4/share + curl -H "Authorization: Bearer $TOKEN" \ + https://api.linode.com/v4/lke/clusters/12345/dashboard - lang: CLI - source: > - linode-cli networking ip-share \ - --linode_id 123 \ - --ips 12.34.56.78 - /networking/ipv6/pools: - x-linode-cli-command: networking + source: + linode-cli lke cluster-dashboard-url 12345 + /lke/clusters/{clusterId}/kubeconfig: + parameters: + - name: clusterId + in: path + description: ID of the Kubernetes cluster to look up. + required: true + schema: + type: integer + x-linode-cli-command: lke get: - parameters: - - $ref: '#/components/parameters/pageOffset' - - $ref: '#/components/parameters/pageSize' - tags: - - Networking - summary: IPv6 Pools List - description: > - Displays the IPv6 pools on your Account. A pool of IPv6 addresses are routed to all of your - Linodes in a single [Region](/docs/api/regions/#regions-list). Any Linode on your Account may bring up any address in this - pool at any time, with no external configuration required. - operationId: getIPv6Pools - x-linode-cli-action: v6-pools + operationId: getLKEClusterKubeconfig + x-linode-cli-action: kubeconfig-view security: - personalAccessToken: [] - oauth: - - ips:read_only + - lke:read_write + tags: + - Linode Kubernetes Engine (LKE) + summary: Kubeconfig View + description: | + Get the Kubeconfig file for a Cluster. Please note that it often takes 2-5 minutes before + the Kubeconfig file is ready after first [creating a new cluster](/docs/api/linode-kubernetes-engine-lke/#kubernetes-cluster-create). responses: '200': - description: The IPv6 pools on your Account. + description: Returns the Base64-encoded Kubeconfig file for this Kubernetes cluster. content: application/json: schema: type: object properties: - data: - type: array - items: - $ref: '#/components/schemas/IPv6Pool' - page: - $ref: '#/components/schemas/PaginationEnvelope/properties/page' - pages: - $ref: '#/components/schemas/PaginationEnvelope/properties/pages' - results: - $ref: '#/components/schemas/PaginationEnvelope/properties/results' + kubeconfig: + type: string + readOnly: true + description: > + The Base64-encoded Kubeconfig file for this Cluster. default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > curl -H "Authorization: Bearer $TOKEN" \ - https://api.linode.com/v4/networking/ipv6/pools + https://api.linode.com/v4/lke/clusters/12345/kubeconfig - lang: CLI source: > - linode-cli networking v6-pools - /networking/ipv6/ranges: - x-linode-cli-command: networking - get: - parameters: - - $ref: '#/components/parameters/pageOffset' - - $ref: '#/components/parameters/pageSize' + linode-cli lke kubeconfig-view 12345 + delete: + operationId: deleteLKEClusterKubeconfig + x-linode-cli-action: kubeconfig-delete + security: + - personalAccessToken: [] + - oauth: + - lke:read_write tags: - - Networking - summary: IPv6 Ranges List - description: > - Displays the IPv6 ranges on your Account. - - - * An IPv6 range is a `/64` or `/54` block of IPv6 addresses routed to a single Linode in a given [Region](/docs/api/regions/#regions-list). - - * Your Linode is responsible for routing individual addresses in the range, or handling traffic for all the addresses in the range. - - * Access the IPv6 Range Create ([POST /networking/ipv6/ranges](/docs/api/networking/#ipv6-range-create)) endpoint to add a `/64` or `/56` block of IPv6 addresses to your account. - operationId: getIPv6Ranges - x-linode-cli-action: v6-ranges - security: - - personalAccessToken: [] - - oauth: - - ips:read_only + - Linode Kubernetes Engine (LKE) + summary: Kubeconfig Delete + description: | + Delete and regenerate the Kubeconfig file for a Cluster. responses: '200': - description: The IPv6 ranges on your Account. + description: Kubeconfig file deleted and regenerated successfully. content: application/json: schema: type: object - properties: - data: - type: array - items: - $ref: '#/components/schemas/IPv6Range' - page: - $ref: '#/components/schemas/PaginationEnvelope/properties/page' - pages: - $ref: '#/components/schemas/PaginationEnvelope/properties/pages' - results: - $ref: '#/components/schemas/PaginationEnvelope/properties/results' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > curl -H "Authorization: Bearer $TOKEN" \ - https://api.linode.com/v4/networking/ipv6/ranges + -X DELETE \ + https://api.linode.com/v4/lke/clusters/12345/kubeconfig - lang: CLI source: > - linode-cli networking v6-ranges - post: - tags: - - Networking - summary: IPv6 Range Create - description: | - Creates an IPv6 Range and assigns it based on the provided Linode or route target IPv6 SLAAC address. See the `ipv6` property when accessing the Linode View ([GET /linode/instances/{linodeId}](/docs/api/linode-instances/#linode-view)) endpoint to view a Linode's IPv6 SLAAC address. - * Either `linode_id` or `route_target` is required in a request. - * `linode_id` and `route_target` are mutually exclusive. Submitting values for both properties in a request results in an error. - * Upon a successful request, an IPv6 range is created in the [Region](/docs/api/regions/#regions-list) that corresponds to the provided `linode_id` or `route_target`. - * Your Linode is responsible for routing individual addresses in the range, or handling traffic for all the addresses in the range. - * Access the Linodes Assign IPs ([POST /networking/ips/assign](/docs/api/networking/#linodes-assign-ips)) endpoint to re-assign IPv6 Ranges to your Linodes. - - **Note**: The following restrictions apply: - * A Linode can only have one IPv6 range targeting its SLAAC address. - * An account can only have one IPv6 range in each [Region](/docs/api/regions/#regions-list). - * [Open a Support Ticket](/docs/api/support/#support-ticket-open) to request expansion of these restrictions. - operationId: postIPv6Range - x-linode-cli-action: v6-range-create + linode-cli lke kubeconfig-delete 12345 + /lke/versions: + x-linode-cli-command: lke + get: + operationId: getLKEVersions + x-linode-cli-action: versions-list + x-linode-grant: read_only security: - personalAccessToken: [] - oauth: - - ips:read_write - - linodes:read_write - requestBody: - description: > - Information about the IPv6 range to create. - required: true - content: - application/json: - schema: - required: - - prefix_length - properties: - linode_id: - type: integer - description: | - The ID of the Linode to assign this range to. The SLAAC address for the provided Linode is used as the range's `route_target`. - - * **Required** if `route_target` is omitted from the request. - - * Mutually exclusive with `route_target`. Submitting values for both properties in a request results in an error. - example: 123 - prefix_length: - type: integer - enum: - - 56 - - 64 - description: > - The prefix length of the IPv6 range. - route_target: - type: string - format: ipv6 - description: | - The IPv6 SLAAC address to assign this range to. - - * **Required** if `linode_id` is omitted from the request. - - * Mutually exclusive with `linode_id`. Submitting values for both properties in a request results in an error. - - * **Note**: Omit the `/128` prefix length of the SLAAC address when using this property. - example: 2001:0db8::1 + - lke:read_only + tags: + - Linode Kubernetes Engine (LKE) + summary: Kubernetes Versions List + description: > + List the Kubernetes versions available for deployment + to a Kubernetes cluster. responses: '200': - description: IPv6 range created successfully. + description: > + Returns a list of Kubernetes versions available for deployment + to a Kubernetes cluster. content: application/json: schema: type: object properties: - range: - type: string - format: ipv6/prefix_length - description: > - The IPv6 network range, including subnet and prefix length. - example: 2001:0db8::/64 - route_target: - type: string - format: ipv6 - description: > - The route target IPV6 SLAAC address for this range. Does not include the prefix length. - example: 2001:0db8::1 + data: + type: array + items: + $ref: '#/components/schemas/LKEVersion' + page: + $ref: '#/components/schemas/PaginationEnvelope/properties/page' + pages: + $ref: '#/components/schemas/PaginationEnvelope/properties/pages' + results: + $ref: '#/components/schemas/PaginationEnvelope/properties/results' default: - $ref: '#/components/responses/ErrorResponse' + $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > curl -H "Authorization: Bearer $TOKEN" \ - -X POST -d '{ - "linode_id": 123, - "prefix_length": 64 - }' \ - https://api.linode.com/v4/networking/ipv6/ranges + https://api.linode.com/v4/lke/versions - lang: CLI source: > - linode-cli networking v6-range-create \ - --linode_id 123 \ - --prefix_length 64 - /networking/ipv6/ranges/{range}: + linode-cli lke versions-list + /lke/versions/{version}: parameters: - - name: range - in: path - description: | - The IPv6 range to access. Corresponds to the `range` property of objects returned from the IPv6 Ranges List ([GET /networking/ipv6/ranges](/docs/api/networking/#ipv6-ranges-list)) command. - - **Note**: Omit the prefix length of the IPv6 range. - required: true - schema: - type: string - format: ipv6 - x-linode-cli-command: networking + - name: version + in: path + required: true + description: The LKE version to view. + schema: + type: string + x-linode-cli-command: lke get: - tags: - - Networking - summary: IPv6 Range View - description: | - View IPv6 range information. - operationId: getIPv6Range - x-linode-cli-action: v6-range-view + operationId: getLKEVersion + x-linode-cli-action: version-view + x-linode-grant: read_only security: - personalAccessToken: [] - oauth: - - ips:read - responses: - '200': - description: Returns IPv6 range information. - content: - application/json: - schema: - $ref: '#/components/schemas/IPv6RangeBGP' - default: - $ref: '#/components/responses/ErrorResponse' - x-code-samples: - - lang: Shell - source: > - curl -H "Authorization: Bearer $TOKEN" https://api.linode.com/v4/networking/ipv6/ranges/2001:0db8:: - - lang: CLI - source: > - linode-cli networking v6-range-view 2001:0db8:: - delete: + - lke:read_only tags: - - Networking - summary: IPv6 Range Delete - description: | - Removes this IPv6 range from your account and disconnects the range from any assigned Linodes. - - **Note:** Shared IPv6 ranges cannot be deleted at this time. Please contact Customer Support for assistance. - operationId: deleteIPv6Range - x-linode-cli-action: v6-range-delete - security: - - personalAccessToken: [] - - oauth: - - ips:read_write + - Linode Kubernetes Engine (LKE) + summary: Kubernetes Version View + description: > + View a Kubernetes version available for deployment + to a Kubernetes cluster. responses: '200': - description: IPv6 Range deleted. + description: > + Returns a Kubernetes version object that is available for deployment + to a Kubernetes cluster. content: application/json: schema: - type: object + $ref: '#/components/schemas/LKEVersion' default: - $ref: '#/components/responses/ErrorResponse' + $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > curl -H "Authorization: Bearer $TOKEN" \ - -X DELETE \ - https://api.linode.com/v4/networking/ipv6/ranges/2001:0db8:: + https://api.linode.com/v4/lke/versions/1.23 - lang: CLI source: > - linode-cli networking v6-range-delete 2001:0db8:: - /networking/firewalls: - x-linode-cli-command: firewalls + linode-cli lke version-view 1.23 + /longview/clients: + x-linode-cli-command: longview get: x-linode-grant: read_only parameters: - $ref: '#/components/parameters/pageOffset' - $ref: '#/components/parameters/pageSize' - servers: - - url: https://api.linode.com/v4 tags: - - Networking - summary: Firewalls List - description: | - Returns a paginated list of accessible Firewalls. - operationId: getFirewalls + - Longview + summary: Longview Clients List + description: > + Returns a paginated list of Longview Clients you have access + to. Longview Client is used to monitor stats on your Linode + with the help of the Longview Client application. + operationId: getLongviewClients x-linode-cli-action: list security: - personalAccessToken: [] - oauth: - - firewall:read_only + - longview:read_only responses: '200': - description: Returns an array of Firewalls. + description: A paginated list of Longview Clients. content: application/json: schema: @@ -10882,7 +11122,7 @@ paths: data: type: array items: - $ref: '#/components/schemas/Firewall' + $ref: '#/components/schemas/LongviewClient' page: $ref: '#/components/schemas/PaginationEnvelope/properties/page' pages: @@ -10895,86 +11135,40 @@ paths: - lang: Shell source: > curl -H "Authorization: Bearer $TOKEN" \ - https://api.linode.com/v4/networking/firewalls + https://api.linode.com/v4/longview/clients - lang: CLI source: > - linode-cli firewalls list + linode-cli longview list post: - x-linode-grant: read_write - servers: - - url: https://api.linode.com/v4 + x-linode-grant: add_longview tags: - - Networking - summary: Firewall Create - description: | - Creates a Firewall to filter network traffic. - - * Use the `rules` property to create inbound and outbound access rules. - - * Use the `devices` property to assign the Firewall to a service and apply its Rules to the device. Requires `read_write` [User's Grants](/docs/api/account/#users-grants-view) to the device. - Currently, Firewalls can only be assigned to Linode instances. - - * A Firewall can be assigned to multiple Linode instances at a time. - - * A Linode instance can have one active, assigned Firewall at a time. - Additional disabled Firewalls can be assigned to a service, but they cannot be enabled if another active Firewall is already assigned to the same service. - - * A `firewall_create` Event is generated when this endpoint returns successfully. - operationId: createFirewalls + - Longview + summary: Longview Client Create + description: > + Creates a Longview Client. This Client will not begin monitoring + the status of your server until you configure the Longview + Client application on your Linode using the returning `install_code` + and `api_key`. + operationId: createLongviewClient x-linode-cli-action: create security: - personalAccessToken: [] - oauth: - - firewall:read_write + - longview:read_write requestBody: - description: Creates a Firewall object that can be applied to a Linode service to filter the service's network traffic. + description: Information about the LongviewClient to create. + required: true content: application/json: schema: - allOf: - - $ref: '#/components/schemas/Firewall' - required: - - label - - rules - properties: - devices: - type: object - description: | - Devices to create for this Firewall. - When a Device is created, the Firewall is assigned to its associated service. - Currently, Devices can only be created for Linode instances. - properties: - linodes: - description: > - An array of Linode IDs. A Firewall Device is created for each ID. - type: array - items: - type: integer - example: - - 123 - - 456 - rules: - required: - - inbound_policy - - outbound_policy - properties: - inbound: - required: - - action - - addresses - - protocol - outbound: - required: - - action - - addresses - - protocol + $ref: '#/components/schemas/LongviewClient' responses: '200': - description: Returns information about the created Firewall. + description: Longview Client created successfully. content: application/json: schema: - $ref: '#/components/schemas/Firewall' + $ref: '#/components/schemas/LongviewClient' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: @@ -10983,163 +11177,81 @@ paths: curl -H "Content-Type: application/json" \ -H "Authorization: Bearer $TOKEN" \ -X POST -d '{ - "label": "firewall123", - "rules": { - "inbound_policy": "DROP", - "inbound": [ - { - "protocol": "TCP", - "ports": "22, 80, 443", - "addresses": { - "ipv4": [ - "192.0.2.0/24" - ], - "ipv6": [ - "2001:DB8::/32" - ] - }, - "action": "ACCEPT", - "label": "inbound-rule123", - "description": "An example inbound rule description." - } - ], - "outbound_policy": "DROP", - "outbound": [ - { - "protocol": "TCP", - "ports": "49152-65535", - "addresses": { - "ipv4": [ - "192.0.2.0/24" - ], - "ipv6": [ - "2001:DB8::/32" - ] - }, - "action": "ACCEPT", - "label": "outbound-rule123", - "description": "An example outbound rule description." - } - ] - }, - "devices": { - "linodes": [ - 123 - ] - }, - "tags": [ - "example tag", - "another example" - ] + "label": "client789" }' \ - https://api.linode.com/v4/networking/firewalls + https://api.linode.com/v4/longview/clients - lang: CLI source: > - linode-cli firewalls create \ - --label example-firewall \ - --rules.outbound_policy ACCEPT \ - --rules.inbound_policy DROP \ - --rules.inbound '[{"protocol": "TCP", "ports": "22, 80, 8080, 443", "addresses": {"ipv4": ["192.0.2.1", "192.0.2.0/24"], "ipv6": ["2001:DB8::/32"]}, "action": "ACCEPT"}]' \ - --rules.outbound '[{"protocol": "TCP", "ports": "49152-65535", "addresses": {"ipv4": ["192.0.2.0/24"],"ipv6": ["2001:DB8::/32"]}, "action": "DROP", "label": "outbound-rule123", "description": "An example outbound rule description."}]' - /networking/firewalls/{firewallId}: + linode-cli longview create \ + --label client789 + /longview/clients/{clientId}: parameters: - - name: firewallId - in: path - description: > - ID of the Firewall to access. - required: true - schema: - type: integer - x-linode-cli-command: firewalls + - name: clientId + in: path + required: true + description: The Longview Client ID to access. + schema: + type: integer + x-linode-cli-command: longview get: x-linode-grant: read_only - servers: - - url: https://api.linode.com/v4 tags: - - Networking - summary: Firewall View - operationId: getFirewall + - Longview + summary: Longview Client View + description: > + Returns a single Longview Client you can access. + operationId: getLongviewClient x-linode-cli-action: view security: - personalAccessToken: [] - oauth: - - firewall:read_only - description: | - Get a specific Firewall resource by its ID. The Firewall's Devices will not be - returned in the response. Instead, use the - [List Firewall Devices](/docs/api/networking/#firewall-devices-list) - endpoint to review them. + - longview:read_only responses: '200': - description: Returns information about this Firewall. + description: The requested Longview Client. content: application/json: schema: - $ref: '#/components/schemas/Firewall' + $ref: '#/components/schemas/LongviewClient' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > - curl -H "Content-Type: application/json" \ - -H "Authorization: Bearer $TOKEN" \ - https://api.linode.com/v4/networking/firewalls/123 + curl -H "Authorization: Bearer $TOKEN" \ + https://api.linode.com/v4/longview/clients/789 - lang: CLI source: > - linode-cli firewalls view 123 + linode-cli longview view 789 put: x-linode-grant: read_write - servers: - - url: https://api.linode.com/v4 tags: - - Networking - summary: Firewall Update - description: | - Updates information for a Firewall. Some parts of a Firewall's configuration cannot - be manipulated by this endpoint: - - - A Firewall's Devices cannot be set with this endpoint. Instead, use the - [Create Firewall Device](/docs/api/networking/#firewall-device-create) - and [Delete Firewall Device](/docs/api/networking/#firewall-device-delete) - endpoints to assign and remove this Firewall from Linode services. - - - A Firewall's Rules cannot be changed with this endpoint. Instead, use the - [Update Firewall Rules](/docs/api/networking/#firewall-rules-update) - endpoint to update your Rules. - - - A Firewall's status can be set to `enabled` or `disabled` by this endpoint, but it cannot be - set to `deleted`. Instead, use the - [Delete Firewall](/docs/api/networking/#firewall-delete) - endpoint to delete a Firewall. - - If a Firewall's status is changed with this endpoint, a corresponding `firewall_enable` or - `firewall_disable` Event will be generated. - operationId: updateFirewall + - Longview + summary: Longview Client Update + description: > + Updates a Longview Client. This cannot update how it monitors your + server; use the Longview Client application on your Linode for + monitoring configuration. + operationId: updateLongviewClient x-linode-cli-action: update security: - personalAccessToken: [] - oauth: - - firewall:read_write + - longview:read_write requestBody: - description: The Firewall information to update. + description: The fields to update. + required: true content: application/json: schema: - type: object - properties: - tags: - $ref: '#/components/schemas/Firewall/properties/tags' - label: - $ref: '#/components/schemas/Firewall/properties/label' - status: - $ref: '#/components/schemas/Firewall/properties/status' + $ref: '#/components/schemas/LongviewClient' responses: '200': - description: Firewall updated successfully. + description: Longview Client updated successfully. content: application/json: schema: - $ref: '#/components/schemas/Firewall' + $ref: '#/components/schemas/LongviewClient' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: @@ -11147,35 +11259,37 @@ paths: source: > curl -H "Content-Type: application/json" \ -H "Authorization: Bearer $TOKEN" \ - -X PUT -d '{ - "status": "disabled" + -X POST -d '{ + "label": "client789" }' \ - https://api.linode.com/v4/networking/firewalls/123 + https://api.linode.com/v4/longview/clients/789 - lang: CLI source: > - linode-cli firewalls update 123 \ - --status disabled + linode-cli longview update 789 \ + --label client789 delete: x-linode-grant: read_write - servers: - - url: https://api.linode.com/v4 tags: - - Networking - summary: Firewall Delete - operationId: deleteFirewall + - Longview + summary: Longview Client Delete + description: > + Deletes a Longview Client from your Account. + + + **All information stored for this client will be lost.** + + + This _does not_ uninstall the Longview Client application for your + Linode - you must do that manually. + operationId: deleteLongviewClient x-linode-cli-action: delete security: - personalAccessToken: [] - oauth: - - firewall:read_write - description: | - Delete a Firewall resource by its ID. This will remove all of the Firewall's Rules - from any Linode services that the Firewall was assigned to. - - A `firewall_delete` Event is generated when this endpoint returns successfully. + - longview:read_write responses: '200': - description: Delete Successful. + description: Longview Client deleted successfully. content: application/json: schema: @@ -11185,305 +11299,257 @@ paths: x-code-samples: - lang: Shell source: > - curl -H "Content-Type: application/json" \ - -H "Authorization: Bearer $TOKEN" \ + curl -H "Authorization: Bearer $TOKEN" \ -X DELETE \ - https://api.linode.com/v4/networking/firewalls/123 + https://api.linode.com/v4/longview/clients/789 - lang: CLI source: > - linode-cli firewalls delete 123 - /networking/firewalls/{firewallId}/devices: - parameters: - - name: firewallId - in: path - description: > - ID of the Firewall to access. - required: true - schema: - type: integer - x-linode-cli-command: firewalls + linode-cli longview delete 789 + /longview/plan: + x-linode-cli-command: longview get: - x-linode-grant: read_only - servers: - - url: https://api.linode.com/v4 tags: - - Networking - parameters: - - $ref: '#/components/parameters/pageOffset' - - $ref: '#/components/parameters/pageSize' - summary: Firewall Devices List - description: | - Returns a paginated list of a Firewall's Devices. A Firewall Device assigns a - Firewall to a Linode service (referred to as the Device's `entity`). Currently, - only Devices with an entity of type `linode` are accepted. - operationId: getFirewallDevices - x-linode-cli-action: devices-list + - Longview + summary: Longview Plan View + description: > + Get the details of your current Longview plan. This returns a `LongviewSubscription` object + for your current Longview Pro plan, or an empty set `{}` if your current plan is Longview Free. + + + You must have at least one of the following `global` [User Grants](/docs/api/account/#users-grants-view) + in order to access this endpoint: + + - `"account_access": read_write` + - `"account_access": read_only` + - `"longview_subscription": true` + - `"add_longview": true` + + + To update your subscription plan, send a request to [Update Longview Plan](/docs/api/longview/#longview-plan-update). + operationId: getLongviewPlan + x-linode-cli-action: plan-view security: - personalAccessToken: [] - oauth: - - firewall:read_only + - longview:read_only responses: '200': - description: A paginated list of Firewall Devices + description: The Longview plan details for this account. content: application/json: schema: - type: object - properties: - data: - type: array - items: - $ref: '#/components/schemas/FirewallDevices' - page: - $ref: '#/components/schemas/PaginationEnvelope/properties/page' - pages: - $ref: '#/components/schemas/PaginationEnvelope/properties/pages' - results: - $ref: '#/components/schemas/PaginationEnvelope/properties/results' + $ref: '#/components/schemas/LongviewSubscription' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > curl -H "Authorization: Bearer $TOKEN" \ - https://api.linode.com/v4/networking/firewalls/123/devices + https://api.linode.com/v4/longview/plan - lang: CLI source: > - linode-cli firewalls devices-list 123 - post: - x-linode-grant: read_write - servers: - - url: https://api.linode.com/v4 + linode-cli longview plan-view + put: tags: - - Networking - summary: Firewall Device Create - description: | - Creates a Firewall Device, which assigns a Firewall to a service (referred to - as the Device's `entity`) and applies the Firewall's Rules to the device. + - Longview + summary: Longview Plan Update + description: > + Update your Longview plan to that of the given subcription ID. This returns a `LongviewSubscription` object for + the updated Longview Pro plan, or an empty set `{}` if the updated plan is Longview Free. - * Currently, only Devices with an entity of type `linode` are accepted. - * A Firewall can be assigned to multiple Linode instances at a time. + You must have `"longview_subscription": true` configured as a `global` + [User Grant](/docs/api/account/#users-grants-view) in order to access this endpoint. - * A Linode instance can have one active, assigned Firewall at a time. - Additional disabled Firewalls can be assigned to a service, but they cannot be enabled if another active Firewall is already assigned to the same service. - * A `firewall_device_add` Event is generated when the Firewall Device is added successfully. - operationId: createFirewallDevice - x-linode-cli-action: device-create + You can send a request to the [List Longview Subscriptions](/docs/api/longview/#longview-subscriptions-list) + endpoint to receive the details, including `id`'s, of each plan. + operationId: updateLongviewPlan + x-linode-cli-action: plan-update security: - personalAccessToken: [] - oauth: - - firewall:read_write + - longview:read_write requestBody: + description: Update your Longview subscription plan. + required: true content: application/json: schema: - type: object - required: - - id - - type - allOf: - - $ref: '#/components/schemas/FirewallDevices/properties/entity' + $ref: '#/components/schemas/LongviewPlan' responses: '200': - description: Returns information about the created Firewall Device. + description: The updated Longview plan details for this account. content: application/json: schema: - $ref: '#/components/schemas/FirewallDevices' + $ref: '#/components/schemas/LongviewSubscription' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > - curl -H "Content-Type: application/json" \ - -H "Authorization: Bearer $TOKEN" \ - -X POST -d '{ - "type": "linode", - "id": 123 - }' \ - https://api.linode.com/v4/networking/firewalls/123/devices + curl -H "Content-Type: application/json" \ + -H "Authorization: Bearer $TOKEN" \ + -X PUT -d '{ + "longview_subscription": "longview-10" + }' \ + https://api.linode.com/v4/longview/plan - lang: CLI source: > - linode-cli firewalls device-create 123 \ - --id 456 \ - --type "linode" - /networking/firewalls/{firewallId}/devices/{deviceId}: - parameters: - - name: firewallId - in: path - description: > - ID of the Firewall to access. - required: true - schema: - type: integer - - name: deviceId - in: path - description: > - ID of the Firewall Device to access. - required: true - schema: - type: integer - x-linode-cli-command: firewalls + linode-cli longview plan-update --longview_subscription longview-10 + /longview/subscriptions: + x-linode-cli-command: longview get: - x-linode-grant: read_only - servers: - - url: https://api.linode.com/v4 + parameters: + - $ref: '#/components/parameters/pageOffset' + - $ref: '#/components/parameters/pageSize' tags: - - Networking - summary: Firewall Device View - description: | - Returns information for a Firewall Device, which assigns a Firewall - to a Linode service (referred to as the Device's `entity`). Currently, - only Devices with an entity of type `linode` are accepted. - operationId: getFirewallDevice - x-linode-cli-action: device-view - security: - - personalAccessToken: [] - - oauth: - - firewall:read_only + - Longview + summary: Longview Subscriptions List + description: > + Returns a paginated list of available Longview Subscriptions. This is + a public endpoint and requires no authentication. + operationId: getLongviewSubscriptions + x-linode-cli-action: subscriptions-list responses: '200': - description: The requested Firewall Device. + description: A paginated list of Longview Subscriptions. content: application/json: schema: - $ref: '#/components/schemas/FirewallDevices' + type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/LongviewSubscription' + page: + $ref: '#/components/schemas/PaginationEnvelope/properties/page' + pages: + $ref: '#/components/schemas/PaginationEnvelope/properties/pages' + results: + $ref: '#/components/schemas/PaginationEnvelope/properties/results' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > curl -H "Authorization: Bearer $TOKEN" \ - https://api.linode.com/v4/networking/firewalls/123/devices/456 + https://api.linode.com/v4/longview/subscriptions - lang: CLI source: > - linode-cli firewalls device-view \ - 123 456 - delete: - x-linode-grant: read_write - servers: - - url: https://api.linode.com/v4 + linode-cli longview subscriptions-list + /longview/subscriptions/{subscriptionId}: + parameters: + - name: subscriptionId + in: path + required: true + description: The Longview Subscription to look up. + schema: + type: string + x-linode-cli-command: longview + get: tags: - - Networking - summary: Firewall Device Delete - operationId: deleteFirewallDevice - x-linode-cli-action: device-delete - security: - - personalAccessToken: [] - - oauth: - - firewall:read_write - description: | - Removes a Firewall Device, which removes a Firewall from the Linode service it was - assigned to by the Device. This will remove all of the Firewall's Rules from the Linode - service. If any other Firewalls have been assigned to the Linode service, then those Rules - will remain in effect. - - A `firewall_device_remove` Event is generated when the Firewall Device is removed successfully. + - Longview + summary: Longview Subscription View + description: > + Get the Longview plan details as a single `LongviewSubscription` object for the provided subscription ID. This is a public endpoint + and requires no authentication. + operationId: getLongviewSubscription + x-linode-cli-action: subscription-view responses: '200': - description: Delete Successful. + description: The requested Longview Subscription details. content: application/json: schema: - type: object + $ref: '#/components/schemas/LongviewSubscription' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > - curl -H "Content-Type: application/json" \ - -H "Authorization: Bearer $TOKEN" \ - -X DELETE \ - https://api.linode.com/v4/networking/firewalls/123/devices/456 + curl -H "Authorization: Bearer $TOKEN" \ + https://api.linode.com/v4/longview/subscriptions/longview-10 - lang: CLI source: > - linode-cli firewalls device-delete 123 456 - /networking/firewalls/{firewallId}/rules: - parameters: - - name: firewallId - in: path - description: > - ID of the Firewall to access. - required: true - schema: - type: integer - x-linode-cli-command: firewalls + linode-cli longview subscription-view \ + longview-10 + /managed/contacts: + x-linode-cli-command: managed get: - x-linode-grant: read_only - servers: - - url: https://api.linode.com/v4 + x-linode-grant: unrestricted only + parameters: + - $ref: '#/components/parameters/pageOffset' + - $ref: '#/components/parameters/pageSize' tags: - - Networking - summary: Firewall Rules List - description: | - Returns the inbound and outbound Rules for a Firewall. - operationId: getFirewallRules - x-linode-cli-action: rules-list + - Managed + summary: Managed Contacts List + description: > + Returns a paginated list of Managed Contacts on your Account. + operationId: getManagedContacts + x-linode-cli-action: contacts-list security: - personalAccessToken: [] - oauth: - - firewall:read_only + - account:read_only responses: '200': - description: The requested Firewall Rules. + description: A paginated list of ManagedContacts content: application/json: schema: - $ref: '#/components/schemas/Firewall/properties/rules' + type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/ManagedContact' + page: + $ref: '#/components/schemas/PaginationEnvelope/properties/page' + pages: + $ref: '#/components/schemas/PaginationEnvelope/properties/pages' + results: + $ref: '#/components/schemas/PaginationEnvelope/properties/results' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > curl -H "Authorization: Bearer $TOKEN" \ - https://api.linode.com/v4/networking/firewalls/123/rules + https://api.linode.com/v4/managed/contacts - lang: CLI source: > - linode-cli firewalls rules-list 123 - put: - x-linode-grant: read_write - servers: - - url: https://api.linode.com/v4 + linode-cli managed contacts-list + post: + x-linode-grant: unrestricted only tags: - - Networking - summary: Firewall Rules Update - description: | - Updates the inbound and outbound Rules for a Firewall. - - **Note:** This command replaces all of a Firewall's `inbound` and/or `outbound` rulesets with the values specified in your request. - operationId: updateFirewallRules - x-linode-cli-action: rules-update + - Managed + summary: Managed Contact Create + description: > + Creates a Managed Contact. A Managed Contact is someone Linode + special forces can contact in the course of attempting to resolve an issue + with a Managed Service. + operationId: createManagedContact + x-linode-cli-action: contact-create security: - personalAccessToken: [] - oauth: - - firewall:read_write + - account:read_write requestBody: - description: The Firewall Rules information to update. + description: Information about the contact to create. content: application/json: schema: - allOf: - - $ref: '#/components/schemas/Firewall/properties/rules' - properties: - inbound: - required: - - action - - addresses - - protocol - outbound: - required: - - action - - addresses - - protocol + $ref: '#/components/schemas/ManagedContact' responses: '200': - description: Firewall Rules updated successfully. + description: Contact created. content: application/json: schema: - $ref: '#/components/schemas/Firewall/properties/rules' + $ref: '#/components/schemas/ManagedContact' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: @@ -11491,150 +11557,173 @@ paths: source: > curl -H "Content-Type: application/json" \ -H "Authorization: Bearer $TOKEN" \ - -X PUT -d '{ - "inbound_policy": "DROP", - "inbound": [ - { - "protocol": "TCP", - "ports": "22, 80, 443", - "addresses": { - "ipv4": [ - "192.0.2.0/24" - ], - "ipv6": [ - "2001:DB8::/32" - ] - }, - "action": "ACCEPT", - "label": "inbound-rule123", - "description": "An example inbound rule description." - } - ], - "outbound_policy": "DROP", - "outbound": [ - { - "protocol": "TCP", - "ports": "49152-65535", - "addresses": { - "ipv4": [ - "192.0.2.0/24" - ], - "ipv6": [ - "2001:DB8::/32" - ] - }, - "action": "ACCEPT", - "label": "outbound-rule123", - "description": "An example outbound rule description." - } - ] + -X POST -d '{ + "name": "John Doe", + "email": "john.doe@example.org", + "phone": { + "primary": "123-456-7890", + "secondary": null + }, + "group": "on-call" }' \ - https://api.linode.com/v4/networking/firewalls/123/rules + https://api.linode.com/v4/managed/contacts - lang: CLI source: > - linode-cli firewalls rules-update 123 \ - --inbound '[{"action":"ACCEPT", "protocol": "TCP", "ports": "22, 80, 8080, 443", "addresses": {"ipv4": ["192.0.2.1/32", "192.0.2.0/24"], "ipv6": ["2001:DB8::/32"]}}]' \ - --outbound '[{"action":"DROP","protocol": "TCP", "ports": "49152-65535", "addresses": {"ipv4": ["192.0.2.1/32", "192.0.2.0/24"], "ipv6": ["2001:DB8::/32"]}}]' - /networking/vlans: - x-linode-cli-command: vlans + linode-cli managed contact-create \ + --name "John Doe" \ + --email "john.doe@example.org" \ + --phone.primary "123-456-7890" + /managed/contacts/{contactId}: + parameters: + - name: contactId + in: path + required: true + description: The ID of the contact to access. + schema: + type: integer + x-linode-cli-command: managed get: - x-linode-grant: read_only - servers: - - url: https://api.linode.com/v4beta - parameters: - - $ref: '#/components/parameters/pageOffset' - - $ref: '#/components/parameters/pageSize' + x-linode-grant: unrestricted only tags: - - Networking - summary: VLANs List - description: | - Returns a list of all Virtual Local Area Networks (VLANs) on your Account. VLANs provide - a mechanism for secure communication between two or more Linodes that are assigned to the - same VLAN and are both within the same Layer 2 broadcast domain. - - VLANs are created and attached to Linodes by using the `interfaces` property for the following endpoints: - - - Linode Create ([POST /linode/instances](/docs/api/linode-instances/#linode-create)) - - Configuration Profile Create ([POST /linode/instances/{linodeId}/configs](/docs/api/linode-instances/#configuration-profile-create)) - - Configuration Profile Update ([PUT /linode/instances/{linodeId}/configs/{configId}](/docs/api/linode-instances/#configuration-profile-update)) - - There are several ways to detach a VLAN from a Linode: - - - [Update](/docs/api/linode-instances/#configuration-profile-update) the active Configuration Profile to remove the VLAN interface, then [reboot](/docs/api/linode-instances/#linode-reboot) the Linode. - - [Create](/docs/api/linode-instances/#configuration-profile-create) a new Configuration Profile without the VLAN interface, then [reboot](/docs/api/linode-instances/#linode-reboot) the Linode into the new Configuration Profile. - - [Delete](/docs/api/linode-instances/#linode-delete) 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). - operationId: getVLANs - x-linode-cli-action: list + - Managed + summary: Managed Contact View + description: > + Returns a single Managed Contact. + operationId: getManagedContact + x-linode-cli-action: contact-view security: - personalAccessToken: [] - oauth: - - linodes:read_only + - account:read_write responses: '200': - description: The VLANs available on this Account. + description: The requested Managed Contact. content: application/json: schema: - type: object - properties: - data: - type: array - items: - $ref: '#/components/schemas/Vlans' - page: - $ref: '#/components/schemas/PaginationEnvelope/properties/page' - pages: - $ref: '#/components/schemas/PaginationEnvelope/properties/pages' - results: - $ref: '#/components/schemas/PaginationEnvelope/properties/results' + $ref: '#/components/schemas/ManagedContact' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > curl -H "Authorization: Bearer $TOKEN" \ - https://api.linode.com/v4beta/networking/vlans/ + https://api.linode.com/v4/managed/contacts/567 - lang: CLI source: > - linode-cli networking vlans-list - /nodebalancers: - x-linode-cli-command: nodebalancers - get: - x-linode-grant: read_only + linode-cli managed contact-view 567 + put: + x-linode-grant: unrestricted only tags: - - NodeBalancers - parameters: - - $ref: '#/components/parameters/pageOffset' - - $ref: '#/components/parameters/pageSize' - summary: NodeBalancers List + - Managed + summary: Managed Contact Update description: > - Returns a paginated list of NodeBalancers you have access to. - operationId: getNodeBalancers - x-linode-cli-action: list + Updates information about a Managed Contact. + operationId: updateManagedContact + x-linode-cli-action: contact-update security: - personalAccessToken: [] - oauth: - - nodebalancers:read_only + - account:read_write + requestBody: + description: The fields to update. + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/ManagedContact' responses: '200': - description: A paginated list of NodeBalancers. + description: Contact updated successfully. content: application/json: schema: - type: object - properties: - data: - type: array - items: - $ref: '#/components/schemas/NodeBalancer' - page: + $ref: '#/components/schemas/ManagedContact' + default: + $ref: '#/components/responses/ErrorResponse' + x-code-samples: + - lang: Shell + source: > + curl -H "Content-Type: application/json" \ + -H "Authorization: Bearer $TOKEN" \ + -X PUT -d '{ + "name": "John Doe", + "email": "john.doe@example.org", + "phone": { + "primary": "123-456-7890", + "secondary": null + }, + "group": "on-call" + }' \ + https://api.linode.com/v4/managed/contacts/567 + - lang: CLI + source: > + linode-cli managed contact-update 567 \ + --name "John Doe" \ + --email "john.doe@example.org" \ + --phone.primary "123-456-7890" + delete: + x-linode-grant: unrestricted only + tags: + - Managed + summary: Managed Contact Delete + description: > + Deletes a Managed Contact. + operationId: deleteManagedContact + x-linode-cli-action: contact-delete + security: + - personalAccessToken: [] + - oauth: + - account:read_write + responses: + '200': + description: Contact deleted successfully. + content: + application/json: + schema: + type: object + default: + $ref: '#/components/responses/ErrorResponse' + x-code-samples: + - lang: Shell + source: > + curl -H "Authorization: Bearer $TOKEN" \ + -X DELETE \ + https://api.linode.com/v4/managed/contacts/567 + - lang: CLI + source: > + linode-cli managed contact-delete 567 + /managed/credentials: + x-linode-cli-command: managed + get: + x-linode-grant: unrestricted only + parameters: + - $ref: '#/components/parameters/pageOffset' + - $ref: '#/components/parameters/pageSize' + tags: + - Managed + summary: Managed Credentials List + description: > + Returns a paginated list of Managed Credentials on your Account. + operationId: getManagedCredentials + x-linode-cli-action: credentials-list + security: + - personalAccessToken: [] + - oauth: + - account:read_only + responses: + '200': + description: A paginated list of ManagedCredentials + content: + application/json: + schema: + type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/ManagedCredential' + page: $ref: '#/components/schemas/PaginationEnvelope/properties/page' pages: $ref: '#/components/schemas/PaginationEnvelope/properties/pages' @@ -11646,69 +11735,56 @@ paths: - lang: Shell source: > curl -H "Authorization: Bearer $TOKEN" \ - https://api.linode.com/v4/nodebalancers + https://api.linode.com/v4/managed/credentials - lang: CLI source: > - linode-cli nodebalancers list + linode-cli managed credentials-list post: - x-linode-grant: add_nodebalancers + x-linode-grant: unrestricted only tags: - - NodeBalancers - summary: NodeBalancer Create + - Managed + summary: Managed Credential Create description: > - Creates a NodeBalancer in the requested Region. This NodeBalancer - will not start serving requests until it is configured. - operationId: createNodeBalancer - x-linode-cli-action: create + Creates a Managed Credential. A Managed Credential is stored securely + to allow Linode special forces to access your Managed Services and resolve + issues. + operationId: createManagedCredential + x-linode-cli-action: credential-create security: - personalAccessToken: [] - oauth: - - nodebalancers:read_write + - account:read_write requestBody: - description: Information about the NodeBalancer to create. - required: true - x-linode-cli-allowed-defaults: - - region + description: Information about the Credential to create. content: application/json: schema: required: - - region - properties: - region: - type: string - description: > - The ID of the Region to create this NodeBalancer in. - example: us-east - label: - $ref: '#/components/schemas/NodeBalancer/properties/label' - client_conn_throttle: - $ref: '#/components/schemas/NodeBalancer/properties/client_conn_throttle' - configs: - type: array - description: > - The ports to configure this NodeBalancer with on creation. - Each config must have a unique port and at least one Node. - items: - allOf: - - $ref: '#/components/schemas/NodeBalancerConfig' - - type: object - properties: - nodes: - type: array - description: > - The NodeBalancer Nodes that serve this port. When - creating a NodeBalancer this way, at least one Node - is required per configured port. - items: - $ref: '#/components/schemas/NodeBalancerNode' + - label + - password + allOf: + - $ref: '#/components/schemas/ManagedCredential' + - type: object + properties: + username: + type: string + minLength: 0 + maxLength: 5000 + description: > + The username to use when accessing the Managed Service. + example: johndoe + password: + type: string + description: > + The password to use when accessing the Managed Service. + example: s3cur3P@ssw0rd responses: '200': - description: NodeBalancer created successfully. + description: Credential created. content: application/json: schema: - $ref: '#/components/schemas/NodeBalancer' + $ref: '#/components/schemas/ManagedCredential' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: @@ -11717,83 +11793,87 @@ paths: curl -H "Content-Type: application/json" \ -H "Authorization: Bearer $TOKEN" \ -X POST -d '{ - "region": "us-east", - "label": "balancer12345", - "client_conn_throttle": 0 + "label": "prod-password-1", + "username": "johndoe", + "password": "s3cur3P@ssw0rd" }' \ - https://api.linode.com/v4/nodebalancers + https://api.linode.com/v4/managed/credentials - lang: CLI source: > - linode-cli nodebalancers create \ - --region us-east \ - --label balancer12345 \ - --client_conn_throttle 0 - /nodebalancers/{nodeBalancerId}: + linode-cli managed credential-create \ + --label prod-password-1 \ + --username johndoe \ + --password s3cur3P@ssw0rd + /managed/credentials/{credentialId}: parameters: - - name: nodeBalancerId + - name: credentialId in: path - description: The ID of the NodeBalancer to access. required: true + description: The ID of the Credential to access. schema: type: integer - x-linode-cli-command: nodebalancers + x-linode-cli-command: managed get: - x-linode-grant: read_only + x-linode-grant: unrestricted only tags: - - NodeBalancers - summary: NodeBalancer View + - Managed + summary: Managed Credential View description: > - Returns a single NodeBalancer you can access. - operationId: getNodeBalancer - x-linode-cli-action: view + Returns a single Managed Credential. + operationId: getManagedCredential + x-linode-cli-action: credential-view security: - personalAccessToken: [] - oauth: - - nodebalancers:read_only + - account:read_write responses: '200': - description: The requested NodeBalancer object. + description: The requested Managed Credential. content: application/json: schema: - $ref: '#/components/schemas/NodeBalancer' + $ref: '#/components/schemas/ManagedCredential' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > curl -H "Authorization: Bearer $TOKEN" \ - https://api.linode.com/v4/nodebalancers/12345 + https://api.linode.com/v4/managed/credentials/9991 - lang: CLI source: > - linode-cli nodebalancers view 12345 + linode-cli managed credential-view 9991 put: - x-linode-grant: read_write + x-linode-grant: unrestricted only tags: - - NodeBalancers - summary: NodeBalancer Update + - Managed + summary: Managed Credential Update description: > - Updates information about a NodeBalancer you can access. - operationId: updateNodeBalancer - x-linode-cli-action: update + Updates the label of a Managed Credential. This endpoint + does not update the username and password for a Managed Credential. + To do this, use the Managed Credential Username and Password Update + ([POST /managed/credentials/{credentialId}/update](/docs/api/managed/#managed-credential-username-and-password-update)) + endpoint instead. + operationId: updateManagedCredential + x-linode-cli-action: credential-update security: - personalAccessToken: [] - oauth: - - nodebalancers:read_write + - account:read_write requestBody: - description: The information to update. + description: The fields to update. required: true content: application/json: schema: - $ref: '#/components/schemas/NodeBalancer' + $ref: '#/components/schemas/ManagedCredential' responses: '200': - description: NodeBalancer updated successfully. + description: Credential updated successfully. content: application/json: schema: - $ref: '#/components/schemas/NodeBalancer' + $ref: '#/components/schemas/ManagedCredential' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: @@ -11802,40 +11882,60 @@ paths: curl -H "Content-Type: application/json" \ -H "Authorization: Bearer $TOKEN" \ -X PUT -d '{ - "label": "balancer12345", - "client_conn_throttle": 0 + "label": "prod-password-1" }' \ - https://api.linode.com/v4/nodebalancers/12345 + https://api.linode.com/v4/managed/credentials/9991 - lang: CLI source: > - linode-cli nodebalancers update 12345 \ - --label balancer12345 \ - --client_conn_throttle 0 - delete: - x-linode-grant: read_write - tags: - - NodeBalancers - summary: NodeBalancer Delete - description: > - Deletes a NodeBalancer. - - - **This is a destructive action and cannot be undone.** - - - Deleting a NodeBalancer will also delete all associated Configs and Nodes, - although the backend servers represented by the Nodes will not be - changed or removed. Deleting a NodeBalancer will cause you to lose access - to the IP Addresses assigned to this NodeBalancer. - operationId: deleteNodeBalancer - x-linode-cli-action: delete + linode-cli managed credential-update 9991 \ + --label prod-password-1 + /managed/credentials/{credentialId}/update: + parameters: + - name: credentialId + in: path + required: true + description: The ID of the Credential to update. + schema: + type: integer + x-linode-cli-command: managed + post: + x-linode-grant: unrestricted only + tags: + - Managed + summary: Managed Credential Username and Password Update + description: > + Updates the username and password for a Managed Credential. + operationId: updateManagedCredentialUsernamePassword + x-linode-cli-action: credential-update-username-password security: - personalAccessToken: [] - oauth: - - nodebalancers:read_write + - account:read_write + requestBody: + description: > + The new username and password to assign to the + Managed Credential. + content: + application/json: + schema: + required: + - password + properties: + username: + type: string + minLength: 0 + maxLength: 5000 + description: > + The username to use when accessing the Managed Service. + example: johndoe + password: + type: string + description: > + The password to use when accessing the Managed Service. + example: s3cur3P@ssw0rd responses: '200': - description: NodeBalancer deleted successfully. + description: Credential username and password updated. content: application/json: schema: @@ -11845,353 +11945,307 @@ paths: x-code-samples: - lang: Shell source: > - curl -H "Authorization: Bearer $TOKEN" \ - -X DELETE \ - https://api.linode.com/v4/nodebalancers/12345 + curl -H "Content-Type: application/json" \ + -H "Authorization: Bearer $TOKEN" \ + -X POST -d '{ + "username": "johndoe", + "password": "s3cur3P@ssw0rd" + }' \ + https://api.linode.com/v4/managed/credentials/9991/update - lang: CLI source: > - linode-cli nodebalancers delete 12345 - /nodebalancers/{nodeBalancerId}/configs: + linode-cli managed credential-update-username-password 9991 \ + --username johndoe \ + --password s3cur3P@ssw0rd + /managed/credentials/{credentialId}/revoke: parameters: - - name: nodeBalancerId + - name: credentialId in: path - description: The ID of the NodeBalancer to access. required: true + description: The ID of the Credential to access. schema: type: integer - x-linode-cli-command: nodebalancers - get: - x-linode-grant: read_only + x-linode-cli-command: managed + post: + x-linode-grant: unrestricted only tags: - - NodeBalancers - parameters: - - $ref: '#/components/parameters/pageOffset' - - $ref: '#/components/parameters/pageSize' - summary: Configs List + - Managed + summary: Managed Credential Delete description: > - Returns a paginated list of NodeBalancer Configs associated - with this NodeBalancer. NodeBalancer Configs represent - individual ports that this NodeBalancer will accept traffic - on, one Config per port. - - - For example, if you wanted to accept standard HTTP traffic, you would - need a Config listening on port 80. - operationId: getNodeBalancerConfigs - x-linode-cli-action: configs-list + Deletes a Managed Credential. Linode special forces will no longer + have access to this Credential when attempting to resolve issues. + operationId: deleteManagedCredential + x-linode-cli-action: credential-revoke security: - personalAccessToken: [] - oauth: - - nodebalancers:read_only + - account:read_write responses: '200': - description: A paginted list of NodeBalancer Configs + description: Credential deleted successfully. content: application/json: schema: type: object - properties: - data: - type: array - items: - $ref: '#/components/schemas/NodeBalancerConfig' - page: - $ref: '#/components/schemas/PaginationEnvelope/properties/page' - pages: - $ref: '#/components/schemas/PaginationEnvelope/properties/pages' - results: - $ref: '#/components/schemas/PaginationEnvelope/properties/results' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > curl -H "Authorization: Bearer $TOKEN" \ - https://api.linode.com/v4/nodebalancers/12345/configs + -X DELETE \ + https://api.linode.com/v4/managed/credentials/9991 - lang: CLI source: > - linode-cli nodebalancers configs-list 12345 - post: - x-linode-grant: read_write + linode-cli managed credential-revoke 9991 + /managed/credentials/sshkey: + x-linode-cli-command: managed + get: + x-linode-grant: unrestricted only tags: - - NodeBalancers - summary: Config Create + - Managed + summary: Managed SSH Key View description: > - Creates a NodeBalancer Config, which allows the NodeBalancer to - accept traffic on a new port. You will need to add NodeBalancer Nodes - to the new Config before it can actually serve requests. - operationId: createNodeBalancerConfig - x-linode-cli-action: config-create + Returns the unique SSH public key assigned to your Linode account's + Managed service. If you [add this public key](/docs/platform/linode-managed/#adding-the-public-key) to a Linode on your account, + Linode special forces will be able to log in to the Linode with this key + when attempting to resolve issues. + operationId: viewManagedSSHKey + x-linode-cli-action: credential-sshkey-view security: - personalAccessToken: [] - oauth: - - nodebalancers:read_write - requestBody: - description: Information about the port to configure. - content: - application/json: - schema: - $ref: '#/components/schemas/NodeBalancerConfig' + - account:read_only responses: '200': - description: Config created successfully. + description: The requested Managed SSH public key. content: application/json: schema: - $ref: '#/components/schemas/NodeBalancerConfig' + type: object + description: > + A unique SSH public key that allows Linode's special forces + to access a Managed server to respond to Issues. + properties: + ssh_key: + type: string + description: > + The unique SSH public key assigned to your Linode account's Managed service. + example: ssh-rsa AAAAB...oD2ZQ== managedservices@linode + readOnly: true + x-linode-cli-display: 1 default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > - curl -H "Content-Type: application/json" \ - -H "Authorization: Bearer $TOKEN" \ - -X POST -d '{ - "port": 80, - "protocol": "http", - "algorithm": "roundrobin", - "stickiness": "http_cookie", - "check": "http_body", - "check_interval": 90, - "check_timeout": 10, - "check_attempts": 3, - "check_path": "/test", - "check_body": "it works", - "check_passive": true, - "proxy_protocol": "v1", - "cipher_suite": "recommended" - }' \ - https://api.linode.com/v4/nodebalancers/12345/configs + curl -H "Authorization: Bearer $TOKEN" \ + https://api.linode.com/v4/managed/credentials/sshkey - lang: CLI source: > - linode-cli nodebalancers config-create 12345 \ - --port 80 \ - --protocol http \ - --algorithm roundrobin \ - --stickiness http_cookie \ - --check http_body \ - --check_interval 90 \ - --check_timeout 10 \ - --check_attempts 3 \ - --check_path "/test" \ - --check_body "it works" \ - --check_passive true \ - --proxy_protocol "v1" \ - --cipher_suite recommended - /nodebalancers/{nodeBalancerId}/configs/{configId}: - parameters: - - name: nodeBalancerId - in: path - description: The ID of the NodeBalancer to access. - required: true - schema: - type: integer - - name: configId - in: path - description: The ID of the config to access. - required: true - schema: - type: integer - x-linode-cli-command: nodebalancers + linode-cli managed credential-sshkey-view + /managed/issues: + x-linode-cli-command: managed get: - x-linode-grant: read_only + x-linode-grant: unrestricted only + parameters: + - $ref: '#/components/parameters/pageOffset' + - $ref: '#/components/parameters/pageSize' tags: - - NodeBalancers - summary: Config View + - Managed + summary: Managed Issues List description: > - Returns configuration information for a single port of this - NodeBalancer. - operationId: getNodeBalancerConfig - x-linode-cli-action: config-view + Returns a paginated list of recent and ongoing issues detected on your + Managed Services. + operationId: getManagedIssues + x-linode-cli-action: issues-list security: - personalAccessToken: [] - oauth: - - nodebalancers:read_only + - account:read_only responses: '200': - description: The requested NodeBalancer config. + description: > + A paginated list of open or ongoing Managed Issues. content: application/json: schema: - $ref: '#/components/schemas/NodeBalancerConfig' + type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/ManagedIssue' + page: + $ref: '#/components/schemas/PaginationEnvelope/properties/page' + pages: + $ref: '#/components/schemas/PaginationEnvelope/properties/pages' + results: + $ref: '#/components/schemas/PaginationEnvelope/properties/results' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > curl -H "Authorization: Bearer $TOKEN" \ - https://api.linode.com/v4/nodebalancers/12345/configs/4567 + https://api.linode.com/v4/managed/issues - lang: CLI source: > - linode-cli nodebalancers config-view \ - 12345 4567 - put: - x-linode-grant: read_write - tags: - - NodeBalancers - summary: Config Update + linode-cli managed issues-list + /managed/issues/{issueId}: + parameters: + - name: issueId + in: path + required: true + description: The Issue to look up. + schema: + type: integer + x-linode-cli-command: managed + get: + x-linode-grant: unrestricted only + tags: + - Managed + summary: Managed Issue View description: > - Updates the configuration for a single port on a NodeBalancer. - operationId: updateNodeBalancerConfig - x-linode-cli-action: config-update + Returns a single Issue that is impacting or did impact one of your + Managed Services. + operationId: getManagedIssue + x-linode-cli-action: issue-view security: - personalAccessToken: [] - oauth: - - nodebalancers:read_write - requestBody: - description: The fields to update. - required: true - content: - application/json: - schema: - $ref: '#/components/schemas/NodeBalancerConfig' + - account:read_only responses: '200': - description: Config updated successfully. + description: The requested issue. content: application/json: schema: - $ref: '#/components/schemas/NodeBalancerConfig' + $ref: '#/components/schemas/ManagedIssue' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > - curl -H "Content-Type: application/json" \ - -H "Authorization: Bearer $TOKEN" \ - -X PUT -d '{ - "port": 80, - "protocol": "http", - "algorithm": "roundrobin", - "stickiness": "http_cookie", - "check": "http_body", - "check_interval": 90, - "check_timeout": 10, - "check_attempts": 3, - "check_path": "/test", - "check_body": "it works", - "check_passive": true, - "proxy_protocol": "v1", - "cipher_suite": "recommended" - }' \ - https://api.linode.com/v4/nodebalancers/12345/configs/4567 + curl -H "Authorization: Bearer $TOKEN" \ + https://api.linode.com/v4/managed/issues/823 - lang: CLI source: > - linode-cli nodebalancers config-update \ - 12345 4567 \ - --port 80 \ - --protocol http \ - --algorithm roundrobin \ - --stickiness http_cookie \ - --check http_body \ - --check_interval 90 \ - --check_timeout 10 \ - --check_attempts 3 \ - --check_path "/test" \ - --check_body "it works" \ - --check_passive true \ - --proxy_protocol "v1" \ - --cipher_suite recommended - delete: - x-linode-grant: read_write + linode-cli managed issue-view 823 + /managed/linode-settings: + x-linode-cli-command: managed + get: + x-linode-grant: unrestricted only + parameters: + - $ref: '#/components/parameters/pageOffset' + - $ref: '#/components/parameters/pageSize' tags: - - NodeBalancers - summary: Config Delete + - Managed + summary: Managed Linode Settings List description: > - Deletes the Config for a port of this NodeBalancer. - - - **This cannot be undone.** - - - Once completed, this NodeBalancer will no longer - respond to requests on the given port. This also deletes all - associated NodeBalancerNodes, but the Linodes they were routing - traffic to will be unchanged and will not be removed. - operationId: deleteNodeBalancerConfig - x-linode-cli-action: config-delete + Returns a paginated list of Managed Settings for your Linodes. There will + be one entry per Linode on your Account. + operationId: getManagedLinodeSettings + x-linode-cli-action: linode-settings-list security: - personalAccessToken: [] - oauth: - - nodebalancers:read_write + - account:read_only responses: '200': - description: NodeBalancer Config deleted successfully. + description: > + A paginated list of Managed settings for your Linodes. content: application/json: schema: type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/ManagedLinodeSettings' + page: + $ref: '#/components/schemas/PaginationEnvelope/properties/page' + pages: + $ref: '#/components/schemas/PaginationEnvelope/properties/pages' + results: + $ref: '#/components/schemas/PaginationEnvelope/properties/results' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > curl -H "Authorization: Bearer $TOKEN" \ - -X DELETE \ - https://api.linode.com/v4/nodebalancers/12345/configs/4567 + https://api.linode.com/v4/managed/linode-settings - lang: CLI source: > - linode-cli nodebalancers config-delete \ - 12345 4567 - /nodebalancers/{nodeBalancerId}/configs/{configId}/rebuild: + linode-cli managed linode-settings-list + /managed/linode-settings/{linodeId}: parameters: - - name: nodeBalancerId - in: path - description: The ID of the NodeBalancer to access. - required: true - schema: - type: integer - - name: configId + - name: linodeId in: path - description: The ID of the Config to access. required: true + description: The Linode ID whose settings we are accessing. schema: type: integer - x-linode-cli-command: nodebalancers - post: - x-linode-grant: add_nodebalancers + x-linode-cli-command: managed + get: + x-linode-grant: unrestricted only tags: - - NodeBalancers - summary: Config Rebuild + - Managed + summary: Linode's Managed Settings View description: > - Rebuilds a NodeBalancer Config and its Nodes that you have - permission to modify. - operationId: rebuildNodeBalancerConfig - x-linode-cli-action: config-rebuild + Returns a single Linode's Managed settings. + operationId: getManagedLinodeSetting + x-linode-cli-action: linode-setting-view security: - personalAccessToken: [] - oauth: - - nodebalancers:read_write + - account:read_only + responses: + '200': + description: The requested Linode's Managed settings. + content: + application/json: + schema: + $ref: '#/components/schemas/ManagedLinodeSettings' + default: + $ref: '#/components/responses/ErrorResponse' + x-code-samples: + - lang: Shell + source: > + curl -H "Authorization: Bearer $TOKEN" \ + https://api.linode.com/v4/managed/linode-settings/123 + - lang: CLI + source: > + linode-cli managed linode-setting-view 123 + put: + x-linode-grant: unrestricted only + tags: + - Managed + summary: Linode's Managed Settings Update + description: > + Updates a single Linode's Managed settings. + operationId: updateManagedLinodeSetting + x-linode-cli-action: linode-setting-update + security: + - personalAccessToken: [] + - oauth: + - account:read_write requestBody: - description: > - Information about the NodeBalancer Config to rebuild. + description: The settings to update. required: true content: application/json: schema: - allOf: - - $ref: "#/components/schemas/NodeBalancerConfig" - - type: object - properties: - nodes: - type: array - description: | - The NodeBalancer Node(s) that serve this port. - At least one Node is required per configured port. - - Some considerations for Nodes when rebuilding a config: - * Current Nodes excluded from the request body will be deleted. - * Current Nodes (identified by their ID) will be updated. - * New Nodes (included without an ID) will be created. - items: - $ref: '#/components/schemas/NodeBalancerNode' + $ref: '#/components/schemas/ManagedLinodeSettings' responses: '200': - description: NodeBalancer created successfully. + description: Settings updated successfully. content: application/json: schema: - $ref: '#/components/schemas/NodeBalancer' + $ref: '#/components/schemas/ManagedLinodeSettings' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: @@ -12199,91 +12253,43 @@ paths: source: > curl -H "Content-Type: application/json" \ -H "Authorization: Bearer $TOKEN" \ - -X POST -d '{ - "port": 80, - "protocol": "http", - "algorithm": "roundrobin", - "stickiness": "http_cookie", - "check": "http_body", - "check_interval": 90, - "check_timeout": 10, - "check_attempts": 3, - "check_path": "/test", - "check_body": "it works", - "check_passive": true, - "proxy_protocol": "v1", - "cipher_suite": "recommended", - "nodes": [ - { - "address": "192.168.210.120:80", - "label": "node1", - "weight": 50, - "mode": "accept" - }, - { - "address": "192.168.210.122:81", - "label": "node2", - "weight": 50, - "mode": "accept" - }, - ] + -X PUT -d '{ + "ssh": { + "access": true, + "user": "linode", + "ip": "12.34.56.78", + "port": 22 + } }' \ - https://api.linode.com/v4/nodebalancers/12345/configs/4567/rebuild + https://api.linode.com/v4/managed/linode-settings/123 - lang: CLI source: > - linode-cli nodebalancers config-rebuild \ - 12345 4567 \ - --port 80 \ - --protocol http \ - --algorithm roundrobin \ - --stickiness http_cookie \ - --check http_body \ - --check_interval 90 \ - --check_timeout 10 \ - --check_attempts 3 \ - --check_path "/test" \ - --check_body "it works" \ - --check_passive true \ - --proxy_protocol "v1" \ - --cipher_suite recommended \ - --nodes '{"address":"192.168.210.120:80","label":"node1","weight":50,"mode":"accept"}' \ - --nodes '{"address":"192.168.210.122:80","label":"node2","weight":50,"mode":"accept"}' - /nodebalancers/{nodeBalancerId}/configs/{configId}/nodes: - parameters: - - name: nodeBalancerId - in: path - description: The ID of the NodeBalancer to access. - required: true - schema: - type: integer - - name: configId - in: path - description: The ID of the NodeBalancer config to access. - required: true - schema: - type: integer - x-linode-cli-command: nodebalancers + linode-cli managed linode-setting-update \ + 7833234 \ + --ssh.access true \ + --ssh.user linode \ + --ssh.port 22 \ + --ssh.ip 12.34.56.78 + /managed/services: + x-linode-cli-command: managed get: - x-linode-grant: read_only + x-linode-grant: unrestricted only tags: - - NodeBalancers - parameters: - - $ref: '#/components/parameters/pageOffset' - - $ref: '#/components/parameters/pageSize' - summary: Nodes List + - Managed + summary: Managed Services List description: > - Returns a paginated list of NodeBalancer nodes associated with - this Config. These are the backends that will be sent traffic - for this port. - operationId: getNodeBalancerConfigNodes - x-linode-cli-action: nodes-list + Returns a paginated list of Managed Services on your Account. These + are the services Linode Managed is monitoring and will report and attempt + to resolve issues with. + operationId: getManagedServices + x-linode-cli-action: services-list security: - personalAccessToken: [] - oauth: - - nodebalancers:read_only + - account:read_only responses: '200': - description: A paginated list of NodeBalancer nodes. + description: A paginated list of Managed Services content: application/json: schema: @@ -12292,7 +12298,7 @@ paths: data: type: array items: - $ref: '#/components/schemas/NodeBalancerNode' + $ref: '#/components/schemas/ManagedService' page: $ref: '#/components/schemas/PaginationEnvelope/properties/page' pages: @@ -12305,43 +12311,43 @@ paths: - lang: Shell source: > curl -H "Authorization: Bearer $TOKEN" \ - https://api.linode.com/v4/nodebalancers/12345/configs/4567/nodes + https://api.linode.com/v4/managed/services - lang: CLI source: > - linode-cli nodebalancers nodes-list 12345 4567 + linode-cli managed services-list post: - x-linode-grant: read_write + x-linode-grant: unrestricted only tags: - - NodeBalancers - summary: Node Create + - Managed + summary: Managed Service Create description: > - Creates a NodeBalancer Node, a backend that can accept - traffic for this NodeBalancer Config. Nodes are routed - requests on the configured port based on their status. - operationId: createNodeBalancerNode - x-linode-cli-action: node-create + Creates a Managed Service. Linode Managed will begin monitoring this + service and reporting and attempting to resolve any Issues. + operationId: createManagedService + x-linode-cli-action: service-create security: - personalAccessToken: [] - oauth: - - nodebalancers:read_write + - account:read_write requestBody: - description: Information about the Node to create. - required: true + description: Information about the service to monitor. content: application/json: schema: required: - label + - service_type - address + - timeout allOf: - - $ref: '#/components/schemas/NodeBalancerNode' + - $ref: '#/components/schemas/ManagedService' responses: '200': - description: Node created successfully. + description: Service created. content: application/json: schema: - $ref: '#/components/schemas/NodeBalancerNode' + $ref: '#/components/schemas/ManagedService' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: @@ -12350,100 +12356,96 @@ paths: curl -H "Content-Type: application/json" \ -H "Authorization: Bearer $TOKEN" \ -X POST -d '{ - "address": "192.168.210.120:80", - "label": "node54321", - "weight": 50, - "mode": "accept" + "service_type": "url", + "label": "prod-1", + "address": "https://example.org", + "timeout": 30, + "body": "it worked", + "consultation_group": "on-call", + "notes": "The service name is my-cool-application", + "credentials": [ + 9991 + ] }' \ - https://api.linode.com/v4/nodebalancers/12345/configs/4567/nodes + https://api.linode.com/v4/managed/services - lang: CLI source: > - linode-cli nodebalancers node-create \ - 12345 4567 \ - --address 192.168.210.120:80 \ - --label node54321 \ - --weight 50 \ - --mode accept - /nodebalancers/{nodeBalancerId}/configs/{configId}/nodes/{nodeId}: + linode-cli managed service-create \ + --service_type url \ + --label prod-1 \ + --address "https://example.org" \ + --timeout 30 \ + --body "it worked" \ + --consultation_group on-call \ + --notes "The service name is \ + my-cool-application" \ + --credentials 9991 + /managed/services/{serviceId}: parameters: - - name: nodeBalancerId - in: path - description: The ID of the NodeBalancer to access. - required: true - schema: - type: integer - - name: configId - in: path - description: The ID of the Config to access - required: true - schema: - type: integer - - name: nodeId + - name: serviceId in: path - description: The ID of the Node to access required: true + description: The ID of the Managed Service to access. schema: type: integer - x-linode-cli-command: nodebalancers + x-linode-cli-command: managed get: - x-linode-grant: read_only + x-linode-grant: unrestricted only tags: - - NodeBalancers - summary: Node View + - Managed + summary: Managed Service View description: > - Returns information about a single Node, a backend for this - NodeBalancer's configured port. - operationId: getNodeBalancerNode - x-linode-cli-action: node-view + Returns information about a single Managed Service on your Account. + operationId: getManagedService + x-linode-cli-action: service-view security: - personalAccessToken: [] - oauth: - - nodebalancers:read_write + - account:read_only responses: '200': - description: A paginated list of NodeBalancer nodes. + description: The requested Managed Service. content: application/json: schema: - $ref: '#/components/schemas/NodeBalancerNode' + $ref: '#/components/schemas/ManagedService' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > curl -H "Authorization: Bearer $TOKEN" \ - https://api.linode.com/v4/nodebalancers/12345/configs/4567/nodes/54321 + https://api.linode.com/v4/managed/services/9994 - lang: CLI source: > - linode-cli nodebalancers node-view 12345 4567 54321 + linode-cli managed service-view 9994 put: - x-linode-grant: read_write + x-linode-grant: unrestricted only tags: - - NodeBalancers - summary: Node Update + - Managed + summary: Managed Service Update description: > - Updates information about a Node, a backend for this NodeBalancer's - configured port. - operationId: updateNodeBalancerNode - x-linode-cli-action: node-update + Updates information about a Managed Service. + operationId: updateManagedService + x-linode-cli-action: service-update security: - personalAccessToken: [] - oauth: - - nodebalancers:read_write + - account:read_write requestBody: description: The fields to update. required: true content: application/json: schema: - $ref: '#/components/schemas/NodeBalancerNode' + $ref: '#/components/schemas/ManagedService' responses: '200': - description: Node updated successfully. + description: Service updated successfully. content: application/json: schema: - $ref: '#/components/schemas/NodeBalancerNode' + $ref: '#/components/schemas/ManagedService' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: @@ -12452,41 +12454,46 @@ paths: curl -H "Content-Type: application/json" \ -H "Authorization: Bearer $TOKEN" \ -X PUT -d '{ - "address": "192.168.210.120:80", - "label": "node54321", - "weight": 50, - "mode": "accept" + "service_type": "url", + "label": "prod-1", + "address": "https://example.org", + "timeout": 30, + "body": "it worked", + "consultation_group": "on-call", + "notes": "The service name is my-cool-application", + "credentials": [ + 9991 + ] }' \ - https://api.linode.com/v4/nodebalancers/12345/configs/4567/nodes/54321 + https://api.linode.com/v4/managed/services/9994 - lang: CLI source: > - linode-cli nodebalancers node-create \ - 12345 4567 54321 \ - --address 192.168.210.120:80 \ - --label node54321 \ - --weight 50 \ - --mode accept + linode-cli managed service-update 9994 \ + --service_type url \ + --label prod-1 \ + --address "https://example.org" \ + --timeout 30 \ + --body "it worked" \ + --consultation_group on-call \ + --notes "The service name is my-cool-application" \ + --credentials 9991 delete: - x-linode-grant: read_write + x-linode-grant: unrestricted only tags: - - NodeBalancers - summary: Node Delete + - Managed + summary: Managed Service Delete description: > - Deletes a Node from this Config. This backend will no longer - receive traffic for the configured port of this NodeBalancer. - - - This does not change or remove the Linode whose address was - used in the creation of this Node. - operationId: deleteNodeBalancerConfigNode - x-linode-cli-action: node-delete + Deletes a Managed Service. This service will no longer be monitored by + Linode Managed. + operationId: deleteManagedService + x-linode-cli-action: service-delete security: - personalAccessToken: [] - oauth: - - nodebalancers:read_write + - account:read_write responses: '200': - description: Node deleted successfully. + description: Service deleted successfully. content: application/json: schema: @@ -12498,64 +12505,163 @@ paths: source: > curl -H "Authorization: Bearer $TOKEN" \ -X DELETE \ - https://api.linode.com/v4/nodebalancers/12345/configs/4567/nodes/54321 + https://api.linode.com/v4/managed/services/9994 - lang: CLI source: > - linode-cli nodebalancers node-delete \ - 12345 4567 54321 - /nodebalancers/{nodeBalancerId}/stats: - x-linode-cli-command: nodebalancers + linode-cli managed service-delete 9994 + /managed/services/{serviceId}/disable: parameters: - - name: nodeBalancerId + - name: serviceId in: path - description: The ID of the NodeBalancer to access. required: true + description: The ID of the Managed Service to disable. schema: type: integer - get: - x-linode-grant: read_only + x-linode-cli-command: managed + post: + x-linode-grant: unrestricted only tags: - - NodeBalancers - summary: NodeBalancer Statistics View - description: > - Returns detailed statistics about the requested NodeBalancer. - x-linode-cli-action: stats - x-linode-cli-skip: true + - Managed + summary: Managed Service Disable + description: > + Temporarily disables monitoring of a Managed Service. + operationId: disableManagedService + x-linode-cli-action: service-disable security: - personalAccessToken: [] - oauth: - - nodebalancers:read_only + - account:read_write responses: '200': - description: The requested stats. + description: Service disabled. content: application/json: schema: - $ref: '#/components/schemas/NodeBalancerStats' + $ref: '#/components/schemas/ManagedService' default: $ref: '#/components/responses/ErrorResponse' - /object-storage/buckets: + x-code-samples: + - lang: Shell + source: > + curl -H "Content-Type: application/json" \ + -H "Authorization: Bearer $TOKEN" \ + -X POST \ + https://api.linode.com/v4/managed/services/9994/disable + - lang: CLI + source: > + linode-cli managed service-disable 9994 + /managed/services/{serviceId}/enable: + parameters: + - name: serviceId + in: path + required: true + description: The ID of the Managed Service to enable. + schema: + type: integer + x-linode-cli-command: managed + post: + x-linode-grant: unrestricted only + tags: + - Managed + summary: Managed Service Enable + description: > + Enables monitoring of a Managed Service. + operationId: enableManagedService + x-linode-cli-action: service-enable + security: + - personalAccessToken: [] + - oauth: + - account:read_write + responses: + '200': + description: Service enabled. + content: + application/json: + schema: + $ref: '#/components/schemas/ManagedService' + default: + $ref: '#/components/responses/ErrorResponse' + x-code-samples: + - lang: Shell + source: > + curl -H "Content-Type: application/json" \ + -H "Authorization: Bearer $TOKEN" \ + -X POST \ + https://api.linode.com/v4/managed/services/9994/enable + - lang: CLI + source: > + linode-cli managed service-enable 9994 + /managed/stats: + x-linode-cli-command: managed get: - operationId: getObjectStorageBuckets - x-linode-cli-skip: true - servers: - - url: https://api.linode.com/v4 - summary: Object Storage Buckets List + x-linode-grant: unrestricted only + tags: + - Managed + summary: Managed Stats List description: | - Returns a paginated list of all Object Storage Buckets that you own. + Returns a list of Managed Stats on your Account in the form of x and y data points. + You can use these data points to plot your own graph visualizations. These stats + reflect the last 24 hours of combined usage across all managed Linodes on your account + giving you a high-level snapshot of data for the following: - This endpoint is available for convenience. It is recommended that instead you - use the more [fully-featured S3 API](https://docs.ceph.com/en/latest/radosgw/s3/serviceops/#list-buckets) directly. + * cpu + * disk + * swap + * network in + * network out + operationId: getManagedStats + x-linode-cli-action: stats-list + security: + - personalAccessToken: [] + - oauth: + - account:read_only + responses: + '200': + description: A list of Managed Stats from the last 24 hours. + content: + application/json: + schema: + type: object + properties: + data: + type: object + oneOf: + - x-linode-ref-name: "Stats Available" + $ref: '#/components/schemas/StatsDataAvailable' + - x-linode-ref-name: "Stats Unavailable" + $ref: '#/components/schemas/StatsDataUnavailable' + discriminator: + propertyName: x-linode-ref-name + default: + $ref: '#/components/responses/ErrorResponse' + x-code-samples: + - lang: Shell + source: > + curl -H "Authorization: Bearer $TOKEN" \ + https://api.linode.com/v4/managed/stats + - lang: CLI + source: > + linode-cli managed stats-list + /networking/ips: + x-linode-cli-command: networking + get: + x-linode-grant: read_only tags: - - Object Storage + - Networking + summary: IP Addresses List + description: > + Returns a paginated list of IP Addresses on your Account, excluding + private addresses. + operationId: getIPs + x-linode-cli-action: ips-list security: - personalAccessToken: [] - oauth: - - object_storage:read_only + - ips:read_only responses: '200': - description: A paginated list of buckets you own. + description: A paginated list of IP Addresses. content: application/json: schema: @@ -12564,7 +12670,7 @@ paths: data: type: array items: - $ref: '#/components/schemas/ObjectStorageBucket' + $ref: '#/components/schemas/IPAddress' page: $ref: '#/components/schemas/PaginationEnvelope/properties/page' pages: @@ -12577,81 +12683,64 @@ paths: - lang: Shell source: > curl -H "Authorization: Bearer $TOKEN" \ - https://api.linode.com/v4/object-storage/buckets/ + https://api.linode.com/v4/networking/ips + - lang: CLI + source: > + linode-cli networking ips-list post: - operationId: createObjectStorageBucket - x-linode-cli-skip: true - servers: - - url: https://api.linode.com/v4 - summary: Object Storage Bucket Create - description: | - Creates an Object Storage Bucket in the cluster specified. If the - bucket already exists and is owned by you, this endpoint will return a - `200` response with that bucket as if it had just been created. - - - This endpoint is available for convenience. It is recommended that instead you - use the more [fully-featured S3 API](https://docs.ceph.com/en/latest/radosgw/s3/bucketops/#put-bucket) directly. + x-linode-grant: read_write tags: - - Object Storage + - Networking + summary: IP Address Allocate + description: > + Allocates a new IPv4 Address on your Account. The Linode must be + configured to support additional addresses - please + [open a support ticket](/docs/api/support/#support-ticket-open) requesting additional + addresses before attempting allocation. + operationId: allocateIP + x-linode-cli-action: ip-add security: - personalAccessToken: [] - oauth: - - object_storage:read_write + - ips:read_write + - linodes:read_write requestBody: - description: > - Information about the bucket you want to create. + description: Information about the address you are creating. + required: true content: application/json: schema: - type: object required: - - label - - cluster + - type + - public + - linode_id properties: - label: - type: string - description: > - The name for this bucket. Must be unique in the cluster you - are creating the bucket in, or an error will be returned. Labels will be - reserved only for the cluster that active buckets are created and stored in. - If you want to reserve this bucket's label in another cluster, - you must create a new bucket with the same label in the new cluster. - pattern: ^[a-z0-09][a-z0-9-]*[a-z0-9]?$ - example: example-bucket - cluster: + type: type: string + enum: + - ipv4 description: > - The ID of the Object Storage Cluster where this bucket should - be created. - example: us-east-1 - cors_enabled: + The type of address you are requesting. Only + IPv4 addresses may be allocated through this endpoint. + example: ipv4 + public: type: boolean description: > - If true, the bucket will be created with CORS enabled for all - origins. For more fine-grained controls of CORS, use the S3 - API directly. + Whether to create a public or private IPv4 address. example: true - default: false - acl: - type: string - enum: - - private - - public-read - - authenticated-read - - public-read-write + linode_id: + type: integer description: > - The Access Control Level of the bucket using a canned ACL string. - For more fine-grained control of ACLs, use the S3 API directly. - default: private - example: private + The ID of a Linode you you have access to that this address + will be allocated to. + example: 123 responses: '200': - description: The bucket created successfully. + description: IP Address allocated successfully. content: application/json: schema: - $ref: '#/components/schemas/ObjectStorageBucket' + $ref: '#/components/schemas/IPAddress' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: @@ -12660,207 +12749,268 @@ paths: curl -H "Content-Type: application/json" \ -H "Authorization: Bearer $TOKEN" \ -X POST -d '{ - "label": "example-bucket", - "cluster": "us-east-1", - "cors_enabled": true, - "acl": "private" + "type": "ipv4", + "public": true, + "linode_id": 123 }' \ - https://api.linode.com/v4/object-storage/buckets/ - /object-storage/buckets/{clusterId}/{bucket}: + https://api.linode.com/v4/networking/ips + - lang: CLI + source: > + linode-cli networking ip-add \ + --type ipv4 \ + --public true \ + --linode_id 123 + /networking/ips/{address}: parameters: - - name: clusterId + - name: address in: path - description: The ID of the cluster this bucket exists in. - required: true - schema: - type: string - - name: bucket - in: path - description: The bucket name. required: true + description: The address to operate on. schema: type: string + format: ip + x-linode-cli-command: networking get: - operationId: getObjectStorageBucket - x-linode-cli-skip: true - servers: - - url: https://api.linode.com/v4 - summary: Object Storage Bucket View - description: | - Returns a single Object Storage Bucket. - - - This endpoint is available for convenience. It is recommended that instead you - use the more [fully-featured S3 API](https://docs.ceph.com/en/latest/radosgw/s3/bucketops/#get-bucket) directly. + x-linode-grant: read_only tags: - - Object Storage + - Networking + summary: IP Address View + description: > + Returns information about a single IP Address on your Account. + operationId: getIP + x-linode-cli-action: ip-view security: - personalAccessToken: [] - oauth: - - object_storage:read_only + - ips:read_only responses: '200': - description: The requested bucket. + description: The requested IP Address. content: application/json: schema: - $ref: '#/components/schemas/ObjectStorageBucket' + $ref: '#/components/schemas/IPAddress' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > curl -H "Authorization: Bearer $TOKEN" \ - https://api.linode.com/v4/object-storage/buckets/us-east-1/example-bucket - delete: - operationId: deleteObjectStorageBucket - x-linode-cli-skip: true - servers: - - url: https://api.linode.com/v4 - summary: Object Storage Bucket Remove - description: | - Removes a single bucket. - - Bucket objects must be removed prior to removing the bucket. While buckets containing objects _may_ be - deleted using the [s3cmd command-line tool](/docs/products/storage/object-storage/guides/s3cmd/#delete-a-bucket), such operations - can fail if the bucket contains too many objects. The recommended - way to empty large buckets is to use the [S3 API to configure lifecycle policies](https://docs.ceph.com/en/latest/radosgw/bucketpolicy/#) that - remove all objects, then delete the bucket. - - This endpoint is available for convenience. It is recommended that instead you - use the more [fully-featured S3 API](https://docs.ceph.com/en/latest/radosgw/s3/bucketops/#delete-bucket) directly. + https://api.linode.com/v4/networking/ips/97.107.143.141 + - lang: CLI + source: > + linode-cli networking ip-view 97.107.143.141 + put: + x-linode-grant: read_write tags: - - Object Storage + - Networking + summary: IP Address RDNS Update + description: > + Sets RDNS on an IP Address. Forward DNS must already be set up for + reverse DNS to be applied. If you set the RDNS to `null` for public + IPv4 addresses, it will be reset to the default _ip.linodeusercontent.com_ + RDNS value. + operationId: updateIP + x-linode-cli-action: ip-update security: - personalAccessToken: [] - oauth: - - object_storage:read_write + - ips:read_write + requestBody: + description: The information to update. + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/IPAddress' responses: '200': - description: Bucket deleted successfully. + description: RDNS set successfully content: application/json: schema: - type: object + $ref: '#/components/schemas/IPAddress' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > - curl -H "Authorization: Bearer $TOKEN" \ - -X DELETE \ - https://api.linode.com/v4/object-storage/buckets/us-east-1/example-bucket - /object-storage/buckets/{clusterId}: - parameters: - - name: clusterId - in: path - description: The ID of the cluster this bucket exists in. - required: true - schema: - type: string - get: - operationId: getObjectStorageBucketinCluster - x-linode-cli-skip: true - servers: - - url: https://api.linode.com/v4 - summary: Object Storage Buckets in Cluster List + curl -H "Content-Type: application/json" \ + -H "Authorization: Bearer $TOKEN" \ + -X PUT -d '{ + "rdns": "test.example.org" + }' \ + https://api.linode.com/v4/networking/ips/97.107.143.141 + - lang: CLI + source: > + linode-cli networking ip-update \ + 97.107.143.141 \ + --rdns "test.example.org" + /networking/ips/assign: + x-linode-cli-command: networking + post: + x-linode-grant: read_write + tags: + - Networking + summary: Linodes Assign IPs description: | - Returns a list of Buckets in this cluster belonging to this Account. + Assign multiple IPv4 addresses and/or IPv6 ranges to multiple Linodes in one Region. This allows + swapping, shuffling, or otherwise reorganizing IPs to your Linodes. + The following restrictions apply: + * All Linodes involved must have at least one public IPv4 address after assignment. + * Linodes may have no more than one assigned private IPv4 address. + * Linodes may have no more than one assigned IPv6 range. + * [Open a Support Ticket](/docs/api/support/#support-ticket-open) to request additional IPv4 addresses or IPv6 ranges. - This endpoint is available for convenience. It is recommended that instead you - use the more [fully-featured S3 API](https://docs.ceph.com/en/latest/radosgw/s3/bucketops/#get-bucket) directly. - tags: - - Object Storage + **Note**: Removing an IP address that has been set as a Managed Linode's `ssh.ip` causes the Managed Linode's SSH access settings to reset to their default values. To view and configure Managed Linode SSH settings, use the **Linode's Managed Settings View** ([GET /managed/linode-settings/{linodeId}](/docs/api/managed/#linodes-managed-settings-view)) and **Linode's Managed Settings Update** ([PUT /managed/linode-settings/{linodeId}](/docs/api/managed/#linodes-managed-settings-update)) commands. + operationId: assignIPs + x-linode-cli-action: ip-assign security: - personalAccessToken: [] - oauth: - - object_storage:read_only + - ips:read_write + - linodes:read_write + requestBody: + description: > + Information about what IPv4 address or IPv6 range to assign, and to which Linode. + required: true + content: + application/json: + schema: + required: + - region + - assignments + properties: + region: + type: string + description: > + The ID of the Region in which these assignments are to take + place. All IPs and Linodes must exist in this Region. + example: us-east + assignments: + type: array + description: > + The list of assignments to make. You must have read_write + access to all IPs being assigned and all Linodes being + assigned to in order for the assignments to succeed. + required: + - address + - linode_id + items: + type: object + properties: + address: + type: string + format: ipv4|ipv6/prefix_length + description: | + The IPv4 address or IPv6 range for this assignment. + * Must be an IPv4 address or an IPv6 range you can access in the Region specified. + * IPv6 ranges must include a prefix length of `/56` or `/64`, for example: `2001:db8:3c4d:15::/64`. + * Assignment of an IPv6 range to a Linode updates the route target of the range to the assigned Linode's SLAAC address. + * May be a public or private address. + example: 12.34.56.78 + linode_id: + type: integer + description: > + The ID of the Linode to assign this address to. The IP's + previous Linode will lose this address, and must end up + with at least one public address and no more than one + private address once all assignments have been made. + example: 123 responses: '200': - description: A paginated list of buckets you own in this cluster. + description: All assignments completed successfully. content: application/json: schema: type: object - properties: - data: - type: array - items: - $ref: '#/components/schemas/ObjectStorageBucket' - page: - $ref: '#/components/schemas/PaginationEnvelope/properties/page' - pages: - $ref: '#/components/schemas/PaginationEnvelope/properties/pages' - results: - $ref: '#/components/schemas/PaginationEnvelope/properties/results' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > - curl -H "Authorization: Bearer $TOKEN" \ - https://api.linode.com/v4/object-storage/buckets/us-east-1 - /object-storage/buckets/{clusterId}/{bucket}/access: - parameters: - - name: clusterId - in: path - description: The ID of the cluster this bucket exists in. - required: true - schema: - type: string - - name: bucket - in: path - description: The bucket name. - required: true - schema: - type: string + curl -H "Content-Type: application/json" \ + -H "Authorization: Bearer $TOKEN" \ + -X POST -d '{ + "region": "us-east", + "assignments": [ + { + "address": "12.34.56.100", + "linode_id": 123 + }, + { + "address": "2001:db8:3c4d:15::/64", + "linode_id": 234 + } + ] + }' \ + https://api.linode.com/v4/networking/ips/assign + - lang: CLI + source: > + linode-cli networking ip-assign \ + --region us-east \ + --assignments.address 2001:db8:3c4d:15::/64 \ + --assignments.linode_id 123 + /networking/ips/share: + x-linode-cli-command: networking post: - operationId: modifyObjectStorageBucketAccess - x-linode-cli-skip: true servers: + - url: https://api.linode.com/v4beta - url: https://api.linode.com/v4 - summary: Object Storage Bucket Access Modify + x-linode-grant: read_write + tags: + - Networking + summary: IP Addresses Share description: | - Allows changing basic Cross-origin Resource Sharing (CORS) and Access Control Level (ACL) settings. - Only allows enabling/disabling CORS for all origins, and/or setting canned ACLs. + Configure shared IPs. + + IP sharing allows IP address reassignment (also referred to as IP failover) from one Linode to another if + the primary Linode becomes unresponsive. This means that requests to the primary Linode's IP address can be + automatically rerouted to secondary Linodes at the configured shared IP addresses. + IP failover requires configuration of a failover service (such as [Keepalived](/docs/guides/ip-failover-keepalived)) + within the internal system of the primary Linode. - For more fine-grained control of both systems, please use the more [fully-featured S3 API](https://docs.ceph.com/en/latest/radosgw/s3/bucketops/#put-bucket-acl) directly. - tags: - - Object Storage + **Note**: IPv6 range sharing has limited availability in certain regions. Please contact customer support for + assistance in enabling IPv6 range sharing for your Linodes. + operationId: shareIPs + x-linode-cli-action: ip-share security: - personalAccessToken: [] - oauth: - - object_storage:read_write + - ips:read_write + - linodes:read_write requestBody: - description: The changes to make to the bucket's access controls. + description: Information about what IPs to share with which Linode. + required: true content: application/json: schema: + required: + - linode_id + - ips properties: - cors_enabled: - type: boolean - description: > - If true, the bucket will be created with CORS enabled for all - origins. For more fine-grained controls of CORS, use the S3 - API directly. - example: true - acl: - type: string - enum: - - private - - public-read - - authenticated-read - - public-read-write - - custom + linode_id: + type: integer description: > - The Access Control Level of the bucket, as a canned ACL string. - For more fine-grained control of ACLs, use the S3 API directly. - example: private + The ID of the primary Linode that the addresses will be shared with. + example: 123 + ips: + type: array + items: + type: string + format: ip + description: | + A list of secondary Linode IPs to share with the primary Linode. + * Can include both IPv4 addresses and IPv6 ranges (omit /56 and /64 prefix lengths) + * Can include both private and public IPv4 addresses. + * You must have access to all of these addresses and they must be in the same Region as the primary + Linode. + * Enter an empty array to remove all shared IP addresses. responses: '200': - description: Access controls updated. + description: IP Address sharing successful. content: application/json: schema: @@ -12871,58 +13021,90 @@ paths: - lang: Shell source: > curl -H "Content-Type: application/json" \ - -H "Authorization: Bearer $TOKEN" \ - -X POST -d '{ - "cors_enabled": true, - "acl": "private" + -H "Authorization: Bearer $TOKEN" \ + -X POST -d '{ + "linode_id": 123, + "ips": [ + "192.0.2.1", + "2001:db8:3c4d:15::" + ] }' \ - https://api.linode.com/v4/object-storage/buckets/us-east-1/example-bucket/access - put: - operationId: updateObjectStorageBucketAccess - x-linode-cli-skip: true - servers: - - url: https://api.linode.com/v4 - summary: Object Storage Bucket Access Update - description: | - Allows changing basic Cross-origin Resource Sharing (CORS) and Access Control Level (ACL) settings. - Only allows enabling/disabling CORS for all origins, and/or setting canned ACLs. - - - For more fine-grained control of both systems, please use the more [fully-featured S3 API](https://docs.ceph.com/en/latest/radosgw/s3/bucketops/#put-bucket-acl) directly. + https://api.linode.com/v4beta/networking/ips/share + - lang: CLI + source: > + linode-cli networking ip-share \ + --linode_id 123 \ + --ips 192.0.2.1 \ + --ips 2001:db8:3c4d:15:: + /networking/ipv4/assign: + x-linode-cli-command: networking + post: + x-linode-grant: read_write tags: - - Object Storage + - Networking + summary: Linodes Assign IPv4s + description: > + Assign multiple IPv4s to multiple Linodes in one Region. This allows + swapping, shuffling, or otherwise reorganizing IPv4 Addresses to your + Linodes. When the assignment is finished, all Linodes must end up with + at least one public IPv4 and no more than one private IPv4. + + To assign IPv6 ranges or to use the CLI, see the Linodes Assign IPs ([POST /networking/ips/assign](/docs/api/networking/#linodes-assign-ips)) command. + operationId: assignIPv4s + x-linode-cli-skip: true security: - personalAccessToken: [] - oauth: - - object_storage:read_write + - ips:read_write + - linodes:read_write requestBody: - description: The changes to make to the bucket's access controls. + description: > + Information about what IPv4 address to assign, and to which Linode. + required: true content: application/json: schema: + required: + - region + - assignments properties: - cors_enabled: - type: boolean - description: > - If true, the bucket will be created with CORS enabled for all - origins. For more fine-grained controls of CORS, use the S3 - API directly. - example: true - acl: + region: type: string - enum: - - private - - public-read - - authenticated-read - - public-read-write - - custom description: > - The Access Control Level of the bucket, as a canned ACL string. - For more fine-grained control of ACLs, use the S3 API directly. - example: private + The ID of the Region in which these assignments are to take + place. All IPs and Linodes must exist in this Region. + example: us-east + assignments: + type: array + description: > + The list of assignments to make. You must have read_write + access to all IPs being assigned and all Linodes being + assigned to in order for the assignments to succeed. + required: + - address + - linode_id + items: + type: object + properties: + address: + type: string + format: ip + description: > + Ths IP Address for this assignment. Must be a IPv4 + address you can access in the Region specified. May + be a public or private address. + example: 12.34.56.78 + linode_id: + type: integer + description: > + The ID of the Linode to assign this address to. The IP's + previous Linode will lose this address, and must end up + with at least one public address and no more than one + private address once all assignments have been made. + example: 123 responses: '200': - description: Access controls updated. + description: All assignments completed successfully. content: application/json: schema: @@ -12933,454 +13115,385 @@ paths: - lang: Shell source: > curl -H "Content-Type: application/json" \ - -H "Authorization: Bearer $TOKEN" \ - -X PUT -d '{ - "cors_enabled": true, - "acl": "private" + -H "Authorization: Bearer $TOKEN" \ + -X POST -d '{ + "region": "us-east", + "assignments": [ + { + "address": "12.34.56.100", + "linode_id": 123 + }, + { + "address": "23.45.67.200", + "linode_id": 234 + } + ] }' \ - https://api.linode.com/v4/object-storage/buckets/us-east-1/example-bucket/access - /object-storage/buckets/{clusterId}/{bucket}/object-acl: - parameters: - - name: clusterId - in: path - description: The ID of the cluster this bucket exists in. - required: true - schema: - type: string - - name: bucket - in: path - description: The bucket name. - required: true - schema: - type: string - get: - operationId: viewObjectStorageBucketACL - x-linode-cli-skip: true - servers: - - url: https://api.linode.com/v4 - summary: Object Storage Object ACL Config View - description: | - View an Object’s configured Access Control List (ACL) in this Object Storage bucket. - ACLs define who can access your buckets and objects and specify the level of access - granted to those users. - - - This endpoint is available for convenience. It is recommended that instead you - use the more [fully-featured S3 API](https://docs.ceph.com/en/latest/radosgw/s3/objectops/#get-object-acl) directly. + https://api.linode.com/v4/networking/ipv4/assign + /networking/ipv4/share: + x-linode-cli-command: networking + post: + x-linode-grant: read_write tags: - - Object Storage + - Networking + summary: IPv4 Sharing Configure + description: > + Configure shared IPs. A shared IP may be brought up on a Linode other + than the one it lists in its response. This can be used to allow one + Linode to begin serving requests should another become unresponsive. + operationId: shareIPv4s + x-linode-cli-skip: true security: - personalAccessToken: [] - oauth: - - object_storage:read_only - parameters: - - name: name - in: query + - ips:read_write + - linodes:read_write + requestBody: + description: Information about what IPs to share with which Linode. required: true - description: > - The `name` of the object for which to retrieve its Access Control List (ACL). - Use the [Object Storage Bucket Contents List](/docs/api/object-storage/#object-storage-bucket-contents-list) - endpoint to access all object names in a bucket. - schema: - type: string + content: + application/json: + schema: + required: + - linode_id + - ips + properties: + linode_id: + type: integer + description: > + The ID of the Linode that the addresses will be shared with. + example: 123 + ips: + type: array + items: + type: string + format: ip + example: 12.34.56.78 + description: > + A list of IPs that will be shared with this Linode. When + this is finished, the given Linode will be able to bring up + these addresses in addition to the Linodes that these + addresses belong to. You must have access to all of these + addresses and they must be in the same Region as the + Linode. responses: '200': - description: The Object's canned ACL and policy. + description: Sharing configured successfully. content: application/json: schema: type: object - properties: - acl: - type: string - enum: - - private - - public-read - - authenticated-read - - public-read-write - - custom - description: > - The Access Control Level of the bucket, as a canned ACL string. - For more fine-grained control of ACLs, use the S3 API directly. - example: public-read - acl_xml: - type: string - description: > - The full XML of the object's ACL policy. - example: "..." default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > - curl -H "Authorization: Bearer $TOKEN" \ - https://api.linode.com/v4/object-storage/buckets/us-east-1/example-bucket/object-acl?name=example.txt - put: - operationId: updateObjectStorageBucketACL - x-linode-cli-skip: true - servers: - - url: https://api.linode.com/v4 - summary: Object Storage Object ACL Config Update - description: | - Update an Object's configured Access Control List (ACL) in this Object Storage bucket. - ACLs define who can access your buckets and objects and specify the level of access - granted to those users. - - - This endpoint is available for convenience. It is recommended that instead you - use the more [fully-featured S3 API](https://docs.ceph.com/en/latest/radosgw/s3/objectops/#set-object-acl) directly. + curl -H "Content-Type: application/json" \ + -H "Authorization: Bearer $TOKEN" \ + -X POST -d '{ + "linode_id": 123, + "ips": [ + "12.34.56.78" + ] + }' \ + https://api.linode.com/v4/networking/ipv4/share + - lang: CLI + source: > + linode-cli networking ip-share \ + --linode_id 123 \ + --ips 12.34.56.78 + /networking/ipv6/pools: + x-linode-cli-command: networking + get: + parameters: + - $ref: '#/components/parameters/pageOffset' + - $ref: '#/components/parameters/pageSize' tags: - - Object Storage + - Networking + summary: IPv6 Pools List + description: > + Displays the IPv6 pools on your Account. A pool of IPv6 addresses are routed to all of your + Linodes in a single [Region](/docs/api/regions/#regions-list). Any Linode on your Account may bring up any address in this + pool at any time, with no external configuration required. + operationId: getIPv6Pools + x-linode-cli-action: v6-pools security: - personalAccessToken: [] - oauth: - - object_storage:read_write - requestBody: - description: The changes to make to this Object's access controls. - content: - application/json: - schema: - required: - - acl - - name - properties: - acl: - type: string - enum: - - private - - public-read - - authenticated-read - - public-read-write - - custom - description: > - The Access Control Level of the bucket, as a canned ACL string. - For more fine-grained control of ACLs, use the S3 API directly. - example: public-read - name: - type: string - description: > - The `name` of the object for which to update its Access Control List (ACL). - Use the [Object Storage Bucket Contents List](/docs/api/object-storage/#object-storage-bucket-contents-list) - endpoint to access all object names in a bucket. + - ips:read_only responses: '200': - description: The Object's canned ACL and policy. + description: The IPv6 pools on your Account. content: application/json: schema: type: object properties: - acl: - type: string - enum: - - private - - public-read - - authenticated-read - - public-read-write - - custom - description: > - The Access Control Level of the bucket, as a canned ACL string. - For more fine-grained control of ACLs, use the S3 API directly. - example: public-read - acl_xml: - type: string - description: > - The full XML of the object's ACL policy. - example: "..." + data: + type: array + items: + $ref: '#/components/schemas/IPv6Pool' + page: + $ref: '#/components/schemas/PaginationEnvelope/properties/page' + pages: + $ref: '#/components/schemas/PaginationEnvelope/properties/pages' + results: + $ref: '#/components/schemas/PaginationEnvelope/properties/results' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > - curl -H "Content-Type: application/json" \ - -H "Authorization: Bearer $TOKEN" \ - -X PUT -d '{ - "acl": "public-read", - "name": "example.txt" - }' \ - https://api.linode.com/v4/object-storage/buckets/us-east-1/example-bucket/object-acl - /object-storage/buckets/{clusterId}/{bucket}/object-list: - parameters: - - name: clusterId - in: path - description: The ID of the cluster this bucket exists in. - required: true - schema: - type: string - - name: bucket - in: path - description: The bucket name. - required: true - schema: - type: string + curl -H "Authorization: Bearer $TOKEN" \ + https://api.linode.com/v4/networking/ipv6/pools + - lang: CLI + source: > + linode-cli networking v6-pools + /networking/ipv6/ranges: + x-linode-cli-command: networking get: - operationId: getObjectStorageBucketContent - x-linode-cli-skip: true - servers: - - url: https://api.linode.com/v4 - summary: Object Storage Bucket Contents List - description: | - Returns the contents of a bucket. The contents are paginated using a `marker`, - which is the name of the last object on the previous page. Objects may - be filtered by `prefix` and `delimiter` as well; see Query Parameters for more - information. + parameters: + - $ref: '#/components/parameters/pageOffset' + - $ref: '#/components/parameters/pageSize' + tags: + - Networking + summary: IPv6 Ranges List + description: > + Displays the IPv6 ranges on your Account. - This endpoint is available for convenience. It is recommended that instead you - use the more [fully-featured S3 API](https://docs.ceph.com/en/latest/radosgw/s3/objectops/#get-object) directly. - tags: - - Object Storage + * An IPv6 range is a `/64` or `/54` block of IPv6 addresses routed to a single Linode in a given [Region](/docs/api/regions/#regions-list). + + * Your Linode is responsible for routing individual addresses in the range, or handling traffic for all the addresses in the range. + + * Access the IPv6 Range Create ([POST /networking/ipv6/ranges](/docs/api/networking/#ipv6-range-create)) endpoint to add a `/64` or `/56` block of IPv6 addresses to your account. + operationId: getIPv6Ranges + x-linode-cli-action: v6-ranges security: - personalAccessToken: [] - oauth: - - object_storage:read_only - parameters: - - name: marker - in: query - required: false - description: > - The "marker" for this request, which can be used to paginate through large buckets. - Its value should be the value of the `next_marker` property returned with the last page. - Listing bucket contents *does not* support arbitrary page access. See the `next_marker` - property in the responses section for more details. - schema: - type: string - - name: delimiter - in: query - required: false - description: > - The delimiter for object names; if given, object names will be returned - up to the first occurrence of this character. This is most commonly used - with the `/` character to allow bucket transversal in a manner similar to - a filesystem, however any delimiter may be used. Use in conjunction with - `prefix` to see object names past the first occurrence of the delimiter. - schema: - type: string - - name: prefix - in: query - required: false - description: > - Filters objects returned to only those whose name start with the given - prefix. Commonly used in conjunction with `delimiter` to allow transversal - of bucket contents in a manner similar to a filesystem. - schema: - type: string - - $ref: '#/components/parameters/pageSize' + - ips:read_only responses: '200': - description: One page of the requested bucket's contents. + description: The IPv6 ranges on your Account. content: application/json: schema: + type: object properties: data: type: array - description: This page of objects in the bucket. items: - $ref: '#/components/schemas/ObjectStorageObject' + $ref: '#/components/schemas/IPv6Range' + page: + $ref: '#/components/schemas/PaginationEnvelope/properties/page' + pages: + $ref: '#/components/schemas/PaginationEnvelope/properties/pages' + results: + $ref: '#/components/schemas/PaginationEnvelope/properties/results' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > curl -H "Authorization: Bearer $TOKEN" \ - https://api.linode.com/v4/object-storage/buckets/us-east-1/example-bucket/object-list - /object-storage/buckets/{clusterId}/{bucket}/object-url: - parameters: - - name: clusterId - in: path - description: The ID of the cluster this bucket exists in. - required: true - schema: - type: string - - name: bucket - in: path - description: The bucket name. - required: true - schema: - type: string + https://api.linode.com/v4/networking/ipv6/ranges + - lang: CLI + source: > + linode-cli networking v6-ranges post: - operationId: createObjectStorageObjectURL - x-linode-cli-skip: true - servers: - - url: https://api.linode.com/v4 - summary: Object Storage Object URL Create + tags: + - Networking + summary: IPv6 Range Create description: | - Creates a pre-signed URL to access a single Object in a bucket. This - can be used to share objects, and also to create/delete objects by using - the appropriate HTTP method in your request body's `method` parameter. - + Creates an IPv6 Range and assigns it based on the provided Linode or route target IPv6 SLAAC address. See the `ipv6` property when accessing the Linode View ([GET /linode/instances/{linodeId}](/docs/api/linode-instances/#linode-view)) endpoint to view a Linode's IPv6 SLAAC address. + * Either `linode_id` or `route_target` is required in a request. + * `linode_id` and `route_target` are mutually exclusive. Submitting values for both properties in a request results in an error. + * Upon a successful request, an IPv6 range is created in the [Region](/docs/api/regions/#regions-list) that corresponds to the provided `linode_id` or `route_target`. + * Your Linode is responsible for routing individual addresses in the range, or handling traffic for all the addresses in the range. + * Access the Linodes Assign IPs ([POST /networking/ips/assign](/docs/api/networking/#linodes-assign-ips)) endpoint to re-assign IPv6 Ranges to your Linodes. - This endpoint is available for convenience. It is recommended that instead you - use the more [fully-featured S3 API](https://docs.ceph.com/en/latest/radosgw/s3/) - directly. - tags: - - Object Storage + **Note**: The following restrictions apply: + * A Linode can only have one IPv6 range targeting its SLAAC address. + * An account can only have one IPv6 range in each [Region](/docs/api/regions/#regions-list). + * [Open a Support Ticket](/docs/api/support/#support-ticket-open) to request expansion of these restrictions. + operationId: postIPv6Range + x-linode-cli-action: v6-range-create security: - personalAccessToken: [] - oauth: - - object_storage:read_write + - ips:read_write + - linodes:read_write requestBody: - description: Information about the request to sign. + description: > + Information about the IPv6 range to create. + required: true content: application/json: schema: required: - - name - - method + - prefix_length properties: - method: - type: string - description: The HTTP method allowed to be used with the pre-signed URL. - example: GET - default: GET - name: - type: string - description: > - The name of the object that will be accessed with the pre-signed URL. This object need not - exist, and no error will be returned if it doesn't. This behavior is - useful for generating pre-signed URLs to upload new objects to by - setting the `method` to "PUT". - example: example - content_type: - type: string - description: > - The expected `Content-type` header of the request this signed - URL will be valid for. If provided, the `Content-type` header - _must_ be sent with the request when this URL is used, and - _must_ be the same as it was when the signed URL was created. - Required for all methods *except* "GET" or "DELETE". - example: null - expires_in: + linode_id: type: integer - minimum: 360 - maximum: 68400 - default: 3600 + description: | + The ID of the Linode to assign this range to. The SLAAC address for the provided Linode is used as the range's `route_target`. + + * **Required** if `route_target` is omitted from the request. + + * Mutually exclusive with `route_target`. Submitting values for both properties in a request results in an error. + example: 123 + prefix_length: + type: integer + enum: + - 56 + - 64 description: > - How long this signed URL will be valid for, in seconds. If - omitted, the URL will be valid for 3600 seconds (1 hour). - example: null + The prefix length of the IPv6 range. + route_target: + type: string + format: ipv6 + description: | + The IPv6 SLAAC address to assign this range to. + + * **Required** if `linode_id` is omitted from the request. + + * Mutually exclusive with `linode_id`. Submitting values for both properties in a request results in an error. + + * **Note**: Omit the `/128` prefix length of the SLAAC address when using this property. + example: 2001:0db8::1 responses: '200': - description: The URL with which to access your object. + description: IPv6 range created successfully. content: application/json: schema: + type: object properties: - url: + range: type: string - description: The signed URL to perform the request at. - example: https://us-east-1.linodeobjects.com/example-bucket/example?Signature=qr98TEucCntPgEG%2BsZQGDsJg93c%3D&Expires=1567609905&AWSAccessKeyId=G4YAF81XWY61DQM94SE0 + format: ipv6/prefix_length + description: > + The IPv6 network range, including subnet and prefix length. + example: 2001:0db8::/64 + route_target: + type: string + format: ipv6 + description: > + The route target IPV6 SLAAC address for this range. Does not include the prefix length. + example: 2001:0db8::1 default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > - curl -H "Content-Type: application/json" \ - -H "Authorization: Bearer $TOKEN" \ - -X POST -d '{ - "method": "GET", - "name": "example" + curl -H "Authorization: Bearer $TOKEN" \ + -X POST -d '{ + "linode_id": 123, + "prefix_length": 64 }' \ - https://api.linode.com/v4/object-storage/buckets/us-east-1/example-bucket/object-url - /object-storage/clusters: - x-linode-cli-command: object-storage + https://api.linode.com/v4/networking/ipv6/ranges + - lang: CLI + source: > + linode-cli networking v6-range-create \ + --linode_id 123 \ + --prefix_length 64 + /networking/ipv6/ranges/{range}: + parameters: + - name: range + in: path + description: | + The IPv6 range to access. Corresponds to the `range` property of objects returned from the IPv6 Ranges List ([GET /networking/ipv6/ranges](/docs/api/networking/#ipv6-ranges-list)) command. + + **Note**: Omit the prefix length of the IPv6 range. + required: true + schema: + type: string + format: ipv6 + x-linode-cli-command: networking get: - operationId: getObjectStorageClusters - x-linode-cli-action: clusters-list - servers: - - url: https://api.linode.com/v4 - summary: Clusters List - description: | - Returns a paginated list of Object Storage Clusters that are available for - use. Users can connect to the clusters with third party clients to create buckets - and upload objects. tags: - - Object Storage + - Networking + summary: IPv6 Range View + description: | + View IPv6 range information. + operationId: getIPv6Range + x-linode-cli-action: v6-range-view + security: + - personalAccessToken: [] + - oauth: + - ips:read responses: '200': - description: A paginated list of available clusters. + description: Returns IPv6 range information. content: application/json: schema: - type: object - properties: - data: - type: array - items: - $ref: '#/components/schemas/ObjectStorageCluster' - page: - $ref: '#/components/schemas/PaginationEnvelope/properties/page' - pages: - $ref: '#/components/schemas/PaginationEnvelope/properties/pages' - results: - $ref: '#/components/schemas/PaginationEnvelope/properties/results' + $ref: '#/components/schemas/IPv6RangeBGP' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > - curl -H "Authorization: Bearer $TOKEN" \ - https://api.linode.com/v4/object-storage/clusters + curl -H "Authorization: Bearer $TOKEN" https://api.linode.com/v4/networking/ipv6/ranges/2001:0db8:: - lang: CLI source: > - linode-cli object-storage clusters-list - /object-storage/clusters/{clusterId}: - x-linode-cli-command: object-storage - parameters: - - name: clusterId - in: path - description: The ID of the Cluster. - required: true - schema: - type: string - get: - operationId: getObjectStorageCluster - x-linode-cli-action: clusters-view - servers: - - url: https://api.linode.com/v4 - summary: Cluster View - description: | - Returns a single Object Storage Cluster. + linode-cli networking v6-range-view 2001:0db8:: + delete: tags: - - Object Storage + - Networking + summary: IPv6 Range Delete + description: | + Removes this IPv6 range from your account and disconnects the range from any assigned Linodes. + + **Note:** Shared IPv6 ranges cannot be deleted at this time. Please contact Customer Support for assistance. + operationId: deleteIPv6Range + x-linode-cli-action: v6-range-delete + security: + - personalAccessToken: [] + - oauth: + - ips:read_write responses: '200': - description: The requested Cluster + description: IPv6 Range deleted. content: application/json: schema: - $ref: '#/components/schemas/ObjectStorageCluster' + type: object default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > curl -H "Authorization: Bearer $TOKEN" \ - https://api.linode.com/v4/object-storage/clusters/us-east-1 + -X DELETE \ + https://api.linode.com/v4/networking/ipv6/ranges/2001:0db8:: - lang: CLI source: > - linode-cli object-storage clusters-view us-east-1 - /object-storage/keys: - x-linode-cli-command: object-storage + linode-cli networking v6-range-delete 2001:0db8:: + /networking/firewalls: + x-linode-cli-command: firewalls get: - operationId: getObjectStorageKeys - x-linode-cli-action: keys-list + x-linode-grant: read_only + parameters: + - $ref: '#/components/parameters/pageOffset' + - $ref: '#/components/parameters/pageSize' servers: - url: https://api.linode.com/v4 tags: - - Object Storage - summary: Object Storage Keys List + - Networking + summary: Firewalls List description: | - Returns a paginated list of Object Storage Keys for authenticating to - the Object Storage S3 API. + Returns a paginated list of accessible Firewalls. + operationId: getFirewalls + x-linode-cli-action: list security: - personalAccessToken: [] - oauth: - - object_storage:read_only + - firewall:read_only responses: '200': - description: A paginated list of Object Storage Keys + description: Returns an array of Firewalls. content: application/json: schema: @@ -13389,7 +13502,7 @@ paths: data: type: array items: - $ref: '#/components/schemas/ObjectStorageKey' + $ref: '#/components/schemas/Firewall' page: $ref: '#/components/schemas/PaginationEnvelope/properties/page' pages: @@ -13402,181 +13515,287 @@ paths: - lang: Shell source: > curl -H "Authorization: Bearer $TOKEN" \ - https://api.linode.com/v4/object-storage/keys + https://api.linode.com/v4/networking/firewalls - lang: CLI source: > - linode-cli object-storage keys-list + linode-cli firewalls list post: - operationId: createObjectStorageKeys - x-linode-cli-action: keys-create + x-linode-grant: read_write servers: - url: https://api.linode.com/v4 - summary: Object Storage Key Create + tags: + - Networking + summary: Firewall Create description: | - Provisions a new Object Storage Key on your account. + Creates a Firewall to filter network traffic. - * To create a Limited Access Key with specific permissions, send a `bucket_access` - array. + * Use the `rules` property to create inbound and outbound access rules. - * To create a Limited Access Key without access to any buckets, send an empty - `bucket_access` array. + * Use the `devices` property to assign the Firewall to a service and apply its Rules to the device. Requires `read_write` [User's Grants](/docs/api/account/#users-grants-view) to the device. + Currently, Firewalls can only be assigned to Linode instances. - * To create an Access Key with unlimited access to all clusters and all buckets, - omit the `bucket_access` array. - tags: - - Object Storage + * A Firewall can be assigned to multiple Linode instances at a time. + + * A Linode instance can have one active, assigned Firewall at a time. + Additional disabled Firewalls can be assigned to a service, but they cannot be enabled if another active Firewall is already assigned to the same service. + + * A `firewall_create` Event is generated when this endpoint returns successfully. + operationId: createFirewalls + x-linode-cli-action: create security: - personalAccessToken: [] - oauth: - - object_storage:read_write + - firewall:read_write requestBody: - description: > - The label of the key to create. This is used to identify the created key. + description: Creates a Firewall object that can be applied to a Linode service to filter the service's network traffic. content: application/json: schema: - $ref: '#/components/schemas/ObjectStorageKey' + allOf: + - $ref: '#/components/schemas/Firewall' + required: + - label + - rules + properties: + devices: + type: object + description: | + Devices to create for this Firewall. + When a Device is created, the Firewall is assigned to its associated service. + Currently, Devices can only be created for Linode instances. + properties: + linodes: + description: > + An array of Linode IDs. A Firewall Device is created for each ID. + type: array + items: + type: integer + example: + - 123 + - 456 + rules: + required: + - inbound_policy + - outbound_policy + properties: + inbound: + required: + - action + - addresses + - protocol + outbound: + required: + - action + - addresses + - protocol responses: '200': - description: The new keypair. **This is the only time** the secret key is returned. + description: Returns information about the created Firewall. content: application/json: schema: - $ref: '#/components/schemas/ObjectStorageKey' + $ref: '#/components/schemas/Firewall' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > curl -H "Content-Type: application/json" \ - -H "Authorization: Bearer $TOKEN" \ - -X POST -d '{ - "label": "my-object-storage-key", - "bucket_access": [ - { - "cluster": "ap-south-1", - "bucket_name": "bucket-example-1", - "permissions": "read_write" - }, - { - "cluster": "us-east-1", - "bucket_name": "bucket-example-2", - "permissions": "read_only" - } - ] - }' \ - https://api.linode.com/v4/object-storage/keys + -H "Authorization: Bearer $TOKEN" \ + -X POST -d '{ + "label": "firewall123", + "rules": { + "inbound_policy": "DROP", + "inbound": [ + { + "protocol": "TCP", + "ports": "22, 80, 443", + "addresses": { + "ipv4": [ + "192.0.2.0/24" + ], + "ipv6": [ + "2001:DB8::/32" + ] + }, + "action": "ACCEPT", + "label": "inbound-rule123", + "description": "An example inbound rule description." + } + ], + "outbound_policy": "DROP", + "outbound": [ + { + "protocol": "TCP", + "ports": "49152-65535", + "addresses": { + "ipv4": [ + "192.0.2.0/24" + ], + "ipv6": [ + "2001:DB8::/32" + ] + }, + "action": "ACCEPT", + "label": "outbound-rule123", + "description": "An example outbound rule description." + } + ] + }, + "devices": { + "linodes": [ + 123 + ] + }, + "tags": [ + "example tag", + "another example" + ] + }' \ + https://api.linode.com/v4/networking/firewalls - lang: CLI source: > - linode-cli object-storage keys-create \ - --label "my-object-storage-key" \ - --bucket_access '[{"cluster": "ap-south-1", "bucket_name": "bucket-example-1", "permissions": "read_write" }]' - /object-storage/keys/{keyId}: - x-linode-cli-command: object-storage + linode-cli firewalls create \ + --label example-firewall \ + --rules.outbound_policy ACCEPT \ + --rules.inbound_policy DROP \ + --rules.inbound '[{"protocol": "TCP", "ports": "22, 80, 8080, 443", "addresses": {"ipv4": ["192.0.2.1", "192.0.2.0/24"], "ipv6": ["2001:DB8::/32"]}, "action": "ACCEPT"}]' \ + --rules.outbound '[{"protocol": "TCP", "ports": "49152-65535", "addresses": {"ipv4": ["192.0.2.0/24"],"ipv6": ["2001:DB8::/32"]}, "action": "DROP", "label": "outbound-rule123", "description": "An example outbound rule description."}]' + /networking/firewalls/{firewallId}: parameters: - - name: keyId + - name: firewallId in: path - description: The key to look up. + description: > + ID of the Firewall to access. required: true schema: type: integer + x-linode-cli-command: firewalls get: - operationId: getObjectStorageKey - x-linode-cli-action: keys-view + x-linode-grant: read_only servers: - url: https://api.linode.com/v4 - summary: Object Storage Key View - description: | - Returns a single Object Storage Key provisioned for your account. + tags: + - Networking + summary: Firewall View + operationId: getFirewall + x-linode-cli-action: view security: - personalAccessToken: [] - oauth: - - object_storage:read_only - tags: - - Object Storage + - firewall:read_only + description: | + Get a specific Firewall resource by its ID. The Firewall's Devices will not be + returned in the response. Instead, use the + [List Firewall Devices](/docs/api/networking/#firewall-devices-list) + endpoint to review them. responses: '200': - description: The keypair + description: Returns information about this Firewall. content: application/json: schema: - $ref: '#/components/schemas/ObjectStorageKey' + $ref: '#/components/schemas/Firewall' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > - curl -H "Authorization: Bearer $TOKEN" \ - https://api.linode.com/v4/object-storage/keys/12345 + curl -H "Content-Type: application/json" \ + -H "Authorization: Bearer $TOKEN" \ + https://api.linode.com/v4/networking/firewalls/123 - lang: CLI source: > - linode-cli object-storage keys-view \ - --keyId 12345 + linode-cli firewalls view 123 put: - operationId: updateObjectStorageKey - x-linode-cli-action: keys-update + x-linode-grant: read_write servers: - url: https://api.linode.com/v4 - summary: Object Storage Key Update + tags: + - Networking + summary: Firewall Update description: | - Updates an Object Storage Key on your account. + Updates information for a Firewall. Some parts of a Firewall's configuration cannot + be manipulated by this endpoint: + + - A Firewall's Devices cannot be set with this endpoint. Instead, use the + [Create Firewall Device](/docs/api/networking/#firewall-device-create) + and [Delete Firewall Device](/docs/api/networking/#firewall-device-delete) + endpoints to assign and remove this Firewall from Linode services. + + - A Firewall's Rules cannot be changed with this endpoint. Instead, use the + [Update Firewall Rules](/docs/api/networking/#firewall-rules-update) + endpoint to update your Rules. + + - A Firewall's status can be set to `enabled` or `disabled` by this endpoint, but it cannot be + set to `deleted`. Instead, use the + [Delete Firewall](/docs/api/networking/#firewall-delete) + endpoint to delete a Firewall. + + If a Firewall's status is changed with this endpoint, a corresponding `firewall_enable` or + `firewall_disable` Event will be generated. + operationId: updateFirewall + x-linode-cli-action: update security: - personalAccessToken: [] - oauth: - - object_storage:read_write - tags: - - Object Storage + - firewall:read_write requestBody: - description: The fields to update. + description: The Firewall information to update. content: application/json: schema: type: object properties: + tags: + $ref: '#/components/schemas/Firewall/properties/tags' label: - type: string - description: The label for this keypair, for display purposes only. - example: my-key + $ref: '#/components/schemas/Firewall/properties/label' + status: + $ref: '#/components/schemas/Firewall/properties/status' responses: '200': - description: Update Successful + description: Firewall updated successfully. content: application/json: schema: - $ref: '#/components/schemas/ObjectStorageKey' + $ref: '#/components/schemas/Firewall' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > curl -H "Content-Type: application/json" \ - -H "Authorization: Bearer $TOKEN" \ - -X PUT -d '{ - "label": "my-object-storage-key" - }' \ - https://api.linode.com/v4/object-storage/keys/12345 + -H "Authorization: Bearer $TOKEN" \ + -X PUT -d '{ + "status": "disabled" + }' \ + https://api.linode.com/v4/networking/firewalls/123 - lang: CLI source: > - linode-cli object-storage keys-update \ - --keyId 12345 - --label "my-object-storage-key" + linode-cli firewalls update 123 \ + --status disabled delete: - operationId: deleteObjectStorageKey - x-linode-cli-action: keys-delete + x-linode-grant: read_write servers: - url: https://api.linode.com/v4 - summary: Object Storage Key Revoke - description: | - Revokes an Object Storage Key. This keypair will no longer be usable by third-party clients. + tags: + - Networking + summary: Firewall Delete + operationId: deleteFirewall + x-linode-cli-action: delete security: - personalAccessToken: [] - oauth: - - object_storage:read_write - tags: - - Object Storage + - firewall:read_write + description: | + Delete a Firewall resource by its ID. This will remove all of the Firewall's Rules + from any Linode services that the Firewall was assigned to. + + A `firewall_delete` Event is generated when this endpoint returns successfully. responses: '200': - description: Deletion successful + description: Delete Successful. content: application/json: schema: @@ -13586,130 +13805,113 @@ paths: x-code-samples: - lang: Shell source: > - curl -H "Authorization: Bearer $TOKEN" \ - -X DELETE \ - https://api.linode.com/v4/object-storage/keys/12345 - - lang: CLI - source: > - linode-cli object-storage keys-delete 12345 - /object-storage/cancel: - x-linode-cli-command: object-storage - post: - operationId: cancelObjectStorage - x-linode-cli-action: cancel - servers: - - url: https://api.linode.com/v4 - summary: Object Storage Cancel - description: | - Cancel Object Storage on an Account. - - **Warning**: Removes all buckets and their contents from your Account. This data is irretrievable once removed. - security: - - personalAccessToken: [] - - oauth: - - object_storage:read_write - tags: - - Object Storage - responses: - '200': - description: Object Storage cancellation successful. - content: - application/json: - schema: - type: object - default: - $ref: '#/components/responses/ErrorResponse' - x-code-samples: - - lang: Shell - source: > - curl -H "Authorization: Bearer $TOKEN" \ - -X POST \ - https://api.linode.com/v4/object-storage/cancel - - lang: CLI - source: > - linode-cli object-storage cancel - /object-storage/buckets/{clusterId}/{bucket}/ssl: - x-linode-cli-command: object-storage + curl -H "Content-Type: application/json" \ + -H "Authorization: Bearer $TOKEN" \ + -X DELETE \ + https://api.linode.com/v4/networking/firewalls/123 + - lang: CLI + source: > + linode-cli firewalls delete 123 + /networking/firewalls/{firewallId}/devices: parameters: - - name: clusterId - in: path - description: The ID of the cluster this bucket exists in. - required: true - schema: - type: string - - name: bucket - in: path - description: The bucket name. - required: true - schema: - type: string + - name: firewallId + in: path + description: > + ID of the Firewall to access. + required: true + schema: + type: integer + x-linode-cli-command: firewalls get: - operationId: getObjectStorageSSL - x-linode-cli-action: ssl-view + x-linode-grant: read_only servers: - url: https://api.linode.com/v4 - summary: Object Storage TLS/SSL Cert View - description: | - Returns a boolean value indicating if this bucket has a corresponding TLS/SSL certificate that was - uploaded by an Account user. tags: - - Object Storage + - Networking + parameters: + - $ref: '#/components/parameters/pageOffset' + - $ref: '#/components/parameters/pageSize' + summary: Firewall Devices List + description: | + Returns a paginated list of a Firewall's Devices. A Firewall Device assigns a + Firewall to a Linode service (referred to as the Device's `entity`). Currently, + only Devices with an entity of type `linode` are accepted. + operationId: getFirewallDevices + x-linode-cli-action: devices-list security: - personalAccessToken: [] - oauth: - - object_storage:read_only + - firewall:read_only responses: '200': - description: > - Returns a boolean value indicating if this bucket has a corresponding TLS/SSL certificate that was - uploaded by an Account user. + description: A paginated list of Firewall Devices content: application/json: schema: - $ref: '#/components/schemas/ObjectStorageSSLResponse' + type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/FirewallDevices' + page: + $ref: '#/components/schemas/PaginationEnvelope/properties/page' + pages: + $ref: '#/components/schemas/PaginationEnvelope/properties/pages' + results: + $ref: '#/components/schemas/PaginationEnvelope/properties/results' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > curl -H "Authorization: Bearer $TOKEN" \ - https://api.linode.com/v4/object-storage/buckets/us-east-1/example-bucket/ssl + https://api.linode.com/v4/networking/firewalls/123/devices - lang: CLI source: > - linode-cli object-storage ssl-view \ - us-east-1 example-bucket + linode-cli firewalls devices-list 123 post: - operationId: createObjectStorageSSL - x-linode-cli-action: ssl-upload + x-linode-grant: read_write servers: - url: https://api.linode.com/v4 - summary: Object Storage TLS/SSL Cert Upload + tags: + - Networking + summary: Firewall Device Create description: | - Upload a TLS/SSL certificate and private key to be served when you visit your Object Storage bucket via HTTPS. - Your TLS/SSL certificate and private key are stored encrypted at rest. + Creates a Firewall Device, which assigns a Firewall to a service (referred to + as the Device's `entity`) and applies the Firewall's Rules to the device. + * Currently, only Devices with an entity of type `linode` are accepted. - To replace an expired certificate, [delete your current certificate](/docs/api/object-storage/#object-storage-tlsssl-cert-delete) - and upload a new one. - tags: - - Object Storage + * A Firewall can be assigned to multiple Linode instances at a time. + + * A Linode instance can have one active, assigned Firewall at a time. + Additional disabled Firewalls can be assigned to a service, but they cannot be enabled if another active Firewall is already assigned to the same service. + + * A `firewall_device_add` Event is generated when the Firewall Device is added successfully. + operationId: createFirewallDevice + x-linode-cli-action: device-create security: - personalAccessToken: [] - oauth: - - object_storage:read_write + - firewall:read_write requestBody: - description: Upload this TLS/SSL certificate with its corresponding secret key. content: application/json: schema: - $ref: '#/components/schemas/ObjectStorageSSL' + type: object + required: + - id + - type + allOf: + - $ref: '#/components/schemas/FirewallDevices/properties/entity' responses: '200': - description: Returns whether this bucket has a corresponding TLS/SSL certificate that was uploaded by a user. + description: Returns information about the created Firewall Device. content: application/json: schema: - $ref: '#/components/schemas/ObjectStorageSSLResponse' + $ref: '#/components/schemas/FirewallDevices' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: @@ -13717,153 +13919,191 @@ paths: source: > curl -H "Content-Type: application/json" \ -H "Authorization: Bearer $TOKEN" \ - -X POST -d ‘{ - "certificate": "-----BEGIN CERTIFICATE-----\nMIIDbDCCAlQCCQCl\n-----END CERTIFICATE-----", - "private_key": "-----BEGIN PRIVATE KEY-----\nMIIEvgIBADIAQCQI\n-----END PRIVATE KEY-----" - }’ \ - https://api.linode.com/v4/object-storage/buckets/us-east-1/example-bucket/ssl + -X POST -d '{ + "type": "linode", + "id": 123 + }' \ + https://api.linode.com/v4/networking/firewalls/123/devices - lang: CLI source: > - linode-cli object-storage ssl-upload \ - us-east-1 example-bucket \ - --certificate "-----BEGIN CERTIFICATE-----\nMIIDbDCCAlQCCQCl\n-----END CERTIFICATE-----" \ - --private_key "-----BEGIN PRIVATE KEY-----\nMIIEvgIBADIAQCQI\n-----END PRIVATE KEY-----" - delete: - operationId: deleteObjectStorageSSL - x-linode-cli-action: ssl-delete + linode-cli firewalls device-create 123 \ + --id 456 \ + --type "linode" + /networking/firewalls/{firewallId}/devices/{deviceId}: + parameters: + - name: firewallId + in: path + description: > + ID of the Firewall to access. + required: true + schema: + type: integer + - name: deviceId + in: path + description: > + ID of the Firewall Device to access. + required: true + schema: + type: integer + x-linode-cli-command: firewalls + get: + x-linode-grant: read_only servers: - url: https://api.linode.com/v4 - summary: Object Storage TLS/SSL Cert Delete - description: | - Deletes this Object Storage bucket's user uploaded TLS/SSL certificate and private key. tags: - - Object Storage + - Networking + summary: Firewall Device View + description: | + Returns information for a Firewall Device, which assigns a Firewall + to a Linode service (referred to as the Device's `entity`). Currently, + only Devices with an entity of type `linode` are accepted. + operationId: getFirewallDevice + x-linode-cli-action: device-view security: - personalAccessToken: [] - oauth: - - object_storage:read_write + - firewall:read_only responses: '200': - description: Deletes this Object Storage bucket's user uploaded TLS/SSL certificate and private key. + description: The requested Firewall Device. content: application/json: schema: - type: object + $ref: '#/components/schemas/FirewallDevices' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > curl -H "Authorization: Bearer $TOKEN" \ - -X DELETE \ - https://api.linode.com/v4/object-storage/buckets/us-east-1/example-bucket/ssl + https://api.linode.com/v4/networking/firewalls/123/devices/456 - lang: CLI source: > - linode-cli object-storage ssl-delete \ - us-east-1 example-bucket - /object-storage/transfer: - get: - operationId: getObjectStorageTransfer - x-linode-cli-skip: true + linode-cli firewalls device-view \ + 123 456 + delete: + x-linode-grant: read_write servers: - url: https://api.linode.com/v4 - summary: Object Storage Transfer View - description: | - The amount of outbound data transfer used by your account's Object Storage buckets. - Object Storage adds 1 terabyte of outbound data transfer to your data transfer pool. - See the [Object Storage Pricing and Limitations](/docs/guides/pricing-and-limitations/) - guide for details on Object Storage transfer quotas. - tags: - - Object Storage + - Networking + summary: Firewall Device Delete + operationId: deleteFirewallDevice + x-linode-cli-action: device-delete security: - personalAccessToken: [] - oauth: - - object_storage:read_only + - firewall:read_write + description: | + Removes a Firewall Device, which removes a Firewall from the Linode service it was + assigned to by the Device. This will remove all of the Firewall's Rules from the Linode + service. If any other Firewalls have been assigned to the Linode service, then those Rules + will remain in effect. + + A `firewall_device_remove` Event is generated when the Firewall Device is removed successfully. responses: '200': - description: > - Returns the amount of outbound data transfer used by your account's Object Storage buckets. + description: Delete Successful. content: application/json: schema: - properties: - used: - type: integer - description: > - The amount of outbound data transfer used by your account's Object Storage buckets, - in bytes, for the current month’s billing cycle. - example: 12956600198 - readOnly: true + type: object default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > - curl -H "Authorization: Bearer $TOKEN" \ - https://api.linode.com/v4/object-storage/transfer/ - /profile: - x-linode-cli-command: profile - get: - tags: - - Profile - summary: Profile View - description: > - Returns information about the current User. This can be used to see - who is acting in applications where more than one token is managed. For - example, in third-party OAuth applications. - - - This endpoint is always accessible, no matter what OAuth scopes the acting token has. - operationId: getProfile - x-linode-cli-action: view + curl -H "Content-Type: application/json" \ + -H "Authorization: Bearer $TOKEN" \ + -X DELETE \ + https://api.linode.com/v4/networking/firewalls/123/devices/456 + - lang: CLI + source: > + linode-cli firewalls device-delete 123 456 + /networking/firewalls/{firewallId}/rules: + parameters: + - name: firewallId + in: path + description: > + ID of the Firewall to access. + required: true + schema: + type: integer + x-linode-cli-command: firewalls + get: + x-linode-grant: read_only + servers: + - url: https://api.linode.com/v4 + tags: + - Networking + summary: Firewall Rules List + description: | + Returns the inbound and outbound Rules for a Firewall. + operationId: getFirewallRules + x-linode-cli-action: rules-list security: - personalAccessToken: [] - - oauth: [] + - oauth: + - firewall:read_only responses: '200': - description: Profile response. + description: The requested Firewall Rules. content: application/json: schema: - $ref: '#/components/schemas/Profile' + $ref: '#/components/schemas/Firewall/properties/rules' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > curl -H "Authorization: Bearer $TOKEN" \ - https://api.linode.com/v4/profile + https://api.linode.com/v4/networking/firewalls/123/rules - lang: CLI source: > - linode-cli profile view + linode-cli firewalls rules-list 123 put: + x-linode-grant: read_write + servers: + - url: https://api.linode.com/v4 tags: - - Profile - summary: Profile Update - description: > - Update information in your Profile. This endpoint requires the - "account:read_write" OAuth Scope. - operationId: updateProfile - x-linode-cli-action: update + - Networking + summary: Firewall Rules Update + description: | + Updates the inbound and outbound Rules for a Firewall. + + **Note:** This command replaces all of a Firewall's `inbound` and/or `outbound` rulesets with the values specified in your request. + operationId: updateFirewallRules + x-linode-cli-action: rules-update security: - personalAccessToken: [] - oauth: - - account:read_write + - firewall:read_write requestBody: - description: The fields to update. - required: true + description: The Firewall Rules information to update. content: application/json: schema: - $ref: '#/components/schemas/Profile' + allOf: + - $ref: '#/components/schemas/Firewall/properties/rules' + properties: + inbound: + required: + - action + - addresses + - protocol + outbound: + required: + - action + - addresses + - protocol responses: '200': - description: Profile updated successfully. + description: Firewall Rules updated successfully. content: application/json: schema: - $ref: '#/components/schemas/Profile' + $ref: '#/components/schemas/Firewall/properties/rules' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: @@ -13872,46 +14112,93 @@ paths: curl -H "Content-Type: application/json" \ -H "Authorization: Bearer $TOKEN" \ -X PUT -d '{ - "email": "example-user@gmail.com", - "timezone": "US/Eastern", - "email_notifications": true, - "lish_auth_method": "keys_only", - "authorized_keys": null, - "two_factor_auth": true, - "restricted": false + "inbound_policy": "DROP", + "inbound": [ + { + "protocol": "TCP", + "ports": "22, 80, 443", + "addresses": { + "ipv4": [ + "192.0.2.0/24" + ], + "ipv6": [ + "2001:DB8::/32" + ] + }, + "action": "ACCEPT", + "label": "inbound-rule123", + "description": "An example inbound rule description." + } + ], + "outbound_policy": "DROP", + "outbound": [ + { + "protocol": "TCP", + "ports": "49152-65535", + "addresses": { + "ipv4": [ + "192.0.2.0/24" + ], + "ipv6": [ + "2001:DB8::/32" + ] + }, + "action": "ACCEPT", + "label": "outbound-rule123", + "description": "An example outbound rule description." + } + ] }' \ - https://api.linode.com/v4/profile + https://api.linode.com/v4/networking/firewalls/123/rules - lang: CLI source: > - linode-cli profile update \ - --email example-user@gmail.com \ - --timezone US/Eastern \ - --email_notifications true \ - --list_auth_method keys_only \ - --two_factor_auth true \ - --restricted false - /profile/apps: - x-linode-cli-command: profile + linode-cli firewalls rules-update 123 \ + --inbound '[{"action":"ACCEPT", "protocol": "TCP", "ports": "22, 80, 8080, 443", "addresses": {"ipv4": ["192.0.2.1/32", "192.0.2.0/24"], "ipv6": ["2001:DB8::/32"]}}]' \ + --outbound '[{"action":"DROP","protocol": "TCP", "ports": "49152-65535", "addresses": {"ipv4": ["192.0.2.1/32", "192.0.2.0/24"], "ipv6": ["2001:DB8::/32"]}}]' + /networking/vlans: + x-linode-cli-command: vlans get: + x-linode-grant: read_only + servers: + - url: https://api.linode.com/v4beta parameters: - - $ref: '#/components/parameters/pageOffset' - - $ref: '#/components/parameters/pageSize' + - $ref: '#/components/parameters/pageOffset' + - $ref: '#/components/parameters/pageSize' tags: - - Profile - summary: Authorized Apps List - description: > - This is a collection of OAuth apps that you've given access to your Account, and - includes the level of access granted. - operationId: getProfileApps - x-linode-cli-action: apps-list + - Networking + summary: VLANs List + description: | + Returns a list of all Virtual Local Area Networks (VLANs) on your Account. VLANs provide + a mechanism for secure communication between two or more Linodes that are assigned to the + same VLAN and are both within the same Layer 2 broadcast domain. + + VLANs are created and attached to Linodes by using the `interfaces` property for the following endpoints: + + - Linode Create ([POST /linode/instances](/docs/api/linode-instances/#linode-create)) + - Configuration Profile Create ([POST /linode/instances/{linodeId}/configs](/docs/api/linode-instances/#configuration-profile-create)) + - Configuration Profile Update ([PUT /linode/instances/{linodeId}/configs/{configId}](/docs/api/linode-instances/#configuration-profile-update)) + + There are several ways to detach a VLAN from a Linode: + + - [Update](/docs/api/linode-instances/#configuration-profile-update) the active Configuration Profile to remove the VLAN interface, then [reboot](/docs/api/linode-instances/#linode-reboot) the Linode. + - [Create](/docs/api/linode-instances/#configuration-profile-create) a new Configuration Profile without the VLAN interface, then [reboot](/docs/api/linode-instances/#linode-reboot) the Linode into the new Configuration Profile. + - [Delete](/docs/api/linode-instances/#linode-delete) 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). + operationId: getVLANs + x-linode-cli-action: list security: - personalAccessToken: [] - oauth: - - account:read_only + - linodes:read_only responses: '200': - description: | - A paginated list of apps you've authorized. + description: The VLANs available on this Account. content: application/json: schema: @@ -13920,7 +14207,7 @@ paths: data: type: array items: - $ref: '#/components/schemas/AuthorizedApp' + $ref: '#/components/schemas/Vlans' page: $ref: '#/components/schemas/PaginationEnvelope/properties/page' pages: @@ -13933,147 +14220,200 @@ paths: - lang: Shell source: > curl -H "Authorization: Bearer $TOKEN" \ - https://api.linode.com/v4/profile/apps + https://api.linode.com/v4beta/networking/vlans/ - lang: CLI source: > - linode-cli profile apps-list - /profile/apps/{appId}: - parameters: - - name: appId - in: path - required: true - description: The authorized app ID to manage. - schema: - type: integer - x-linode-cli-command: profile + linode-cli networking vlans-list + /nodebalancers: + x-linode-cli-command: nodebalancers get: + x-linode-grant: read_only tags: - - Profile - summary: Authorized App View + - NodeBalancers + parameters: + - $ref: '#/components/parameters/pageOffset' + - $ref: '#/components/parameters/pageSize' + summary: NodeBalancers List description: > - Returns information about a single app you've authorized to access your - Account. - operationId: getProfileApp - x-linode-cli-action: app-view + Returns a paginated list of NodeBalancers you have access to. + operationId: getNodeBalancers + x-linode-cli-action: list security: - personalAccessToken: [] - oauth: - - account:read_only + - nodebalancers:read_only responses: '200': - description: The app requested. + description: A paginated list of NodeBalancers. content: application/json: schema: - $ref: '#/components/schemas/AuthorizedApp' + type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/NodeBalancer' + page: + $ref: '#/components/schemas/PaginationEnvelope/properties/page' + pages: + $ref: '#/components/schemas/PaginationEnvelope/properties/pages' + results: + $ref: '#/components/schemas/PaginationEnvelope/properties/results' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > curl -H "Authorization: Bearer $TOKEN" \ - https://api.linode.com/v4/profile/apps/123 + https://api.linode.com/v4/nodebalancers - lang: CLI source: > - linode-cli profile app-view 1234 - delete: + linode-cli nodebalancers list + post: + x-linode-grant: add_nodebalancers tags: - - Profile - summary: App Access Revoke + - NodeBalancers + summary: NodeBalancer Create description: > - Expires this app token. This token may no longer be used to - access your Account. - operationId: deleteProfileApp - x-linode-cli-action: app-delete + Creates a NodeBalancer in the requested Region. This NodeBalancer + will not start serving requests until it is configured. + operationId: createNodeBalancer + x-linode-cli-action: create security: - personalAccessToken: [] - oauth: - - account:read_write + - nodebalancers:read_write + requestBody: + description: Information about the NodeBalancer to create. + required: true + x-linode-cli-allowed-defaults: + - region + content: + application/json: + schema: + required: + - region + properties: + region: + type: string + description: > + The ID of the Region to create this NodeBalancer in. + example: us-east + label: + $ref: '#/components/schemas/NodeBalancer/properties/label' + client_conn_throttle: + $ref: '#/components/schemas/NodeBalancer/properties/client_conn_throttle' + configs: + type: array + description: > + The ports to configure this NodeBalancer with on creation. + Each config must have a unique port and at least one Node. + items: + allOf: + - $ref: '#/components/schemas/NodeBalancerConfig' + - type: object + properties: + nodes: + type: array + description: > + The NodeBalancer Nodes that serve this port. When + creating a NodeBalancer this way, at least one Node + is required per configured port. + items: + $ref: '#/components/schemas/NodeBalancerNode' responses: '200': - description: App's authorization has been revoked. + description: NodeBalancer created successfully. content: application/json: schema: - type: object + $ref: '#/components/schemas/NodeBalancer' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > - curl -H "Authorization: Bearer $TOKEN" \ - -X DELETE \ - https://api.linode.com/v4/profile/apps/123 + curl -H "Content-Type: application/json" \ + -H "Authorization: Bearer $TOKEN" \ + -X POST -d '{ + "region": "us-east", + "label": "balancer12345", + "client_conn_throttle": 0 + }' \ + https://api.linode.com/v4/nodebalancers - lang: CLI source: > - linode-cli profile app-delete 123 - /profile/grants: - x-linode-cli-command: profile + linode-cli nodebalancers create \ + --region us-east \ + --label balancer12345 \ + --client_conn_throttle 0 + /nodebalancers/{nodeBalancerId}: + parameters: + - name: nodeBalancerId + in: path + description: The ID of the NodeBalancer to access. + required: true + schema: + type: integer + x-linode-cli-command: nodebalancers get: + x-linode-grant: read_only tags: - - Profile - summary: Grants List + - NodeBalancers + summary: NodeBalancer View description: > - This returns a GrantsResponse describing what the acting User has been - granted access to. For unrestricted users, this will return a 204 and - no body because unrestricted users have access to everything without - grants. This will not return information about entities you do not have - access to. This endpoint is useful when writing third-party OAuth - applications to see what options you should present to the acting User. - - - For example, if they do not have `global.add_linodes`, you might not - display a button to deploy a new Linode. - - - Any client may access this endpoint; no OAuth scopes are required. - operationId: getProfileGrants - x-linode-cli-action: grants - x-linode-cli-skip: true + Returns a single NodeBalancer you can access. + operationId: getNodeBalancer + x-linode-cli-action: view security: - personalAccessToken: [] - - oauth: [] + - oauth: + - nodebalancers:read_only responses: '200': - description: GrantsResponse + description: The requested NodeBalancer object. content: application/json: schema: - $ref: '#/components/schemas/GrantsResponse' - '204': - description: > - This is an unrestricted User, who has no grants. This User can access - everything on the Account. + $ref: '#/components/schemas/NodeBalancer' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > curl -H "Authorization: Bearer $TOKEN" \ - https://api.linode.com/v4/profile/grants - /profile/tfa-disable: - x-linode-cli-command: profile - post: + https://api.linode.com/v4/nodebalancers/12345 + - lang: CLI + source: > + linode-cli nodebalancers view 12345 + put: + x-linode-grant: read_write tags: - - Profile - summary: Two Factor Authentication Disable + - NodeBalancers + summary: NodeBalancer Update description: > - Disables Two Factor Authentication for your User. Once successful, - login attempts from untrusted computers will only require a password - before being successful. This is less secure, and is discouraged. - operationId: tfaDisable - x-linode-cli-action: tfa-disable + Updates information about a NodeBalancer you can access. + operationId: updateNodeBalancer + x-linode-cli-action: update security: - personalAccessToken: [] - oauth: - - account:read_write + - nodebalancers:read_write + requestBody: + description: The information to update. + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/NodeBalancer' responses: '200': - description: TFA disabled. + description: NodeBalancer updated successfully. content: application/json: schema: - type: object + $ref: '#/components/schemas/NodeBalancer' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: @@ -14081,138 +14421,91 @@ paths: source: > curl -H "Content-Type: application/json" \ -H "Authorization: Bearer $TOKEN" \ - -X POST \ - https://api.linode.com/v4/profile/tfa-disable + -X PUT -d '{ + "label": "balancer12345", + "client_conn_throttle": 0 + }' \ + https://api.linode.com/v4/nodebalancers/12345 - lang: CLI source: > - linode-cli profile tfa-disable - /profile/tfa-enable: - x-linode-cli-command: profile - post: + linode-cli nodebalancers update 12345 \ + --label balancer12345 \ + --client_conn_throttle 0 + delete: + x-linode-grant: read_write tags: - - Profile - summary: Two Factor Secret Create + - NodeBalancers + summary: NodeBalancer Delete description: > - Generates a Two Factor secret for your User. TFA will - not be enabled until you have successfully confirmed the code you - were given with [tfa-enable-confirm](/docs/api/profile/#two-factor-secret-create) (see below). - Once enabled, logins from untrusted computers will be required to provide - a TFA code before they are successful. - operationId: tfaEnable - x-linode-cli-action: tfa-enable + Deletes a NodeBalancer. + + + **This is a destructive action and cannot be undone.** + + + Deleting a NodeBalancer will also delete all associated Configs and Nodes, + although the backend servers represented by the Nodes will not be + changed or removed. Deleting a NodeBalancer will cause you to lose access + to the IP Addresses assigned to this NodeBalancer. + operationId: deleteNodeBalancer + x-linode-cli-action: delete security: - personalAccessToken: [] - oauth: - - account:read_write + - nodebalancers:read_write responses: '200': - description: Two Factor secret generated + description: NodeBalancer deleted successfully. content: application/json: schema: - properties: - secret: - type: string - description: > - Your Two Factor secret. This is used to generate - time-based two factor codes required for logging in. Doing - this will be required to confirm TFA an actually enable it. - example: 5FXX6KLACOC33GTC - expiry: - type: string - format: date-time - description: > - When this Two Factor secret expires. - example: 2018-03-01T00:01:01 + type: object default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > - curl -H "Content-Type: application/json" \ - -H "Authorization: Bearer $TOKEN" \ - -X POST \ - https://api.linode.com/v4/profile/tfa-enable + curl -H "Authorization: Bearer $TOKEN" \ + -X DELETE \ + https://api.linode.com/v4/nodebalancers/12345 - lang: CLI source: > - linode-cli profile tfa-enable - /profile/tfa-enable-confirm: - x-linode-cli-command: profile - post: + linode-cli nodebalancers delete 12345 + /nodebalancers/{nodeBalancerId}/configs: + parameters: + - name: nodeBalancerId + in: path + description: The ID of the NodeBalancer to access. + required: true + schema: + type: integer + x-linode-cli-command: nodebalancers + get: + x-linode-grant: read_only tags: - - Profile - summary: Two Factor Authentication Confirm/Enable + - NodeBalancers + parameters: + - $ref: '#/components/parameters/pageOffset' + - $ref: '#/components/parameters/pageSize' + summary: Configs List description: > - Confirms that you can successfully generate Two Factor codes and - enables TFA on your Account. Once this is complete, login attempts - from untrusted computers will be required to provide a Two Factor code - before they are successful. - operationId: tfaConfirm - x-linode-cli-action: tfa-confirm + Returns a paginated list of NodeBalancer Configs associated + with this NodeBalancer. NodeBalancer Configs represent + individual ports that this NodeBalancer will accept traffic + on, one Config per port. + + + For example, if you wanted to accept standard HTTP traffic, you would + need a Config listening on port 80. + operationId: getNodeBalancerConfigs + x-linode-cli-action: configs-list security: - personalAccessToken: [] - oauth: - - account:read_write - requestBody: - description: The Two Factor code you generated with your Two Factor secret. - required: true - content: - application/json: - schema: - properties: - tfa_code: - type: string - description: > - The Two Factor code you generated with your Two Factor secret. - These codes are time-based, so be sure it is current. - example: "213456" - responses: - '200': - description: TFA enabled successfully - content: - application/json: - schema: - properties: - scratch: - type: string - description: > - A one-use code that can be used in place of your Two Factor - code, in case you are unable to generate one. Keep this in - a safe place to avoid being locked out of your Account. - example: sample two factor scratch - default: - $ref: '#/components/responses/ErrorResponse' - x-code-samples: - - lang: Shell - source: > - curl -H "Content-Type: application/json" \ - -H "Authorization: Bearer $TOKEN" \ - -X POST -d '{ - "tfa_code": "213456" - }' \ - https://api.linode.com/v4/profile/tfa-enable-confirm - - lang: CLI - source: > - linode-cli profile tfa-confirm \ - --tfa_code 213456 - /profile/tokens: - x-linode-cli-command: profile - get: - tags: - - Profile - summary: Personal Access Tokens List - description: > - Returns a paginated list of Personal Access Tokens currently active for - your User. - operationId: getPersonalAccessTokens - x-linode-cli-action: tokens-list - security: - - personalAccessToken: [] - - oauth: - - account:read_only + - nodebalancers:read_only responses: '200': - description: A paginated list of active tokens. + description: A paginted list of NodeBalancer Configs content: application/json: schema: @@ -14221,7 +14514,7 @@ paths: data: type: array items: - $ref: '#/components/schemas/PersonalAccessToken' + $ref: '#/components/schemas/NodeBalancerConfig' page: $ref: '#/components/schemas/PaginationEnvelope/properties/page' pages: @@ -14234,58 +14527,38 @@ paths: - lang: Shell source: > curl -H "Authorization: Bearer $TOKEN" \ - https://api.linode.com/v4/profile/tokens + https://api.linode.com/v4/nodebalancers/12345/configs - lang: CLI source: > - linode-cli profile tokens-list + linode-cli nodebalancers configs-list 12345 post: + x-linode-grant: read_write tags: - - Profile - summary: Personal Access Token Create + - NodeBalancers + summary: Config Create description: > - Creates a Personal Access Token for your User. The raw token will - be returned in the response, but will never be returned again afterward - so be sure to take note of it. You may create a token with _at most_ - the scopes of your current token. The created token will be able to - access your Account until the given expiry, or until it is revoked. - operationId: createPersonalAccessToken - x-linode-cli-action: token-create + Creates a NodeBalancer Config, which allows the NodeBalancer to + accept traffic on a new port. You will need to add NodeBalancer Nodes + to the new Config before it can actually serve requests. + operationId: createNodeBalancerConfig + x-linode-cli-action: config-create security: - personalAccessToken: [] - oauth: - - account:read_write + - nodebalancers:read_write requestBody: - description: Information about the requested token. - required: true + description: Information about the port to configure. content: application/json: schema: - properties: - scopes: - type: string - format: oauth-scope - description: > - The scopes to create the token with. These cannot be changed - after creation, and may not exceed the scopes of the acting token. - If omitted, the new token will have the same scopes as the acting - token. - example: '*' - expiry: - type: string - format: date-time - description: > - When this token should be valid until. If omitted, the new token - will be valid until it is manually revoked. - example: null - label: - $ref: '#/components/schemas/PersonalAccessToken/properties/label' + $ref: '#/components/schemas/NodeBalancerConfig' responses: '200': - description: Token created successfully. + description: Config created successfully. content: application/json: schema: - $ref: '#/components/schemas/PersonalAccessToken' + $ref: '#/components/schemas/NodeBalancerConfig' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: @@ -14294,81 +14567,111 @@ paths: curl -H "Content-Type: application/json" \ -H "Authorization: Bearer $TOKEN" \ -X POST -d '{ - "scopes": "*", - "expiry": "2018-01-01T13:46:32", - "label": "linode-cli" + "port": 80, + "protocol": "http", + "algorithm": "roundrobin", + "stickiness": "http_cookie", + "check": "http_body", + "check_interval": 90, + "check_timeout": 10, + "check_attempts": 3, + "check_path": "/test", + "check_body": "it works", + "check_passive": true, + "proxy_protocol": "v1", + "cipher_suite": "recommended" }' \ - https://api.linode.com/v4/profile/tokens + https://api.linode.com/v4/nodebalancers/12345/configs - lang: CLI source: > - linode-cli profile token-create \ - --scopes '*' \ - --expiry '2018-01-01T13:46:32' \ - --label linode-cli - /profile/tokens/{tokenId}: + linode-cli nodebalancers config-create 12345 \ + --port 80 \ + --protocol http \ + --algorithm roundrobin \ + --stickiness http_cookie \ + --check http_body \ + --check_interval 90 \ + --check_timeout 10 \ + --check_attempts 3 \ + --check_path "/test" \ + --check_body "it works" \ + --check_passive true \ + --proxy_protocol "v1" \ + --cipher_suite recommended + /nodebalancers/{nodeBalancerId}/configs/{configId}: parameters: - - name: tokenId + - name: nodeBalancerId in: path - description: The ID of the token to access. + description: The ID of the NodeBalancer to access. required: true schema: type: integer - x-linode-cli-command: profile + - name: configId + in: path + description: The ID of the config to access. + required: true + schema: + type: integer + x-linode-cli-command: nodebalancers get: + x-linode-grant: read_only tags: - - Profile - summary: Personal Access Token View + - NodeBalancers + summary: Config View description: > - Returns a single Personal Access Token. - operationId: getPersonalAccessToken - x-linode-cli-action: token-view + Returns configuration information for a single port of this + NodeBalancer. + operationId: getNodeBalancerConfig + x-linode-cli-action: config-view security: - personalAccessToken: [] - oauth: - - account:read_only + - nodebalancers:read_only responses: '200': - description: The requested token. + description: The requested NodeBalancer config. content: application/json: schema: - $ref: '#/components/schemas/PersonalAccessToken' + $ref: '#/components/schemas/NodeBalancerConfig' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > curl -H "Authorization: Bearer $TOKEN" \ - https://api.linode.com/v4/profile/tokens/123 + https://api.linode.com/v4/nodebalancers/12345/configs/4567 - lang: CLI source: > - linode-cli profile token-view 123 + linode-cli nodebalancers config-view \ + 12345 4567 put: + x-linode-grant: read_write tags: - - Profile - summary: Personal Access Token Update + - NodeBalancers + summary: Config Update description: > - Updates a Personal Access Token. - operationId: updatePersonalAccessToken - x-linode-cli-action: token-update + Updates the configuration for a single port on a NodeBalancer. + operationId: updateNodeBalancerConfig + x-linode-cli-action: config-update security: - personalAccessToken: [] - oauth: - - account:read_write + - nodebalancers:read_write requestBody: description: The fields to update. required: true content: application/json: schema: - $ref: '#/components/schemas/PersonalAccessToken' + $ref: '#/components/schemas/NodeBalancerConfig' responses: '200': - description: Token updated successfully. + description: Config updated successfully. content: application/json: schema: - $ref: '#/components/schemas/PersonalAccessToken' + $ref: '#/components/schemas/NodeBalancerConfig' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: @@ -14377,32 +14680,63 @@ paths: curl -H "Content-Type: application/json" \ -H "Authorization: Bearer $TOKEN" \ -X PUT -d '{ - "label": "linode-cli" + "port": 80, + "protocol": "http", + "algorithm": "roundrobin", + "stickiness": "http_cookie", + "check": "http_body", + "check_interval": 90, + "check_timeout": 10, + "check_attempts": 3, + "check_path": "/test", + "check_body": "it works", + "check_passive": true, + "proxy_protocol": "v1", + "cipher_suite": "recommended" }' \ - https://api.linode.com/v4/profile/tokens/123 + https://api.linode.com/v4/nodebalancers/12345/configs/4567 - lang: CLI source: > - linode-cli profile token-update 123 \ - --label linode-cli + linode-cli nodebalancers config-update \ + 12345 4567 \ + --port 80 \ + --protocol http \ + --algorithm roundrobin \ + --stickiness http_cookie \ + --check http_body \ + --check_interval 90 \ + --check_timeout 10 \ + --check_attempts 3 \ + --check_path "/test" \ + --check_body "it works" \ + --check_passive true \ + --proxy_protocol "v1" \ + --cipher_suite recommended delete: + x-linode-grant: read_write tags: - - Profile - summary: Personal Access Token Revoke + - NodeBalancers + summary: Config Delete description: > - Revokes a Personal Access Token. The token will be invalidated - immediately, and requests using that token will fail with a 401. It is - possible to revoke access to the token making the request to revoke a token, - but keep in mind that doing so could lose you access to the api and require - you to create a new token through some other means. - operationId: deletePersonalAccessToken - x-linode-cli-action: token-delete + Deletes the Config for a port of this NodeBalancer. + + + **This cannot be undone.** + + + Once completed, this NodeBalancer will no longer + respond to requests on the given port. This also deletes all + associated NodeBalancerNodes, but the Linodes they were routing + traffic to will be unchanged and will not be removed. + operationId: deleteNodeBalancerConfig + x-linode-cli-action: config-delete security: - personalAccessToken: [] - oauth: - - account:read_write + - nodebalancers:read_write responses: '200': - description: Token revoked successfully. + description: NodeBalancer Config deleted successfully. content: application/json: schema: @@ -14414,113 +14748,162 @@ paths: source: > curl -H "Authorization: Bearer $TOKEN" \ -X DELETE \ - https://api.linode.com/v4/profile/tokens/123 - - lang: CLI - source: > - linode-cli profile token-delete 123 - /profile/logins: - x-linode-cli-command: profile - get: - tags: - - Profile - summary: Logins List - description: > - Returns a collection of successful account logins from this user during the last - 90 days. - operationId: getProfileLogins - x-linode-cli-action: logins-list - security: - - personalAccessToken: [] - - oauth: - - account:read_only - responses: - '200': - description: > - An array of successful account logins from this user during - the last 90 days. - content: - application/json: - schema: - type: object - properties: - data: - type: array - items: - $ref: '#/components/schemas/Login' - page: - $ref: '#/components/schemas/PaginationEnvelope/properties/page' - pages: - $ref: '#/components/schemas/PaginationEnvelope/properties/pages' - results: - $ref: '#/components/schemas/PaginationEnvelope/properties/results' - default: - $ref: '#/components/responses/ErrorResponse' - x-code-samples: - - lang: Shell - source: > - curl -H "Authorization: Bearer $TOKEN" \ - https://api.linode.com/v4/profile/logins + https://api.linode.com/v4/nodebalancers/12345/configs/4567 - lang: CLI source: > - linode-cli profile logins-list - /profile/logins/{loginId}: + linode-cli nodebalancers config-delete \ + 12345 4567 + /nodebalancers/{nodeBalancerId}/configs/{configId}/rebuild: parameters: - - name: loginId + - name: nodeBalancerId in: path - description: The ID of the login object to access. + description: The ID of the NodeBalancer to access. required: true schema: type: integer - x-linode-cli-command: profile - get: + - name: configId + in: path + description: The ID of the Config to access. + required: true + schema: + type: integer + x-linode-cli-command: nodebalancers + post: + x-linode-grant: add_nodebalancers tags: - - Profile - summary: Login View + - NodeBalancers + summary: Config Rebuild description: > - Returns a login object displaying information about a successful - account login from this user. - operationId: getProfileLogin - x-linode-cli-action: login-view + Rebuilds a NodeBalancer Config and its Nodes that you have + permission to modify. + operationId: rebuildNodeBalancerConfig + x-linode-cli-action: config-rebuild security: - personalAccessToken: [] - oauth: - - account:read_only + - nodebalancers:read_write + requestBody: + description: > + Information about the NodeBalancer Config to rebuild. + required: true + content: + application/json: + schema: + allOf: + - $ref: "#/components/schemas/NodeBalancerConfig" + - type: object + properties: + nodes: + type: array + description: | + The NodeBalancer Node(s) that serve this port. + At least one Node is required per configured port. + + Some considerations for Nodes when rebuilding a config: + * Current Nodes excluded from the request body will be deleted. + * Current Nodes (identified by their ID) will be updated. + * New Nodes (included without an ID) will be created. + items: + $ref: '#/components/schemas/NodeBalancerNode' responses: '200': - description: The requested login object. + description: NodeBalancer created successfully. content: application/json: schema: - $ref: '#/components/schemas/Login' + $ref: '#/components/schemas/NodeBalancer' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > - curl -H "Authorization: Bearer $TOKEN" \ - https://api.linode.com/v4/profile/logins/1234 + curl -H "Content-Type: application/json" \ + -H "Authorization: Bearer $TOKEN" \ + -X POST -d '{ + "port": 80, + "protocol": "http", + "algorithm": "roundrobin", + "stickiness": "http_cookie", + "check": "http_body", + "check_interval": 90, + "check_timeout": 10, + "check_attempts": 3, + "check_path": "/test", + "check_body": "it works", + "check_passive": true, + "proxy_protocol": "v1", + "cipher_suite": "recommended", + "nodes": [ + { + "address": "192.168.210.120:80", + "label": "node1", + "weight": 50, + "mode": "accept" + }, + { + "address": "192.168.210.122:81", + "label": "node2", + "weight": 50, + "mode": "accept" + }, + ] + }' \ + https://api.linode.com/v4/nodebalancers/12345/configs/4567/rebuild - lang: CLI source: > - linode-cli profile login-view 1234 - /profile/devices: - x-linode-cli-command: profile + linode-cli nodebalancers config-rebuild \ + 12345 4567 \ + --port 80 \ + --protocol http \ + --algorithm roundrobin \ + --stickiness http_cookie \ + --check http_body \ + --check_interval 90 \ + --check_timeout 10 \ + --check_attempts 3 \ + --check_path "/test" \ + --check_body "it works" \ + --check_passive true \ + --proxy_protocol "v1" \ + --cipher_suite recommended \ + --nodes '{"address":"192.168.210.120:80","label":"node1","weight":50,"mode":"accept"}' \ + --nodes '{"address":"192.168.210.122:80","label":"node2","weight":50,"mode":"accept"}' + /nodebalancers/{nodeBalancerId}/configs/{configId}/nodes: + parameters: + - name: nodeBalancerId + in: path + description: The ID of the NodeBalancer to access. + required: true + schema: + type: integer + - name: configId + in: path + description: The ID of the NodeBalancer config to access. + required: true + schema: + type: integer + x-linode-cli-command: nodebalancers get: + x-linode-grant: read_only tags: - - Profile - summary: Trusted Devices List + - NodeBalancers + parameters: + - $ref: '#/components/parameters/pageOffset' + - $ref: '#/components/parameters/pageSize' + summary: Nodes List description: > - Returns a paginated list of active TrustedDevices for your User. - Browsers with an active Remember Me Session are logged into your account - until the session expires or is revoked. - operationId: getDevices - x-linode-cli-action: devices-list + Returns a paginated list of NodeBalancer nodes associated with + this Config. These are the backends that will be sent traffic + for this port. + operationId: getNodeBalancerConfigNodes + x-linode-cli-action: nodes-list security: - personalAccessToken: [] - oauth: - - account:read_only + - nodebalancers:read_only responses: '200': - description: Returns a paginated list of TrustedDevice objects. + description: A paginated list of NodeBalancer nodes. content: application/json: schema: @@ -14529,7 +14912,7 @@ paths: data: type: array items: - $ref: '#/components/schemas/TrustedDevice' + $ref: '#/components/schemas/NodeBalancerNode' page: $ref: '#/components/schemas/PaginationEnvelope/properties/page' pages: @@ -14541,40 +14924,44 @@ paths: x-code-samples: - lang: Shell source: > - curl -H "Content-Type: application/json" \ - -H "Authorization: Bearer $TOKEN" \ - https://api.linode.com/v4/profile/devices + curl -H "Authorization: Bearer $TOKEN" \ + https://api.linode.com/v4/nodebalancers/12345/configs/4567/nodes - lang: CLI source: > - linode-cli profile devices-list - /profile/devices/{deviceId}: - x-linode-cli-command: profile - parameters: - - name: deviceId - in: path - description: The ID of the TrustedDevice - required: true - schema: - type: integer - get: + linode-cli nodebalancers nodes-list 12345 4567 + post: + x-linode-grant: read_write tags: - - Profile - summary: Trusted Device View + - NodeBalancers + summary: Node Create description: > - Returns a single active TrustedDevice for your User. - operationId: getTrustedDevice - x-linode-cli-action: device-view + Creates a NodeBalancer Node, a backend that can accept + traffic for this NodeBalancer Config. Nodes are routed + requests on the configured port based on their status. + operationId: createNodeBalancerNode + x-linode-cli-action: node-create security: - personalAccessToken: [] - oauth: - - account:read_only + - nodebalancers:read_write + requestBody: + description: Information about the Node to create. + required: true + content: + application/json: + schema: + required: + - label + - address + allOf: + - $ref: '#/components/schemas/NodeBalancerNode' responses: '200': - description: The requested TrustedDevice object + description: Node created successfully. content: application/json: schema: - $ref: '#/components/schemas/TrustedDevice' + $ref: '#/components/schemas/NodeBalancerNode' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: @@ -14582,78 +14969,101 @@ paths: source: > curl -H "Content-Type: application/json" \ -H "Authorization: Bearer $TOKEN" \ - https://api.linode.com/v4/profile/devices/123 - - lang: CLI - source: > - linode-cli profile device-view 123 - delete: + -X POST -d '{ + "address": "192.168.210.120:80", + "label": "node54321", + "weight": 50, + "mode": "accept" + }' \ + https://api.linode.com/v4/nodebalancers/12345/configs/4567/nodes + - lang: CLI + source: > + linode-cli nodebalancers node-create \ + 12345 4567 \ + --address 192.168.210.120:80 \ + --label node54321 \ + --weight 50 \ + --mode accept + /nodebalancers/{nodeBalancerId}/configs/{configId}/nodes/{nodeId}: + parameters: + - name: nodeBalancerId + in: path + description: The ID of the NodeBalancer to access. + required: true + schema: + type: integer + - name: configId + in: path + description: The ID of the Config to access + required: true + schema: + type: integer + - name: nodeId + in: path + description: The ID of the Node to access + required: true + schema: + type: integer + x-linode-cli-command: nodebalancers + get: + x-linode-grant: read_only tags: - - Profile - summary: Trusted Device Revoke + - NodeBalancers + summary: Node View description: > - Revoke an active TrustedDevice for your User. Once a TrustedDevice is revoked, this - device will have to log in again before accessing your Linode account. - operationId: revokeTrustedDevice - x-linode-cli-action: device-revoke + Returns information about a single Node, a backend for this + NodeBalancer's configured port. + operationId: getNodeBalancerNode + x-linode-cli-action: node-view security: - personalAccessToken: [] - oauth: - - account:read_write + - nodebalancers:read_write responses: '200': - description: Session revoked successfully + description: A paginated list of NodeBalancer nodes. content: application/json: schema: - type: object + $ref: '#/components/schemas/NodeBalancerNode' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > - curl -H "Content-Type: application/json" \ - -H "Authorization: Bearer $TOKEN" \ - -X DELETE \ - https://api.linode.com/v4/profile/devices/123 + curl -H "Authorization: Bearer $TOKEN" \ + https://api.linode.com/v4/nodebalancers/12345/configs/4567/nodes/54321 - lang: CLI source: > - linode-cli profile device-revoke 123 - /profile/sshkeys: - x-linode-cli-command: sshkeys - get: - x-linode-grant: read_only - parameters: - - $ref: '#/components/parameters/pageOffset' - - $ref: '#/components/parameters/pageSize' + linode-cli nodebalancers node-view 12345 4567 54321 + put: + x-linode-grant: read_write tags: - - Profile - summary: SSH Keys List + - NodeBalancers + summary: Node Update description: > - Returns a collection of SSH Keys you've added to your Profile. - operationId: getSSHKeys - x-linode-cli-action: list + Updates information about a Node, a backend for this NodeBalancer's + configured port. + operationId: updateNodeBalancerNode + x-linode-cli-action: node-update security: - personalAccessToken: [] - oauth: - - account:read_only + - nodebalancers:read_write + requestBody: + description: The fields to update. + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/NodeBalancerNode' responses: '200': - description: Returns a paginated list of SSH Key objects. + description: Node updated successfully. content: application/json: schema: - type: object - properties: - data: - type: array - items: - $ref: '#/components/schemas/SSHKey' - page: - $ref: '#/components/schemas/PaginationEnvelope/properties/page' - pages: - $ref: '#/components/schemas/PaginationEnvelope/properties/pages' - results: - $ref: '#/components/schemas/PaginationEnvelope/properties/results' + $ref: '#/components/schemas/NodeBalancerNode' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: @@ -14661,275 +15071,334 @@ paths: source: > curl -H "Content-Type: application/json" \ -H "Authorization: Bearer $TOKEN" \ - https://api.linode.com/v4/profile/sshkeys + -X PUT -d '{ + "address": "192.168.210.120:80", + "label": "node54321", + "weight": 50, + "mode": "accept" + }' \ + https://api.linode.com/v4/nodebalancers/12345/configs/4567/nodes/54321 - lang: CLI source: > - linode-cli sshkeys list - post: + linode-cli nodebalancers node-create \ + 12345 4567 54321 \ + --address 192.168.210.120:80 \ + --label node54321 \ + --weight 50 \ + --mode accept + delete: + x-linode-grant: read_write tags: - - Profile - summary: SSH Key Add + - NodeBalancers + summary: Node Delete description: > - Adds an SSH Key to your Account profile. - operationId: addSSHKey - x-linode-cli-action: create + Deletes a Node from this Config. This backend will no longer + receive traffic for the configured port of this NodeBalancer. + + + This does not change or remove the Linode whose address was + used in the creation of this Node. + operationId: deleteNodeBalancerConfigNode + x-linode-cli-action: node-delete security: - personalAccessToken: [] - oauth: - - account:read_write - requestBody: - description: Add SSH Key - content: - application/json: - schema: - $ref: '#/components/schemas/SSHKeyRequest' + - nodebalancers:read_write responses: '200': - description: SSH Key associated successfully. + description: Node deleted successfully. content: application/json: schema: - $ref: '#/components/schemas/SSHKey' + type: object default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > - curl -H "Content-Type: application/json" \ - -H "Authorization: Bearer $TOKEN" \ - -X POST -d '{ - "label": "My SSH Key" - "ssh_key": "ssh-rsa AAAA_valid_public_ssh_key_123456785== user@their-computer" - }' \ - https://api.linode.com/v4/profile/sshkeys + curl -H "Authorization: Bearer $TOKEN" \ + -X DELETE \ + https://api.linode.com/v4/nodebalancers/12345/configs/4567/nodes/54321 - lang: CLI source: > - linode-cli sshkeys create \ - --label "My SSH Key" - --ssh_key "ssh-rsa AAAA_valid_public_ssh_key_123456785== user@their-computer" - /profile/sshkeys/{sshKeyId}: - x-linode-cli-command: sshkeys + linode-cli nodebalancers node-delete \ + 12345 4567 54321 + /nodebalancers/{nodeBalancerId}/stats: + x-linode-cli-command: nodebalancers parameters: - - name: sshKeyId + - name: nodeBalancerId in: path - description: The ID of the SSHKey + description: The ID of the NodeBalancer to access. required: true schema: type: integer get: + x-linode-grant: read_only tags: - - Profile - summary: SSH Key View + - NodeBalancers + summary: NodeBalancer Statistics View description: > - Returns a single SSH Key object identified by `id` that you have access - to view. - operationId: getSSHKey - x-linode-cli-action: view + Returns detailed statistics about the requested NodeBalancer. + x-linode-cli-action: stats + x-linode-cli-skip: true security: - personalAccessToken: [] - oauth: - - account:read_only + - nodebalancers:read_only responses: '200': - description: An SSH Key object + description: The requested stats. content: application/json: schema: - $ref: '#/components/schemas/SSHKey' + $ref: '#/components/schemas/NodeBalancerStats' default: $ref: '#/components/responses/ErrorResponse' - x-code-samples: - - lang: Shell - source: > - curl -H "Authorization: Bearer $TOKEN" \ - https://api.linode.com/v4/profile/sshkeys/42 - - lang: CLI - source: > - linode-cli sshkeys view 42 - put: + /object-storage/buckets: + get: + operationId: getObjectStorageBuckets + x-linode-cli-skip: true + servers: + - url: https://api.linode.com/v4 + summary: Object Storage Buckets List + description: | + Returns a paginated list of all Object Storage Buckets that you own. + + + This endpoint is available for convenience. It is recommended that instead you + use the more [fully-featured S3 API](https://docs.ceph.com/en/latest/radosgw/s3/serviceops/#list-buckets) directly. tags: - - Profile - summary: SSH Key Update - description: > - Updates an SSH Key that you have permission to `read_write`. - operationId: updateSSHKey - x-linode-cli-action: update + - Object Storage security: - personalAccessToken: [] - oauth: - - account:read_write - requestBody: - description: > - The fields to update. - required: true - content: - application/json: - schema: - $ref: '#/components/schemas/SSHKey' + - object_storage:read_only responses: '200': - description: SSH Key updated successfully. + description: A paginated list of buckets you own. content: application/json: schema: - $ref: '#/components/schemas/SSHKey' + type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/ObjectStorageBucket' + page: + $ref: '#/components/schemas/PaginationEnvelope/properties/page' + pages: + $ref: '#/components/schemas/PaginationEnvelope/properties/pages' + results: + $ref: '#/components/schemas/PaginationEnvelope/properties/results' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > - curl -H "Content-Type: application/json" \ - -H "Authorization: Bearer $TOKEN" \ - -X PUT -d '{ - "label": "my laptop" - }' \ - https://api.linode.com/v4/profile/sshkey/42 - - lang: CLI - source: > - linode-cli sshkey update 42 \ - --label "my laptop" - delete: - tags: - - Profile - summary: SSH Key Delete - description: > - Deletes an SSH Key you have access to. + curl -H "Authorization: Bearer $TOKEN" \ + https://api.linode.com/v4/object-storage/buckets/ + post: + operationId: createObjectStorageBucket + x-linode-cli-skip: true + servers: + - url: https://api.linode.com/v4 + summary: Object Storage Bucket Create + description: | + Creates an Object Storage Bucket in the cluster specified. If the + bucket already exists and is owned by you, this endpoint will return a + `200` response with that bucket as if it had just been created. - **Note:** deleting an SSH Key will *not* remove it from any Linode or - Disk that was deployed with `authorized_keys`. In those cases, the keys - must be manually deleted on the Linode or Disk. - This endpoint will only delete the key's association from your Profile. - operationId: deleteSSHKey - x-linode-cli-action: delete + This endpoint is available for convenience. It is recommended that instead you + use the more [fully-featured S3 API](https://docs.ceph.com/en/latest/radosgw/s3/bucketops/#put-bucket) directly. + tags: + - Object Storage security: - personalAccessToken: [] - oauth: - - account:read_write + - object_storage:read_write + requestBody: + description: > + Information about the bucket you want to create. + content: + application/json: + schema: + type: object + required: + - label + - cluster + properties: + label: + type: string + description: > + The name for this bucket. Must be unique in the cluster you + are creating the bucket in, or an error will be returned. Labels will be + reserved only for the cluster that active buckets are created and stored in. + If you want to reserve this bucket's label in another cluster, + you must create a new bucket with the same label in the new cluster. + pattern: ^[a-z0-09][a-z0-9-]*[a-z0-9]?$ + example: example-bucket + cluster: + type: string + description: > + The ID of the Object Storage Cluster where this bucket should + be created. + example: us-east-1 + cors_enabled: + type: boolean + description: > + If true, the bucket will be created with CORS enabled for all + origins. For more fine-grained controls of CORS, use the S3 + API directly. + example: true + default: false + acl: + type: string + enum: + - private + - public-read + - authenticated-read + - public-read-write + description: > + The Access Control Level of the bucket using a canned ACL string. + For more fine-grained control of ACLs, use the S3 API directly. + default: private + example: private responses: '200': - description: SSH Key deleted successfully. + description: The bucket created successfully. content: application/json: schema: - type: object + $ref: '#/components/schemas/ObjectStorageBucket' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > curl -H "Content-Type: application/json" \ - -H "Authoriztion: Bearer $TOKEN" \ - -X DELETE \ - https://api.linode.com/v4/profile/sshkeys/42 - - lang: CLI - source: > - linode-cli sshkey delete 42 - /profile/preferences: - x-linode-cli-command: profile + -H "Authorization: Bearer $TOKEN" \ + -X POST -d '{ + "label": "example-bucket", + "cluster": "us-east-1", + "cors_enabled": true, + "acl": "private" + }' \ + https://api.linode.com/v4/object-storage/buckets/ + /object-storage/buckets/{clusterId}/{bucket}: + parameters: + - name: clusterId + in: path + description: The ID of the cluster this bucket exists in. + required: true + schema: + type: string + - name: bucket + in: path + description: The bucket name. + required: true + schema: + type: string get: - x-linode-grant: read_only - tags: - - Profile - summary: User Preferences View - description: | - View a list of user preferences tied to the OAuth client that generated - the token making the request. The user preferences endpoints allow - consumers of the API to store arbitrary JSON data, such as a user's font - size preference or preferred display name. User preferences are available - for each OAuth client registered to your account, and as such an account can - have multiple user preferences. - operationId: getUserPreferences - x-linode-cli-action: preferences-view + operationId: getObjectStorageBucket x-linode-cli-skip: true + servers: + - url: https://api.linode.com/v4 + summary: Object Storage Bucket View + description: | + Returns a single Object Storage Bucket. + + + This endpoint is available for convenience. It is recommended that instead you + use the more [fully-featured S3 API](https://docs.ceph.com/en/latest/radosgw/s3/bucketops/#get-bucket) directly. + tags: + - Object Storage security: - personalAccessToken: [] - oauth: - - account:read_only + - object_storage:read_only responses: '200': - description: Returns an object of user preferences. + description: The requested bucket. content: application/json: schema: - type: object - description: A dictionary of user preferences. - example: { "key1": "value1", "key2": "value2"} + $ref: '#/components/schemas/ObjectStorageBucket' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > - curl -H "Content-Type: application/json" \ - -H "Authorization: Bearer $TOKEN" \ - -X GET \ - https://api.linode.com/v4/profile/preferences - put: - tags: - - Profile - summary: User Preferences Update - description: > - Updates a user's preferences. These preferences are tied to the - OAuth client that generated the token making the request. The user - preferences endpoints allow consumers of the API to store arbitrary - JSON data, such as a user's font size preference or preferred display - name. An account may have multiple preferences. Preferences, and the - pertaining request body, may contain any arbitrary JSON data that - the user would like to store. - operationId: updateUserPreferences - x-linode-cli-action: preferences-update + curl -H "Authorization: Bearer $TOKEN" \ + https://api.linode.com/v4/object-storage/buckets/us-east-1/example-bucket + delete: + operationId: deleteObjectStorageBucket x-linode-cli-skip: true + servers: + - url: https://api.linode.com/v4 + summary: Object Storage Bucket Remove + description: | + Removes a single bucket. + + Bucket objects must be removed prior to removing the bucket. While buckets containing objects _may_ be + deleted using the [s3cmd command-line tool](/docs/products/storage/object-storage/guides/s3cmd/#delete-a-bucket), such operations + can fail if the bucket contains too many objects. The recommended + way to empty large buckets is to use the [S3 API to configure lifecycle policies](https://docs.ceph.com/en/latest/radosgw/bucketpolicy/#) that + remove all objects, then delete the bucket. + + This endpoint is available for convenience. It is recommended that instead you + use the more [fully-featured S3 API](https://docs.ceph.com/en/latest/radosgw/s3/bucketops/#delete-bucket) directly. + tags: + - Object Storage security: - personalAccessToken: [] - oauth: - - account:read_write - requestBody: - description: > - The user preferences to update or store. - required: true - content: - application/json: - schema: - type: object - description: | - Arbitrary JSON of your choosing. + - object_storage:read_write responses: '200': - description: Returns an object of user preferences. + description: Bucket deleted successfully. content: application/json: schema: type: object - description: An object of user preferences. - example: { "key1": "value1", "key2": "value2"} default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > - curl -H "Content-Type: application/json" \ - -H "Authorization: Bearer $TOKEN" \ - -X PUT -d '{ - "key1": "value1", - "key1": "value2" - }' \ - https://api.linode.com/v4/profile/preferences - - /regions: - x-linode-cli-command: regions + curl -H "Authorization: Bearer $TOKEN" \ + -X DELETE \ + https://api.linode.com/v4/object-storage/buckets/us-east-1/example-bucket + /object-storage/buckets/{clusterId}: + parameters: + - name: clusterId + in: path + description: The ID of the cluster this bucket exists in. + required: true + schema: + type: string get: - tags: - - Regions - summary: Regions List + operationId: getObjectStorageBucketinCluster + x-linode-cli-skip: true + servers: + - url: https://api.linode.com/v4 + summary: Object Storage Buckets in Cluster List description: | - Lists the Regions available for Linode services. Not all services are guaranteed to be - available in all Regions. - x-linode-redoc-load-ids: true - operationId: getRegions - x-linode-cli-action: list + Returns a list of Buckets in this cluster belonging to this Account. + + + This endpoint is available for convenience. It is recommended that instead you + use the more [fully-featured S3 API](https://docs.ceph.com/en/latest/radosgw/s3/bucketops/#get-bucket) directly. + tags: + - Object Storage + security: + - personalAccessToken: [] + - oauth: + - object_storage:read_only responses: '200': - description: Returns an array of Regions. + description: A paginated list of buckets you own in this cluster. content: application/json: schema: @@ -14938,7 +15407,7 @@ paths: data: type: array items: - $ref: '#/components/schemas/Region' + $ref: '#/components/schemas/ObjectStorageBucket' page: $ref: '#/components/schemas/PaginationEnvelope/properties/page' pages: @@ -14950,416 +15419,588 @@ paths: x-code-samples: - lang: Shell source: > - curl https://api.linode.com/v4/regions - - lang: CLI - source: > - linode-cli regions list - /regions/{regionId}: - x-linode-cli-command: regions + curl -H "Authorization: Bearer $TOKEN" \ + https://api.linode.com/v4/object-storage/buckets/us-east-1 + /object-storage/buckets/{clusterId}/{bucket}/access: parameters: - - name: regionId + - name: clusterId in: path - description: ID of the Region to look up. + description: The ID of the cluster this bucket exists in. required: true schema: type: string - get: - tags: - - Regions - summary: Region View - description: > - Returns a single Region. - operationId: getRegion - x-linode-cli-action: view - responses: - '200': - description: A single Region object. - content: - application/json: - schema: - $ref: '#/components/schemas/Region' - default: - $ref: '#/components/responses/ErrorResponse' - x-code-samples: - - lang: Shell - source: > - curl https://api.linode.com/v4/regions/us-east - - lang: CLI - source: > - linode-cli regions view us-east - /support/tickets: - x-linode-cli-command: tickets - get: - x-linode-grant: read_only - parameters: - - $ref: '#/components/parameters/pageOffset' - - $ref: '#/components/parameters/pageSize' - tags: - - Support - summary: Support Tickets List - description: > - Returns a collection of Support Tickets on your - Account. Support Tickets can be both tickets you open with Linode - for support, as well as tickets generated by Linode regarding - your Account. + - name: bucket + in: path + description: The bucket name. + required: true + schema: + type: string + post: + operationId: modifyObjectStorageBucketAccess + x-linode-cli-skip: true + servers: + - url: https://api.linode.com/v4 + summary: Object Storage Bucket Access Modify + description: | + Allows changing basic Cross-origin Resource Sharing (CORS) and Access Control Level (ACL) settings. + Only allows enabling/disabling CORS for all origins, and/or setting canned ACLs. - This collection includes all Support Tickets generated on your Account, - with open tickets returned first. - operationId: getTickets - x-linode-cli-action: list + + For more fine-grained control of both systems, please use the more [fully-featured S3 API](https://docs.ceph.com/en/latest/radosgw/s3/bucketops/#put-bucket-acl) directly. + tags: + - Object Storage security: - personalAccessToken: [] - oauth: - - account:read_only + - object_storage:read_write + requestBody: + description: The changes to make to the bucket's access controls. + content: + application/json: + schema: + properties: + cors_enabled: + type: boolean + description: > + If true, the bucket will be created with CORS enabled for all + origins. For more fine-grained controls of CORS, use the S3 + API directly. + example: true + acl: + type: string + enum: + - private + - public-read + - authenticated-read + - public-read-write + - custom + description: > + The Access Control Level of the bucket, as a canned ACL string. + For more fine-grained control of ACLs, use the S3 API directly. + example: private responses: '200': - description: Returns a paginated list of SupportTicket objects. + description: Access controls updated. content: application/json: schema: type: object - properties: - data: - type: array - items: - $ref: '#/components/schemas/SupportTicket' - page: - $ref: '#/components/schemas/PaginationEnvelope/properties/page' - pages: - $ref: '#/components/schemas/PaginationEnvelope/properties/pages' - results: - $ref: '#/components/schemas/PaginationEnvelope/properties/results' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > - curl -H "Authorization: Bearer $TOKEN" \ - https://api.linode.com/v4/support/tickets - - lang: CLI - source: > - linode-cli tickets list - post: - x-linode-grant: read_write - tags: - - Support - summary: Support Ticket Open - description: > - Open a Support Ticket. + curl -H "Content-Type: application/json" \ + -H "Authorization: Bearer $TOKEN" \ + -X POST -d '{ + "cors_enabled": true, + "acl": "private" + }' \ + https://api.linode.com/v4/object-storage/buckets/us-east-1/example-bucket/access + put: + operationId: updateObjectStorageBucketAccess + x-linode-cli-skip: true + servers: + - url: https://api.linode.com/v4 + summary: Object Storage Bucket Access Update + description: | + Allows changing basic Cross-origin Resource Sharing (CORS) and Access Control Level (ACL) settings. + Only allows enabling/disabling CORS for all origins, and/or setting canned ACLs. - Only one of the ID attributes (`linode_id`, `domain_id`, etc.) can be set - on a single Support Ticket. - operationId: createTicket - x-linode-cli-action: create + + For more fine-grained control of both systems, please use the more [fully-featured S3 API](https://docs.ceph.com/en/latest/radosgw/s3/bucketops/#put-bucket-acl) directly. + tags: + - Object Storage security: - personalAccessToken: [] - oauth: - - account:read_write + - object_storage:read_write requestBody: - description: Open a Support Ticket. + description: The changes to make to the bucket's access controls. content: application/json: schema: - $ref: '#/components/schemas/SupportTicketRequest' + properties: + cors_enabled: + type: boolean + description: > + If true, the bucket will be created with CORS enabled for all + origins. For more fine-grained controls of CORS, use the S3 + API directly. + example: true + acl: + type: string + enum: + - private + - public-read + - authenticated-read + - public-read-write + - custom + description: > + The Access Control Level of the bucket, as a canned ACL string. + For more fine-grained control of ACLs, use the S3 API directly. + example: private responses: '200': - description: Support Ticket opened. + description: Access controls updated. content: application/json: schema: - $ref: '#/components/schemas/SupportTicket' + type: object default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > curl -H "Content-Type: application/json" \ - -H "Authorization: Bearer $TOKEN" \ - -X POST -d '{ - "description": "I'm having trouble setting the root password on my Linode. I tried following the instructions but something is not working and I'm not sure what I'm doing wrong. Can you please help me figure out how I can reset it?", - "linode_id": 123, - "summary": "Having trouble resetting root password on my Linode" + -H "Authorization: Bearer $TOKEN" \ + -X PUT -d '{ + "cors_enabled": true, + "acl": "private" }' \ - https://api.linode.com/v4/support/tickets - - lang: CLI - source: > - linode-cli tickets create \ - --description "I'm having trouble setting the root password on my Linode. I tried following the instructions but something is not working and I'm not sure what I'm doing wrong. Can you please help me figure out how I can reset it?" \ - --linode_id 123 \ - --summary "Having trouble resetting root password on my Linode" - /support/tickets/{ticketId}: + https://api.linode.com/v4/object-storage/buckets/us-east-1/example-bucket/access + /object-storage/buckets/{clusterId}/{bucket}/object-acl: parameters: - - name: ticketId + - name: clusterId in: path - description: The ID of the Support Ticket. + description: The ID of the cluster this bucket exists in. required: true schema: - type: integer - x-linode-cli-command: tickets + type: string + - name: bucket + in: path + description: The bucket name. + required: true + schema: + type: string get: - x-linode-grant: read_only + operationId: viewObjectStorageBucketACL + x-linode-cli-skip: true + servers: + - url: https://api.linode.com/v4 + summary: Object Storage Object ACL Config View + description: | + View an Object’s configured Access Control List (ACL) in this Object Storage bucket. + ACLs define who can access your buckets and objects and specify the level of access + granted to those users. + + + This endpoint is available for convenience. It is recommended that instead you + use the more [fully-featured S3 API](https://docs.ceph.com/en/latest/radosgw/s3/objectops/#get-object-acl) directly. tags: - - Support - summary: Support Ticket View - description: > - Returns a Support Ticket under your Account. - operationId: getTicket - x-linode-cli-action: view + - Object Storage security: - personalAccessToken: [] - oauth: - - account:read_only + - object_storage:read_only + parameters: + - name: name + in: query + required: true + description: > + The `name` of the object for which to retrieve its Access Control List (ACL). + Use the [Object Storage Bucket Contents List](/docs/api/object-storage/#object-storage-bucket-contents-list) + endpoint to access all object names in a bucket. + schema: + type: string responses: '200': - description: Returns a single SupportTicket object. + description: The Object's canned ACL and policy. content: application/json: schema: - $ref: '#/components/schemas/SupportTicket' - default: - $ref: '#/components/responses/ErrorResponse' - x-code-samples: - - lang: Shell - source: > - curl -H "Authorization: Bearer $TOKEN" \ - https://api.linode.com/v4/support/tickets/11223344 - - lang: CLI - source: > - linode-cli tickets view 11223344 - /support/tickets/{ticketId}/attachments: - parameters: - - name: ticketId - in: path - description: The ID of the Support Ticket. - required: true - schema: - type: integer - x-linode-cli-command: tickets - post: - x-linode-grant: read_write - tags: - - Support - summary: Ticket Attachment Create - description: > - Adds a file attachment to an existing Support - Ticket on your Account. File attachments are used to assist our - Support team in resolving your Ticket. Examples of attachments - are screen shots and text files that provide additional information. - - Note: Accepted file extensions include: .gif, .jpg, .jpeg, .pjpg, - .pjpeg, .tif, .tiff, .png, .pdf, or .txt. - operationId: createTicketAttachment + type: object + properties: + acl: + type: string + enum: + - private + - public-read + - authenticated-read + - public-read-write + - custom + description: > + The Access Control Level of the bucket, as a canned ACL string. + For more fine-grained control of ACLs, use the S3 API directly. + example: public-read + acl_xml: + type: string + description: > + The full XML of the object's ACL policy. + example: "..." + default: + $ref: '#/components/responses/ErrorResponse' + x-code-samples: + - lang: Shell + source: > + curl -H "Authorization: Bearer $TOKEN" \ + https://api.linode.com/v4/object-storage/buckets/us-east-1/example-bucket/object-acl?name=example.txt + put: + operationId: updateObjectStorageBucketACL x-linode-cli-skip: true - x-linode-cli-action: upload-attachment + servers: + - url: https://api.linode.com/v4 + summary: Object Storage Object ACL Config Update + description: | + Update an Object's configured Access Control List (ACL) in this Object Storage bucket. + ACLs define who can access your buckets and objects and specify the level of access + granted to those users. + + + This endpoint is available for convenience. It is recommended that instead you + use the more [fully-featured S3 API](https://docs.ceph.com/en/latest/radosgw/s3/objectops/#set-object-acl) directly. + tags: + - Object Storage security: - personalAccessToken: [] - oauth: - - account:read_write + - object_storage:read_write requestBody: - description: Add an attachment. - required: true + description: The changes to make to this Object's access controls. content: - multipart/form-data: + application/json: schema: required: - - file + - acl + - name properties: - file: + acl: type: string + enum: + - private + - public-read + - authenticated-read + - public-read-write + - custom description: > - The local, absolute path to the file you want to attach to - your Support Ticket. - example: '/Users/LinodeGuy/pictures/screen_shot.jpg' + The Access Control Level of the bucket, as a canned ACL string. + For more fine-grained control of ACLs, use the S3 API directly. + example: public-read + name: + type: string + description: > + The `name` of the object for which to update its Access Control List (ACL). + Use the [Object Storage Bucket Contents List](/docs/api/object-storage/#object-storage-bucket-contents-list) + endpoint to access all object names in a bucket. responses: '200': - description: Attachment created. + description: The Object's canned ACL and policy. content: application/json: schema: type: object + properties: + acl: + type: string + enum: + - private + - public-read + - authenticated-read + - public-read-write + - custom + description: > + The Access Control Level of the bucket, as a canned ACL string. + For more fine-grained control of ACLs, use the S3 API directly. + example: public-read + acl_xml: + type: string + description: > + The full XML of the object's ACL policy. + example: "..." default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > - curl -H "Authorization: Bearer $TOKEN" \ - -X POST \ - -F 'file=@/Users/LinodeGuy/pictures/screen_shot.jpg' \ - https://api.linode.com/v4/support/tickets/11223344/attachments - /support/tickets/{ticketId}/close: + curl -H "Content-Type: application/json" \ + -H "Authorization: Bearer $TOKEN" \ + -X PUT -d '{ + "acl": "public-read", + "name": "example.txt" + }' \ + https://api.linode.com/v4/object-storage/buckets/us-east-1/example-bucket/object-acl + /object-storage/buckets/{clusterId}/{bucket}/object-list: parameters: - - name: ticketId + - name: clusterId in: path - description: The ID of the Support Ticket. + description: The ID of the cluster this bucket exists in. required: true schema: - type: integer - x-linode-cli-command: tickets - post: - x-linode-grant: read_write - tags: - - Support - summary: Support Ticket Close - description: > - Closes a Support Ticket you have access to modify. - operationId: closeTicket - x-linode-cli-action: close - security: - - personalAccessToken: [] - - oauth: - - account:read_write - responses: - '200': - description: Support Ticket closed successfully. - content: - application/json: - schema: - type: object - default: - $ref: '#/components/responses/ErrorResponse' - x-code-samples: - - lang: Shell - source: > - curl -H "Authorization: Bearer $TOKEN" \ - -X POST \ - https://api.linode.com/v4/support/tickets/11223344/close - - lang: CLI - source: > - linode-cli tickets close 11223344 - /support/tickets/{ticketId}/replies: - parameters: - - name: ticketId + type: string + - name: bucket in: path - description: The ID of the Support Ticket. + description: The bucket name. required: true schema: - type: integer - x-linode-cli-command: tickets + type: string get: - x-linode-grant: read_only - parameters: - - $ref: '#/components/parameters/pageOffset' - - $ref: '#/components/parameters/pageSize' + operationId: getObjectStorageBucketContent + x-linode-cli-skip: true + servers: + - url: https://api.linode.com/v4 + summary: Object Storage Bucket Contents List + description: | + Returns the contents of a bucket. The contents are paginated using a `marker`, + which is the name of the last object on the previous page. Objects may + be filtered by `prefix` and `delimiter` as well; see Query Parameters for more + information. + + + This endpoint is available for convenience. It is recommended that instead you + use the more [fully-featured S3 API](https://docs.ceph.com/en/latest/radosgw/s3/objectops/#get-object) directly. tags: - - Support - summary: Replies List - description: > - Returns a collection of replies to a Support Ticket on - your Account. - operationId: getTicketReplies - x-linode-cli-action: replies + - Object Storage security: - personalAccessToken: [] - oauth: - - account:read_only + - object_storage:read_only + parameters: + - name: marker + in: query + required: false + description: > + The "marker" for this request, which can be used to paginate through large buckets. + Its value should be the value of the `next_marker` property returned with the last page. + Listing bucket contents *does not* support arbitrary page access. See the `next_marker` + property in the responses section for more details. + schema: + type: string + - name: delimiter + in: query + required: false + description: > + The delimiter for object names; if given, object names will be returned + up to the first occurrence of this character. This is most commonly used + with the `/` character to allow bucket transversal in a manner similar to + a filesystem, however any delimiter may be used. Use in conjunction with + `prefix` to see object names past the first occurrence of the delimiter. + schema: + type: string + - name: prefix + in: query + required: false + description: > + Filters objects returned to only those whose name start with the given + prefix. Commonly used in conjunction with `delimiter` to allow transversal + of bucket contents in a manner similar to a filesystem. + schema: + type: string + - $ref: '#/components/parameters/pageSize' responses: '200': - description: Returns a paginated list of SupportTicketReply objects. + description: One page of the requested bucket's contents. content: application/json: schema: - type: object properties: data: type: array + description: This page of objects in the bucket. items: - $ref: '#/components/schemas/SupportTicketReply' - page: - $ref: '#/components/schemas/PaginationEnvelope/properties/page' - pages: - $ref: '#/components/schemas/PaginationEnvelope/properties/pages' - results: - $ref: '#/components/schemas/PaginationEnvelope/properties/results' + $ref: '#/components/schemas/ObjectStorageObject' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > curl -H "Authorization: Bearer $TOKEN" \ - https://api.linode.com/v4/support/tickets/11223344/replies - - lang: CLI - source: > - linode-cli tickets replies 11223344 - post: - x-linode-grant: read_write - tags: - - Support - summary: Reply Create - description: > - Adds a reply to an existing Support Ticket. - operationId: createTicketReply - x-linode-cli-action: reply + https://api.linode.com/v4/object-storage/buckets/us-east-1/example-bucket/object-list + /object-storage/buckets/{clusterId}/{bucket}/object-url: + parameters: + - name: clusterId + in: path + description: The ID of the cluster this bucket exists in. + required: true + schema: + type: string + - name: bucket + in: path + description: The bucket name. + required: true + schema: + type: string + post: + operationId: createObjectStorageObjectURL + x-linode-cli-skip: true + servers: + - url: https://api.linode.com/v4 + summary: Object Storage Object URL Create + description: | + Creates a pre-signed URL to access a single Object in a bucket. This + can be used to share objects, and also to create/delete objects by using + the appropriate HTTP method in your request body's `method` parameter. + + + This endpoint is available for convenience. It is recommended that instead you + use the more [fully-featured S3 API](https://docs.ceph.com/en/latest/radosgw/s3/) + directly. + tags: + - Object Storage security: - personalAccessToken: [] - oauth: - - account:read_write + - object_storage:read_write requestBody: - description: Add a reply. - required: true + description: Information about the request to sign. content: application/json: schema: required: - - description + - name + - method properties: - description: + method: + type: string + description: The HTTP method allowed to be used with the pre-signed URL. + example: GET + default: GET + name: type: string description: > - The content of your reply. - minLength: 1 - maxLength: 65535 - example: > - Thank you for your help. I was able to figure out what the - problem was and I successfully reset my password. You guys are - the best! + The name of the object that will be accessed with the pre-signed URL. This object need not + exist, and no error will be returned if it doesn't. This behavior is + useful for generating pre-signed URLs to upload new objects to by + setting the `method` to "PUT". + example: example + content_type: + type: string + description: > + The expected `Content-type` header of the request this signed + URL will be valid for. If provided, the `Content-type` header + _must_ be sent with the request when this URL is used, and + _must_ be the same as it was when the signed URL was created. + Required for all methods *except* "GET" or "DELETE". + example: null + expires_in: + type: integer + minimum: 360 + maximum: 86400 + default: 3600 + description: > + How long this signed URL will be valid for, in seconds. If + omitted, the URL will be valid for 3600 seconds (1 hour). + example: null responses: '200': - description: Reply created. + description: The URL with which to access your object. content: application/json: schema: - $ref: '#/components/schemas/SupportTicketReply' + properties: + url: + type: string + description: The signed URL to perform the request at. + example: https://us-east-1.linodeobjects.com/example-bucket/example?Signature=qr98TEucCntPgEG%2BsZQGDsJg93c%3D&Expires=1567609905&AWSAccessKeyId=G4YAF81XWY61DQM94SE0 default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > curl -H "Content-Type: application/json" \ - -H "Authorization: Bearer $TOKEN" \ - -X POST -d '{ - "description": "Thank you for your help. I was able to figure out what the problem was and I successfully reset my password. You guys are the best!" + -H "Authorization: Bearer $TOKEN" \ + -X POST -d '{ + "method": "GET", + "name": "example" }' \ - https://api.linode.com/v4/support/tickets/11223344/replies + https://api.linode.com/v4/object-storage/buckets/us-east-1/example-bucket/object-url + /object-storage/clusters: + x-linode-cli-command: object-storage + get: + operationId: getObjectStorageClusters + x-linode-cli-action: clusters-list + servers: + - url: https://api.linode.com/v4 + summary: Clusters List + description: | + Returns a paginated list of Object Storage Clusters that are available for + use. Users can connect to the clusters with third party clients to create buckets + and upload objects. + tags: + - Object Storage + responses: + '200': + description: A paginated list of available clusters. + content: + application/json: + schema: + type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/ObjectStorageCluster' + page: + $ref: '#/components/schemas/PaginationEnvelope/properties/page' + pages: + $ref: '#/components/schemas/PaginationEnvelope/properties/pages' + results: + $ref: '#/components/schemas/PaginationEnvelope/properties/results' + default: + $ref: '#/components/responses/ErrorResponse' + x-code-samples: + - lang: Shell + source: > + curl -H "Authorization: Bearer $TOKEN" \ + https://api.linode.com/v4/object-storage/clusters - lang: CLI source: > - linode-cli tickets reply 11223344 \ - --description "Thank you for your help. I was able to figure out what the problem was and I successfully reset my password. You guys are the best!" - /tags: - x-linode-cli-command: tags + linode-cli object-storage clusters-list + /object-storage/clusters/{clusterId}: + x-linode-cli-command: object-storage + parameters: + - name: clusterId + in: path + description: The ID of the Cluster. + required: true + schema: + type: string get: - x-linode-grant: read_only - parameters: - - $ref: '#/components/parameters/pageOffset' - - $ref: '#/components/parameters/pageSize' + operationId: getObjectStorageCluster + x-linode-cli-action: clusters-view + servers: + - url: https://api.linode.com/v4 + summary: Cluster View + description: | + Returns a single Object Storage Cluster. tags: - - Tags - summary: Tags List - description: > - Tags are User-defined labels attached to objects in your Account, such - as Linodes. They are used for specifying and grouping attributes of - objects that are relevant to the User. - - - This endpoint returns a paginated list of Tags on your account. - operationId: getTags - x-linode-cli-action: list + - Object Storage + responses: + '200': + description: The requested Cluster + content: + application/json: + schema: + $ref: '#/components/schemas/ObjectStorageCluster' + default: + $ref: '#/components/responses/ErrorResponse' + x-code-samples: + - lang: Shell + source: > + curl -H "Authorization: Bearer $TOKEN" \ + https://api.linode.com/v4/object-storage/clusters/us-east-1 + - lang: CLI + source: > + linode-cli object-storage clusters-view us-east-1 + /object-storage/keys: + x-linode-cli-command: object-storage + get: + operationId: getObjectStorageKeys + x-linode-cli-action: keys-list + servers: + - url: https://api.linode.com/v4 + tags: + - Object Storage + summary: Object Storage Keys List + description: | + Returns a paginated list of Object Storage Keys for authenticating to + the Object Storage S3 API. security: - personalAccessToken: [] - oauth: - - account:read_only + - object_storage:read_only responses: '200': - description: A paginated list of Tags + description: A paginated list of Object Storage Keys content: application/json: schema: @@ -15368,7 +16009,7 @@ paths: data: type: array items: - $ref: '#/components/schemas/Tag' + $ref: '#/components/schemas/ObjectStorageKey' page: $ref: '#/components/schemas/PaginationEnvelope/properties/page' pages: @@ -15381,450 +16022,314 @@ paths: - lang: Shell source: > curl -H "Authorization: Bearer $TOKEN" \ - https://api.linode.com/v4/tags + https://api.linode.com/v4/object-storage/keys + - lang: CLI + source: > + linode-cli object-storage keys-list post: - tags: - - Tags - summary: New Tag Create - description: > - Creates a new Tag and optionally tags requested objects with it - immediately. + operationId: createObjectStorageKeys + x-linode-cli-action: keys-create + servers: + - url: https://api.linode.com/v4 + summary: Object Storage Key Create + description: | + Provisions a new Object Storage Key on your account. + + * To create a Limited Access Key with specific permissions, send a `bucket_access` + array. + * To create a Limited Access Key without access to any buckets, send an empty + `bucket_access` array. - **Important**: You must be an unrestricted User in order to add or modify - Tags. - operationId: createTag - x-linode-cli-action: create + * To create an Access Key with unlimited access to all clusters and all buckets, + omit the `bucket_access` array. + tags: + - Object Storage security: - personalAccessToken: [] - oauth: - - account:read_write + - object_storage:read_write requestBody: description: > - The tag to create, and optionally the objects to tag. + The label of the key to create. This is used to identify the created key. content: application/json: schema: - type: object - required: - - label - properties: - label: - type: string - description: > - The new Tag. - minLength: 3 - maxLength: 50 - example: example tag - linodes: - type: array - items: - type: integer - description: > - A list of Linode IDs to apply the new Tag to. You must be - allowed to `read_write` all of the requested Linodes, or the - Tag will not be created and an error will be returned. - example: - - 123 - - 456 - domains: - type: array - items: - type: integer - description: > - A list of Domain IDs to apply the new Tag to. You must be - allowed to `read_write` all of the requested Domains, or the - Tag will not be created and an error will be returned. - example: - - 564 - - 565 - volumes: - type: array - items: - type: integer - description: > - A list of Volume IDs to apply the new Tag to. You must be - allowed to `read_write` all of the requested Volumes, or the - Tag will not be created and an error will be returned. - example: - - 9082 - - 10003 - nodebalancers: - type: array - items: - type: integer - description: > - A list of NodeBalancer IDs to apply the new Tag to. You must - be allowed to `read_write` all of the requested NodeBalancers, - or the Tag will not be created and an error will be returned. - example: - - 10301 - - 10501 + $ref: '#/components/schemas/ObjectStorageKey' responses: '200': - description: The new Tag. + description: The new keypair. **This is the only time** the secret key is returned. content: application/json: schema: - $ref: '#/components/schemas/Tag' + $ref: '#/components/schemas/ObjectStorageKey' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - - lang: Shell - source: > - curl -H "Content-Type: application/json" \ - -H "Authorization: Bearer $TOKEN" \ - -X POST -d '{ - "label": "example tag", - "linodes": [123,456], - "volumes": [9082,10003] - }' \ - https://api.linode.com/v4/tags - - lang: CLI - source: > - linode-cli tags create \ - --label 'example tag' \ - --linodes 123 \ - --linodes 456 \ - --volumes 9082 \ - --volumes 10003 - /tags/{label}: - x-linode-cli-command: tags + - lang: Shell + source: > + curl -H "Content-Type: application/json" \ + -H "Authorization: Bearer $TOKEN" \ + -X POST -d '{ + "label": "my-object-storage-key", + "bucket_access": [ + { + "cluster": "ap-south-1", + "bucket_name": "bucket-example-1", + "permissions": "read_write" + }, + { + "cluster": "us-east-1", + "bucket_name": "bucket-example-2", + "permissions": "read_only" + } + ] + }' \ + https://api.linode.com/v4/object-storage/keys + - lang: CLI + source: > + linode-cli object-storage keys-create \ + --label "my-object-storage-key" \ + --bucket_access '[{"cluster": "ap-south-1", "bucket_name": "bucket-example-1", "permissions": "read_write" }]' + /object-storage/keys/{keyId}: + x-linode-cli-command: object-storage parameters: - - name: label - in: path - schema: - type: string - required: true + - name: keyId + in: path + description: The key to look up. + required: true + schema: + type: integer get: - summary: Tagged Objects List - description: > - Returns a paginated list of all objects you've tagged with the requested - Tag. This is a mixed collection of all object types. - tags: - - Tags - operationId: getTaggedObjects - x-linode-cli-command: view - x-linode-cli-skip: true - parameters: - - $ref: '#/components/parameters/pageOffset' - - $ref: '#/components/parameters/pageSize' + operationId: getObjectStorageKey + x-linode-cli-action: keys-view + servers: + - url: https://api.linode.com/v4 + summary: Object Storage Key View + description: | + Returns a single Object Storage Key provisioned for your account. security: - personalAccessToken: [] - oauth: - - account:read_only + - object_storage:read_only + tags: + - Object Storage responses: '200': - description: > - A paginated list of objects, organized by type, that have been - tagged with the requested Tag. + description: The keypair content: application/json: schema: - properties: - data: - type: array - items: - type: object - properties: - type: - type: string - example: 'linode' - data: - oneOf: - - x-linode-ref-name: "linode" - $ref: '#/components/schemas/Linode' - - x-linode-ref-name: "domain" - $ref: '#/components/schemas/Domain' - - x-linode-ref-name: "volume" - $ref: '#/components/schemas/Volume' - - x-linode-ref-name: "nodeBalancer" - $ref: '#/components/schemas/NodeBalancer' - discriminator: - propertyName: type - page: - $ref: '#/components/schemas/PaginationEnvelope/properties/page' - pages: - $ref: '#/components/schemas/PaginationEnvelope/properties/pages' - results: - $ref: '#/components/schemas/PaginationEnvelope/properties/results' + $ref: '#/components/schemas/ObjectStorageKey' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > curl -H "Authorization: Bearer $TOKEN" \ - "https://api.linode.com/v4/tags/example tag" - delete: - summary: Tag Delete - description: > - Remove a Tag from all objects and delete it. - - - **Important**: You must be an unrestricted User in order to add or modify - Tags. - tags: - - Tags - operationId: deleteTag - x-linode-cli-action: delete + https://api.linode.com/v4/object-storage/keys/12345 + - lang: CLI + source: > + linode-cli object-storage keys-view \ + --keyId 12345 + put: + operationId: updateObjectStorageKey + x-linode-cli-action: keys-update + servers: + - url: https://api.linode.com/v4 + summary: Object Storage Key Update + description: | + Updates an Object Storage Key on your account. security: - personalAccessToken: [] - oauth: - - account:read_write + - object_storage:read_write + tags: + - Object Storage + requestBody: + description: The fields to update. + content: + application/json: + schema: + type: object + properties: + label: + type: string + description: The label for this keypair, for display purposes only. + example: my-key responses: '200': - description: Tag deleted. + description: Update Successful content: application/json: schema: - type: object + $ref: '#/components/schemas/ObjectStorageKey' default: $ref: '#/components/responses/ErrorResponse' - /volumes: - x-linode-cli-command: volumes - get: - x-linode-grant: read_only - parameters: - - $ref: '#/components/parameters/pageOffset' - - $ref: '#/components/parameters/pageSize' - summary: Volumes List - description: > - Returns a paginated list of Volumes you have permission to view. - tags: - - Volumes - operationId: getVolumes - x-linode-cli-action: list + x-code-samples: + - lang: Shell + source: > + curl -H "Content-Type: application/json" \ + -H "Authorization: Bearer $TOKEN" \ + -X PUT -d '{ + "label": "my-object-storage-key" + }' \ + https://api.linode.com/v4/object-storage/keys/12345 + - lang: CLI + source: > + linode-cli object-storage keys-update \ + --keyId 12345 + --label "my-object-storage-key" + delete: + operationId: deleteObjectStorageKey + x-linode-cli-action: keys-delete + servers: + - url: https://api.linode.com/v4 + summary: Object Storage Key Revoke + description: | + Revokes an Object Storage Key. This keypair will no longer be usable by third-party clients. security: - personalAccessToken: [] - oauth: - - volumes:read_only + - object_storage:read_write + tags: + - Object Storage responses: '200': - description: Returns an array of all Volumes on your Account. + description: Deletion successful content: application/json: schema: type: object - properties: - data: - type: array - items: - $ref: '#/components/schemas/Volume' - page: - $ref: '#/components/schemas/PaginationEnvelope/properties/page' - pages: - $ref: '#/components/schemas/PaginationEnvelope/properties/pages' - results: - $ref: '#/components/schemas/PaginationEnvelope/properties/results' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > curl -H "Authorization: Bearer $TOKEN" \ - https://api.linode.com/v4/volumes + -X DELETE \ + https://api.linode.com/v4/object-storage/keys/12345 - lang: CLI source: > - linode-cli volumes list + linode-cli object-storage keys-delete 12345 + /object-storage/cancel: + x-linode-cli-command: object-storage post: - x-linode-charge: true - x-linode-grant: add_volumes - summary: Volume Create - description: > - Creates a Volume on your Account. In order - for this to complete successfully, your User must have the `add_volumes` - grant. Creating a new Volume will start accruing additional charges - on your account. - tags: - - Volumes - operationId: createVolume - x-linode-cli-action: create + operationId: cancelObjectStorage + x-linode-cli-action: cancel + servers: + - url: https://api.linode.com/v4 + summary: Object Storage Cancel + description: | + Cancel Object Storage on an Account. + + **Warning**: Removes all buckets and their contents from your Account. This data is irretrievable once removed. security: - personalAccessToken: [] - oauth: - - volumes:read_write - requestBody: - description: The requested initial state of a new Volume. - required: true - x-linode-cli-allowed-defaults: - - region - content: - application/json: - schema: - type: object - required: - - label - properties: - region: - type: string - description: > - The Region to deploy this Volume in. This is only required - if a linode_id is not given. - example: null - linode_id: - type: integer - description: > - The Linode this volume should be attached to upon creation. - If not given, the volume will be created without an attachment. - example: 123 - size: - type: integer - description: > - The initial size of this volume, in GB. Be aware that volumes - may only be resized up after creation. - example: 20 - default: 20 - label: - type: string - description: > - The Volume's label, which is also used in the - `filesystem_path` of the resulting volume. - example: my-volume - minLength: 1 - maxLength: 32 - pattern: '^[a-zA-Z]((?!--|__)[a-zA-Z0-9-_])+$' - config_id: - type: integer - description: > - When creating a Volume attached to a Linode, the ID of the - Linode Config to include the new Volume in. This Config - must belong to the Linode referenced by `linode_id`. Must - _not_ be provided if `linode_id` is not sent. If a - `linode_id` is sent without a `config_id`, the volume will be - attached: - - * to the Linode's only config if it only has one config. - * to the Linode's last used config, if possible. - - If no config can be selected for attachment, an error will be - returned. - example: 23456 - tags: - x-linode-filterable: true - description: > - An array of Tags applied to this object. Tags are for organizational - purposes only. - type: array - items: - type: string - example: - - example tag - - another example + - object_storage:read_write + tags: + - Object Storage responses: '200': - description: > - Creating Volume. + description: Object Storage cancellation successful. content: application/json: schema: - $ref: '#/components/schemas/Volume' + type: object default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - - lang: Shell - source: > - curl -H "Content-Type: application/json" \ - -H "Authorization: Bearer $TOKEN" \ - -X POST -d '{ - "label": "my-volume", - "size": 20, - "linode_id": 12346 - }' \ - https://api.linode.com/v4/volumes - - lang: CLI - source: > - linode-cli volumes create \ - --label my-volume \ - --size 20 \ - --linode_id 12346 \ - --no-defaults - /volumes/{volumeId}: + - lang: Shell + source: > + curl -H "Authorization: Bearer $TOKEN" \ + -X POST \ + https://api.linode.com/v4/object-storage/cancel + - lang: CLI + source: > + linode-cli object-storage cancel + /object-storage/buckets/{clusterId}/{bucket}/ssl: + x-linode-cli-command: object-storage parameters: - - name: volumeId + - name: clusterId in: path - description: ID of the Volume to look up. + description: The ID of the cluster this bucket exists in. required: true schema: - type: integer - x-linode-cli-command: volumes + type: string + - name: bucket + in: path + description: The bucket name. + required: true + schema: + type: string get: - x-linode-grant: read_only - parameters: - - $ref: '#/components/parameters/pageOffset' - - $ref: '#/components/parameters/pageSize' + operationId: getObjectStorageSSL + x-linode-cli-action: ssl-view + servers: + - url: https://api.linode.com/v4 + summary: Object Storage TLS/SSL Cert View + description: | + Returns a boolean value indicating if this bucket has a corresponding TLS/SSL certificate that was + uploaded by an Account user. tags: - - Volumes - summary: Volume View - description: > - Get information about a single Volume. - operationId: getVolume - x-linode-cli-action: view + - Object Storage security: - personalAccessToken: [] - oauth: - - volumes:read_only + - object_storage:read_only responses: '200': - description: Returns a single Volume object. + description: > + Returns a boolean value indicating if this bucket has a corresponding TLS/SSL certificate that was + uploaded by an Account user. content: application/json: schema: - $ref: '#/components/schemas/Volume' - links: - attach: - $ref: '#/components/links/attachVolume' - clone: - $ref: '#/components/links/cloneVolume' - detach: - $ref: '#/components/links/detachVolume' - resize: - $ref: '#/components/links/resizeVolume' + $ref: '#/components/schemas/ObjectStorageSSLResponse' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > curl -H "Authorization: Bearer $TOKEN" \ - https://api.linode.com/v4/volumes/12345 + https://api.linode.com/v4/object-storage/buckets/us-east-1/example-bucket/ssl - lang: CLI source: > - linode-cli volumes view 12345 - put: - x-linode-grant: read_write + linode-cli object-storage ssl-view \ + us-east-1 example-bucket + post: + operationId: createObjectStorageSSL + x-linode-cli-action: ssl-upload + servers: + - url: https://api.linode.com/v4 + summary: Object Storage TLS/SSL Cert Upload + description: | + Upload a TLS/SSL certificate and private key to be served when you visit your Object Storage bucket via HTTPS. + Your TLS/SSL certificate and private key are stored encrypted at rest. + + + To replace an expired certificate, [delete your current certificate](/docs/api/object-storage/#object-storage-tlsssl-cert-delete) + and upload a new one. tags: - - Volumes - summary: Volume Update - description: > - Updates a Volume that you have permission to `read_write`. - operationId: updateVolume - x-linode-cli-action: update + - Object Storage security: - personalAccessToken: [] - oauth: - - volumes:read_write + - object_storage:read_write requestBody: - description: > - If any updated field fails to pass validation, the Volume will not be - updated. - required: true + description: Upload this TLS/SSL certificate with its corresponding secret key. content: application/json: schema: - allOf: - - $ref: '#/components/schemas/Volume' - - type: object - properties: - size: - readOnly: true - linode_id: - readOnly: true + $ref: '#/components/schemas/ObjectStorageSSL' responses: '200': - description: The updated Volume. + description: Returns whether this bucket has a corresponding TLS/SSL certificate that was uploaded by a user. content: application/json: schema: - $ref: '#/components/schemas/Volume' + $ref: '#/components/schemas/ObjectStorageSSLResponse' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: @@ -15832,37 +16337,34 @@ paths: source: > curl -H "Content-Type: application/json" \ -H "Authorization: Bearer $TOKEN" \ - -X PUT -d '{ - "label": "my-volume" - }' \ - https://api.linode.com/v4/volumes/12345 + -X POST -d ‘{ + "certificate": "-----BEGIN CERTIFICATE-----\nMIIDbDCCAlQCCQCl\n-----END CERTIFICATE-----", + "private_key": "-----BEGIN PRIVATE KEY-----\nMIIEvgIBADIAQCQI\n-----END PRIVATE KEY-----" + }’ \ + https://api.linode.com/v4/object-storage/buckets/us-east-1/example-bucket/ssl - lang: CLI source: > - linode-cli volumes update 12345 \ - --label my_volume + linode-cli object-storage ssl-upload \ + us-east-1 example-bucket \ + --certificate "-----BEGIN CERTIFICATE-----\nMIIDbDCCAlQCCQCl\n-----END CERTIFICATE-----" \ + --private_key "-----BEGIN PRIVATE KEY-----\nMIIEvgIBADIAQCQI\n-----END PRIVATE KEY-----" delete: - x-linode-grant: read_write - tags: - - Volumes - summary: Volume Delete + operationId: deleteObjectStorageSSL + x-linode-cli-action: ssl-delete + servers: + - url: https://api.linode.com/v4 + summary: Object Storage TLS/SSL Cert Delete description: | - Deletes a Volume you have permission to `read_write`. - - * **Deleting a Volume is a destructive action and cannot be undone.** - - * Deleting stops billing for the Volume. You will be billed for time used within - the billing period the Volume was active. - - * Volumes that are migrating cannot be deleted until the migration is finished. - operationId: deleteVolume - x-linode-cli-action: delete + Deletes this Object Storage bucket's user uploaded TLS/SSL certificate and private key. + tags: + - Object Storage security: - personalAccessToken: [] - oauth: - - volumes:read_write + - object_storage:read_write responses: '200': - description: Volume deletion successful. + description: Deletes this Object Storage bucket's user uploaded TLS/SSL certificate and private key. content: application/json: schema: @@ -15872,143 +16374,116 @@ paths: x-code-samples: - lang: Shell source: > - curl -H "Content-Type: application/json" \ - -H "Authorization: Bearer $TOKEN" \ + curl -H "Authorization: Bearer $TOKEN" \ -X DELETE \ - https://api.linode.com/v4/volumes/12345 + https://api.linode.com/v4/object-storage/buckets/us-east-1/example-bucket/ssl - lang: CLI source: > - linode-cli volumes delete 12345 - /volumes/{volumeId}/attach: - parameters: - - name: volumeId - in: path - description: ID of the Volume to attach. - required: true - schema: - type: integer - x-linode-cli-command: volumes - post: - summary: Volume Attach - description: > - Attaches a Volume on your Account - to an existing Linode on your Account. In order for this request to - complete successfully, your User must have `read_only` or `read_write` - permission to the Volume and `read_write` permission to the Linode. - Additionally, the Volume and Linode must be located in the same Region. + linode-cli object-storage ssl-delete \ + us-east-1 example-bucket + /object-storage/transfer: + get: + operationId: getObjectStorageTransfer + x-linode-cli-skip: true + servers: + - url: https://api.linode.com/v4 + summary: Object Storage Transfer View + description: | + The amount of outbound data transfer used by your account's Object Storage buckets. + Object Storage adds 1 terabyte of outbound data transfer to your data transfer pool. + See the [Object Storage Pricing and Limitations](/docs/guides/pricing-and-limitations/) + guide for details on Object Storage transfer quotas. + tags: - - Volumes - operationId: attachVolume - x-linode-cli-action: attach + - Object Storage security: - personalAccessToken: [] - oauth: - - volumes:read_write - - linodes:read_write - requestBody: - description: Volume to attach to a Linode. - required: true - content: - application/json: - schema: - type: object - required: - - linode_id - properties: - linode_id: - type: integer - description: The ID of the Linode to attach the volume to. - config_id: - type: integer - description: > - The ID of the Linode Config to include this Volume in. Must - belong to the Linode referenced by `linode_id`. If not given, - the last booted Config will be chosen. - example: 23456 - persist_across_boots: - type: boolean - description: > - Defaults to true, if false is provided, the Volume will - not be attached to the Linode Config. In this case more than - 8 Volumes may be attached to a Linode if a Linode has - 16GB of RAM or more. The number of volumes that can be - attached is equal to the number of GB of RAM that the - Linode has, up to a maximum of 64. `config_id` should not - be passed if this is set to false and linode_id must be - passed. The Linode must be running. + - object_storage:read_only + responses: + '200': + description: > + Returns the amount of outbound data transfer used by your account's Object Storage buckets. + content: + application/json: + schema: + properties: + used: + type: integer + description: > + The amount of outbound data transfer used by your account's Object Storage buckets, + in bytes, for the current month’s billing cycle. + example: 12956600198 + readOnly: true + default: + $ref: '#/components/responses/ErrorResponse' + x-code-samples: + - lang: Shell + source: > + curl -H "Authorization: Bearer $TOKEN" \ + https://api.linode.com/v4/object-storage/transfer/ + /profile: + x-linode-cli-command: profile + get: + tags: + - Profile + summary: Profile View + description: > + Returns information about the current User. This can be used to see + who is acting in applications where more than one token is managed. For + example, in third-party OAuth applications. + + This endpoint is always accessible, no matter what OAuth scopes the acting token has. + operationId: getProfile + x-linode-cli-action: view + security: + - personalAccessToken: [] + - oauth: [] responses: '200': - description: Volume was attached to a Linode. + description: Profile response. content: application/json: schema: - $ref: '#/components/schemas/Volume' + $ref: '#/components/schemas/Profile' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: - lang: Shell source: > - curl -H "Content-Type: application/json" \ - -H "Authorization: Bearer $TOKEN" \ - -X POST -d '{ - "linode_id": 12346, - "config_id": 23456 - }' \ - https://api.linode.com/v4/volumes/12345/attach + curl -H "Authorization: Bearer $TOKEN" \ + https://api.linode.com/v4/profile - lang: CLI source: > - linode-cli volumes attach 12345 \ - --linode_id 12346 \ - --config_id 23456 - /volumes/{volumeId}/clone: - parameters: - - name: volumeId - in: path - description: ID of the Volume to clone. - required: true - schema: - type: integer - x-linode-cli-command: volumes - post: - x-linode-charge: true - x-linode-grant: add_volumes - summary: Volume Clone - description: > - Creates a Volume on your Account. In - order for this request to complete successfully, your User must have the - `add_volumes` grant. The new Volume will have the same size and data as - the source Volume. Creating a new Volume will incur a charge on your - Account. - - * Only Volumes with a `status` of "active" can be cloned. + linode-cli profile view + put: tags: - - Volumes - operationId: cloneVolume - x-linode-cli-action: clone + - Profile + summary: Profile Update + description: > + Update information in your Profile. This endpoint requires the + "account:read_write" OAuth Scope. + operationId: updateProfile + x-linode-cli-action: update security: - personalAccessToken: [] - oauth: - - volumes:read_write + - account:read_write requestBody: - description: The requested state your Volume will be cloned into. + description: The fields to update. required: true content: application/json: schema: - type: object - required: - - label - properties: - label: - $ref: '#/components/schemas/Volume/properties/label' + $ref: '#/components/schemas/Profile' responses: '200': - description: Clone started. + description: Profile updated successfully. content: application/json: schema: - $ref: '#/components/schemas/Volume' + $ref: '#/components/schemas/Profile' default: $ref: '#/components/responses/ErrorResponse' x-code-samples: @@ -16016,101 +16491,205 @@ paths: source: > curl -H "Content-Type: application/json" \ -H "Authorization: Bearer $TOKEN" \ - -X POST -d '{ - "label": "my-volume" + -X PUT -d '{ + "email": "example-user@gmail.com", + "timezone": "US/Eastern", + "email_notifications": true, + "lish_auth_method": "keys_only", + "authorized_keys": null, + "two_factor_auth": true, + "restricted": false }' \ - https://api.linode.com/v4/volumes/12345/clone + https://api.linode.com/v4/profile - lang: CLI source: > - linode-cli volumes clone 12345 \ - --label my-volume - /volumes/{volumeId}/detach: - parameters: - - name: volumeId - in: path - description: ID of the Volume to detach. - required: true - schema: - type: integer - x-linode-cli-command: volumes - post: - summary: Volume Detach - description: > - Detaches a Volume on your Account - from a Linode on your Account. In order for this request to - complete successfully, your User must have `read_write` access to the - Volume and `read_write` access to the Linode. + linode-cli profile update \ + --email example-user@gmail.com \ + --timezone US/Eastern \ + --email_notifications true \ + --list_auth_method keys_only \ + --two_factor_auth true \ + --restricted false + /profile/apps: + x-linode-cli-command: profile + get: + parameters: + - $ref: '#/components/parameters/pageOffset' + - $ref: '#/components/parameters/pageSize' tags: - - Volumes - operationId: detachVolume - x-linode-cli-action: detach + - Profile + summary: Authorized Apps List + description: > + This is a collection of OAuth apps that you've given access to your Account, and + includes the level of access granted. + operationId: getProfileApps + x-linode-cli-action: apps-list security: - personalAccessToken: [] - oauth: - - volumes:read_write - - linodes:read_write + - account:read_only responses: '200': - description: Volume was detached from a Linode. + description: | + A paginated list of apps you've authorized. content: application/json: schema: type: object - default: - $ref: '#/components/responses/ErrorResponse' - x-code-samples: - - lang: Shell - source: > - curl -H "Content-Type: application/json" \ - -H "Authorization: Bearer $TOKEN" \ - -X POST \ - https://api.linode.com/v4/volumes/12345/detach + properties: + data: + type: array + items: + $ref: '#/components/schemas/AuthorizedApp' + page: + $ref: '#/components/schemas/PaginationEnvelope/properties/page' + pages: + $ref: '#/components/schemas/PaginationEnvelope/properties/pages' + results: + $ref: '#/components/schemas/PaginationEnvelope/properties/results' + default: + $ref: '#/components/responses/ErrorResponse' + x-code-samples: + - lang: Shell + source: > + curl -H "Authorization: Bearer $TOKEN" \ + https://api.linode.com/v4/profile/apps - lang: CLI source: > - linode-cli volumes detach 12345 - /volumes/{volumeId}/resize: + linode-cli profile apps-list + /profile/apps/{appId}: parameters: - - name: volumeId - in: path - description: ID of the Volume to resize. - required: true - schema: - type: integer - x-linode-cli-command: volumes - post: - x-linode-charge: true - summary: Volume Resize + - name: appId + in: path + required: true + description: The authorized app ID to manage. + schema: + type: integer + x-linode-cli-command: profile + get: + tags: + - Profile + summary: Authorized App View description: > - Resize an existing Volume on your Account. In - order for this request to complete successfully, your User must have the - `read_write` permissions to the Volume. + Returns information about a single app you've authorized to access your + Account. + operationId: getProfileApp + x-linode-cli-action: app-view + security: + - personalAccessToken: [] + - oauth: + - account:read_only + responses: + '200': + description: The app requested. + content: + application/json: + schema: + $ref: '#/components/schemas/AuthorizedApp' + default: + $ref: '#/components/responses/ErrorResponse' + x-code-samples: + - lang: Shell + source: > + curl -H "Authorization: Bearer $TOKEN" \ + https://api.linode.com/v4/profile/apps/123 + - lang: CLI + source: > + linode-cli profile app-view 1234 + delete: + tags: + - Profile + summary: App Access Revoke + description: > + Expires this app token. This token may no longer be used to + access your Account. + operationId: deleteProfileApp + x-linode-cli-action: app-delete + security: + - personalAccessToken: [] + - oauth: + - account:read_write + responses: + '200': + description: App's authorization has been revoked. + content: + application/json: + schema: + type: object + default: + $ref: '#/components/responses/ErrorResponse' + x-code-samples: + - lang: Shell + source: > + curl -H "Authorization: Bearer $TOKEN" \ + -X DELETE \ + https://api.linode.com/v4/profile/apps/123 + - lang: CLI + source: > + linode-cli profile app-delete 123 + /profile/grants: + x-linode-cli-command: profile + get: + tags: + - Profile + summary: Grants List + description: > + This returns a GrantsResponse describing what the acting User has been + granted access to. For unrestricted users, this will return a 204 and + no body because unrestricted users have access to everything without + grants. This will not return information about entities you do not have + access to. This endpoint is useful when writing third-party OAuth + applications to see what options you should present to the acting User. - * Volumes can only be resized up. - * Only Volumes with a `status` of "active" can be resized. + For example, if they do not have `global.add_linodes`, you might not + display a button to deploy a new Linode. + + + Any client may access this endpoint; no OAuth scopes are required. + operationId: getProfileGrants + x-linode-cli-action: grants + x-linode-cli-skip: true + security: + - personalAccessToken: [] + - oauth: [] + responses: + '200': + description: GrantsResponse + content: + application/json: + schema: + $ref: '#/components/schemas/GrantsResponse' + '204': + description: > + This is an unrestricted User, who has no grants. This User can access + everything on the Account. + default: + $ref: '#/components/responses/ErrorResponse' + x-code-samples: + - lang: Shell + source: > + curl -H "Authorization: Bearer $TOKEN" \ + https://api.linode.com/v4/profile/grants + /profile/tfa-disable: + x-linode-cli-command: profile + post: tags: - - Volumes - operationId: resizeVolume - x-linode-cli-action: resize + - Profile + summary: Two Factor Authentication Disable + description: > + Disables Two Factor Authentication for your User. Once successful, + login attempts from untrusted computers will only require a password + before being successful. This is less secure, and is discouraged. + operationId: tfaDisable + x-linode-cli-action: tfa-disable security: - personalAccessToken: [] - oauth: - - volumes:read_write - requestBody: - description: The requested size to increase your Volume to. - required: true - content: - application/json: - schema: - type: object - required: - - size - properties: - size: - $ref: '#/components/schemas/Volume/properties/size' + - account:read_write responses: '200': - description: Volume resize started. + description: TFA disabled. content: application/json: schema: @@ -16122,77 +16701,2378 @@ paths: source: > curl -H "Content-Type: application/json" \ -H "Authorization: Bearer $TOKEN" \ - -X POST -d '{ - "size": 30 - }' \ - https://api.linode.com/v4/volumes/12345/resize + -X POST \ + https://api.linode.com/v4/profile/tfa-disable - lang: CLI source: > - linode-cli volumes resize 12345 \ - --size 30 -components: - securitySchemes: - personalAccessToken: - type: http - scheme: bearer - oauth: - type: oauth2 - flows: - authorizationCode: - authorizationUrl: 'https://login.linode.com/oauth/authorize' - tokenUrl: 'https://login.linode.com/oauth/token' - scopes: - 'account:read_only': Allows access to GET information about your Account. - 'account:read_write': Allows access to all endpoints related to your Account. - '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 acces 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. - 'maintenance:read_only': Allows access to GET information about Maintenance on your account. - '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. - responses: - AcceptedResponse: - description: | - Accepted with warning. - - A warnings array is included with the standard 200 response body. - content: - application/json: - schema: - type: object - properties: - warnings: - type: array - items: - $ref: '#/components/schemas/WarningObject' - DeprecatedResponse: + linode-cli profile tfa-disable + /profile/tfa-enable: + x-linode-cli-command: profile + post: + tags: + - Profile + summary: Two Factor Secret Create description: | - Request successful. This endpoint is deprecated and may be removed in a future release. + Generates a Two Factor secret for your User. To enable TFA for your User, enter the secret obtained from this command with the **Two Factor Authentication Confirm/Enable** ([POST /profile/tfa-enable-confirm](/docs/api/profile/#two-factor-authentication-confirmenable)) command. + Once enabled, logins from untrusted computers are required to provide + a TFA code before they are successful. - A warnings array is included with the standard 200 response body. - content: - application/json: - schema: - type: object + **Note**: Before you can enable TFA, security questions must be answered for your User by accessing the **Security Questions Answer** ([POST /profile/security-questions](/docs/api/profile/#security-questions-answer)) command. + operationId: tfaEnable + x-linode-cli-action: tfa-enable + security: + - personalAccessToken: [] + - oauth: + - account:read_write + responses: + '200': + description: Two Factor secret generated + content: + application/json: + schema: + properties: + secret: + type: string + description: > + Your Two Factor secret. This is used to generate + time-based two factor codes required for logging in. Doing + this will be required to confirm TFA an actually enable it. + example: 5FXX6KLACOC33GTC + expiry: + type: string + format: date-time + description: > + When this Two Factor secret expires. + example: 2018-03-01T00:01:01 + default: + $ref: '#/components/responses/ErrorResponse' + x-code-samples: + - lang: Shell + source: > + curl -H "Content-Type: application/json" \ + -H "Authorization: Bearer $TOKEN" \ + -X POST \ + https://api.linode.com/v4/profile/tfa-enable + - lang: CLI + source: > + linode-cli profile tfa-enable + /profile/tfa-enable-confirm: + x-linode-cli-command: profile + post: + tags: + - Profile + summary: Two Factor Authentication Confirm/Enable + description: > + Confirms that you can successfully generate Two Factor codes and + enables TFA on your Account. Once this is complete, login attempts + from untrusted computers will be required to provide a Two Factor code + before they are successful. + operationId: tfaConfirm + x-linode-cli-action: tfa-confirm + security: + - personalAccessToken: [] + - oauth: + - account:read_write + requestBody: + description: The Two Factor code you generated with your Two Factor secret. + required: true + content: + application/json: + schema: + properties: + tfa_code: + type: string + description: > + The Two Factor code you generated with your Two Factor secret. + These codes are time-based, so be sure it is current. + example: "213456" + responses: + '200': + description: TFA enabled successfully + content: + application/json: + schema: + properties: + scratch: + type: string + description: > + A one-use code that can be used in place of your Two Factor + code, in case you are unable to generate one. Keep this in + a safe place to avoid being locked out of your Account. + example: sample two factor scratch + default: + $ref: '#/components/responses/ErrorResponse' + x-code-samples: + - lang: Shell + source: > + curl -H "Content-Type: application/json" \ + -H "Authorization: Bearer $TOKEN" \ + -X POST -d '{ + "tfa_code": "213456" + }' \ + https://api.linode.com/v4/profile/tfa-enable-confirm + - lang: CLI + source: > + linode-cli profile tfa-confirm \ + --tfa_code 213456 + /profile/tokens: + x-linode-cli-command: profile + get: + tags: + - Profile + summary: Personal Access Tokens List + description: > + Returns a paginated list of Personal Access Tokens currently active for + your User. + operationId: getPersonalAccessTokens + x-linode-cli-action: tokens-list + security: + - personalAccessToken: [] + - oauth: + - account:read_only + responses: + '200': + description: A paginated list of active tokens. + content: + application/json: + schema: + type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/PersonalAccessToken' + page: + $ref: '#/components/schemas/PaginationEnvelope/properties/page' + pages: + $ref: '#/components/schemas/PaginationEnvelope/properties/pages' + results: + $ref: '#/components/schemas/PaginationEnvelope/properties/results' + default: + $ref: '#/components/responses/ErrorResponse' + x-code-samples: + - lang: Shell + source: > + curl -H "Authorization: Bearer $TOKEN" \ + https://api.linode.com/v4/profile/tokens + - lang: CLI + source: > + linode-cli profile tokens-list + post: + tags: + - Profile + summary: Personal Access Token Create + description: > + Creates a Personal Access Token for your User. The raw token will + be returned in the response, but will never be returned again afterward + so be sure to take note of it. You may create a token with _at most_ + the scopes of your current token. The created token will be able to + access your Account until the given expiry, or until it is revoked. + operationId: createPersonalAccessToken + x-linode-cli-action: token-create + security: + - personalAccessToken: [] + - oauth: + - account:read_write + requestBody: + description: Information about the requested token. + required: true + content: + application/json: + schema: + properties: + scopes: + type: string + format: oauth-scope + description: > + The scopes to create the token with. These cannot be changed + after creation, and may not exceed the scopes of the acting token. + If omitted, the new token will have the same scopes as the acting + token. + example: '*' + expiry: + type: string + format: date-time + description: > + When this token should be valid until. If omitted, the new token + will be valid until it is manually revoked. + example: null + label: + $ref: '#/components/schemas/PersonalAccessToken/properties/label' + responses: + '200': + description: Token created successfully. + content: + application/json: + schema: + $ref: '#/components/schemas/PersonalAccessToken' + default: + $ref: '#/components/responses/ErrorResponse' + x-code-samples: + - lang: Shell + source: > + curl -H "Content-Type: application/json" \ + -H "Authorization: Bearer $TOKEN" \ + -X POST -d '{ + "scopes": "*", + "expiry": "2018-01-01T13:46:32", + "label": "linode-cli" + }' \ + https://api.linode.com/v4/profile/tokens + - lang: CLI + source: > + linode-cli profile token-create \ + --scopes '*' \ + --expiry '2018-01-01T13:46:32' \ + --label linode-cli + /profile/tokens/{tokenId}: + parameters: + - name: tokenId + in: path + description: The ID of the token to access. + required: true + schema: + type: integer + x-linode-cli-command: profile + get: + tags: + - Profile + summary: Personal Access Token View + description: > + Returns a single Personal Access Token. + operationId: getPersonalAccessToken + x-linode-cli-action: token-view + security: + - personalAccessToken: [] + - oauth: + - account:read_only + responses: + '200': + description: The requested token. + content: + application/json: + schema: + $ref: '#/components/schemas/PersonalAccessToken' + default: + $ref: '#/components/responses/ErrorResponse' + x-code-samples: + - lang: Shell + source: > + curl -H "Authorization: Bearer $TOKEN" \ + https://api.linode.com/v4/profile/tokens/123 + - lang: CLI + source: > + linode-cli profile token-view 123 + put: + tags: + - Profile + summary: Personal Access Token Update + description: > + Updates a Personal Access Token. + operationId: updatePersonalAccessToken + x-linode-cli-action: token-update + security: + - personalAccessToken: [] + - oauth: + - account:read_write + requestBody: + description: The fields to update. + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/PersonalAccessToken' + responses: + '200': + description: Token updated successfully. + content: + application/json: + schema: + $ref: '#/components/schemas/PersonalAccessToken' + default: + $ref: '#/components/responses/ErrorResponse' + x-code-samples: + - lang: Shell + source: > + curl -H "Content-Type: application/json" \ + -H "Authorization: Bearer $TOKEN" \ + -X PUT -d '{ + "label": "linode-cli" + }' \ + https://api.linode.com/v4/profile/tokens/123 + - lang: CLI + source: > + linode-cli profile token-update 123 \ + --label linode-cli + delete: + tags: + - Profile + summary: Personal Access Token Revoke + description: > + Revokes a Personal Access Token. The token will be invalidated + immediately, and requests using that token will fail with a 401. It is + possible to revoke access to the token making the request to revoke a token, + but keep in mind that doing so could lose you access to the api and require + you to create a new token through some other means. + operationId: deletePersonalAccessToken + x-linode-cli-action: token-delete + security: + - personalAccessToken: [] + - oauth: + - account:read_write + responses: + '200': + description: Token revoked successfully. + content: + application/json: + schema: + type: object + default: + $ref: '#/components/responses/ErrorResponse' + x-code-samples: + - lang: Shell + source: > + curl -H "Authorization: Bearer $TOKEN" \ + -X DELETE \ + https://api.linode.com/v4/profile/tokens/123 + - lang: CLI + source: > + linode-cli profile token-delete 123 + /profile/logins: + x-linode-cli-command: profile + get: + tags: + - Profile + summary: Logins List + description: > + Returns a collection of successful account logins from this user during the last + 90 days. + operationId: getProfileLogins + x-linode-cli-action: logins-list + security: + - personalAccessToken: [] + - oauth: + - account:read_only + responses: + '200': + description: > + An array of successful account logins from this user during + the last 90 days. + content: + application/json: + schema: + type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/Login' + page: + $ref: '#/components/schemas/PaginationEnvelope/properties/page' + pages: + $ref: '#/components/schemas/PaginationEnvelope/properties/pages' + results: + $ref: '#/components/schemas/PaginationEnvelope/properties/results' + default: + $ref: '#/components/responses/ErrorResponse' + x-code-samples: + - lang: Shell + source: > + curl -H "Authorization: Bearer $TOKEN" \ + https://api.linode.com/v4/profile/logins + - lang: CLI + source: > + linode-cli profile logins-list + /profile/logins/{loginId}: + parameters: + - name: loginId + in: path + description: The ID of the login object to access. + required: true + schema: + type: integer + x-linode-cli-command: profile + get: + tags: + - Profile + summary: Login View + description: > + Returns a login object displaying information about a successful + account login from this user. + operationId: getProfileLogin + x-linode-cli-action: login-view + security: + - personalAccessToken: [] + - oauth: + - account:read_only + responses: + '200': + description: The requested login object. + content: + application/json: + schema: + $ref: '#/components/schemas/Login' + default: + $ref: '#/components/responses/ErrorResponse' + x-code-samples: + - lang: Shell + source: > + curl -H "Authorization: Bearer $TOKEN" \ + https://api.linode.com/v4/profile/logins/1234 + - lang: CLI + source: > + linode-cli profile login-view 1234 + /profile/devices: + x-linode-cli-command: profile + get: + tags: + - Profile + summary: Trusted Devices List + description: > + Returns a paginated list of active TrustedDevices for your User. + Browsers with an active Remember Me Session are logged into your account + until the session expires or is revoked. + operationId: getDevices + x-linode-cli-action: devices-list + security: + - personalAccessToken: [] + - oauth: + - account:read_only + responses: + '200': + description: Returns a paginated list of TrustedDevice objects. + content: + application/json: + schema: + type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/TrustedDevice' + page: + $ref: '#/components/schemas/PaginationEnvelope/properties/page' + pages: + $ref: '#/components/schemas/PaginationEnvelope/properties/pages' + results: + $ref: '#/components/schemas/PaginationEnvelope/properties/results' + default: + $ref: '#/components/responses/ErrorResponse' + x-code-samples: + - lang: Shell + source: > + curl -H "Content-Type: application/json" \ + -H "Authorization: Bearer $TOKEN" \ + https://api.linode.com/v4/profile/devices + - lang: CLI + source: > + linode-cli profile devices-list + /profile/devices/{deviceId}: + x-linode-cli-command: profile + parameters: + - name: deviceId + in: path + description: The ID of the TrustedDevice + required: true + schema: + type: integer + get: + tags: + - Profile + summary: Trusted Device View + description: > + Returns a single active TrustedDevice for your User. + operationId: getTrustedDevice + x-linode-cli-action: device-view + security: + - personalAccessToken: [] + - oauth: + - account:read_only + responses: + '200': + description: The requested TrustedDevice object + content: + application/json: + schema: + $ref: '#/components/schemas/TrustedDevice' + default: + $ref: '#/components/responses/ErrorResponse' + x-code-samples: + - lang: Shell + source: > + curl -H "Content-Type: application/json" \ + -H "Authorization: Bearer $TOKEN" \ + https://api.linode.com/v4/profile/devices/123 + - lang: CLI + source: > + linode-cli profile device-view 123 + delete: + tags: + - Profile + summary: Trusted Device Revoke + description: > + Revoke an active TrustedDevice for your User. Once a TrustedDevice is revoked, this + device will have to log in again before accessing your Linode account. + operationId: revokeTrustedDevice + x-linode-cli-action: device-revoke + security: + - personalAccessToken: [] + - oauth: + - account:read_write + responses: + '200': + description: Session revoked successfully + content: + application/json: + schema: + type: object + default: + $ref: '#/components/responses/ErrorResponse' + x-code-samples: + - lang: Shell + source: > + curl -H "Content-Type: application/json" \ + -H "Authorization: Bearer $TOKEN" \ + -X DELETE \ + https://api.linode.com/v4/profile/devices/123 + - lang: CLI + source: > + linode-cli profile device-revoke 123 + /profile/security-questions: + x-linode-cli-command: security-questions + get: + x-linode-grant: read_only + servers: + - url: https://api.linode.com/v4 + tags: + - Profile + summary: Security Questions List + description: > + Returns a collection of security questions and their responses, if any, for your User Profile. + operationId: getSecurityQuestions + x-linode-cli-action: list + security: + - personalAccessToken: [] + - oauth: + - account:read_only + responses: + '200': + description: Returns a list of security questions. + content: + application/json: + x-linode-cli-nested-list: security_questions + x-linode-cli-use-schema: + type: object + properties: + security_questions.id: + x-linode-cli-display: 1 + security_questions.question: + x-linode-cli-display: 2 + security_questions.response: + x-linode-cli-display: 3 + schema: + $ref: '#/components/schemas/SecurityQuestionsGet' + default: + $ref: '#/components/responses/ErrorResponse' + x-code-samples: + - lang: Shell + source: > + curl -H "Content-Type: application/json" \ + -H "Authorization: Bearer $TOKEN" \ + https://api.linode.com/v4/profile/security-questions + - lang: CLI + source: > + linode-cli security-questions list + post: + tags: + - Profile + summary: Security Questions Answer + description: | + Adds security question responses for your User. + + Requires exactly three unique questions. + + Previous responses are overwritten if answered or reset to `null` if unanswered. + + **Note**: Security questions must be answered for your User prior to accessing the **Two Factor Secret Create** ([POST /profile/tfa-enable](/docs/api/profile/#two-factor-secret-create)) command. + operationId: postSecurityQuestions + x-linode-cli-action: answer + x-linode-cli-skip: true + security: + - personalAccessToken: [] + - oauth: + - account:read_write + requestBody: + description: Answer Security Questions + content: + application/json: + schema: + $ref: '#/components/schemas/SecurityQuestionsPost' + responses: + '200': + description: Security Questions answered successfully. + content: + application/json: + schema: + $ref: '#/components/schemas/SecurityQuestionsPost' + default: + $ref: '#/components/responses/ErrorResponse' + x-code-samples: + - lang: Shell + source: > + curl -H "Content-Type: application/json" \ + -H "Authorization: Bearer $TOKEN" \ + -X POST -d '{ + "security_questions": [ + { + "question_id": 1, + "response": "secret answer 1" + }, + { + "question_id": 2, + "response": "secret answer 2" + }, + { + "question_id": 11, + "response": "secret answer 3" + } + ] + }' \ + https://api.linode.com/v4/profile/security-questions + /profile/sshkeys: + x-linode-cli-command: sshkeys + get: + x-linode-grant: read_only + parameters: + - $ref: '#/components/parameters/pageOffset' + - $ref: '#/components/parameters/pageSize' + tags: + - Profile + summary: SSH Keys List + description: > + Returns a collection of SSH Keys you've added to your Profile. + operationId: getSSHKeys + x-linode-cli-action: list + security: + - personalAccessToken: [] + - oauth: + - account:read_only + responses: + '200': + description: Returns a paginated list of SSH Key objects. + content: + application/json: + schema: + type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/SSHKey' + page: + $ref: '#/components/schemas/PaginationEnvelope/properties/page' + pages: + $ref: '#/components/schemas/PaginationEnvelope/properties/pages' + results: + $ref: '#/components/schemas/PaginationEnvelope/properties/results' + default: + $ref: '#/components/responses/ErrorResponse' + x-code-samples: + - lang: Shell + source: > + curl -H "Content-Type: application/json" \ + -H "Authorization: Bearer $TOKEN" \ + https://api.linode.com/v4/profile/sshkeys + - lang: CLI + source: > + linode-cli sshkeys list + post: + tags: + - Profile + summary: SSH Key Add + description: > + Adds an SSH Key to your Account profile. + operationId: addSSHKey + x-linode-cli-action: create + security: + - personalAccessToken: [] + - oauth: + - account:read_write + requestBody: + description: Add SSH Key + content: + application/json: + schema: + $ref: '#/components/schemas/SSHKeyRequest' + responses: + '200': + description: SSH Key associated successfully. + content: + application/json: + schema: + $ref: '#/components/schemas/SSHKey' + default: + $ref: '#/components/responses/ErrorResponse' + x-code-samples: + - lang: Shell + source: > + curl -H "Content-Type: application/json" \ + -H "Authorization: Bearer $TOKEN" \ + -X POST -d '{ + "label": "My SSH Key" + "ssh_key": "ssh-rsa AAAA_valid_public_ssh_key_123456785== user@their-computer" + }' \ + https://api.linode.com/v4/profile/sshkeys + - lang: CLI + source: > + linode-cli sshkeys create \ + --label "My SSH Key" + --ssh_key "ssh-rsa AAAA_valid_public_ssh_key_123456785== user@their-computer" + /profile/sshkeys/{sshKeyId}: + x-linode-cli-command: sshkeys + parameters: + - name: sshKeyId + in: path + description: The ID of the SSHKey + required: true + schema: + type: integer + get: + tags: + - Profile + summary: SSH Key View + description: > + Returns a single SSH Key object identified by `id` that you have access + to view. + operationId: getSSHKey + x-linode-cli-action: view + security: + - personalAccessToken: [] + - oauth: + - account:read_only + responses: + '200': + description: An SSH Key object + content: + application/json: + schema: + $ref: '#/components/schemas/SSHKey' + default: + $ref: '#/components/responses/ErrorResponse' + x-code-samples: + - lang: Shell + source: > + curl -H "Authorization: Bearer $TOKEN" \ + https://api.linode.com/v4/profile/sshkeys/42 + - lang: CLI + source: > + linode-cli sshkeys view 42 + put: + tags: + - Profile + summary: SSH Key Update + description: > + Updates an SSH Key that you have permission to `read_write`. + operationId: updateSSHKey + x-linode-cli-action: update + security: + - personalAccessToken: [] + - oauth: + - account:read_write + requestBody: + description: > + The fields to update. + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/SSHKey' + responses: + '200': + description: SSH Key updated successfully. + content: + application/json: + schema: + $ref: '#/components/schemas/SSHKey' + default: + $ref: '#/components/responses/ErrorResponse' + x-code-samples: + - lang: Shell + source: > + curl -H "Content-Type: application/json" \ + -H "Authorization: Bearer $TOKEN" \ + -X PUT -d '{ + "label": "my laptop" + }' \ + https://api.linode.com/v4/profile/sshkey/42 + - lang: CLI + source: > + linode-cli sshkey update 42 \ + --label "my laptop" + delete: + tags: + - Profile + summary: SSH Key Delete + description: > + Deletes an SSH Key you have access to. + + + **Note:** deleting an SSH Key will *not* remove it from any Linode or + Disk that was deployed with `authorized_keys`. In those cases, the keys + must be manually deleted on the Linode or Disk. + This endpoint will only delete the key's association from your Profile. + operationId: deleteSSHKey + x-linode-cli-action: delete + security: + - personalAccessToken: [] + - oauth: + - account:read_write + responses: + '200': + description: SSH Key deleted successfully. + content: + application/json: + schema: + type: object + default: + $ref: '#/components/responses/ErrorResponse' + x-code-samples: + - lang: Shell + source: > + curl -H "Content-Type: application/json" \ + -H "Authoriztion: Bearer $TOKEN" \ + -X DELETE \ + https://api.linode.com/v4/profile/sshkeys/42 + - lang: CLI + source: > + linode-cli sshkey delete 42 + /profile/phone-number: + x-linode-cli-command: phone + delete: + x-linode-grant: read_write + tags: + - Profile + summary: Phone Number Delete + description: | + Delete the verified phone number for the User making this request. + + Use this command to opt out of SMS messages for the requesting User after a phone number has been verified with the **Phone Number Verify** ([POST /profile/phone-number/verify](/docs/api/profile/#phone-number-verify)) command. + operationId: deleteProfilePhoneNumber + x-linode-cli-command: delete + security: + - personalAccessToken: [] + - oauth: + - account:read_write + responses: + '200': + description: > + Phone number deletion request successful. + content: + application/json: + schema: + type: object + default: + $ref: '#/components/responses/ErrorResponse' + x-code-samples: + - lang: Shell + source: > + curl -H "Content-Type: application/json" \ + -H "Authorization: Bearer $TOKEN" \ + -X DELETE \ + https://api.linode.com/v4/profile/phone-number + - lang: CLI + source: > + linode-cli phone delete + post: + x-linode-grant: read_write + tags: + - Profile + summary: Phone Number Verification Code Send + description: | + Send a one-time verification code via SMS message to the submitted phone number. Providing your phone number helps ensure you can securely access your Account in case other ways to connect are lost. Your phone number is only used to verify your identity by sending an SMS message. Standard carrier messaging fees may apply. + + * By accessing this command you are opting in to receive SMS messages. You can opt out of SMS messages by using the **Phone Number Delete** ([DELETE /profile/phone-number](/docs/api/profile/#phone-number-delete)) command after your phone number is verified. + + * Verification codes are valid for 10 minutes after they are sent. + + * Subsequent requests made prior to code expiration result in sending the same code. + + Once a verification code is received, verify your phone number with the **Phone Number Verify** ([POST /profile/phone-number/verify](/docs/api/profile/#phone-number-verify)) command. + operationId: postProfilePhoneNumber + x-linode-cli-command: sms-code-send + security: + - personalAccessToken: [] + - oauth: + - account:read_write + requestBody: + description: Enter a phone number and country code for verification. + content: + application/json: + schema: + required: + - iso_code + - phone_number + type: object + properties: + iso_code: + type: string + description: The two-letter ISO 3166 country code associated with the phone number. + example: US + phone_number: + type: string + description: A valid phone number. + format: phone + example: 555-555-5555 + responses: + '200': + description: > + Phone number verification code request successful. + content: + application/json: + schema: + type: object + default: + $ref: '#/components/responses/ErrorResponse' + x-code-samples: + - lang: Shell + source: > + curl -H "Content-Type: application/json" \ + -H "Authorization: Bearer $TOKEN" \ + -X POST -d '{ + "iso_code": "US", + "phone_number": "555-555-5555" + }' \ + https://api.linode.com/v4/profile/phone-number + - lang: CLI + source: > + linode-cli phone sms-code-send \ + --iso-code US \ + --phone-number 555-555-5555 + /profile/phone-number/verify: + x-linode-cli-command: phone + post: + x-linode-grant: read_write + tags: + - Profile + summary: Phone Number Verify + description: | + Verify a phone number by confirming the one-time code received via SMS message after accessing the **Phone Verification Code Send** ([POST /profile/phone-number](/docs/api/profile/#phone-number-verification-code-send)) command. + + * Verification codes are valid for 10 minutes after they are sent. + + * Only the same User that made the verification code request can use that code with this command. + + Once completed, the verified phone number is assigned to the User making the request. To change the verified phone number for a User, first use the **Phone Number Delete** ([DELETE /profile/phone-number](/docs/api/profile/#phone-number-delete)) command, then begin the verification process again with the **Phone Verification Code Send** ([POST /profile/phone-number](/docs/api/profile/#phone-number-verification-code-send)) command. + operationId: postProfilePhoneNumberVerify + x-linode-cli-command: verify + security: + - personalAccessToken: [] + - oauth: + - account:read_write + requestBody: + description: Enter a phone verification code for confirmation. + content: + application/json: + schema: + required: + - otp_code + type: object + properties: + otp_code: + type: string + description: The one-time code received via SMS message after accessing the **Phone Verification Code Send** ([POST /profile/phone-number](/docs/api/profile/#phone-number-verification-code-send)) command. + example: "US" + responses: + '200': + description: > + Phone number verification successful. + content: + application/json: + schema: + type: object + default: + $ref: '#/components/responses/ErrorResponse' + x-code-samples: + - lang: Shell + source: > + curl -H "Content-Type: application/json" \ + -H "Authorization: Bearer $TOKEN" \ + -X POST -d '{ + "otp_code": "123456" + }' \ + https://api.linode.com/v4/profile/phone-number/verify + - lang: CLI + source: > + linode-cli phone verify \ + --otp_code 123456 + /profile/preferences: + x-linode-cli-command: profile + get: + x-linode-grant: read_only + tags: + - Profile + summary: User Preferences View + description: | + View a list of user preferences tied to the OAuth client that generated + the token making the request. The user preferences endpoints allow + consumers of the API to store arbitrary JSON data, such as a user's font + size preference or preferred display name. User preferences are available + for each OAuth client registered to your account, and as such an account can + have multiple user preferences. + operationId: getUserPreferences + x-linode-cli-action: preferences-view + x-linode-cli-skip: true + security: + - personalAccessToken: [] + - oauth: + - account:read_only + responses: + '200': + description: Returns an object of user preferences. + content: + application/json: + schema: + type: object + description: A dictionary of user preferences. + example: { "key1": "value1", "key2": "value2"} + default: + $ref: '#/components/responses/ErrorResponse' + x-code-samples: + - lang: Shell + source: > + curl -H "Content-Type: application/json" \ + -H "Authorization: Bearer $TOKEN" \ + -X GET \ + https://api.linode.com/v4/profile/preferences + put: + tags: + - Profile + summary: User Preferences Update + description: > + Updates a user's preferences. These preferences are tied to the + OAuth client that generated the token making the request. The user + preferences endpoints allow consumers of the API to store arbitrary + JSON data, such as a user's font size preference or preferred display + name. An account may have multiple preferences. Preferences, and the + pertaining request body, may contain any arbitrary JSON data that + the user would like to store. + operationId: updateUserPreferences + x-linode-cli-action: preferences-update + x-linode-cli-skip: true + security: + - personalAccessToken: [] + - oauth: + - account:read_write + requestBody: + description: > + The user preferences to update or store. + required: true + content: + application/json: + schema: + type: object + description: | + Arbitrary JSON of your choosing. + responses: + '200': + description: Returns an object of user preferences. + content: + application/json: + schema: + type: object + description: An object of user preferences. + example: { "key1": "value1", "key2": "value2"} + default: + $ref: '#/components/responses/ErrorResponse' + x-code-samples: + - lang: Shell + source: > + curl -H "Content-Type: application/json" \ + -H "Authorization: Bearer $TOKEN" \ + -X PUT -d '{ + "key1": "value1", + "key1": "value2" + }' \ + https://api.linode.com/v4/profile/preferences + + /regions: + x-linode-cli-command: regions + get: + tags: + - Regions + summary: Regions List + description: | + Lists the Regions available for Linode services. Not all services are guaranteed to be + available in all Regions. + x-linode-redoc-load-ids: true + operationId: getRegions + x-linode-cli-action: list + responses: + '200': + description: Returns an array of Regions. + content: + application/json: + schema: + type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/Region' + page: + $ref: '#/components/schemas/PaginationEnvelope/properties/page' + pages: + $ref: '#/components/schemas/PaginationEnvelope/properties/pages' + results: + $ref: '#/components/schemas/PaginationEnvelope/properties/results' + default: + $ref: '#/components/responses/ErrorResponse' + x-code-samples: + - lang: Shell + source: > + curl https://api.linode.com/v4/regions + - lang: CLI + source: > + linode-cli regions list + /regions/{regionId}: + x-linode-cli-command: regions + parameters: + - name: regionId + in: path + description: ID of the Region to look up. + required: true + schema: + type: string + get: + tags: + - Regions + summary: Region View + description: > + Returns a single Region. + operationId: getRegion + x-linode-cli-action: view + responses: + '200': + description: A single Region object. + content: + application/json: + schema: + $ref: '#/components/schemas/Region' + default: + $ref: '#/components/responses/ErrorResponse' + x-code-samples: + - lang: Shell + source: > + curl https://api.linode.com/v4/regions/us-east + - lang: CLI + source: > + linode-cli regions view us-east + /support/tickets: + x-linode-cli-command: tickets + get: + x-linode-grant: read_only + parameters: + - $ref: '#/components/parameters/pageOffset' + - $ref: '#/components/parameters/pageSize' + tags: + - Support + summary: Support Tickets List + description: > + Returns a collection of Support Tickets on your + Account. Support Tickets can be both tickets you open with Linode + for support, as well as tickets generated by Linode regarding + your Account. + + This collection includes all Support Tickets generated on your Account, + with open tickets returned first. + operationId: getTickets + x-linode-cli-action: list + security: + - personalAccessToken: [] + - oauth: + - account:read_only + responses: + '200': + description: Returns a paginated list of SupportTicket objects. + content: + application/json: + schema: + type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/SupportTicket' + page: + $ref: '#/components/schemas/PaginationEnvelope/properties/page' + pages: + $ref: '#/components/schemas/PaginationEnvelope/properties/pages' + results: + $ref: '#/components/schemas/PaginationEnvelope/properties/results' + default: + $ref: '#/components/responses/ErrorResponse' + x-code-samples: + - lang: Shell + source: > + curl -H "Authorization: Bearer $TOKEN" \ + https://api.linode.com/v4/support/tickets + - lang: CLI + source: > + linode-cli tickets list + post: + x-linode-grant: read_write + tags: + - Support + summary: Support Ticket Open + description: > + Open a Support Ticket. + + Only one of the ID attributes (`linode_id`, `domain_id`, etc.) can be set + on a single Support Ticket. + operationId: createTicket + x-linode-cli-action: create + security: + - personalAccessToken: [] + - oauth: + - account:read_write + requestBody: + description: Open a Support Ticket. + content: + application/json: + schema: + $ref: '#/components/schemas/SupportTicketRequest' + responses: + '200': + description: Support Ticket opened. + content: + application/json: + schema: + $ref: '#/components/schemas/SupportTicket' + default: + $ref: '#/components/responses/ErrorResponse' + x-code-samples: + - lang: Shell + source: > + curl -H "Content-Type: application/json" \ + -H "Authorization: Bearer $TOKEN" \ + -X POST -d '{ + "description": "I'm having trouble setting the root password on my Linode. I tried following the instructions but something is not working and I'm not sure what I'm doing wrong. Can you please help me figure out how I can reset it?", + "linode_id": 123, + "summary": "Having trouble resetting root password on my Linode" + }' \ + https://api.linode.com/v4/support/tickets + - lang: CLI + source: > + linode-cli tickets create \ + --description "I'm having trouble setting the root password on my Linode. I tried following the instructions but something is not working and I'm not sure what I'm doing wrong. Can you please help me figure out how I can reset it?" \ + --linode_id 123 \ + --summary "Having trouble resetting root password on my Linode" + /support/tickets/{ticketId}: + parameters: + - name: ticketId + in: path + description: The ID of the Support Ticket. + required: true + schema: + type: integer + x-linode-cli-command: tickets + get: + x-linode-grant: read_only + tags: + - Support + summary: Support Ticket View + description: > + Returns a Support Ticket under your Account. + operationId: getTicket + x-linode-cli-action: view + security: + - personalAccessToken: [] + - oauth: + - account:read_only + responses: + '200': + description: Returns a single SupportTicket object. + content: + application/json: + schema: + $ref: '#/components/schemas/SupportTicket' + default: + $ref: '#/components/responses/ErrorResponse' + x-code-samples: + - lang: Shell + source: > + curl -H "Authorization: Bearer $TOKEN" \ + https://api.linode.com/v4/support/tickets/11223344 + - lang: CLI + source: > + linode-cli tickets view 11223344 + /support/tickets/{ticketId}/attachments: + parameters: + - name: ticketId + in: path + description: The ID of the Support Ticket. + required: true + schema: + type: integer + x-linode-cli-command: tickets + post: + x-linode-grant: read_write + tags: + - Support + summary: Ticket Attachment Create + description: > + Adds a file attachment to an existing Support + Ticket on your Account. File attachments are used to assist our + Support team in resolving your Ticket. Examples of attachments + are screen shots and text files that provide additional information. + + Note: Accepted file extensions include: .gif, .jpg, .jpeg, .pjpg, + .pjpeg, .tif, .tiff, .png, .pdf, or .txt. + operationId: createTicketAttachment + x-linode-cli-skip: true + x-linode-cli-action: upload-attachment + security: + - personalAccessToken: [] + - oauth: + - account:read_write + requestBody: + description: Add an attachment. + required: true + content: + multipart/form-data: + schema: + required: + - file + properties: + file: + type: string + description: > + The local, absolute path to the file you want to attach to + your Support Ticket. + example: '/Users/LinodeGuy/pictures/screen_shot.jpg' + responses: + '200': + description: Attachment created. + content: + application/json: + schema: + type: object + default: + $ref: '#/components/responses/ErrorResponse' + x-code-samples: + - lang: Shell + source: > + curl -H "Authorization: Bearer $TOKEN" \ + -X POST \ + -F 'file=@/Users/LinodeGuy/pictures/screen_shot.jpg' \ + https://api.linode.com/v4/support/tickets/11223344/attachments + /support/tickets/{ticketId}/close: + parameters: + - name: ticketId + in: path + description: The ID of the Support Ticket. + required: true + schema: + type: integer + x-linode-cli-command: tickets + post: + x-linode-grant: read_write + tags: + - Support + summary: Support Ticket Close + description: > + Closes a Support Ticket you have access to modify. + operationId: closeTicket + x-linode-cli-action: close + security: + - personalAccessToken: [] + - oauth: + - account:read_write + responses: + '200': + description: Support Ticket closed successfully. + content: + application/json: + schema: + type: object + default: + $ref: '#/components/responses/ErrorResponse' + x-code-samples: + - lang: Shell + source: > + curl -H "Authorization: Bearer $TOKEN" \ + -X POST \ + https://api.linode.com/v4/support/tickets/11223344/close + - lang: CLI + source: > + linode-cli tickets close 11223344 + /support/tickets/{ticketId}/replies: + parameters: + - name: ticketId + in: path + description: The ID of the Support Ticket. + required: true + schema: + type: integer + x-linode-cli-command: tickets + get: + x-linode-grant: read_only + parameters: + - $ref: '#/components/parameters/pageOffset' + - $ref: '#/components/parameters/pageSize' + tags: + - Support + summary: Replies List + description: > + Returns a collection of replies to a Support Ticket on + your Account. + operationId: getTicketReplies + x-linode-cli-action: replies + security: + - personalAccessToken: [] + - oauth: + - account:read_only + responses: + '200': + description: Returns a paginated list of SupportTicketReply objects. + content: + application/json: + schema: + type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/SupportTicketReply' + page: + $ref: '#/components/schemas/PaginationEnvelope/properties/page' + pages: + $ref: '#/components/schemas/PaginationEnvelope/properties/pages' + results: + $ref: '#/components/schemas/PaginationEnvelope/properties/results' + default: + $ref: '#/components/responses/ErrorResponse' + x-code-samples: + - lang: Shell + source: > + curl -H "Authorization: Bearer $TOKEN" \ + https://api.linode.com/v4/support/tickets/11223344/replies + - lang: CLI + source: > + linode-cli tickets replies 11223344 + post: + x-linode-grant: read_write + tags: + - Support + summary: Reply Create + description: > + Adds a reply to an existing Support Ticket. + operationId: createTicketReply + x-linode-cli-action: reply + security: + - personalAccessToken: [] + - oauth: + - account:read_write + requestBody: + description: Add a reply. + required: true + content: + application/json: + schema: + required: + - description + properties: + description: + type: string + description: > + The content of your reply. + minLength: 1 + maxLength: 65535 + example: > + Thank you for your help. I was able to figure out what the + problem was and I successfully reset my password. You guys are + the best! + responses: + '200': + description: Reply created. + content: + application/json: + schema: + $ref: '#/components/schemas/SupportTicketReply' + default: + $ref: '#/components/responses/ErrorResponse' + x-code-samples: + - lang: Shell + source: > + curl -H "Content-Type: application/json" \ + -H "Authorization: Bearer $TOKEN" \ + -X POST -d '{ + "description": "Thank you for your help. I was able to figure out what the problem was and I successfully reset my password. You guys are the best!" + }' \ + https://api.linode.com/v4/support/tickets/11223344/replies + - lang: CLI + source: > + linode-cli tickets reply 11223344 \ + --description "Thank you for your help. I was able to figure out what the problem was and I successfully reset my password. You guys are the best!" + /tags: + x-linode-cli-command: tags + get: + x-linode-grant: read_only + parameters: + - $ref: '#/components/parameters/pageOffset' + - $ref: '#/components/parameters/pageSize' + tags: + - Tags + summary: Tags List + description: > + Tags are User-defined labels attached to objects in your Account, such + as Linodes. They are used for specifying and grouping attributes of + objects that are relevant to the User. + + + This endpoint returns a paginated list of Tags on your account. + operationId: getTags + x-linode-cli-action: list + security: + - personalAccessToken: [] + - oauth: + - account:read_only + responses: + '200': + description: A paginated list of Tags + content: + application/json: + schema: + type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/Tag' + page: + $ref: '#/components/schemas/PaginationEnvelope/properties/page' + pages: + $ref: '#/components/schemas/PaginationEnvelope/properties/pages' + results: + $ref: '#/components/schemas/PaginationEnvelope/properties/results' + default: + $ref: '#/components/responses/ErrorResponse' + x-code-samples: + - lang: Shell + source: > + curl -H "Authorization: Bearer $TOKEN" \ + https://api.linode.com/v4/tags + post: + tags: + - Tags + summary: New Tag Create + description: > + Creates a new Tag and optionally tags requested objects with it + immediately. + + + **Important**: You must be an unrestricted User in order to add or modify + Tags. + operationId: createTag + x-linode-cli-action: create + security: + - personalAccessToken: [] + - oauth: + - account:read_write + requestBody: + description: > + The tag to create, and optionally the objects to tag. + content: + application/json: + schema: + type: object + required: + - label + properties: + label: + type: string + description: > + The new Tag. + minLength: 3 + maxLength: 50 + example: example tag + linodes: + type: array + items: + type: integer + description: > + A list of Linode IDs to apply the new Tag to. You must be + allowed to `read_write` all of the requested Linodes, or the + Tag will not be created and an error will be returned. + example: + - 123 + - 456 + domains: + type: array + items: + type: integer + description: > + A list of Domain IDs to apply the new Tag to. You must be + allowed to `read_write` all of the requested Domains, or the + Tag will not be created and an error will be returned. + example: + - 564 + - 565 + volumes: + type: array + items: + type: integer + description: > + A list of Volume IDs to apply the new Tag to. You must be + allowed to `read_write` all of the requested Volumes, or the + Tag will not be created and an error will be returned. + example: + - 9082 + - 10003 + nodebalancers: + type: array + items: + type: integer + description: > + A list of NodeBalancer IDs to apply the new Tag to. You must + be allowed to `read_write` all of the requested NodeBalancers, + or the Tag will not be created and an error will be returned. + example: + - 10301 + - 10501 + responses: + '200': + description: The new Tag. + content: + application/json: + schema: + $ref: '#/components/schemas/Tag' + default: + $ref: '#/components/responses/ErrorResponse' + x-code-samples: + - lang: Shell + source: > + curl -H "Content-Type: application/json" \ + -H "Authorization: Bearer $TOKEN" \ + -X POST -d '{ + "label": "example tag", + "linodes": [123,456], + "volumes": [9082,10003] + }' \ + https://api.linode.com/v4/tags + - lang: CLI + source: > + linode-cli tags create \ + --label 'example tag' \ + --linodes 123 \ + --linodes 456 \ + --volumes 9082 \ + --volumes 10003 + /tags/{label}: + x-linode-cli-command: tags + parameters: + - name: label + in: path + schema: + type: string + required: true + get: + summary: Tagged Objects List + description: > + Returns a paginated list of all objects you've tagged with the requested + Tag. This is a mixed collection of all object types. + tags: + - Tags + operationId: getTaggedObjects + x-linode-cli-command: view + x-linode-cli-skip: true + parameters: + - $ref: '#/components/parameters/pageOffset' + - $ref: '#/components/parameters/pageSize' + security: + - personalAccessToken: [] + - oauth: + - account:read_only + responses: + '200': + description: > + A paginated list of objects, organized by type, that have been + tagged with the requested Tag. + content: + application/json: + schema: + properties: + data: + type: array + items: + type: object + properties: + type: + type: string + example: 'linode' + data: + oneOf: + - x-linode-ref-name: "linode" + $ref: '#/components/schemas/Linode' + - x-linode-ref-name: "domain" + $ref: '#/components/schemas/Domain' + - x-linode-ref-name: "volume" + $ref: '#/components/schemas/Volume' + - x-linode-ref-name: "nodeBalancer" + $ref: '#/components/schemas/NodeBalancer' + discriminator: + propertyName: type + page: + $ref: '#/components/schemas/PaginationEnvelope/properties/page' + pages: + $ref: '#/components/schemas/PaginationEnvelope/properties/pages' + results: + $ref: '#/components/schemas/PaginationEnvelope/properties/results' + default: + $ref: '#/components/responses/ErrorResponse' + x-code-samples: + - lang: Shell + source: > + curl -H "Authorization: Bearer $TOKEN" \ + "https://api.linode.com/v4/tags/example tag" + delete: + summary: Tag Delete + description: > + Remove a Tag from all objects and delete it. + + + **Important**: You must be an unrestricted User in order to add or modify + Tags. + tags: + - Tags + operationId: deleteTag + x-linode-cli-action: delete + security: + - personalAccessToken: [] + - oauth: + - account:read_write + responses: + '200': + description: Tag deleted. + content: + application/json: + schema: + type: object + default: + $ref: '#/components/responses/ErrorResponse' + /volumes: + x-linode-cli-command: volumes + get: + x-linode-grant: read_only + parameters: + - $ref: '#/components/parameters/pageOffset' + - $ref: '#/components/parameters/pageSize' + summary: Volumes List + description: > + Returns a paginated list of Volumes you have permission to view. + tags: + - Volumes + operationId: getVolumes + x-linode-cli-action: list + security: + - personalAccessToken: [] + - oauth: + - volumes:read_only + responses: + '200': + description: Returns an array of all Volumes on your Account. + content: + application/json: + schema: + type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/Volume' + page: + $ref: '#/components/schemas/PaginationEnvelope/properties/page' + pages: + $ref: '#/components/schemas/PaginationEnvelope/properties/pages' + results: + $ref: '#/components/schemas/PaginationEnvelope/properties/results' + default: + $ref: '#/components/responses/ErrorResponse' + x-code-samples: + - lang: Shell + source: > + curl -H "Authorization: Bearer $TOKEN" \ + https://api.linode.com/v4/volumes + - lang: CLI + source: > + linode-cli volumes list + post: + x-linode-charge: true + x-linode-grant: add_volumes + summary: Volume Create + description: > + Creates a Volume on your Account. In order + for this to complete successfully, your User must have the `add_volumes` + grant. Creating a new Volume will start accruing additional charges + on your account. + tags: + - Volumes + operationId: createVolume + x-linode-cli-action: create + security: + - personalAccessToken: [] + - oauth: + - volumes:read_write + requestBody: + description: The requested initial state of a new Volume. + required: true + x-linode-cli-allowed-defaults: + - region + content: + application/json: + schema: + type: object + required: + - label + properties: + region: + type: string + description: > + The Region to deploy this Volume in. This is only required + if a linode_id is not given. + example: null + linode_id: + type: integer + description: > + The Linode this volume should be attached to upon creation. + If not given, the volume will be created without an attachment. + example: 123 + size: + type: integer + description: > + The initial size of this volume, in GB. Be aware that volumes + may only be resized up after creation. + example: 20 + default: 20 + label: + type: string + description: > + The Volume's label, which is also used in the + `filesystem_path` of the resulting volume. + example: my-volume + minLength: 1 + maxLength: 32 + pattern: '^[a-zA-Z]((?!--|__)[a-zA-Z0-9-_])+$' + config_id: + type: integer + description: > + When creating a Volume attached to a Linode, the ID of the + Linode Config to include the new Volume in. This Config + must belong to the Linode referenced by `linode_id`. Must + _not_ be provided if `linode_id` is not sent. If a + `linode_id` is sent without a `config_id`, the volume will be + attached: + + * to the Linode's only config if it only has one config. + * to the Linode's last used config, if possible. + + If no config can be selected for attachment, an error will be + returned. + example: 23456 + tags: + x-linode-filterable: true + description: > + An array of Tags applied to this object. Tags are for organizational + purposes only. + type: array + items: + type: string + example: + - example tag + - another example + responses: + '200': + description: > + Creating Volume. + content: + application/json: + schema: + $ref: '#/components/schemas/Volume' + default: + $ref: '#/components/responses/ErrorResponse' + x-code-samples: + - lang: Shell + source: > + curl -H "Content-Type: application/json" \ + -H "Authorization: Bearer $TOKEN" \ + -X POST -d '{ + "label": "my-volume", + "size": 20, + "linode_id": 12346 + }' \ + https://api.linode.com/v4/volumes + - lang: CLI + source: > + linode-cli volumes create \ + --label my-volume \ + --size 20 \ + --linode_id 12346 \ + --no-defaults + /volumes/{volumeId}: + parameters: + - name: volumeId + in: path + description: ID of the Volume to look up. + required: true + schema: + type: integer + x-linode-cli-command: volumes + get: + x-linode-grant: read_only + parameters: + - $ref: '#/components/parameters/pageOffset' + - $ref: '#/components/parameters/pageSize' + tags: + - Volumes + summary: Volume View + description: > + Get information about a single Volume. + operationId: getVolume + x-linode-cli-action: view + security: + - personalAccessToken: [] + - oauth: + - volumes:read_only + responses: + '200': + description: Returns a single Volume object. + content: + application/json: + schema: + $ref: '#/components/schemas/Volume' + links: + attach: + $ref: '#/components/links/attachVolume' + clone: + $ref: '#/components/links/cloneVolume' + detach: + $ref: '#/components/links/detachVolume' + resize: + $ref: '#/components/links/resizeVolume' + default: + $ref: '#/components/responses/ErrorResponse' + x-code-samples: + - lang: Shell + source: > + curl -H "Authorization: Bearer $TOKEN" \ + https://api.linode.com/v4/volumes/12345 + - lang: CLI + source: > + linode-cli volumes view 12345 + put: + x-linode-grant: read_write + tags: + - Volumes + summary: Volume Update + description: > + Updates a Volume that you have permission to `read_write`. + operationId: updateVolume + x-linode-cli-action: update + security: + - personalAccessToken: [] + - oauth: + - volumes:read_write + requestBody: + description: > + If any updated field fails to pass validation, the Volume will not be + updated. + required: true + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/Volume' + - type: object + properties: + size: + readOnly: true + linode_id: + readOnly: true + responses: + '200': + description: The updated Volume. + content: + application/json: + schema: + $ref: '#/components/schemas/Volume' + default: + $ref: '#/components/responses/ErrorResponse' + x-code-samples: + - lang: Shell + source: > + curl -H "Content-Type: application/json" \ + -H "Authorization: Bearer $TOKEN" \ + -X PUT -d '{ + "label": "my-volume" + }' \ + https://api.linode.com/v4/volumes/12345 + - lang: CLI + source: > + linode-cli volumes update 12345 \ + --label my_volume + delete: + x-linode-grant: read_write + tags: + - Volumes + summary: Volume Delete + description: | + Deletes a Volume you have permission to `read_write`. + + * **Deleting a Volume is a destructive action and cannot be undone.** + + * Deleting stops billing for the Volume. You will be billed for time used within + the billing period the Volume was active. + + * Volumes that are migrating cannot be deleted until the migration is finished. + operationId: deleteVolume + x-linode-cli-action: delete + security: + - personalAccessToken: [] + - oauth: + - volumes:read_write + responses: + '200': + description: Volume deletion successful. + content: + application/json: + schema: + type: object + default: + $ref: '#/components/responses/ErrorResponse' + x-code-samples: + - lang: Shell + source: > + curl -H "Content-Type: application/json" \ + -H "Authorization: Bearer $TOKEN" \ + -X DELETE \ + https://api.linode.com/v4/volumes/12345 + - lang: CLI + source: > + linode-cli volumes delete 12345 + /volumes/{volumeId}/attach: + parameters: + - name: volumeId + in: path + description: ID of the Volume to attach. + required: true + schema: + type: integer + x-linode-cli-command: volumes + post: + summary: Volume Attach + description: > + Attaches a Volume on your Account + to an existing Linode on your Account. In order for this request to + complete successfully, your User must have `read_only` or `read_write` + permission to the Volume and `read_write` permission to the Linode. + Additionally, the Volume and Linode must be located in the same Region. + tags: + - Volumes + operationId: attachVolume + x-linode-cli-action: attach + security: + - personalAccessToken: [] + - oauth: + - volumes:read_write + - linodes:read_write + requestBody: + description: Volume to attach to a Linode. + required: true + content: + application/json: + schema: + type: object + required: + - linode_id + properties: + linode_id: + type: integer + description: The ID of the Linode to attach the volume to. + config_id: + type: integer + description: > + The ID of the Linode Config to include this Volume in. Must + belong to the Linode referenced by `linode_id`. If not given, + the last booted Config will be chosen. + example: 23456 + persist_across_boots: + type: boolean + description: > + Defaults to true, if false is provided, the Volume will + not be attached to the Linode Config. In this case more than + 8 Volumes may be attached to a Linode if a Linode has + 16GB of RAM or more. The number of volumes that can be + attached is equal to the number of GB of RAM that the + Linode has, up to a maximum of 64. `config_id` should not + be passed if this is set to false and linode_id must be + passed. The Linode must be running. + + responses: + '200': + description: Volume was attached to a Linode. + content: + application/json: + schema: + $ref: '#/components/schemas/Volume' + default: + $ref: '#/components/responses/ErrorResponse' + x-code-samples: + - lang: Shell + source: > + curl -H "Content-Type: application/json" \ + -H "Authorization: Bearer $TOKEN" \ + -X POST -d '{ + "linode_id": 12346, + "config_id": 23456 + }' \ + https://api.linode.com/v4/volumes/12345/attach + - lang: CLI + source: > + linode-cli volumes attach 12345 \ + --linode_id 12346 \ + --config_id 23456 + /volumes/{volumeId}/clone: + parameters: + - name: volumeId + in: path + description: ID of the Volume to clone. + required: true + schema: + type: integer + x-linode-cli-command: volumes + post: + x-linode-charge: true + x-linode-grant: add_volumes + summary: Volume Clone + description: > + Creates a Volume on your Account. In + order for this request to complete successfully, your User must have the + `add_volumes` grant. The new Volume will have the same size and data as + the source Volume. Creating a new Volume will incur a charge on your + Account. + + * Only Volumes with a `status` of "active" can be cloned. + tags: + - Volumes + operationId: cloneVolume + x-linode-cli-action: clone + security: + - personalAccessToken: [] + - oauth: + - volumes:read_write + requestBody: + description: The requested state your Volume will be cloned into. + required: true + content: + application/json: + schema: + type: object + required: + - label + properties: + label: + $ref: '#/components/schemas/Volume/properties/label' + responses: + '200': + description: Clone started. + content: + application/json: + schema: + $ref: '#/components/schemas/Volume' + default: + $ref: '#/components/responses/ErrorResponse' + x-code-samples: + - lang: Shell + source: > + curl -H "Content-Type: application/json" \ + -H "Authorization: Bearer $TOKEN" \ + -X POST -d '{ + "label": "my-volume" + }' \ + https://api.linode.com/v4/volumes/12345/clone + - lang: CLI + source: > + linode-cli volumes clone 12345 \ + --label my-volume + /volumes/{volumeId}/detach: + parameters: + - name: volumeId + in: path + description: ID of the Volume to detach. + required: true + schema: + type: integer + x-linode-cli-command: volumes + post: + summary: Volume Detach + description: > + Detaches a Volume on your Account + from a Linode on your Account. In order for this request to + complete successfully, your User must have `read_write` access to the + Volume and `read_write` access to the Linode. + tags: + - Volumes + operationId: detachVolume + x-linode-cli-action: detach + security: + - personalAccessToken: [] + - oauth: + - volumes:read_write + - linodes:read_write + responses: + '200': + description: Volume was detached from a Linode. + content: + application/json: + schema: + type: object + default: + $ref: '#/components/responses/ErrorResponse' + x-code-samples: + - lang: Shell + source: > + curl -H "Content-Type: application/json" \ + -H "Authorization: Bearer $TOKEN" \ + -X POST \ + https://api.linode.com/v4/volumes/12345/detach + - lang: CLI + source: > + linode-cli volumes detach 12345 + /volumes/{volumeId}/resize: + parameters: + - name: volumeId + in: path + description: ID of the Volume to resize. + required: true + schema: + type: integer + x-linode-cli-command: volumes + post: + x-linode-charge: true + summary: Volume Resize + description: > + Resize an existing Volume on your Account. In + order for this request to complete successfully, your User must have the + `read_write` permissions to the Volume. + + * Volumes can only be resized up. + + * Only Volumes with a `status` of "active" can be resized. + tags: + - Volumes + operationId: resizeVolume + x-linode-cli-action: resize + security: + - personalAccessToken: [] + - oauth: + - volumes:read_write + requestBody: + description: The requested size to increase your Volume to. + required: true + content: + application/json: + schema: + type: object + required: + - size + properties: + size: + $ref: '#/components/schemas/Volume/properties/size' + responses: + '200': + description: Volume resize started. + content: + application/json: + schema: + type: object + default: + $ref: '#/components/responses/ErrorResponse' + x-code-samples: + - lang: Shell + source: > + curl -H "Content-Type: application/json" \ + -H "Authorization: Bearer $TOKEN" \ + -X POST -d '{ + "size": 30 + }' \ + https://api.linode.com/v4/volumes/12345/resize + - lang: CLI + source: > + linode-cli volumes resize 12345 \ + --size 30 +components: + securitySchemes: + personalAccessToken: + type: http + scheme: bearer + oauth: + type: oauth2 + flows: + authorizationCode: + authorizationUrl: 'https://login.linode.com/oauth/authorize' + tokenUrl: 'https://login.linode.com/oauth/token' + scopes: + 'account:read_only': Allows access to GET information about your Account. + 'account:read_write': Allows access to all endpoints related to your Account. + '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 acces 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. + 'maintenance:read_only': Allows access to GET information about Maintenance on your account. + '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. + responses: + AcceptedResponse: + description: | + Accepted with warning. + + A warnings array is included with the standard 200 response body. + content: + application/json: + schema: + type: object + properties: + warnings: + type: array + items: + $ref: '#/components/schemas/WarningObject' + DeprecatedResponse: + description: | + Request successful. This endpoint is deprecated and may be removed in a future release. + + A warnings array is included with the standard 200 response body. + content: + application/json: + schema: + type: object properties: warnings: type: array @@ -16288,398 +19168,1193 @@ components: schemas: Account: type: object - description: Account object + description: Account object + properties: + active_promotions: + type: array + readOnly: true + items: + $ref: '#/components/schemas/Promotion' + active_since: + type: string + format: date-time + description: The datetime of when the account was activated. + example: '2018-01-01T00:01:01' + readOnly: true + address_1: + type: string + description: First line of this Account's billing address. + maxLength: 64 + example: 123 Main Street + address_2: + type: string + description: Second line of this Account's billing address. + maxLength: 64 + example: Suite A + balance: + type: number + readOnly: true + description: This Account's balance, in US dollars. + example: 200 + x-linode-cli-display: 4 + balance_uninvoiced: + type: number + readOnly: true + description: > + This Account's current estimated invoice in US dollars. This is not + your final invoice balance. Transfer charges are not included in + the estimate. + example: 145 + x-linode-cli-display: 4 + billing_source: + type: string + readOnly: true + enum: + - akamai + - linode + description: > + The source of service charges for this Account, as determined by its relationship with Akamai. + + Accounts that are associated with Akamai-specific customers return a value of `akamai`. + + All other Accounts return a value of `linode`. + example: akamai + capabilities: + type: array + items: + type: string + description: > + A list of capabilities your account supports. + example: + - Linodes + - NodeBalancers + - Block Storage + - Object Storage + readOnly: true + city: + type: string + description: The city for this Account's billing address. + maxLength: 24 + example: Philadelphia + credit_card: + type: object + readOnly: true + description: Credit Card information associated with this Account. + properties: + last_four: + type: string + description: > + The last four digits of the credit card associated with this + Account. + example: 1111 + expiry: + type: string + description: The expiration month and year of the credit card. + example: 11/2022 + company: + type: string + description: The company name associated with this Account. + maxLength: 128 + example: Linode LLC + country: + type: string + description: > + The two-letter ISO 3166 country code of this Account's billing address. + example: US + email: + type: string + description: The email address of the person associated with this Account. + maxLength: 128 + example: john.smith@linode.com + x-linode-cli-display: 3 + first_name: + type: string + description: The first name of the person associated with this Account. + maxLength: 50 + example: John + x-linode-cli-display: 1 + last_name: + type: string + description: The last name of the person associated with this Account. + maxLength: 50 + example: Smith + x-linode-cli-display: 2 + phone: + type: string + description: The phone number associated with this Account. + maxLength: 32 + example: 215-555-1212 + state: + type: string + description: > + If billing address is in the United States (US) or Canada (CA), only the two-letter + ISO 3166 State or Province code are accepted. If entering a US military address, state abbreviations (AA, AE, AP) should be entered. If the address is outside + the US or CA, this is the Province associated with the Account's billing + address. + maxLength: 24 + example: PA + tax_id: + type: string + description: > + The tax identification number associated with this Account, + for tax calculations in some countries. + If you do not live in a country that collects tax, this should be an empty string (`""`). + maxLength: 25 + example: ATU99999999 + euuid: + type: string + description: > + An external unique identifier for this account. + format: uuid + readOnly: true + example: E1AF5EEC-526F-487D-B317EBEB34C87D71 + zip: + type: string + description: | + The zip code of this Account's billing address. The following restrictions apply: + + - May only consist of letters, numbers, spaces, and hyphens. + - Must not contain more than 9 letter or number characters. + example: 19102-1234 + AccountSettings: + type: object + description: Account Settings object properties: - active_promotions: - type: array - items: - $ref: '#/components/schemas/Promotion' - active_since: + managed: + type: boolean + readOnly: true + description: > + Our 24/7 incident response service. This robust, multi-homed + monitoring system distributes monitoring checks to ensure that your + servers remain online and available at all times. Linode Managed can + monitor any service or software stack reachable over TCP or HTTP. + Once you add a service to Linode Managed, we'll monitor it for + connectivity, response, and total request time. + example: true + x-linode-cli-display: 3 + longview_subscription: + type: string + readOnly: true + description: > + The Longview Pro tier you are currently subscribed to. The value must be + a [Longview Subscription](/docs/api/longview/#longview-subscriptions-list) + ID or `null` for Longview Free. + example: longview-3 + x-linode-cli-display: 2 + network_helper: + type: boolean + description: > + Enables network helper across all users by default for + new Linodes and Linode Configs. + example: false + x-linode-cli-display: 1 + backups_enabled: + type: boolean + description: > + Account-wide backups default. If `true`, all Linodes created will + automatically be enrolled in the Backups service. If `false`, Linodes + will not be enrolled by default, but may still be enrolled on creation + or later. + example: true + x-linode-cli-display: 4 + object_storage: + type: string + readOnly: true + enum: + - disabled + - suspended + - active + description: > + A string describing the status of this account's Object Storage + service enrollment. + default: disabled + example: active + x-linode-cli-display: 5 + AuthorizedApp: + type: object + description: > + An application you have authorized access to your Account through OAuth. + properties: + id: + type: integer + description: > + This authorization's ID, used for revoking access. + example: 123 + readOnly: true + x-linode-cli-display: 1 + label: + type: string + description: > + The name of the application you've authorized. + example: example-app + readOnly: true + x-linode-cli-display: 2 + thumbnail_url: + type: string + format: url + description: > + The URL at which this app's thumbnail may be accessed. + example: null + readOnly: true + scopes: + type: string + format: oauth-scopes + description: > + The OAuth scopes this app was authorized with. This defines what parts of your + Account the app is allowed to access. + example: linodes:read_only + readOnly: true + x-linode-cli-display: 3 + created: type: string format: date-time - description: The datetime of when the account was activated. + description: When this app was authorized. example: '2018-01-01T00:01:01' readOnly: true - address_1: + x-linode-filterable: true + x-linode-cli-display: 5 + expiry: type: string - description: First line of this Account's billing address. - maxLength: 64 - example: 123 Main Street - address_2: + format: date-time + description: > + When the app's access to your account expires. If `null`, the app's + access must be revoked manually. + example: '2018-01-15T00:01:01' + readOnly: true + x-linode-cli-display: 6 + x-linode-filterable: true + nullable: true + website: type: string - description: Second line of this Account's billing address. - maxLength: 64 - example: Suite A - balance: - type: number + format: url + description: > + The website where you can get more information about this app. + example: example.org readOnly: true - description: This Account's balance, in US dollars. - example: 200 x-linode-cli-display: 4 - balance_uninvoiced: - type: number + Backup: + type: object + description: > + An object representing a Backup or snapshot for a Linode with Backup service + enabled. + properties: + id: + type: integer + readOnly: true + description: The unique ID of this Backup. + example: 123456 + x-linode-cli-display: 1 + type: + type: string + enum: + - auto + - snapshot + readOnly: true + description: > + This indicates whether the Backup is an automatic Backup or + manual snapshot taken by the User at a specific point in time. + example: snapshot + x-linode-cli-display: 3 + status: + type: string + enum: + - paused + - pending + - running + - needsPostProcessing + - successful + - failed + - userAborted + readOnly: true + description: The current state of a specific Backup. + example: successful + x-linode-cli-display: 2 + x-linode-cli-color: + successful: green + failed: red + userAborted: f + default_: yellow + created: + type: string + format: date-time readOnly: true - description: > - This Account's current estimated invoice in US dollars. This is not - your final invoice balance. Transfer charges are not included in - the estimate. - example: 145 + description: The date the Backup was taken. + example: '2018-01-15T00:01:01' x-linode-cli-display: 4 - capabilities: + updated: + type: string + format: date-time + readOnly: true + description: The date the Backup was most recently updated. + example: '2018-01-15T00:01:01' + finished: + type: string + format: date-time + readOnly: true + description: The date the Backup completed. + example: '2018-01-15T00:01:01' + label: + type: string + description: A label for Backups that are of type `snapshot`. + example: Webserver-Backup-2018 + x-linode-cli-display: 5 + nullable: true + configs: type: array items: type: string + example: My Debian 9 Config + readOnly: true description: > - A list of capabilities your account supports. - example: - - Linodes - - NodeBalancers - - Block Storage - - Object Storage + A list of the labels of the Configuration profiles that are part + of the Backup. + disks: + type: array + items: + type: object + properties: + size: + type: integer + example: 9001 + filesystem: + $ref: '#/components/schemas/Disk/properties/filesystem' + label: + type: string + example: My Debian 9 Disk readOnly: true - city: + description: > + A list of the disks that are part of the Backup. + CreditCard: + type: object + description: | + An object representing the credit card information you have on file with + Linode to make Payments against your Account. + required: + - card_number + - expiry_month + - expiry_year + - cvv + properties: + card_number: type: string - description: The city for this Account's billing address. + description: Your credit card number. No spaces or dashes allowed. + minLength: 14 maxLength: 24 - example: Philadelphia - credit_card: - type: object - readOnly: true - description: Credit Card information associated with this Account. - properties: - last_four: - type: string - description: > - The last four digits of the credit card associated with this - Account. - example: 1111 - expiry: - type: string - description: The expiration month and year of the credit card. - example: 11/2022 - company: - type: string - description: The company name associated with this Account. - maxLength: 128 - example: Linode LLC - country: - type: string + format: digits + example: 4111111111111111 + expiry_month: + type: integer + minimum: 1 + maximum: 12 description: > - The two-letter ISO 3166 country code of this Account's billing address. - example: US - email: - type: string - description: The email address of the person associated with this Account. - maxLength: 128 - example: john.smith@linode.com - x-linode-cli-display: 3 - first_name: + A value from 1-12 representing the expiration month of your credit card. + + * 1 = January + * 2 = February + * 3 = March + * Etc. + example: 12 + expiry_year: + type: integer + minLength: 4 + maxLength: 4 + description: | + A four-digit integer representing the expiration year of + your credit card. + + The combination of `expiry_month` and `expiry_year` + must result in a month/year combination of the current month or in + the future. An expiration date set in the past is invalid. + example: 2020 + cvv: type: string - description: The first name of the person associated with this Account. - maxLength: 50 - example: John + minLength: 3 + maxLength: 4 + format: digits + description: > + CVV (Card Verification Value) of the credit card, typically found on the back of the card. + example: '123' + Database: + type: object + description: A general Managed Database instance object containing properties that are identical for all database types. + properties: + id: + type: integer + description: A unique ID that can be used to identify and reference the Managed Database. + example: 123 x-linode-cli-display: 1 - last_name: + readOnly: true + label: type: string - description: The last name of the person associated with this Account. - maxLength: 50 - example: Smith + maxLength: 32 + minLength: 3 + x-linode-filterable: true + example: example-db + description: A unique, user-defined string referring to the Managed Database. x-linode-cli-display: 2 - phone: + type: type: string - description: The phone number associated with this Account. - maxLength: 32 - example: 215-555-1212 - state: + description: The Linode Instance type used by the Managed Database for its nodes. + example: g6-dedicated-2 + x-linode-filterable: true + x-linode-cli-display: 4 + engine: type: string - description: > - If billing address is in the United States (US) or Canada (CA), only the two-letter - ISO 3166 State or Province code are accepted. If the address is outside - the US or CA, this is the Province associated with the Account's billing - address. - maxLength: 24 - example: PA - tax_id: + enum: + - mongodb + - mysql + - postgresql + description: The Managed Database engine type. + example: mysql + x-linode-filterable: true + x-linode-cli-display: 6 + readOnly: true + version: type: string - description: > - The tax identification number associated with this Account, - for tax calculations in some countries. - If you do not live in a country that collects tax, this should be `null`. - maxLength: 100 - example: ATU99999999 - euuid: + description: The Managed Database engine version. + example: "8.0.26" + x-linode-filterable: true + x-linode-cli-display: 7 + readOnly: true + region: type: string - description: > - An external unique identifier for this account. - format: uuid + description: The [Region](/docs/api/regions/) ID for the Managed Database. + example: us-east + x-linode-filterable: true + x-linode-cli-display: 3 + status: + type: string + enum: + - provisioning + - active + - suspending + - suspended + - resuming + - restoring + - failed + - degraded + - updating + - backing_up + description: The operating status of the Managed Database. + example: active + x-linode-filterable: true + x-linode-cli-display: 100 + x-linode-cli-color: + provisioning: yellow + active: green + resuming: yellow + restoring: yellow + failed: red + degraded: red + updating: yellow + default_: white + readOnly: true + encrypted: + type: boolean + default: false + description: Whether the Managed Databases is encrypted. + example: false + allow_list: + type: array + example: + - "203.0.113.1/32" + - "192.0.1.0/24" + description: | + A list of IP addresses that can access the Managed Database. Each item can be a single IP address or a range in CIDR format. + + By default, this is an empty array (`[]`), which blocks all connections (both public and private) to the Managed Database. + items: + type: string + format: ipv4/prefix_length + pattern: '^([0-9]{1,3}\.){3}[0-9]{1,3}(\/([0-9]|[1-2][0-9]|3[0-2]))?$' + cluster_size: + type: integer + enum: + - 1 + - 3 + example: 3 + default: 1 + description: | + The number of Linode Instance nodes deployed to the Managed Database. + + Choosing 3 nodes creates a high availability cluster consisting of 1 primary node and 2 replica nodes. + x-linode-cli-display: 5 + hosts: + type: object + readOnly: true + description: The primary and secondary hosts for the Managed Database. These are assigned after provisioning is complete. + properties: + primary: + type: string + description: The primary host for the Managed Database. + example: lin-123-456-mysql-mysql-primary.servers.linodedb.net + nullable: true + secondary: + type: string + description: | + The secondary/private network host for the Managed Database. + + A private network host and a private IP can only be used to access a Database Cluster from Linodes in the same data center and will not incur transfer costs. + + **Note**: The secondary hostname is publicly viewable and accessible. + example: lin-123-456-mysql-primary-private.servers.linodedb.net + nullable: true + created: + type: string + format: date-time + description: When this Managed Database was created. + example: '2022-01-01T00:01:01' + readOnly: true + updated: + type: string + format: date-time + description: When this Managed Database was last updated. + example: '2022-01-01T00:01:01' + readOnly: true + updates: + type: object + description: Configuration settings for automated patch update maintenance for the Managed Database. + properties: + frequency: + type: string + default: weekly + enum: + - weekly + - monthly + description: Whether maintenance occurs on a weekly or monthly basis. + example: weekly + duration: + type: integer + minimum: 1 + maximum: 3 + description: The maximum maintenance window time in hours. + example: 3 + hour_of_day: + type: integer + minimum: 0 + maximum: 23 + description: The hour to begin maintenance based in UTC time. + example: 0 + day_of_week: + type: integer + minimum: 1 + maximum: 7 + description: The day to perform maintenance. 1=Monday, 2=Tuesday, etc. + example: 1 + week_of_month: + type: integer + minimum: 1 + maximum: 4 + nullable: true + description: | + The week of the month to perform `monthly` frequency updates. Defaults to `null`. + + * Required for `monthly` frequency updates. + + * Must be `null` for `weekly` frequency updates. + example: null + instance_uri: + type: string + example: "/v4/databases/mysql/instances/123" + description: | + Append this to `https://api.linode.com` to run commands for the Managed Database. readOnly: true - example: E1AF5EEC-526F-487D-B317EBEB34C87D71 - zip: + DatabaseBackup: + type: object + description: A database backup object. + properties: + id: + type: integer + description: The ID of the database backup object. + example: 123 + x-linode-cli-display: 1 + type: + type: string + enum: + - snapshot + - auto + description: The type of database backup, determined by how the backup was created. + example: auto + x-linode-filterable: true + x-linode-cli-display: 3 + label: type: string + maxLength: 30 description: | - The zip code of this Account's billing address. The following restrictions apply: + The database backup's label, for display purposes only. - - May only consist of letters, numbers, spaces, and hyphens. - - Must not contain more than 9 letter or number characters. - example: 19102-1234 - AccountSettings: + Must include only ASCII letters or numbers. + example: Scheduled - 02/04/22 11:11 UTC-XcCRmI + x-linode-cli-display: 2 + created: + type: string + format: datetime + example: '2022-01-01T00:01:01' + description: A time value given in a combined date and time format that represents when the database backup was created. + x-linode-filterable: true + x-linode-cli-display: 4 + DatabaseCredentials: type: object - description: Account Settings object + description: Managed Database object for database credentials. properties: - managed: - type: boolean + username: + type: string readOnly: true - description: > - Our 24/7 incident response service. This robust, multi-homed - monitoring system distributes monitoring checks to ensure that your - servers remain online and available at all times. Linode Managed can - monitor any service or software stack reachable over TCP or HTTP. - Once you add a service to Linode Managed, we'll monitor it for - connectivity, response, and total request time. - example: true - x-linode-cli-display: 3 - longview_subscription: + description: The root username for the Managed Database instance. + example: linroot + x-linode-cli-display: 1 + password: type: string readOnly: true - description: > - The Longview Pro tier you are currently subscribed to. The value must be - a [Longview Subscription](/docs/api/longview/#longview-subscriptions-list) - ID or `null` for Longview Free. - example: longview-3 + description: The randomly-generated root password for the Managed Database instance. + example: s3cur3P@ssw0rd x-linode-cli-display: 2 - network_helper: - type: boolean - description: > - Enables network helper across all users by default for - new Linodes and Linode Configs. - example: false + DatabaseEngine: + type: object + description: Managed Database engine object. + properties: + id: + type: string + example: mysql/8.0.26 + description: The Managed Database engine ID in engine/version format. x-linode-cli-display: 1 - backups_enabled: - type: boolean - description: > - Account-wide backups default. If `true`, all Linodes created will - automatically be enrolled in the Backups service. If `false`, Linodes - will not be enrolled by default, but may still be enrolled on creation - or later. - example: true - x-linode-cli-display: 4 - object_storage: + engine: type: string - readOnly: true - enum: - - disabled - - suspended - - active - description: > - A string describing the status of this account's Object Storage - service enrollment. - default: disabled - example: active - x-linode-cli-display: 5 - AuthorizedApp: + example: mysql + description: The Managed Database engine type. + x-linode-filterable: true + x-linode-cli-display: 2 + version: + type: string + example: "8.0.26" + description: The Managed Database engine version. + x-linode-filterable: true + x-linode-cli-display: 3 + DatabaseMongoDB: type: object - description: > - An application you have authorized access to your Account through OAuth. + description: Managed MongoDB Databases object. properties: id: - type: integer - description: > - This authorization's ID, used for revoking access. - example: 123 - readOnly: true + $ref: '#/components/schemas/Database/properties/id' x-linode-cli-display: 1 label: - type: string - description: > - The name of the application you've authorized. - example: example-app - readOnly: true + $ref: '#/components/schemas/Database/properties/label' x-linode-cli-display: 2 - thumbnail_url: + type: + $ref: '#/components/schemas/Database/properties/type' + x-linode-cli-display: 4 + engine: type: string - format: url - description: > - The URL at which this app's thumbnail may be accessed. - example: null + description: The Managed Database engine type. + example: mongodb + x-linode-filterable: true + x-linode-cli-display: 6 readOnly: true - scopes: + version: type: string - format: oauth-scopes - description: > - The OAuth scopes this app was authorized with. This defines what parts of your - Account the app is allowed to access. - example: linodes:read_only + description: The Managed Database engine version. + example: "4.4.10" + x-linode-filterable: true + x-linode-cli-display: 7 readOnly: true + region: + $ref: '#/components/schemas/Database/properties/region' x-linode-cli-display: 3 + status: + $ref: '#/components/schemas/Database/properties/status' + x-linode-cli-display: 100 + x-linode-cli-color: + provisioning: yellow + active: green + resuming: yellow + restoring: yellow + failed: red + degraded: red + default_: white + encrypted: + $ref: '#/components/schemas/Database/properties/encrypted' + allow_list: + $ref: '#/components/schemas/Database/properties/allow_list' + cluster_size: + $ref: '#/components/schemas/Database/properties/cluster_size' + x-linode-cli-display: 5 + hosts: + type: object + readOnly: true + description: The primary and secondary hosts for the Managed Database. These are assigned after provisioning is complete. + properties: + primary: + type: string + description: The primary host for the Managed Database. + example: lin-0000-0000.servers.linodedb.net + nullable: true + secondary: + type: string + description: | + The secondary/private network host for the Managed Database. + + A private network host and a private IP can only be used to access a Database Cluster from Linodes in the same data center and will not incur transfer costs. + + **Note**: The secondary hostname is publicly viewable and accessible. + example: null + nullable: true + peers: + type: array + description: | + An array of peer addresses for this Database. + items: + type: string + description: | + The peer address of a Managed MongoDB Database cluster node. Each node in a cluster has its own unique peer address. + example: + - lin-0000-0000.servers.linodedb.net + - lin-0000-0001.servers.linodedb.net + - lin-0000-0002.servers.linodedb.net + replica_set: + nullable: true + default: null + type: string + maxLength: 64 + description: | + Label for configuring a MongoDB [replica set](https://www.mongodb.com/docs/manual/replication/). Choose the same label on multiple Databases to include them in the same replica set. + + If `null`, the Database is not included in any replica set. + example: null + ssl_connection: + type: boolean + default: true + example: true + description: | + Whether to require SSL credentials to establish a connection to the Managed Database. + + Use the **Managed MongoDB Database Credentials View** ([GET /databases/mongodb/instances/{instanceId}/credentials](/docs/api/databases/#managed-mongodb-database-credentials-view)) command for access information. + compression_type: + type: string + enum: + - none + - snappy + - zlip + default: none + example: none + description: | + The type of data compression for this Database. + + Snappy has a lower comparative compression ratio and resource consumption rate. + + Zlip has a higher comparative compression ratio and resource consumption rate. + x-linode-cli-display: 99 + storage_engine: + type: string + enum: + - mmapv1 + - wiredtiger + default: wiredtiger + example: wiredtiger + description: | + The type of storage engine for this Database. + + **Note:** MMAPV1 is not available for MongoDB versions 4.0 and above. + port: + type: integer + description: The access port for this Managed Database. + example: 27017 + x-linode-cli-display: 98 created: + $ref: '#/components/schemas/Database/properties/created' + updated: + $ref: '#/components/schemas/Database/properties/updated' + updates: + $ref: '#/components/schemas/Database/properties/updates' + DatabaseMongoDBRequest: + type: object + description: Managed MongoDB Database request object. + required: + - label + - type + - engine + - region + properties: + label: + $ref: '#/components/schemas/DatabaseMongoDB/properties/label' + type: + $ref: '#/components/schemas/DatabaseMongoDB/properties/type' + engine: type: string - format: date-time - description: When this app was authorized. - example: '2018-01-01T00:01:01' + example: mongodb/4.4.10 + description: The Managed Database engine in engine/version format. + region: + $ref: '#/components/schemas/DatabaseMongoDB/properties/region' + encrypted: + $ref: '#/components/schemas/DatabaseMongoDB/properties/encrypted' + allow_list: + $ref: '#/components/schemas/DatabaseMongoDB/properties/allow_list' + cluster_size: + $ref: '#/components/schemas/DatabaseMongoDB/properties/cluster_size' + replica_set: + $ref: '#/components/schemas/DatabaseMongoDB/properties/replica_set' + ssl_connection: + $ref: '#/components/schemas/DatabaseMongoDB/properties/ssl_connection' + compression_type: + $ref: '#/components/schemas/DatabaseMongoDB/properties/compression_type' + storage_engine: + $ref: '#/components/schemas/DatabaseMongoDB/properties/storage_engine' + DatabaseMySQL: + type: object + description: Managed MySQL Databases object. + properties: + id: + $ref: '#/components/schemas/Database/properties/id' + x-linode-cli-display: 1 + label: + $ref: '#/components/schemas/Database/properties/label' + x-linode-cli-display: 2 + type: + $ref: '#/components/schemas/Database/properties/type' + x-linode-cli-display: 4 + engine: + type: string + description: The Managed Database engine type. + example: mysql + x-linode-filterable: true + x-linode-cli-display: 6 readOnly: true + version: + type: string + description: The Managed Database engine version. + example: "8.0.26" x-linode-filterable: true + x-linode-cli-display: 7 + readOnly: true + region: + $ref: '#/components/schemas/Database/properties/region' + x-linode-cli-display: 3 + status: + $ref: '#/components/schemas/Database/properties/status' + x-linode-cli-display: 100 + x-linode-cli-color: + provisioning: yellow + active: green + resuming: yellow + restoring: yellow + failed: red + degraded: red + default_: white + encrypted: + $ref: '#/components/schemas/Database/properties/encrypted' + allow_list: + $ref: '#/components/schemas/Database/properties/allow_list' + cluster_size: + $ref: '#/components/schemas/Database/properties/cluster_size' x-linode-cli-display: 5 - expiry: + hosts: + $ref: '#/components/schemas/Database/properties/hosts' + ssl_connection: + type: boolean + default: true + example: true + description: | + Whether to require SSL credentials to establish a connection to the Managed Database. + + Use the **Managed MySQL Database Credentials View** ([GET /databases/mysql/instances/{instanceId}/credentials](/docs/api/databases/#managed-mysql-database-credentials-view)) command for access information. + replication_type: type: string - format: date-time - description: > - When the app's access to your account expires. If `null`, the app's - access must be revoked manually. - example: '2018-01-15T00:01:01' - readOnly: true - x-linode-cli-display: 6 - x-linode-filterable: true - nullable: true - website: + enum: + - none + - asynch + - semi_synch + example: semi_synch + description: | + The replication method used for the Managed Database. + + Defaults to `none` for a single cluster and `semi_synch` for a high availability cluster. + + Must be `none` for a single node cluster. + + Must be `asynch` or `semi_synch` for a high availability cluster. + x-linode-cli-display: 99 + port: + type: integer + description: The access port for this Managed Database. + example: 3306 + x-linode-cli-display: 98 + created: + $ref: '#/components/schemas/Database/properties/created' + updated: + $ref: '#/components/schemas/Database/properties/updated' + updates: + $ref: '#/components/schemas/Database/properties/updates' + DatabaseMySQLRequest: + type: object + description: Managed MySQL Database request object. + required: + - label + - type + - engine + - region + properties: + label: + $ref: '#/components/schemas/DatabaseMySQL/properties/label' + type: + $ref: '#/components/schemas/DatabaseMySQL/properties/type' + engine: type: string - format: url - description: > - The website where you can get more information about this app. - example: example.org - readOnly: true - x-linode-cli-display: 4 - Backup: + example: mysql/8.0.26 + description: The Managed Database engine in engine/version format. + region: + $ref: '#/components/schemas/DatabaseMySQL/properties/region' + encrypted: + $ref: '#/components/schemas/DatabaseMySQL/properties/encrypted' + allow_list: + $ref: '#/components/schemas/DatabaseMySQL/properties/allow_list' + cluster_size: + $ref: '#/components/schemas/DatabaseMySQL/properties/cluster_size' + ssl_connection: + $ref: '#/components/schemas/DatabaseMySQL/properties/ssl_connection' + replication_type: + $ref: '#/components/schemas/DatabaseMySQL/properties/replication_type' + DatabasePostgreSQL: type: object - description: > - An object representing a Backup or snapshot for a Linode with Backup service - enabled. + description: Managed PostgreSQL Databases object. properties: id: - type: integer - readOnly: true - description: The unique ID of this Backup. - example: 123456 + $ref: '#/components/schemas/Database/properties/id' x-linode-cli-display: 1 + label: + $ref: '#/components/schemas/Database/properties/label' + x-linode-cli-display: 2 type: + $ref: '#/components/schemas/Database/properties/type' + x-linode-cli-display: 4 + engine: + type: string + description: The Managed Database engine type. + example: postgresql + x-linode-filterable: true + x-linode-cli-display: 6 + readOnly: true + version: type: string - enum: - - auto - - snapshot + description: The Managed Database engine version. + example: "13.2" + x-linode-filterable: true + x-linode-cli-display: 7 readOnly: true - description: > - This indicates whether the Backup is an automatic Backup or - manual snapshot taken by the User at a specific point in time. - example: snapshot + region: + $ref: '#/components/schemas/Database/properties/region' x-linode-cli-display: 3 status: - type: string - enum: - - paused - - pending - - running - - needsPostProcessing - - successful - - failed - - userAborted - readOnly: true - description: The current state of a specific Backup. - example: successful - x-linode-cli-display: 2 + $ref: '#/components/schemas/Database/properties/status' + x-linode-cli-display: 100 x-linode-cli-color: - successful: green + provisioning: yellow + active: green + resuming: yellow + restoring: yellow failed: red - userAborted: f - default_: yellow - created: - type: string - format: date-time + degraded: red + default_: white + encrypted: + $ref: '#/components/schemas/Database/properties/encrypted' + allow_list: + $ref: '#/components/schemas/Database/properties/allow_list' + cluster_size: + $ref: '#/components/schemas/Database/properties/cluster_size' + x-linode-cli-display: 5 + hosts: + type: object readOnly: true - description: The date the Backup was taken. - example: '2018-01-15T00:01:01' - x-linode-cli-display: 4 - updated: + description: The primary and secondary hosts for the Managed Database. These are assigned after provisioning is complete. + properties: + primary: + type: string + description: The primary host for the Managed Database. + example: lin-0000-000-pgsql-primary.servers.linodedb.net + nullable: true + secondary: + type: string + description: | + The secondary/private network host for the Managed Database. + + A private network host and a private IP can only be used to access a Database Cluster from Linodes in the same data center and will not incur transfer costs. + + **Note**: The secondary hostname is publicly viewable and accessible. + example: lin-0000-000-pgsql-primary-private.servers.linodedb.net + nullable: true + ssl_connection: + type: boolean + default: true + example: true + description: | + Whether to require SSL credentials to establish a connection to the Managed Database. + + Use the **Managed PostgreSQL Database Credentials View** ([GET /databases/postgresql/instances/{instanceId}/credentials](/docs/api/databases/#managed-postgresql-database-credentials-view)) command for access information. + replication_type: type: string - format: date-time - readOnly: true - description: The date the Backup was most recently updated. - example: '2018-01-15T00:01:01' - finished: + enum: + - none + - asynch + - semi_synch + example: semi_synch + description: | + The replication method used for the Managed Database. + + Defaults to `none` for a single cluster and `semi_synch` for a high availability cluster. + + Must be `none` for a single node cluster. + + Must be `asynch` or `semi_synch` for a high availability cluster. + x-linode-cli-display: 99 + replication_commit_type: type: string - format: date-time - readOnly: true - description: The date the Backup completed. - example: '2018-01-15T00:01:01' + enum: + - on + - local + - remote_write + - remote_apply + - off + default: local + example: local + description: | + The synchronization level of the replicating server. + + Must be `local` or `off` for the `asynch` replication type. + + Must be `on`, `remote_write`, or `remote_apply` for the `semi_synch` replication type. + x-linode-cli-display: 100 + port: + type: integer + description: The access port for this Managed Database. + example: 3306 + x-linode-cli-display: 98 + created: + $ref: '#/components/schemas/Database/properties/created' + updated: + $ref: '#/components/schemas/Database/properties/updated' + updates: + $ref: '#/components/schemas/Database/properties/updates' + DatabasePostgreSQLRequest: + type: object + description: Managed PostgreSQL Database request object. + required: + - label + - type + - engine + - region + properties: label: + $ref: '#/components/schemas/DatabasePostgreSQL/properties/label' + type: + $ref: '#/components/schemas/DatabasePostgreSQL/properties/type' + engine: type: string - description: A label for Backups that are of type `snapshot`. - example: Webserver-Backup-2018 - x-linode-cli-display: 5 - nullable: true - configs: - type: array - items: - type: string - example: My Debian 9 Config - readOnly: true - description: > - A list of the labels of the Configuration profiles that are part - of the Backup. - disks: - type: array - items: - type: object - properties: - size: - type: integer - example: 9001 - filesystem: - $ref: '#/components/schemas/Disk/properties/filesystem' - label: - type: string - example: My Debian 9 Disk - readOnly: true - description: > - A list of the disks that are part of the Backup. - CreditCard: + example: postgresql/13.2 + description: The Managed Database engine in engine/version format. + region: + $ref: '#/components/schemas/DatabasePostgreSQL/properties/region' + encrypted: + $ref: '#/components/schemas/DatabasePostgreSQL/properties/encrypted' + allow_list: + $ref: '#/components/schemas/DatabasePostgreSQL/properties/allow_list' + cluster_size: + $ref: '#/components/schemas/DatabasePostgreSQL/properties/cluster_size' + ssl_connection: + $ref: '#/components/schemas/DatabasePostgreSQL/properties/ssl_connection' + replication_type: + $ref: '#/components/schemas/DatabasePostgreSQL/properties/replication_type' + replication_commit_type: + $ref: '#/components/schemas/DatabasePostgreSQL/properties/replication_commit_type' + DatabaseSSL: type: object - description: | - An object representing the credit card information you have on file with - Linode to make Payments against your Account. - required: - - card_number - - expiry_month - - expiry_year - - cvv + description: Managed Database SSL object. properties: - card_number: + ca_certificate: type: string - description: Your credit card number. No spaces or dashes allowed. - minLength: 14 - maxLength: 24 - format: digits - example: 4111111111111111 - expiry_month: + format: base64 + description: The base64-encoded SSL CA certificate for the Managed Database instance. + example: LS0tLS1CRUdJ...== + x-linode-cli-display: 1 + DatabaseType: + type: object + description: Managed Database plan type object. + properties: + id: + type: string + description: The ID representing the Managed Database node plan type. + readOnly: true + example: g6-nanode-1 + x-linode-cli-display: 1 + label: + type: string + description: A human-readable string that describes each plan type. For display purposes only. + readOnly: true + example: DBaaS - Nanode 1GB + x-linode-cli-display: 2 + engines: + type: object + properties: + mysql: + type: array + description: Pricing details for MySQL Managed Databases. + items: + $ref: '#/components/schemas/DatabaseTypeEngine' + postgresql: + type: array + description: Pricing details for PostgreSQL Managed Databases. + items: + $ref: '#/components/schemas/DatabaseTypeEngine' + mongodb: + type: array + description: Pricing details for MongoDB Managed Databases. + items: + $ref: '#/components/schemas/DatabaseTypeEngine' + memory: type: integer - minimum: 1 - maximum: 12 - description: > - A value from 1-12 representing the expiration month of your credit card. - - * 1 = January - * 2 = February - * 3 = March - * Etc. - example: 12 - expiry_year: + description: The amount of RAM allocated to Database created of this plan type. The value is represented in megabytes. + example: 1024 + x-linode-cli-display: 3 + disk: type: integer - minLength: 4 - maxLength: 4 - description: | - A four-digit integer representing the expiration year of - your credit card. - - The combination of `expiry_month` and `expiry_year` - must result in a month/year combination of the current month or in - the future. An expiration date set in the past is invalid. - example: 2020 - cvv: + description: The amount of disk space set aside for Databases of this plan type. The value is represented in megabytes. + example: 25600 + x-linode-cli-display: 4 + vcpus: + type: integer + description: The integer of number CPUs allocated to databases of this plan type. + example: 1 + x-linode-cli-display: 5 + deprecated: + type: boolean + description: Whether this Database plan type has been deprecated and is no longer available. + example: false + x-linode-filterable: true + x-linode-cli-display: 6 + class: type: string - minLength: 3 - maxLength: 4 - format: digits - description: > - CVV (Card Verification Value) of the credit card, typically found on the back of the card. - example: '123' + description: The compute class category. + example: nanode + DatabaseTypeEngine: + type: object + properties: + quantity: + type: integer + enum: + - 1 + - 2 + - 3 + description: The number of nodes for the Managed Database cluster for this subscription tier. + example: 1 + price: + type: object + description: Cost in US dollars, broken down into hourly and monthly charges. + properties: + hourly: + type: number + description: Cost (in US dollars) per hour for this subscription tier. + example: 0.03 + monthly: + type: number + description: Maximum cost (in US dollars) per month for this subscription tier. + example: 20 Device: type: object description: > @@ -17222,6 +20897,7 @@ components: failed: red pending: yellow stale: red + default_: white type: string enum: - accepted @@ -17764,6 +21440,7 @@ components: - TCP - UDP - ICMP + - IPENCAP description: > The type of network traffic to allow. example: TCP @@ -17772,16 +21449,12 @@ components: description: | A string representing the port or ports on which traffic will be allowed: - - The string may be a single port, a range of ports, or a comma-separated list - of single ports and port ranges. A space is permitted following each comma. - - A range of ports is inclusive of the start and end values for the range. The - end value of the range must be greater than the start value. + - The string may be a single port, a range of ports, or a comma-separated list of single ports and port ranges. A space is permitted following each comma. + - A range of ports is inclusive of the start and end values for the range. The end value of the range must be greater than the start value. - Ports must be within 1 and 65535, and may not contain any leading zeroes. For example, port "080" is not allowed. - - Ports may not be specified if a rule's protocol is `ICMP`. At least one port - must be specified if a rule's protocol is `TCP` or `UDP`. - - The ports string can have up to 15 *pieces*, where a single port is treated - as one piece, and a port range is treated as two pieces. For example, - the string "22-24, 80, 443" has four pieces. + - Ports may not be specified if a rule's protocol is `ICMP` or `IPENCAP`. + - At least one port must be specified if a rule's protocol is `TCP` or `UDP`. + - The ports string can have up to 15 *pieces*, where a single port is treated as one piece, and a port range is treated as two pieces. For example, the string "22-24, 80, 443" has four pieces. example: '22-24, 80, 443' addresses: type: object @@ -17979,6 +21652,10 @@ components: type: boolean description: If true, this User may add Firewalls. example: true + add_databases: + type: boolean + description: if true, this User may add Managed Databases. + example: true linode: type: array items: @@ -18187,6 +21864,21 @@ components: description: The amount of tax levied on the Invoice in US Dollars. example: 12.25 x-linode-cli-display: 5 + tax_summary: + type: array + readOnly: true + description: The amount of tax broken down into subtotals by source. + items: + type: object + properties: + tax: + type: number + description: The amount of tax subtotal attributable to this source. + example: 12.25 + name: + type: string + description: The source of this tax subtotal. + example: PA STATE TAX total: type: number readOnly: true @@ -19577,7 +23269,7 @@ components: description: > The desired Kubernetes version for this Kubernetes cluster in the format of <major>.<minor>, and the latest supported patch version will be deployed. - example: "1.21" + example: "1.23" control_plane: type: object description: > @@ -19778,7 +23470,7 @@ components: A Kubernetes version number available for deployment to a Kubernetes cluster in the format of <major>.<minor>, and the latest supported patch version. - example: "1.21" + example: "1.23" LongviewClient: type: object description: > @@ -20246,29 +23938,41 @@ components: If true, Linode special forces may access this Linode over ssh to respond to Issues. example: true + default: true user: type: string minLength: 0 maxLength: 32 - description: > - The user Linode's special forces should use when accessing this + description: | + The specific user, if any, Linode's special forces should use when accessing this Linode to respond to an issue. + + The default `null` value corresponds to the root user. example: linode + default: null + nullable: true ip: type: string format: ip - description: > + description: | The IP Linode special forces should use to access this Linode when responding to an Issue. - example: 12.34.56.78 + + By default, any of a Linode's IP addresses can be used for incident response access. + example: "12.34.56.78" + default: any port: type: integer minimum: 1 maximum: 65535 - description: > + description: | The port Linode special forces should use to access this Linode over ssh to respond to an Issue. + + The default `null` value corresponds to port 22. example: 22 + nullable: true + default: null ManagedService: type: object description: > @@ -21618,6 +25322,15 @@ components: as necessary. example: example-user@gmail.com x-linode-cli-display: 2 + verified_phone_number: + type: string + format: phone + readOnly: true + description: | + The phone number verified for this Profile with the **Phone Number Verify** ([POST /profile/phone-number/verify](/docs/api/profile/#phone-number-verify)) command. + + `null` if this Profile has no verified phone number. + example: "+5555555555" timezone: type: string description: > @@ -21944,9 +25657,11 @@ components: This StackScript installs and configures MySQL images: type: array - description: > + description: | An array of Image IDs. These are the images that can be deployed with this Stackscript. + + `any/all` indicates that all available image distributions are accepted. items: type: string example: @@ -22552,6 +26267,58 @@ components: The last IP Address to successfully authenticate with this TrustedDevice. example: 12.34.56.78 readOnly: true + SecurityQuestion: + type: object + description: Single security question and response object. + properties: + id: + type: integer + description: The ID representing the security question. + example: 1 + question: + type: string + readOnly: true + description: The security question. + example: "In what city were you born?" + response: + type: string + minLength: 3 + maxLength: 17 + description: | + The security question response. + example: "Gotham City" + SecurityQuestionsGet: + type: object + description: Security questions and responses object for GET operation. + properties: + security_questions: + type: array + items: + type: object + description: Single security question and response object for GET operation. + properties: + id: + $ref: '#/components/schemas/SecurityQuestion/properties/id' + question: + $ref: '#/components/schemas/SecurityQuestion/properties/question' + response: + $ref: '#/components/schemas/SecurityQuestion/properties/response' + SecurityQuestionsPost: + type: object + description: Security questions and responses object for POST operation. + properties: + security_questions: + type: array + items: + type: object + description: Single security question and response object for POST operation. + properties: + question_id: + $ref: '#/components/schemas/SecurityQuestion/properties/id' + response: + $ref: '#/components/schemas/SecurityQuestion/properties/response' + security_question: + $ref: '#/components/schemas/SecurityQuestion/properties/question' ServiceTransfer: type: object description: > @@ -22574,6 +26341,7 @@ components: failed: red pending: yellow stale: red + default_: white type: string enum: - accepted @@ -22768,13 +26536,10 @@ components: * `active` - the Volume is online and available for use. * `resizing` - the Volume is in the process of upgrading its current capacity. - * `contact_support` - there is a problem with your Volume. Please - [open a Support Ticket](/docs/api/support/#support-ticket-open) to resolve the issue. enum: - creating - active - resizing - - contact_support example: active readOnly: true x-linode-cli-display: 3 @@ -22858,6 +26623,8 @@ components: tags: - name: Account description: Use the Account endpoints to manage user settings, billing, and payments. You can also initiate and maintain OAuth client application authentication, enable the Linode Managed service, and create new users on your account. + - name: Databases + description: Managed Databases is Linode's fully-managed, high-performance database service. Use the Managed Databases endpoints to create and manage database clusters. - name: Domains description: Use the Domains endpoints to create and manage domains and domain records on your account. - name: Images diff --git a/sources b/sources index e6c8033..28585e6 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (linode-cli-5.17.1.tar.gz) = 13ce23da45c3d938fa2e1188678695e4ecc8bc6d048995df90862d8f75f2be96edf223fcc33af597097b6a969b512ddf9951a6e60c6f7f33a764ffa7b67ed2d3 +SHA512 (linode-cli-5.23.0.tar.gz) = 1db1bba6bb256a7f75b7117113e14cad1838a8fa20585d78d799d1717530842553f74ffab1a97bd7e2fde1bfa847172e0f3459a07c7dfd59d420e9b46d1cafdd