UNPKG

openapi-directory

Version:

Building & bundling https://github.com/APIs-guru/openapi-directory for easy use from JS

1 lines 771 kB
{"openapi":"3.0.1","servers":[{"url":"https://api.linode.com/v4"},{"url":"https://api.linode.com/v4beta"}],"info":{"contact":{"email":"support@linode.com","name":"Linode","url":"https://linode.com"},"description":"## Introduction\nThe Linode API provides the ability to programmatically manage the full\nrange of Linode products and services.\n\nThis reference is designed to assist application developers and system\nadministrators. Each endpoint includes descriptions, request syntax, and\nexamples using standard HTTP requests. Response data is returned in JSON\nformat.\n\n\nThis document was generated from our OpenAPI Specification. See the\n<a target=\"_top\" href=\"https://www.openapis.org\">OpenAPI website</a> for more information.\n\n<a target=\"_top\" href=\"/docs/api/openapi.yaml\">Download the Linode OpenAPI Specification</a>.\n\n\n## Changelog\n\n<a target=\"_top\" href=\"/docs/products/tools/api/release-notes/\">View our Changelog</a> to see release\nnotes on all changes made to our API.\n\n## Access and Authentication\n\nSome endpoints are publicly accessible without requiring authentication.\nAll endpoints affecting your Account, however, require either a Personal\nAccess Token or OAuth authentication (when using third-party\napplications).\n\n### Personal Access Token\n\nThe easiest way to access the API is with a Personal Access Token (PAT)\ngenerated from the\n<a target=\"_top\" href=\"https://cloud.linode.com/profile/tokens\">Linode Cloud Manager</a> or\nthe [Create Personal Access Token](/docs/api/profile/#personal-access-token-create) endpoint.\n\nAll scopes for the OAuth security model ([defined below](/docs/api/#oauth)) apply to this\nsecurity model as well.\n\n### Authentication\n\n| Security Scheme Type: | HTTP |\n|-----------------------|------|\n| **HTTP Authorization Scheme** | bearer |\n\n## OAuth\n\nIf you only need to access the Linode API for personal use,\nwe recommend that you create a [personal access token](/docs/api/#personal-access-token).\nIf you're designing an application that can authenticate with an arbitrary Linode user, then\nyou should use the OAuth 2.0 workflows presented in this section.\n\nFor a more detailed example of an OAuth 2.0 implementation, see our guide on [How to Create an OAuth App with the Linode Python API Library](/docs/products/tools/api/guides/create-an-oauth-app-with-the-python-api-library/#oauth-2-authentication-exchange).\n\nBefore you implement OAuth in your application, you first need to create an OAuth client. You can do this [with the Linode API](/docs/api/account/#oauth-client-create) or [via the Cloud Manager](https://cloud.linode.com/profile/clients):\n\n - When creating the client, you'll supply a `label` and a `redirect_uri` (referred to as the Callback URL in the Cloud Manager).\n - The response from this endpoint will give you a `client_id` and a `secret`.\n - Clients can be public or private, and are private by default. You can choose to make the client public when it is created.\n - A private client is used with applications which can securely store the client secret (that is, the secret returned to you when you first created the client). For example, an application running on a secured server that only the developer has access to would use a private OAuth client. This is also called a confidential client in some OAuth documentation.\n - A public client is used with applications where the client secret is not guaranteed to be secure. For example, a native app running on a user's computer may not be able to keep the client secret safe, as a user could potentially inspect the source of the application. So, native apps or apps that run in a user's browser should use a public client.\n - Public and private clients follow different workflows, as described below.\n\n### OAuth Workflow\n\nThe OAuth workflow is a series of exchanges between your third-party app and Linode. The workflow is used\nto authenticate a user before an application can start making API calls on the user's behalf.\n\nNotes:\n\n- With respect to the diagram in [section 1.2 of RFC 6749](https://tools.ietf.org/html/rfc6749#section-1.2), login.linode.com (referred to in this section as the *login server*)\nis the Resource Owner and the Authorization Server; api.linode.com (referred to here as the *api server*) is the Resource Server.\n- The OAuth spec refers to the private and public workflows listed below as the [authorization code flow](https://tools.ietf.org/html/rfc6749#section-1.3.1) and [implicit flow](https://tools.ietf.org/html/rfc6749#section-1.3.2).\n\n| PRIVATE WORKFLOW | PUBLIC WORKFLOW |\n|------------------|------------------|\n| 1. The user visits the application's website and is directed to login with Linode. | 1. The user visits the application's website and is directed to login with Linode. |\n| 2. Your application then redirects the user to Linode's [login server](https://login.linode.com) with the client application's `client_id` and requested OAuth `scope`, which should appear in the URL of the login page. | 2. Your application then redirects the user to Linode's [login server](https://login.linode.com) with the client application's `client_id` and requested OAuth `scope`, which should appear in the URL of the login page. |\n| 3. The user logs into the login server with their username and password. | 3. The user logs into the login server with their username and password. |\n| 4. The login server redirects the user to the specificed redirect URL with a temporary authorization `code` (exchange code) in the URL. | 4. The login server redirects the user back to your application with an OAuth `access_token` embedded in the redirect URL's hash. This is temporary and expires in two hours. No `refresh_token` is issued. Therefore, once the `access_token` expires, a new one will need to be issued by having the user log in again. |\n| 5. The application issues a POST request (*see additional details below*) to the login server with the exchange code, `client_id`, and the client application's `client_secret`. | |\n| 6. The login server responds to the client application with a new OAuth `access_token` and `refresh_token`. The `access_token` is set to expire in two hours. | |\n| 7. The `refresh_token` can be used by contacting the login server with the `client_id`, `client_secret`, `grant_type`, and `refresh_token` to get a new OAuth `access_token` and `refresh_token`. The new `access_token` is good for another two hours, and the new `refresh_token` can be used to extend the session again by this same method (*see additional details below*). | |\n\n#### OAuth Private Workflow - Additional Details\n\nThe following information expands on steps 5 through 7 of the private workflow:\n\nOnce the user has logged into Linode and you have received an exchange code,\nyou will need to trade that exchange code for an `access_token` and `refresh_token`. You\ndo this by making an HTTP POST request to the following address:\n\n```\nhttps://login.linode.com/oauth/token\n```\n\nMake this request as `application/x-www-form-urlencoded` or as\n`multipart/form-data` and include the following parameters in the POST body:\n\n| PARAMETER | DESCRIPTION |\n|-----------|-------------|\n| client_id | Your app's client ID. |\n| client_secret | Your app's client secret. |\n| code | The code you just received from the redirect. |\n\nYou'll get a response like this:\n\n```json\n{\n \"scope\": \"linodes:read_write\",\n \"access_token\": \"03d084436a6c91fbafd5c4b20c82e5056a2e9ce1635920c30dc8d81dc7a6665c\",\n \"refresh_token\": \"f2ec9712e616fdb5a2a21aa0e88cfadea7502ebc62cf5bd758dbcd65e1803bad\",\n \"token_type\": \"bearer\",\n \"expires_in\": 7200\n}\n```\n\nIncluded in the response is an `access_token`. With this token, you can proceed to make\nauthenticated HTTP requests to the API by adding this header to each request:\n\n```\nAuthorization: Bearer 03d084436a6c91fbafd5c4b20c82e5056a2e9ce1635920c30dc8d81dc7a6665c\n```\n\nThis `access_token` is set to expire in two hours. To refresh access prior to expiration, make another request to the same URL with the following parameters in the POST body:\n\n| PARAMETER | DESCRIPTION |\n|-----------|-------------|\n| grant_type | The grant type you're using. Use \"refresh_token\" when refreshing access. |\n| client_id | Your app's client ID. |\n| client_secret | Your app's client secret. |\n| refresh_token | The `refresh_token` received from the previous response. |\n\nYou'll get another response with an updated `access_token` and `refresh_token`, which can then be used to refresh access again.\n\n### OAuth Reference\n\n| Security Scheme Type | OAuth 2.0 |\n|-----------------------|--------|\n| **Authorization URL** | `https://login.linode.com/oauth/authorize` |\n| **Token URL** | `https://login.linode.com/oauth/token` |\n| **Scopes** | <ul><li>`account:read_only` - Allows access to GET information about your Account.</li><li>`account:read_write` - Allows access to all endpoints related to your Account.</li><li>`databases:read_only` - Allows access to GET Managed Databases on your Account.</li><li>`databases:read_write` - Allows access to all endpoints related to your Managed Databases.</li><li>`domains:read_only` - Allows access to GET Domains on your Account.</li><li>`domains:read_write` - Allows access to all Domain endpoints.</li><li>`events:read_only` - Allows access to GET your Events.</li><li>`events:read_write` - Allows access to all endpoints related to your Events.</li><li>`firewall:read_only` - Allows access to GET information about your Firewalls.</li><li>`firewall:read_write` - Allows access to all Firewall endpoints.</li><li>`images:read_only` - Allows access to GET your Images.</li><li>`images:read_write` - Allows access to all endpoints related to your Images.</li><li>`ips:read_only` - Allows access to GET your ips.</li><li>`ips:read_write` - Allows access to all endpoints related to your ips.</li><li>`linodes:read_only` - Allows access to GET Linodes on your Account.</li><li>`linodes:read_write` - Allow access to all endpoints related to your Linodes.</li><li>`lke:read_only` - Allows access to GET LKE Clusters on your Account.</li><li>`lke:read_write` - Allows access to all endpoints related to LKE Clusters on your Account.</li><li>`longview:read_only` - Allows access to GET your Longview Clients.</li><li>`longview:read_write` - Allows access to all endpoints related to your Longview Clients.</li><li>`nodebalancers:read_only` - Allows access to GET NodeBalancers on your Account.</li><li>`nodebalancers:read_write` - Allows access to all NodeBalancer endpoints.</li><li>`object_storage:read_only` - Allows access to GET information related to your Object Storage.</li><li>`object_storage:read_write` - Allows access to all Object Storage endpoints.</li><li>`stackscripts:read_only` - Allows access to GET your StackScripts.</li><li>`stackscripts:read_write` - Allows access to all endpoints related to your StackScripts.</li><li>`volumes:read_only` - Allows access to GET your Volumes.</li><li>`volumes:read_write` - Allows access to all endpoints related to your Volumes.</li></ul><br/>|\n\n## Requests\n\nRequests must be made over HTTPS to ensure transactions are encrypted. Data included in requests must be supplied in json format unless otherwise specified in the command description.\n\nThe following request methods are supported:\n\n| METHOD | USAGE |\n|---------|-------|\n| GET | Retrieves data about collections and individual resources. |\n| POST | For collections, creates a new resource of that type. Also used to perform actions on action endpoints. |\n| PUT | Updates an existing resource. |\n| DELETE | Deletes a resource. This is a destructive action. |\n| HEAD | Returns only the response header information of a GET request |\n| OPTIONS | Provides permitted communication options for a command |\n\n## Responses\n\n### Response Status Codes\n\nActions will return one of the following HTTP response status codes:\n\n| STATUS | DESCRIPTION |\n|---------|-------------|\n| 200 OK | The request was successful. |\n| 202 Accepted | The request was successful, but processing has not been completed. The response body includes a \"warnings\" array containing the details of incomplete processes. |\n| 204 No Content | The server successfully fulfilled the request and there is no additional content to send. |\n| 299 Deprecated | The request was successful, but involved a deprecated endpoint. The response body includes a \"warnings\" array containing warning messages. |\n| 400 Bad Request | You submitted an invalid request (missing parameters, etc.). |\n| 401 Unauthorized | You failed to authenticate for this resource. |\n| 403 Forbidden | You are authenticated, but don't have permission to do this. |\n| 404 Not Found | The resource you're requesting does not exist. |\n| 429 Too Many Requests | You've hit a rate limit. |\n| 500 Internal Server Error | Please [open a Support Ticket](/docs/api/support/#support-ticket-open). |\n\n### Response Headers\n\nThere are many ways to access response header information for individual command URLs, depending on how you are accessing the Linode API. For example, to view HTTP response headers for the `/regions` endpoint when making requests with `curl`, use the `-I` or `--head` option as follows:\n\n```Shell\ncurl -I https://api.linode.com/v4/regions\n```\n\nResponses may include the following headers:\n\n| HEADER | DESCRIPTION | EXAMPLE |\n|--------|-------------|---------|\n| Access-Control-Allow-Credentials | Responses to credentialed requests are exposed to frontend JavaScript code. | true |\n| Access-Control-Allow-Headers | All permissible request headers for this endpoint. | Authorization, Origin, X-Requested-With, Content-Type, Accept, X-Filter |\n| Access-Control-Allow-Methods | Permissible HTTP methods for this endpoint | HEAD, GET, OPTIONS, POST, PUT, DELETE |\n| Access-Control-Allow-Origin | Indicates origin access permissions. The wildcard character `*` means any origin can access the resource. | * |\n| Access-Control-Expose-Headers | Available headers to include in response to cross-origin requests. | X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Status |\n| Cache-Control | Controls caching in browsers and shared caches such as CDNs. | private, max-age=60, s-maxage=60 |\n| Content-Security-Policy | Controls which resources are allowed to load. By default, resources do not load. | default-src 'none' |\n| Content-Type | All responses are in json format. | application/json |\n| Content-Warning | A message containing instructions for successful requests that were not able to be completed. | Please contact support for assistance. |\n| Retry-After | The remaining time in seconds until the current [rate limit](#rate-limiting) window resets. | 60 |\n| Strict-Transport-Security | Enforces HTTPS-only access until the returned time in seconds. | max-age=31536000 |\n| Vary | Optional request headers that affected the response content. | Authorization, X-Filter |\n| X-Accepted-OAuth-Scopes | Required [scopes](#oauth-reference) for accessing the requested command. | linodes:read_only |\n| X-Customer-UUID | A unique identifier for the account owning the the [personal access token](#personal-access-token) that was used for the request. | ABCDEF01-3456-789A-BCDEF0123456789A |\n| X-OAuth-Scopes | Allowed [scopes](#oauth-reference) associated with the [personal access token](#personal-access-token) that was used for the request. A value of `*` indicates read/write access for all scope categories. | images:read_write linodes:read_only |\n| X-RateLimit-Limit | The maximum number of permitted requests during the [rate limit](#rate-limiting) window for this endpoint. | 800 |\n| X-RateLimit-Remaining | The remaining number of permitted requests in the current [rate limit](#rate-limiting) window. | 798 |\n| X-RateLimit-Reset | The time when the current [rate limit](#rate-limiting) window rests in UTC epoch seconds. | 1674747739 |\n| X-Spec-Version | The current API version that handled the request. | 4.150.0 |\n\n## Errors\n\nSuccess is indicated via <a href=\"https://en.wikipedia.org/wiki/List_of_HTTP_status_codes\" target=\"_top\">Standard HTTP status codes</a>.\n`2xx` codes indicate success, `4xx` codes indicate a request error, and\n`5xx` errors indicate a server error. A\nrequest error might be an invalid input, a required parameter being omitted,\nor a malformed request. A server error means something went wrong processing\nyour request. If this occurs, please\n[open a Support Ticket](/docs/api/support/#support-ticket-open)\nand let us know. Though errors are logged and we work quickly to resolve issues,\nopening a ticket and providing us with reproducable steps and data is always helpful.\n\nThe `errors` field is an array of the things that went wrong with your request.\nWe will try to include as many of the problems in the response as possible,\nbut it's conceivable that fixing these errors and resubmitting may result in\nnew errors coming back once we are able to get further along in the process\nof handling your request.\n\nWithin each error object, the `field` parameter will be included if the error\npertains to a specific field in the JSON you've submitted. This will be\nomitted if there is no relevant field. The `reason` is a human-readable\nexplanation of the error, and will always be included.\n\n## Pagination\n\nResource lists are always paginated. The response will look similar to this:\n\n```json\n{\n \"data\": [ ... ],\n \"page\": 1,\n \"pages\": 3,\n \"results\": 300\n}\n```\n\n* Pages start at 1. You may retrieve a specific page of results by adding\n`?page=x` to your URL (for example, `?page=4`). If the value of `page`\nexceeds `2^64/page_size`, the last possible page will be returned.\n\n\n* Page sizes default to 100,\nand can be set to return between 25 and 500. Page size can be set using\n`?page_size=x`.\n\n## Filtering and Sorting\n\nCollections are searchable by fields they include, marked in the spec as\n`x-linode-filterable: true`. Filters are passed\nin the `X-Filter` header and are formatted as JSON objects. Here is a request\ncall for Linode Types in our \"standard\" class:\n\n```Shell\ncurl \"https://api.linode.com/v4/linode/types\" \\\n -H 'X-Filter: { \"class\": \"standard\" }'\n```\n\nThe filter object's keys are the keys of the object you're filtering,\nand the values are accepted values. You can add multiple filters by\nincluding more than one key. For example, filtering for \"standard\" Linode\nTypes that offer one vcpu:\n\n```Shell\n curl \"https://api.linode.com/v4/linode/types\" \\\n -H 'X-Filter: { \"class\": \"standard\", \"vcpus\": 1 }'\n```\n\nIn the above example, both filters are combined with an \"and\" operation.\nHowever, if you wanted either Types with one vcpu or Types in our \"standard\"\nclass, you can add an operator:\n\n ```Shell\ncurl \"https://api.linode.com/v4/linode/types\" \\\n -H 'X-Filter: { \"+or\": [ { \"vcpus\": 1 }, { \"class\": \"standard\" } ] }'\n```\n\nEach filter in the `+or` array is its own filter object, and all conditions\nin it are combined with an \"and\" operation as they were in the previous example.\n\nOther operators are also available. Operators are keys of a Filter JSON\nobject. Their value must be of the appropriate type, and they are evaluated\nas described below:\n\n| OPERATOR | TYPE | DESCRIPTION |\n|----------|--------|-----------------------------------|\n| +and | array | All conditions must be true. |\n| +or | array | One condition must be true. |\n| +gt | number | Value must be greater than number. |\n| +gte | number | Value must be greater than or equal to number. |\n| +lt | number | Value must be less than number. |\n| +lte | number | Value must be less than or equal to number. |\n| +contains | string | Given string must be in the value. |\n| +neq | string | Does not equal the value. |\n| +order_by | string | Attribute to order the results by - must be filterable. |\n| +order | string | Either \"asc\" or \"desc\". Defaults to \"asc\". Requires `+order_by`. |\n\nFor example, filtering for [Linode Types](/docs/api/linode-types/)\nthat offer memory equal to or higher than 61440:\n\n```Shell\ncurl \"https://api.linode.com/v4/linode/types\" \\\n -H '\n X-Filter: {\n \"memory\": {\n \"+gte\": 61440\n }\n }'\n```\n\nYou can combine and nest operators to construct arbitrarily-complex queries.\nFor example, give me all [Linode Types](/docs/api/linode-types/)\nwhich are either `standard` or `highmem` class, or\nhave between 12 and 20 vcpus:\n\n```Shell\ncurl \"https://api.linode.com/v4/linode/types\" \\\n -H '\n X-Filter: {\n \"+or\": [\n {\n \"+or\": [\n {\n \"class\": \"standard\"\n },\n {\n \"class\": \"highmem\"\n }\n ]\n },\n {\n \"+and\": [\n {\n \"vcpus\": {\n \"+gte\": 12\n }\n },\n {\n \"vcpus\": {\n \"+lte\": 20\n }\n }\n ]\n }\n ]\n }'\n```\n## Time Values\n\nAll 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)).\n\n## Rate Limiting\n\nRate limits on API requests help maintain the health and stability of the Linode API. Accordingly, every endpoint of the Linode API applies a rate limit on a per user basis as determined by OAuth token for authenticated requests or IP address for public endpoints.\n\nEach rate limit consists of a total number of requests and a time window. For example, if an endpoint has a rate limit of 800 requests per minute, then up to 800 requests over a one minute window are permitted. Subsequent requests to an endpoint after hitting a rate limit return a 429 error. You can successfully remake requests to that endpoint after the rate limit window resets.\n\n### Linode APIv4 Rate Limits\n\nWith the Linode API, you can generally make up to 1,600 general API requests every two minutes. Additionally, all endpoints have a rate limit of 800 requests per minute unless otherwise specified below.\n\n**Note:** There may be rate limiting applied at other levels outside of the API, for example, at the load balancer.\n\nCreating Linodes has a dedicated rate limit of 10 requests per 30 seconds. That endpoint is:\n\n* [Linode Create](/docs/api/linode-instances/#linode-create)\n\n`/stats` endpoints have their own dedicated rate limits of 100 requests per minute. These endpoints are:\n\n* [View Linode Statistics](/docs/api/linode-instances/#linode-statistics-view)\n* [View Linode Statistics (year/month)](/docs/api/linode-instances/#statistics-yearmonth-view)\n* [View NodeBalancer Statistics](/docs/api/nodebalancers/#nodebalancer-statistics-view)\n* [List Managed Stats](/docs/api/managed/#managed-stats-list)\n\nObject Storage endpoints have a dedicated rate limit of 750 requests per second. The Object Storage endpoints are:\n\n* [Object Storage Endpoints](/docs/api/object-storage/)\n\nOpening Support Tickets has a dedicated rate limit of 2 requests per minute. That endpoint is:\n\n* [Open Support Ticket](/docs/api/support/#support-ticket-open)\n\nAccepting Service Transfers has a dedicated rate limit of 2 requests per minute. That endpoint is:\n\n* [Service Transfer Accept](/docs/api/account/#service-transfer-accept)\n\n### Rate Limit HTTP Response Headers\n\nThe Linode API includes the following HTTP response headers which are designed to help you avoid hitting rate limits which might disrupt your applications:\n\n* **X-RateLimit-Limit**: The maximum number of permitted requests during the rate limit window for this endpoint.\n* **X-RateLimit-Remaining**: The remaining number of permitted requests in the current rate limit window.\n* **X-RateLimit-Reset**: The time when the current rate limit window rests in UTC epoch seconds.\n* **Retry-After**: The remaining time in seconds until the current rate limit window resets.\n\n## CLI (Command Line Interface)\n\nThe <a href=\"https://github.com/linode/linode-cli\" target=\"_top\">Linode CLI</a> allows you to easily\nwork with the API using intuitive and simple syntax. It requires a\n[Personal Access Token](/docs/api/#personal-access-token)\nfor authentication, and gives you access to all of the features and functionality\nof the Linode API that are documented here with CLI examples.\n\nEndpoints that do not have CLI examples are currently unavailable through the CLI, but\ncan be accessed via other methods such as Shell commands and other third-party applications.\n","title":"Linode API","version":"4.151.1","x-apisguru-categories":["cloud"],"x-origin":[{"converter":{"url":"https://github.com/mermade/oas-kit","version":"7.0.4"},"format":"openapi","url":"https://www.linode.com/docs/api/openapi.yaml","version":"3.0"}],"x-providerName":"linode.com"},"tags":[{"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":"Account"},{"description":"Managed Databases is Linode's fully-managed, high-performance database service. Use the Managed Databases endpoints to create and manage database clusters.","name":"Databases"},{"description":"Use the Domains endpoints to create and manage domains and domain records on your account.","name":"Domains"},{"description":"Use the Images endpoints to capture, store, and manage custom Linode images.","name":"Images"},{"description":"Use the Linode Instances endpoints to create, configure, and manage your Linode instances. You can also manage the Linode Backup service; maintain and manage configuration profiles; create and maintain disks, intiate a host migration; view Linode Instance statistics; and more.","name":"Linode Instances"},{"description":"Use the Linode Types endpoints to retrieve information about Linode plan types, including pricing information, hardware resources, and network transfer allotment.","name":"Linode Types"},{"description":"Linode Kubernetes Engine (LKE) is Linode's managed Kubernetes service. Use the LKE endpoints to create and manage Kubernetes clusters and their associated Node Pools.","name":"Linode Kubernetes Engine (LKE)"},{"description":"Longview is Linode's system-level monitoring and graphing service. Use the Longview endpoints to manage your Longview subscription and plan and to create and maintain Longview clients.","name":"Longview"},{"description":"Managed is Linode's incident response service. Use the Managed endpoints to register a service to be monitored by the Managed Service team, provide secure access to your managed services, view information about detected issues, and more.","name":"Managed"},{"description":"Use the Networking endpoints to view all IP addresses on your account, reorganize assigned IPv4 addresses, update RDNS, and configure IP sharing.","name":"Networking"},{"description":"NodeBalancers is Linode's load balancing service. Use the NodeBalancers endpoints to create and manage NodeBalancers. You can also create and maintain configurations; create and maintain nodes, and view statistics.","name":"NodeBalancers"},{"description":"Object Storage is Linode's S3-compatible data storage service. Use the Object Storage endpoints to create and maintaining buckets, add and remove objects from buckets, create and maintain Object Storage keys, and cancel the Object Storage service.","name":"Object Storage"},{"description":"Use the Profile endpoints to manage your Linode user profile preferences and security settings. This includes creating and maintaining personal access tokens, creating and maintaining SSH keys, confirming and enabling two-factor authentication, and updating user and profile preferences.","name":"Profile"},{"description":"Use the Regions endpoints to view information about the various Linode data center regions, including the service capabilities for each region, country, status, and more.","name":"Regions"},{"description":"Linode StackScripts allow you to create reusable scripts to configure new Linode instances. Use the StackScripts endpoints to create and manage StackScripts on your account.","name":"StackScripts"},{"description":"Use the Support endpoints to open, view, and close Linode Support tickets. You can also create and manage your Support ticket replies.","name":"Support"},{"description":"Tags allow you to organize and group your various Linode services. Use the Tags endpoints to create, assign, and delete your account tags.","name":"Tags"},{"description":"Volumes is Linode's block storage service. Use the Volumes endpoints to create, attach, and manage your account Volumes.","name":"Volumes"}],"paths":{"/account":{"get":{"description":"Returns the contact and billing information related to your Account.\n","operationId":"getAccount","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Account"}}},"description":"Returns a single Account object."},"default":{"$ref":"#/components/responses/ErrorResponse"}},"security":[{"personalAccessToken":[]},{"oauth":["account:read_only"]}],"summary":"Account View","tags":["Account"],"x-code-samples":[{"lang":"Shell","source":"curl -H \"Authorization: Bearer $TOKEN\" \\\n https://api.linode.com/v4/account\n"},{"lang":"CLI","source":"linode-cli account view\n"}],"x-linode-cli-action":"view","x-linode-grant":"read_only"},"put":{"description":"Updates contact and billing information related to your Account.\n","operationId":"updateAccount","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Account"}}},"description":"Update contact and billing information.\n\nAccount properties that are excluded from a request remain unchanged.\n\nWhen updating an Account's `country` to \"US\", an error is returned if the Account's `zip` is not a valid US zip code.\n","required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Account"}}},"description":"The updated Account."},"default":{"$ref":"#/components/responses/ErrorResponse"}},"security":[{"personalAccessToken":[]},{"oauth":["account:read_write"]}],"summary":"Account Update","tags":["Account"],"x-code-samples":[{"lang":"Shell","source":"curl -H \"Content-Type: application/json\" \\\n -H \"Authorization: Bearer $TOKEN\" \\\n -X PUT -d '{\n \"address_1\": \"123 Main St.\",\n \"address_2\": \"Suite 101\",\n \"city\": \"Philadelphia\",\n \"company\": \"My Company, LLC\",\n \"country\": \"US\",\n \"email\": \"jsmith@mycompany.com\",\n \"first_name\": \"John\",\n \"last_name\": \"Smith\",\n \"phone\": \"555-555-1212\",\n \"state\": \"PA\",\n \"tax_id\": \"ATU99999999\",\n \"zip\": \"19102\"\n }' \\\n https://api.linode.com/v4/account\n"},{"lang":"CLI","source":"linode-cli account update \\\n --address_1 \"123 Main St.\" \\\n --address_2 \"Suite 101\" \\\n --city Philadelphia \\\n --company My Company \\ LLC \\\n --country US \\\n --email jsmith@mycompany.com \\\n --first_name John \\\n --last_name Smith \\\n --phone 555-555-1212 \\\n --state PA \\\n --tax_id ATU99999999 \\\n --zip 19102\n"}],"x-linode-cli-action":"update","x-linode-grant":"read_write"},"x-linode-cli-command":"account"},"/account/cancel":{"post":{"description":"Cancels an active Linode account. This action will cause Linode to attempt to charge the credit card on file for the remaining balance. An error will occur if Linode fails to charge the credit card on file. Restricted users will not be able to cancel an account.\n","operationId":"cancelAccount","requestBody":{"content":{"application/json":{"schema":{"properties":{"comments":{"description":"Any reason for cancelling the account, and any other comments you might have about your Linode service.\n","example":"I'm consolidating multiple accounts into one.","type":"string"}}}}},"description":"Supply a comment stating the reason that you are cancelling your account.\n","required":true},"responses":{"200":{"content":{"application/json":{"schema":{"example":{"survey_link":"https://alinktothesurvey.com'"},"properties":{"survey_link":{"description":"A link to Linode's exit survey.","type":"string"}},"type":"object"}}},"description":"Account cancelled"},"409":{"content":{"application/json":{"schema":{"properties":{"errors":{"items":{"properties":{"reason":{"description":"A string explaining that the account could not be cancelled because there is an outstanding balance on the account that must be paid first.\n","example":"We were unable to charge your credit card for services rendered. We cannot cancel this account until the balance has been paid.\n","type":"string"}},"type":"object"},"type":"array"}},"type":"object"}}},"description":"Could not charge the credit card on file"},"default":{"$ref":"#/components/responses/ErrorResponse"}},"security":[{"personalAccessToken":[]},{"oauth":["account:read_write"]}],"summary":"Account Cancel","tags":["Account"],"x-code-samples":[{"lang":"Shell","source":"curl -H \"Content-Type: application/json\" \\\n -H \"Authorization: Bearer $TOKEN\" \\\n -X POST -d '{\n \"comments\": \"I am consolidating my accounts.\"\n }' \\\n https://api.linode.com/v4/account/cancel\n"},{"lang":"CLI","source":"linode-cli account cancel \\\n --comments \"I'm consolidating my accounts\"\n"}],"x-linode-cli-action":"cancel","x-linode-grant":"read_write"},"x-linode-cli-command":"account"},"/account/credit-card":{"post":{"deprecated":true,"description":"**DEPRECATED**. Please use Payment Method Add ([POST /account/payment-methods](/docs/api/account/#payment-method-add)).\n\nAdds a credit card Payment Method to your account and sets it as the default method.\n","operationId":"createCreditCard","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreditCard"}}},"description":"Update the credit card information associated with your Account.","required":true},"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Credit Card updated."},"default":{"$ref":"#/components/responses/ErrorResponse"}},"security":[{"personalAccessToken":[]},{"oauth":["account:read_write"]}],"summary":"Credit Card Add/Edit","tags":["Account"],"x-code-samples":[{"lang":"Shell","source":"curl -H \"Content-Type: application/json\" \\\n -H \"Authorization: Bearer $TOKEN\" \\\n -X POST -d '{\n \"card_number\": \"4111111111111111\",\n \"expiry_month\": 11,\n \"expiry_year\": 2020,\n \"cvv\": \"111\"\n }' \\\n https://api.linode.com/v4/account/credit-card\n"},{"lang":"CLI","source":"linode-cli account update-card \\\n --card_number 4111111111111111 \\\n --expiry_month 11 \\\n --expiry_year 2025 \\\n --cvv 111\n"}],"x-linode-cli-action":"update-card","x-linode-cli-skip":true,"x-linode-grant":"read_write"},"x-linode-cli-command":"account"},"/account/entity-transfers":{"get":{"deprecated":true,"description":"**DEPRECATED**. Please use [Service Transfers List](/docs/api/account/#service-transfers-list).\n","operationId":"getEntityTransfers","parameters":[{"$ref":"#/components/parameters/pageOffset"},{"$ref":"#/components/parameters/pageSize"}],"responses":{"200":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PaginationEnvelope"},{"properties":{"data":{"items":{"$ref":"#/components/schemas/EntityTransfer"},"type":"array"}}}]}}},"description":"Returns a paginated list of Entity Transfer objects containing the details of all transfers that have been created and accepted by this account.\n"},"default":{"$ref":"#/components/responses/ErrorResponse"}},"security":[{"personalAccessToken":[]},{"oauth":["account:read_only"]}],"summary":"Entity Transfers List","tags":["Account"],"x-code-samples":[{"lang":"Shell","source":"curl -H \"Authorization: Bearer $TOKEN\" \\\n https://api.linode.com/v4/account/entity-transfers\n"}],"x-linode-cli-skip":true,"x-linode-grant":"unrestricted only"},"post":{"deprecated":true,"description":"**DEPRECATED**. Please use [Service Transfer Create](/docs/api/account/#service-transfer-create).\n","operationId":"createEntityTransfer","requestBody":{"content":{"application/json":{"schema":{"properties":{"entities":{"$ref":"#/components/schemas/EntityTransfer/properties/entities"}},"required":["entities"],"type":"object"}}},"description":"The entities to include in this transfer request."},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityTransfer"}}},"description":"Returns an Entity Transfer object for the request.\n"},"default":{"$ref":"#/components/responses/ErrorResponse"}},"security":[{"personalAccessToken":[]},{"oauth":["account:read_write"]}],"summary":"Entity Transfer Create","tags":["Account"],"x-code-samples":[{"lang":"Shell","source":"curl -H \"Content-Type: application/json\" \\\n -H \"Authorization: Bearer $TOKEN\" \\\n -X POST -d '{\n \"entities\": {\n \"linodes\": [\n 111,\n 222\n ]\n }\n }' \\\n https://api.linode.com/v4/account/entity-transfers\n"}],"x-linode-cli-skip":true,"x-linode-grant":"unrestricted only"}},"/account/entity-transfers/{token}":{"delete":{"deprecated":true,"description":"**DEPRECATED**. Please use [Service Transfer Cancel](/docs/api/account/#service-transfer-cancel).\n","operationId":"deleteEntityTransfer","responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Entity Transfer cancelled.\n"},"default":{"$ref":"#/components/responses/ErrorResponse"}},"security":[{"personalAccessToken":[]},{"oauth":["account:read_write"]}],"summary":"Entity Transfer Cancel","tags":["Account"],"x-code-samples":[{"lang":"Shell","source":"curl -H \"Authorization: Bearer $TOKEN\" \\\n -X DELETE \\\n https://api.linode.com/v4/account/entity-transfers/123E4567-E89B-12D3-A456-426614174000\n"}],"x-linode-cli-skip":true,"x-linode-grant":"unrestricted only"},"get":{"deprecated":true,"description":"**DEPRECATED**. Please use [Service Transfer View](/docs/api/account/#service-transfer-view).\n","operationId":"getEntityTransfer","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityTransfer"}}},"description":"Returns an Entity Transfer object containing the details of the transfer for the specified token.\n"},"default":{"$ref":"#/components/responses/ErrorResponse"}},"security":[{"personalAccessToken":[]},{"oauth":["account:read_only"]}],"summary":"Entity Transfer View","tags":["Account"],"x-code-samples":[{"lang":"Shell","source":"curl -H \"Authorization: Bearer $TOKEN\" \\\n https://api.linode.com/v4/account/entity-transfers/123E4567-E89B-12D3-A456-426614174000\n"}],"x-linode-cli-skip":true,"x-linode-grant":"unrestricted only"},"parameters":[{"description":"The UUID of the Entity Transfer.","in":"path","name":"token","required":true,"schema":{"format":"uuid","type":"string"}}]},"/account/entity-transfers/{token}/accept":{"parameters":[{"description":"The UUID of the Entity Transfer.","in":"path","name":"token","required":true,"schema":{"format":"uuid","type":"string"}}],"post":{"deprecated":true,"description":"**DEPRECATED**. Please use [Service Transfer Accept](/docs/api/account/#service-transfer-accept).\n","operationId":"acceptEntityTransfer","responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Entity Transfer accepted.\n"},"default":{"$ref":"#/components/responses/ErrorResponse"}},"security":[{"personalAccessToken":[]},{"oauth":["account:read_write"]}],"summary":"Entity Transfer Accept","tags":["Account"],"x-code-samples":[{"lang":"Shell","source":"curl -H \"Authorization: Bearer $TOKEN\" \\\n -X POST \\\n https://api.linode.com/v4/account/entity-transfers/123E4567-E89B-12D3-A456-426614174000/accept\n"}],"x-linode-cli-skip":true,"x-linode-grant":"unrestricted only"}},"/account/events":{"get":{"description":"Returns a collection of Event objects representing actions taken on your Account from the last 90 days. The Events returned depend on your grants.\n","operationId":"getEvents","parameters":[{"$ref":"#/components/parameters/pageOffset"},{"$ref":"#/components/parameters/pageSize"}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"items":{"$ref":"#/components/schemas/Event"},"type":"array"},"page":{"$ref":"#/components/schemas/PaginationEnvelope/properties/page"},"pages":{"$ref":"#/components/schemas/PaginationEnvelope/properties/pages"},"results":{"$ref":"#/components/schemas/PaginationEnvelope/properties/results"}},"type":"object"}}},"description":"Returns a paginated lists of Event objects from the last 90 days.\n"},"default":{"$ref":"#/components/responses/ErrorResponse"}},"security":[{"personalAccessToken":[]},{"oauth":["events:read_only"]}],"summary":"Events List","tags":["Account"],"x-code-samples":[{"lang":"Shell","source":"curl -H \"Authorization: Bearer $TOKEN\" \\\n https://api.linode.com/v4/account/events\n"},{"lang":"CLI","source":"linode-cli events list\n"}],"x-linode-cli-action":["list","ls"],"x-linode-grant":"read_only"},"x-linode-cli-command":"events"},"/account/events/{eventId}":{"get":{"description":"Returns a single Event object.\n","operationId":"getEvent","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Event"}}},"description":"An Event object"},"default":{"$ref":"#/components/responses/ErrorResponse"}},"security":[{"personalAccessToken":[]},{"oauth":["events:read_only"]}],"summary":"Event View","tags":["Account"],"x-code-samples":[{"lang":"Shell","source":"curl -H \"Authorization: Bearer $TOKEN\" \\\n https://api.linode.com/v4/account/events/123\n"},{"lang":"CLI","source":"linode-cli events view 123\n"}],"x-linode-cli-action":"view","x-linode-grant":"read_only"},"parameters":[{"description":"The ID of the Event.","in":"path","name":"eventId","required":true,"schema":{"type":"integer"}}],"x-linode-cli-command":"events"},"/account/events/{eventId}/read":{"parameters":[{"description":"The ID of the Event to designate as read.","in":"path","name":"eventId","required":true,"schema":{"type":"integer"}}],"post":{"description":"Marks a single Event as read.","operationId":"eventRead","responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Event read."},"default":{"$ref":"#/components/responses/ErrorResponse"}},"security":[{"personalAccessToken":[]},{"oauth":["events:read_only"]}],"summary":"Event Mark as Read","tags":["Account"],"x-code-samples":[{"lang":"Shell","source":"curl -H \"Content-Type: application/json\" \\\n -H \"Authorization: Bearer $TOKEN\" \\\n -X POST \\\n https://api.linode.com/v4/account/events/123/read\n"},{"lang":"CLI","source":"linode-cli events mark-read 123\n"}],"x-linode-cli-action":"mark-read","x-linode-grant":"read_only"},"x-linode-cli-command":"events"},"/account/events/{eventId}/seen":{"parameters":[{"description":"The ID of the Event to designate as seen.","in":"path","name":"eventId","required":true,"schema":{"type":"integer"}}],"post":{"description":"Marks all Events up to and including this Event by ID as seen.\n","operationId":"eventSeen","responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Events seen."},"default":{"$ref":"#/components/responses/ErrorResponse"}},"security":[{"personalAccessToken":[]},{"oauth":["events:read_only"]}],"summary":"Event Mark as Seen","tags":["Account"],"x-code-samples":[{"lang":"Shell","source":"curl -H \"Content-Type: application/json\" \\\n -H \"Authorization: Bearer $TOKEN\" \\\n -X POST \\\n https://api.linode.com/v4/account/events/123/seen\n"},{"lang":"CLI","source":"linode-cli events mark-seen 123\n"}],"x-linode-cli-action":"mark-seen","x-linode-grant":"read_write"},"x-linode-cli-command":"events"},"/account/invoices":{"get":{"description":"Returns a paginated list of Invoices against your Account.\n","operationId":"getInvoices","parameters":[{"$ref":"#/components/parameters/pageOffset"},{"$ref":"#/components/parameters/pageSize"}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"items":{"$ref":"#/components/schemas/Invoice"},"type":"array"},"page":{"$ref":"#/components/schemas/PaginationEnvelope/properties/page"},"pages":{"$ref":"#/components/schemas/PaginationEnvelope/properties/pages"},"results":{"$ref":"#/components/schemas/PaginationEnvelope/properties/results"}},"type":"object"}}},"description":"Returns a paginated list of Invoice objects."},"default":{"$ref":"#/components/responses/ErrorResponse"}},"security":[{"personalAccessToken":[]},{"oauth":["account:read_only"]}],"summary":"Invoices List","tags":["Account"],"x-code-samples":[{"lang":"Shell","source":"curl -H \"Authorization: Bearer $TOKEN\" \\\n https://api.linode.com/v4/account/invoices\n"},{"lang":"CLI","source":"linode-cli account invoices-list\n"}],"x-linode-cli-action":"invoices-list","x-linode-grant":"read_only"},"x-linode-cli-command":"account"},"/account/invoices/{invoiceId}":{"get":{"description":"Returns a single Invoice object.","operationId":"getInvoice","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Invoice"}}},"description":"An Invoice object"},"default":{"$ref":"#/components/responses/ErrorResponse"}},"security":[{"personalAccessToken":[]},{"oauth":["account:read_only"]}],"summary":"Invoice View","tags":["Account"],"x-code-samples":[{"lang":"Shell","source":"curl -H \"Authorization: Bearer $TOKEN\" \\\n https://api.linode.com/v4/account/invoices/123\n"},{"lang":"CLI","source":"linode-cli account invoice-view 123\n"}],"x-linode-cli-action":"invoice-view","x-linode-grant":"read_only"},"parameters":[{"description":"The ID of the Invoice.","in":"path","name":"invoiceId","required":true,"schema":{"type":"integer"}}],"x-linode-cli-command":"account"},"/account/invoices/{invoiceId}/items":{"get":{"description":"Returns a paginated list of Invoice items.","operationId":"getInvoiceItems","parameters":[{"$ref":"#/components/parameters/pageOffset"},{"$ref":"#/components/parameters/pageSize"}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"items":{"$ref":"#/components/schemas/InvoiceItem"},"type":"array"},"page":{"$ref":"#/components/schemas/PaginationEnvelope/properties/page"},"pages":{"$ref":"#/components/schemas/PaginationEnvelope/properties/pages"},"results":{"$ref":"#/components/schemas/PaginationEnvelope/properties/results"}},"type":"object"}}},"description":"A paginated list of InvoiceItem objects"},"default":{"$ref":"#/components/responses/ErrorResponse"}},"security":[{"personalAccessToken":[]},{"oauth":["account:read_only"]}],"summary":"Invoice Items List","tags":["Account"],"x-code-samples":[{"lang":"Shell","source":"curl -H \"Authorization: Bearer $TOKEN\" \\\n https://api.linode.com/v4/account/invoices/123/items\n"},{"lang":"CLI","source":"linode-cli account invoice-items 123\n"}],"x-linode-cli-action":"invoice-items","x-linode-grant":"read_only"},"parameters":[{"description":"The ID of the Invoice.","in":"path","name":"invoiceId","required":true,"schema":{"type":"integer"}}],"x-linode-cli-command":"account"},"/account/logins":{"get":{"description":"Returns a collection of successful logins for all users on the account during the last 90 days. This command can only be accessed by the unrestricted users of an account.\n","operationId":"getAccountLogins","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"items":{"$ref":"#/components/schemas/Login"},"type":"array"},"page":{"$ref":"#/components/schemas/PaginationEnvelope/properties/page"},"pages":{"$ref":"#/components/schemas/PaginationEnvelope/properties/pages"},"results":{"$ref":"#/components/schemas/PaginationEnvelope/properties/results"}},"type":"object"}}},"description":"A collection of successful logins for all users on the account during the last 90 days.\n"},"default":{"$ref":"#/components/responses/ErrorResponse"}},"security":[{"personalAccessToken":[]},{"oauth":["account:read_only"]}],"summary":"User Logins List All","tags":["Account"],"x-code-samples":[{"lang":"Shell","source":"curl -H \"Authorization: Bearer $TOKEN\" \\\n https://api.linode.com/v4/account/logins\n"},{"lang":"CLI","source":"linode-cli account logins-list\n"}],"x-linode-cli-action":"logins-list"},"x-linode-cli-command":"account"},"/account/logins/{loginId}":{"get":{"description":"Returns a Login object that displays information about a successful login. The logins that can be viewed can be for any user on the account, and are not limited to only the logins of the user that is accessing this API endpoint. This command can only be accessed by the unrestricted users of the account.\n","operationId":"getAccountLogin","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Login"}}},"description":"The requested login object."},"default":{"$ref":"#/components/responses/ErrorResponse"}},"security":[{"personalAccessToken":[]},{"oauth":["account:read_only"]}],"summary":"Login View","tags":["Account"],"x-code-samples":[{"lang":"Shell","source":"curl -H \"Authorization: Bearer $TOKEN\" \\\n https://api.linode.com/v4/account/logins/1234\n"},{"lang":"CLI","source":"linode-cli account login-view 1234\n"}],"x-linode-cli-action":"login-view"},"parameters":[{"description":"The ID of the login object to access.","in":"path","name":"loginId","required":true,"schema":{"type":"integer"}}],"x-