gerard2p/linode-v4

View on GitHub
openapi.yaml

Summary

Maintainability
Test Coverage
openapi: 3.0.1
info:
  version: 4.0.19
  title: Linode API
  x-logo: {
    url: '/api/v4/linode-logo.svg',
    backgroundColor: '#fafafa'
  }
  description: |
    # Introduction
    The Linode API provides the ability to programmatically manage the full
    range of Linode products and services.

    This reference is designed to assist application developers and system
    administrators.  Each endpoint includes descriptions, request syntax, and
    examples using standard HTTP requests. Response data is returned in JSON
    format.


    This document was generated from our OpenAPI Specification.  See the
    <a target="_top" href="https://www.openapis.org">OpenAPI website</a> for more information.

    <a target="_top" href="https://developers.linode.com/api/docs/v4/openapi.yaml">Download the Linode OpenAPI Specification</a>.


    # Changelog

    <a target="_top" href="https://developers.linode.com/changelog">View our Changelog</a> to see release
    notes on all changes made to our API.

    # Access and Authentication

    Some endpoints are publicly accessible without requiring authentication.
    All endpoints affecting your Account, however, require either a Personal
    Access Token or OAuth authentication (when using third-party
    applications).

    ## Personal Access Token

    The easiest way to access the API is with a Personal Access Token (PAT)
    generated from the
    <a target="_top" href="https://cloud.linode.com/profile/tokens">Linode Cloud Manager</a>.

    All scopes for the OAuth security model (defined below) apply to this
    security model as well.

    ### Authentication

    | Security Scheme Type: | HTTP |
    |-----------------------|------|
    | **HTTP Authorization Scheme** | bearer |

    ## OAuth

    The OAuth workflow is a three-step process to authenticate a User before an
    application can start making API calls on the User's behalf. If all you need
    is a Personal Access Token, feel free to skip ahead to the next section.

    First, the User visits the application's website and is directed to log with
    Linode. The User is then redirected to Linode's authentication server and
    presented the scope levels the application is requesting. Once the User
    accepts the request for access, we redirect them back to the application's
    specified redirect URI with an access code.

    Once the User has logged in to Linode and you have received an exchange code,
    you will need to exchange that access code for an Authorization token. You
    do this by making an HTTP POST request to the following address:

    ```
    https://login.linode.com/oauth/token
    ```

    Make this request as `application/x-www-form-urlencoded` or as
    `multipart/form-data` and include the following parameters in the POST body:

    | PARAMETER | DESCRIPTION |
    |-----------|-------------|
    | client_id | Your app's client ID |
    | client_secret | Your app's client secret |
    | code | The code you just received from the redirect |

    You'll get a reponse like this:

    ```json
    {
      "scope": "linodes:read_write",
      "access_token": "03d084436a6c91fbafd5c4b20c82e5056a2e9ce1635920c30dc8d81dc7a6665c"
      "token_type": "bearer",
      "expires_in": 7200,
    }
    ```

    Included in the reponse is `access_token`. With this token, you can proceed to make
    authenticated HTTP requests to the API by adding this header to each request:

    ```
    Authorization: Bearer 03d084436a6c91fbafd5c4b20c82e5056a2e9ce1635920c30dc8d81dc7a6665c
    ```

    ### Authentication

    | Security Scheme Type: | Oauth2 |
    |-----------------------|--------|
    | **AuthorizationCode Oauth Flow** |  **Authorization URL:** https://login.linode.com/oauth/authorize<br />**Token URL:** https://login.linode.com/oauth/token<br />**Scopes:**<br /><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>`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>`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>`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>`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 />|

    # Requests

    Requests must be made over HTTPS to ensure transactions are encrypted. The
    following Request methods are supported:

    | METHOD | USAGE |
    |--------|-------|
    | GET    | Retrieves data about collections and individual resources. |
    | POST   | For collections, creates a new resource of that type. Also used to perform actions on action endpoints. |
    | PUT    | Updates an existing resource. |
    | DELETE | Deletes a resource. This is a destructive action. |


    # Responses

    Actions will return one following HTTP response status codes:

    | STATUS  | DESCRIPTION |
    |---------|-------------|
    | 200 OK  | The request was successful. |
    | 204 No Content | The server successfully fulfilled the request and there is no additional content to send. |
    | 400 Bad Request | You submitted an invalid request (missing parameters, etc.). |
    | 401 Unauthorized | You failed to authenticate for this resource. |
    | 403 Forbidden | You are authenticated, but don't have permission to do this. |
    | 404 Not Found | The resource you're requesting does not exist. |
    | 429 Too Many Requests | You've hit a rate limit. |
    | 500 Internal Server Error | Please [open a Support Ticket](#operation/createTicket). |

    # Errors

    Success is indicated via <a href="https://en.wikipedia.org/wiki/List_of_HTTP_status_codes" target="_top">Standard HTTP status codes</a>.
    `2xx` codes indicate success, `4xx` codes indicate a request error, and
    `5xx` errors indicate a server error. A
    request error might be an invalid input, a required parameter being omitted,
    or a malformed request. A server error means something went wrong processing
    your request. If this occurs, please
    [open a Support Ticket](#operation/createTicket)
    and let us know. Though errors are logged and we work quickly to resolve issues,
    opening a ticket and providing us with reproducable steps and data is always helpful.

    The `errors` field is an array of the things that went wrong with your request.
    We will try to include as many of the problems in the response as possible,
    but it's conceivable that fixing these errors and resubmitting may result in
    new errors coming back once we are able to get further along in the process
    of handling your request.


    Within each error object, the `field` parameter will be included if the error
    pertains to a specific field in the JSON you've submitted. This will be
    omitted if there is no relevant field. The `reason` is a human-readable
    explanation of the error, and will always be included.

    # Pagination

    Resource lists are always paginated. The response will look similar to this:

    ```json
    {
        "data": [ ... ],
        "page": 1,
        "pages": 3,
        "results": 300
    }
    ```

    Pages start at 1. You may retrieve a specific page of results by adding
    `?page=x` to your URL (for example, `?page=4`). Page sizes default to 100,
    and can be set to return between 25 and 100. Page size can be set using
    `?page_size=x`.

    # Filtering and Sorting

    Collections are searchable by fields they include, marked in the spec as
    `x-linode-filterable: true`. Filters are passed
    in the `X-Filter` header and are formatted as JSON objects. Here is a request
    call for Linode Types in our "standard" class:

    ```Shell
    curl "https://api.linode.com/v4/linode/types" \
      -H 'X-Filter: { \
        "class": "standard"
      }'
    ```

    The filter object's keys are the keys of the object you're filtering,
    and the values are accepted values. You can add multiple filters by
    including more than one key. For example, filtering for "standard" Linode
    Types that offer one vcpu:

    ```Shell
     curl "https://api.linode.com/v4/linode/types" \
      -H 'X-Filter: { \
        "class": "standard",
        "vcpus": 1
      }'
    ```

    In the above example, both filters are combined with an "and" operation.
    However, if you wanted either Types with one vcpu or Types in our "standard"
    class, you can add an operator:

    ```Shell
    curl "https://api.linode.com/v4/linode/types" \
      -H 'X-Filter: {
        "+or": [
          { "vcpus": 1 },
          { "class": "standard" }
        ]
      }'
    ```

    Each filter in the `+or` array is its own filter object, and all conditions
    in it are combined with an "and" operation as they were in the previous example.

    Other operators are also available. Operators are keys of a Filter JSON
    object. Their value must be of the appropriate type, and they are evaluated
    as described below:

    | OPERATOR | TYPE   | DESCRIPTION                       |
    |----------|--------|-----------------------------------|
    | +and     | array  | All conditions must be true.       |
    | +or      | array  | One condition must be true.        |
    | +gt      | number | Value must be greater than number. |
    | +gte     | number | Value must be greater than or equal to number. |
    | +lt      | number | Value must be less than number. |
    | +lte     | number | Value must be less than or equal to number. |
    | +contains | string | Given string must be in the value. |
    | +neq      | string | Does not equal the value.          |
    | +order_by | string | Attribute to order the results by - must be filterable. |
    | +order    | string | Either "asc" or "desc". Defaults to "asc". Requires `+order_by`. |

    For example, filtering for [Linode Types](#operation/getLinodeTypes)
    that offer memory equal to or higher than 61440:

    ```Shell
    curl "https://api.linode.com/v4/linode/types" \
      -H 'X-Filter: {
        "memory": {
          "+gte": 61440
        }
      }'
    ```

    You can combine and nest operators to construct arbitrarily-complex queries.
    For example, give me all [Linode Types](#operation/getLinodeTypes)
    which are either `standard` or `highmem` class, or
    have between 12 and 20 vcpus:

    ```Shell
    curl "https://api.linode.com/v4/linode/types" \
      -H 'X-Filter: {
        "+or": [
          {
            "+or": [
              {
                "class": "standard"
              },
              {
                "class": "highmem"
              }
            ]
          },
          {
            "+and": [
              {
                "vcpus": {
                  "+gte": 12
                }
              },
              {
                "vcpus": {
                  "+lte": 20
                }
              }
            ]
          }
        ]
      }'
    ```

    # CLI (Command Line Interface)

    The <a href="https://github.com/linode/linode-cli" target="_top">Linode CLI</a> allows you to easily
    work with the API using intuitive and simple syntax. It requires a
    [Personal Access Token](#section/Personal-Access-Token)
    for authentication, and gives you access to all of the features and functionality
    of the Linode API that are documented here with CLI examples.

    Endpoints that do not have CLI examples are currently unavailable through the CLI, but
    can be accessed via other methods such as Shell commands and other third-party applications.
  contact:
    name: Linode
    url: /
servers:
- url: https://api.linode.com/v4
paths:
  /account:
    x-linode-cli-command: account
    get:
      x-linode-grant: read_only
      tags:
      - Account
      summary: View Account
      description: >
        Returns the contact and billing information related to
        your Account.
      operationId: getAccount
      x-linode-cli-action: view
      security:
      - personalAccessToken: []
      - oauth:
        - account:read_only
      responses:
        '200':
          description: Returns a single Account object.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Account'
        default:
          $ref: '#/components/responses/ErrorResponse'
      x-code-samples:
      - lang: Shell
        source: >
          curl -H "Authorization: Bearer $TOKEN" \
              https://api.linode.com/v4/account
      - lang: CLI
        source: >
          linode-cli account view
    put:
      x-linode-grant: read_write
      tags:
      - Account
      summary: Update Account
      description: >
        Updates contact and billing information
        related to your Account.
      operationId: updateAccount
      x-linode-cli-action: update
      security:
      - personalAccessToken: []
      - oauth:
        - account:read_write
      requestBody:
        description: Update contact and billing information.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Account'
      responses:
        '200':
          description: The updated Account.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Account'
        default:
          $ref: '#/components/responses/ErrorResponse'
      x-code-samples:
      - lang: Shell
        source: >
          curl -H "Content-Type: application/json" \
              -H "Authorization: Bearer $TOKEN" \
              -X PUT -d '{
                "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",
                "phone": "555-555-1212",
                "state": "PA",
                "zip": 19102,
                }
              }' \
              https://api.linode.com/v4/account
      - lang: CLI
        source: >
          linode-cli account update \
            --first_name John \
            --last_name Smith
  /account/credit-card:
    x-linode-cli-command: account
    post:
      x-linode-grant: read_write
      tags:
      - Account
      summary: Add/Edit Credit Card
      description: >
        Adds/edit credit card information to your Account.

        Only one credit card can be associated with your Account, so using this
        endpoint will overwrite your currently active card information with the
        new credit card.
      operationId: createCreditCard
      x-linode-cli-action: update-card
      security:
      - personalAccessToken: []
      - oauth:
        - account:read_write
      requestBody:
        description: Update the credit card information associated with your Account.
        required: true
        content:
          application/json:
            schema:
              allOf:
              - $ref: '#/components/schemas/CreditCard'
              - properties:
                  cvv:
                    type: string
                    description: >
                      The Card Verification Value on the back of the card.
                    example: '123'
      responses:
        '200':
          description: Credit Card updated.
          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 '{
                  "card_number": "4111111111111111",
                  "expiry_month": 11,
                  "expiry_year": 2020
                }' \
                https://api.linode.com/v4/account/credit-card
        - lang: CLI
          source: >
            linode-cli account update-card \
              --card_number 4111111111111111 \
              --expiry_month 11 \
              --expiry_year 2025
  /account/events:
    x-linode-cli-command: events
    get:
      x-linode-grant: read_only
      parameters:
      - $ref: '#/components/parameters/pageOffset'
      - $ref: '#/components/parameters/pageSize'
      tags:
      - Account
      summary: List Events
      description: >
         Returns a collection of Event objects representing
         actions taken on your Account. The Events returned depends on your
         grants.
      operationId: getEvents
      x-linode-cli-action: list
      security:
      - personalAccessToken: []
      - oauth:
        - events:read_only
      responses:
        '200':
          description: Returns a paginated lists of Event objects.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/Event'
                  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/account/events
      - lang: CLI
        source: >
          linode-cli events list
  /account/events/{eventId}:
    x-linode-cli-command: events
    parameters:
      - name: eventId
        in: path
        description: The ID of the Event.
        required: true
        schema:
          type: integer
    get:
      x-linode-grant: read_only
      tags:
      - Account
      summary: View Event
      description: Returns a single Event object.
      operationId: getEvent
      x-linode-cli-action: view
      security:
      - personalAccessToken: []
      - oauth:
        - events:read_only
      responses:
        '200':
          description: An Event object
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Event'
        default:
          $ref: '#/components/responses/ErrorResponse'
      x-code-samples:
      - lang: Shell
        source: >
          curl -H "Authorization: Bearer $TOKEN" \
              https://api.linode.com/v4/account/events/123
      - lang: CLI
        source: >
          linode-cli events view 123
  /account/events/{eventId}/read:
    x-linode-cli-command: events
    parameters:
      - name: eventId
        in: path
        description: The ID of the Event to designate as read.
        required: true
        schema:
          type: integer
    post:
      x-linode-grant: read_write
      tags:
      - Account
      summary: Mark Event as Read
      description: Marks a single Event as read.
      operationId: eventRead
      x-linode-cli-action: mark-read
      security:
      - personalAccessToken: []
      - oauth:
        - events:read_write
      responses:
        '200':
          description: Event read.
          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/account/events/123/read
        - lang: CLI
          source: >
            linode-cli events mark-read 123
  /account/events/{eventId}/seen:
    x-linode-cli-command: events
    parameters:
      - name: eventId
        in: path
        description: The ID of the Event to designate as seen.
        required: true
        schema:
          type: integer
    post:
      x-linode-grant: read_write
      tags:
      - Account
      summary: Mark Event as Seen
      description: >
        Marks all Events up to and including this Event by ID as seen.
      operationId: eventSeen
      x-linode-cli-action: mark-seen
      security:
      - personalAccessToken: []
      - oauth:
        - events:read_only
      responses:
        '200':
          description: Events seen.
          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/account/events/123/seen
        - lang: CLI
          source: >
            linode-cli events mark-seen 123
  /account/invoices:
    x-linode-cli-command: account
    get:
      x-linode-grant: read_only
      parameters:
      - $ref: '#/components/parameters/pageOffset'
      - $ref: '#/components/parameters/pageSize'
      tags:
      - Account
      summary: List Invoices
      description: >
        Returns a paginated list of Invoices against your Account.
      operationId: getInvoices
      x-linode-cli-action: invoices-list
      security:
      - personalAccessToken: []
      - oauth:
        - account:read_only
      responses:
        '200':
          description: Returns a paginated list of Invoice objects.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/Invoice'
                  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/account/invoices
        - lang: CLI
          source: >
            linode-cli account invoices-list
  /account/invoices/{invoiceId}:
    x-linode-cli-command: account
    parameters:
      - name: invoiceId
        in: path
        description: The ID of the Invoice.
        required: true
        schema:
          type: integer
    get:
      x-linode-grant: read_only
      tags:
      - Account
      summary: View Invoice
      description: Returns a single Invoice object.
      operationId: getInvoice
      x-linode-cli-action: invoice-view
      security:
      - personalAccessToken: []
      - oauth:
        - account:read_only
      responses:
        '200':
          description: An Invoice object
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Invoice'
        default:
          $ref: '#/components/responses/ErrorResponse'
      x-code-samples:
        - lang: Shell
          source: >
            curl -H "Authorization: Bearer $TOKEN" \
                https://api.linode.com/v4/account/invoices/123
        - lang: CLI
          source: >
            linode-cli account invoice-view 123
  /account/invoices/{invoiceId}/items:
    x-linode-cli-command: account
    parameters:
      - name: invoiceId
        in: path
        description: The ID of the Invoice.
        required: true
        schema:
          type: integer
    get:
      x-linode-grant: read_only
      parameters:
      - $ref: '#/components/parameters/pageOffset'
      - $ref: '#/components/parameters/pageSize'
      tags:
      - Account
      summary: List Invoice Items
      description: Returns a paginated list of Invoice items.
      operationId: getInvoiceItems
      x-linode-cli-action: invoice-items
      security:
      - personalAccessToken: []
      - oauth:
        - account:read_only
      responses:
        '200':
          description: A paginated list of InvoiceItem objects
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/InvoiceItem'
                  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/account/invoices/123/items
        - lang: CLI
          source: >
            linode-cli account invoice-items 123
  /account/notifications:
    x-linode-cli-command: account
    get:
      x-linode-grant: read_only
      tags:
      - Account
      summary: List Notifications
      description: >
        Returns a collection of Notification objects representing
        important, often time-sensitive items related to your Account.

        You cannot interact directly with Notifications, and a Notification will disappear
        when the circumstances causing it have been resolved. For
        example, if you have an important Ticket open, you must respond to the
        Ticket to dismiss the Notification.
      operationId: getNotifications
      x-linode-cli-action: notifications-list
      security:
      - personalAccessToken: []
      - oauth:
        - account:read_only
      responses:
        '200':
          description: Returns a paginated list of Notification objects.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/Notification'
                  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'
      parameters:
      - $ref: '#/components/parameters/pageOffset'
      - $ref: '#/components/parameters/pageSize'
      x-code-samples:
        - lang: Shell
          source: >
            curl -H "Authorization: Bearer $TOKEN" \
                https://api.linode.com/v4/account/notifications
        - lang: CLI
          source: >
            linode-cli account notifications-list
  /account/oauth-clients:
    x-linode-cli-command: account
    get:
      x-linode-grant: read_only
      parameters:
      - $ref: '#/components/parameters/pageOffset'
      - $ref: '#/components/parameters/pageSize'
      tags:
      - Account
      summary: List OAuth Clients
      description: >
        Returns a paginated list of OAuth Clients registered to your Account.  OAuth
        Clients allow users to log into applications you write or host using their
        Linode Account, and may allow them to grant some level of access to their
        Linodes or other entities to your application.
      operationId: getClients
      x-linode-cli-action: clients-list
      security:
      - personalAccessToken: []
      - oauth:
        - account:read_only
      responses:
        '200':
          description: A paginated list of OAuth Clients.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/OAuthClient'
                  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/account/oauth-clients
        - lang: CLI
          source: >
            linode-cli account clients-list
    post:
      tags:
      - Account
      summary: Create OAuth Client
      description: >
        Creates an OAuth Client, which can be used to allow users
        (using their Linode account) to log in to your own application, and optionally grant
        your application some amount of access to their Linodes or other entities.
      operationId: createClient
      x-linode-cli-action: client-create
      security:
      - personalAccessToken: []
      - oauth:
        - account:read_write
      requestBody:
        description: Information about the OAuth Client to create.
        content:
          application/json:
            schema:
              required:
              - label
              - redirect_uri
              allOf:
              - $ref: '#/components/schemas/OAuthClient'
              - type: object
                properties:
                  public:
                    type: boolean
                    description: Whether to create a public or private client.
                    example: false
      responses:
        '200':
          description: Client created successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OAuthClient'
        default:
          $ref: '#/components/responses/ErrorResponse'
      x-code-samples:
        - lang: Shell
          source: >
            curl -H "Content-Type: application/json" \
                -H "Authorization: Bearer $TOKEN" \
                -X POST -d '{
                    "redirect_uri": "https://example.org/oauth/callback",
                    "label": "Test_Client_1",
                    "public": false
                }' \
                https://api.linode.com/v4/account/oauth-clients
        - lang: CLI
          source: >
            linode-cli account client-create \
              --label Test_Client_1 \
              --redirect_uri https://example.org/callback
  /account/oauth-clients/{clientId}:
    parameters:
      - name: clientId
        in: path
        description: The OAuth Client ID to look up.
        required: true
        schema:
          type: string
    x-linode-cli-command: account
    get:
      tags:
      - Account
      summary: View OAuth Client
      description: >
        Returns information about a single OAuth client.
      operationId: getClient
      x-linode-cli-action: client-view
      security:
      - personalAccessToken: []
      - oauth:
        - account:read_only
      responses:
        '200':
          description: Information about the requested client.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OAuthClient'
        default:
          $ref: '#/components/responses/ErrorResponse'
      x-code-samples:
        - lang: Shell
          source: >
            curl -H "Authorization: Bearer $TOKEN" \
                https://api.linode.com/v4/account/oauth-clients/edc6790ea9db4d224c5c
        - lang: CLI
          source: >
            linode-cli account client-view \
              edc6790ea9db4d224c5c
    put:
      tags:
      - Account
      summary: Update OAuth Client
      description: >
        Update information about an OAuth Client on your Account. This can be
        especially useful to update the `redirect_uri` of your client in the event
        that the callback url changed in your application.
      operationId: updateClient
      x-linode-cli-action: client-update
      security:
      - personalAccessToken: []
      - oauth:
        - account:read_write
      requestBody:
        description: The fields to update.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OAuthClient'
      responses:
        '200':
          description: Client updated successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OAuthClient'
        default:
          $ref: '#/components/responses/ErrorResponse'
      x-code-samples:
        - lang: Shell
          source: >
            curl -H "Content-Type: application/json" \
                -H "Authorization: Bearer $TOKEN" \
                -X PUT -d '{
                  "redirect_uri": "https://example.org/oauth/callback",
                  "label": "Test_Client_1"
                  }
                }' \
                https://api.linode.com/v4/account/oauth-clients/edc6790ea9db4d224c5c
        - lang: CLI
          source: >
            linode-cli account client-update \
              edc6790ea9db4d224c5c \
              --label Test_Client_1
    delete:
      tags:
      - Account
      summary: Delete OAuth Client
      description: >
        Deletes an OAuth Client registered with Linode. The Client ID and
        Client secret will no longer be accepted by <a target="_top" href="https://login.linode.com">https://login.linode.com</a>,
        and all tokens issued to this client will be invalidated (meaning that
        if your application was using a token, it will no longer work).
      operationId: deleteClient
      x-linode-cli-action: client-delete
      security:
      - personalAccessToken: []
      - oauth:
        - account:read_write
      responses:
        '200':
          description: Client 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/account/oauth-clients/edc6790ea9db4d224c5c
        - lang: CLI
          source: >
            linode-cli account client-delete \
              edc6790ea9db4d224c5c
  /account/oauth-clients/{clientId}/reset-secret:
    x-linode-cli-command: account
    parameters:
      - name: clientId
        in: path
        description: The OAuth Client ID to look up.
        required: true
        schema:
          type: string
    post:
      tags:
      - Account
      summary: Reset OAuth Client Secret
      description: >
        Resets the OAuth Client secret for a client you own, and returns the
        OAuth Client with the plaintext secret. This secret is not supposed to
        be publicly known or disclosed anywhere. This can be used to generate
        a new secret in case the one you have has been leaked, or to get a new
        secret if you lost the original. The old secret is expired immediately,
        and logins to your client with the old secret will fail.
      operationId: resetClientSecret
      x-linode-cli-action: client-reset-secret
      security:
      - personalAccessToken: []
      - oauth:
        - account:read_write
      responses:
        '200':
          description: Client secret reset successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OAuthClient'
        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/account/oauth-clients/edc6790ea9db4d224c5c/reset-secret
        - lang: CLI
          source: >
            linode-cli account client-reset-secret \
              edc6790ea9db4d224c5c
  /account/oauth-clients/{clientId}/thumbnail:
    x-linode-cli-command: account
    parameters:
      - name: clientId
        in: path
        description: The OAuth Client ID to look up.
        required: true
        schema:
          type: string
    get:
      tags:
      - Account
      summary: View OAuth Client Thumbnail
      description: >
        Returns the thumbnail for this OAuth Client.  This is a
        publicly-viewable endpoint, and can be accessed without authentication.
      operationId: getClientThumbnail
      x-linode-cli-skip: true
      x-linode-cli-action: client-thumbnail
      responses:
        '200':
          description: The client's thumbnail.
          content:
            image/png:
              schema:
                type: string
                format: binary
        default:
          $ref: '#/components/responses/ErrorResponse'
      x-code-samples:
        - lang: Shell
          source: >
            curl -H "Authorization: Bearer $TOKEN" \
                https://api.linode.com/v4/account/oauth-clients/edc6790ea9db4d224c5c/thumbnail > thumbnail.png
    put:
      tags:
      - Account
      summary: Update OAuth Client Thumbnail
      description: >
        Upload a thumbnail for a client you own.  You must upload an image file
        that will be returned when the thumbnail is retrieved.  This image will
        be publicly-viewable.
      operationId: setClientThumbnail
      x-linode-cli-skip: true
      x-linode-cli-action: update-client-thumbnail
      security:
      - personalAccessToken: []
      - oauth:
        - account:read_write
      requestBody:
        description: The image to set as the thumbnail.
        required: true
        content:
          image/png:
            schema:
              type: string
              format: binary
      responses:
        '200':
          description: Thumbnail updated successfully.
          content:
            application/json:
              schema:
                type: object
        default:
          $ref: '#/components/responses/ErrorResponse'
      x-code-samples:
      - lang: Shell
        source: >
          curl -H "Content-Type: image/png" \
              -H "Authorization: Bearer $TOKEN" \
              -X PUT \
              --data-binary "/path/to/image"
              https://api.linode.com/v4/account/oauth-clients/edc6790ea9db4d224c5c/thumbnail
  /account/payments:
    x-linode-cli-command: account
    get:
      parameters:
      - $ref: '#/components/parameters/pageOffset'
      - $ref: '#/components/parameters/pageSize'
      x-linode-grant: read_only
      tags:
      - Account
      summary: List Payments
      description: >
        Returns a paginated list of Payments made on this Account.
      operationId: getPayments
      x-linode-cli-action: payments-list
      security:
      - personalAccessToken: []
      - oauth:
        - account:read_only
      responses:
        '200':
          description: Returns a paginated list of Payment objects.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/Payment'
                  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/account/payments
        - lang: CLI
          source: >
            linode-cli account payments-list
    post:
      x-linode-grant: read_write
      tags:
      - Account
      summary: Make Payment
      description: >
        Makes a Payment to your Account via credit card. This will charge your
        credit card the requested amount.
      operationId: createPayment
      x-linode-cli-action: payment-create
      security:
      - personalAccessToken: []
      - oauth:
        - account:read_write
      requestBody:
        description: Information about the Payment you are making.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PaymentRequest'
      responses:
        '200':
          description: Payment made.
          content:
            application/json:
              schema:
                  $ref: '#/components/schemas/Payment'
        default:
          $ref: '#/components/responses/ErrorResponse'
      x-code-samples:
        - lang: Shell
          source: >
            curl -H "Content-Type: application/json" \
                -H "Authorization: Bearer $TOKEN" \
                -X POST -d '{
                    "cvv": "123",
                    "usd": "120.50"
                }' \
                https://api.linode.com/v4/account/payments
        - lang: CLI
          source: >
            linode-cli account payment-create \
              --cvv 123 \
              --usd 120.50
  /account/payments/{paymentId}:
    x-linode-cli-command: account
    parameters:
    - name: paymentId
      in: path
      description: The ID of the Payment to look up.
      required: true
      schema:
        type: integer
    get:
      x-linode-grant: read_only
      tags:
      - Account
      summary: View Payment
      description: >
        Returns information about a specific Payment.
      operationId: getPayment
      x-linode-cli-action: payment-view
      security:
      - personalAccessToken: []
      - oauth:
        - account:read_only
      responses:
        '200':
          description: A Payment object.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Payment'
        default:
          $ref: '#/components/responses/ErrorResponse'
      x-code-samples:
        - lang: Shell
          source: >
            curl -H "Authorization: Bearer $TOKEN" \
                https://api.linode.com/v4/account/payments/123
        - lang: CLI
          source: >
            linode-cli account payment-view 123
  /account/payments/paypal:
    x-linode-cli-command: account
    post:
      x-linode-grant: read_only
      tags:
      - Account
      summary: Stage PayPal Payment
      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](#operation/executePayPalPayment)
        to complete the Payment.
      operationId: createPayPalPayment
      x-linode-cli-action: paypal-start
      security:
      - personalAccessToken: []
      - oauth:
        - account:read_write
      requestBody:
        description: >
          The amount of the Payment to submit via PayPal.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PayPal'
      responses:
        '200':
          description: PayPal Payment staged.
          content:
            application/json:
              schema:
                type: object
                properties:
                  payment_id:
                      type: string
                      description: >
                        The paypal-generated ID for this Payment. Used when
                        authorizing the Payment in PayPal's interface.
                      example: PAY-1234567890ABCDEFGHIJKLMN
                  checkout_token:
                      type: string
                      description: >
                        The checkout token generated for this Payment.
                      example: EC-1A2B3C4D5E6F7G8H9
                      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 '{
                    "usd": "120.50",
                    "redirect_url": "https://example.org",
                    "cancel_url": "https://example.org"
                }' \
                https://api.linode.com/v4/account/payments/paypal
        - lang: CLI
          source: >
            linode-cli account paypal-start \
              --cancel_url https://example.org \
              --redirect_url https://example.org \
              --usd 120.50
  /account/payments/paypal/execute:
    x-linode-cli-command: account
    post:
      x-linode-grant: read_write
      tags:
      - Account
      summary: Execute Staged/Approved PayPal Payment
      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.
      operationId: executePayPalPayment
      x-linode-cli-action: paypal-execute
      security:
      - personalAccessToken: []
      - oauth:
        - account:read_write
      requestBody:
        description: >
          The details of the Payment to execute.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PayPalExecute'
      responses:
        '200':
          description: PayPal Payment executed.
          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 '{
                    "payment_id": "PAY-1234567890ABCDEFGHIJKLMN",
                    "payer_id": "ABCDEFGHIJKLM"
                }' \
                https://api.linode.com/v4/account/payments/paypal
        - lang: CLI
          source: >
            linode-cli account paypal-execute
  /account/settings:
    x-linode-cli-command: account
    get:
      x-linode-grant: read_only
      tags:
      - Account
      summary: View Account Settings
      description: >
        Returns information related to
        your Account settings: Managed service subscription, Longview
        subscription, and network helper.
      operationId: getAccountSettings
      x-linode-cli-action: settings
      security:
      - personalAccessToken: []
      - oauth:
        - account:read_only
      responses:
        '200':
          description: Returns a single Account settings object.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccountSettings'
        default:
          $ref: '#/components/responses/ErrorResponse'
      x-code-samples:
        - lang: Shell
          source: >
            curl -H "Authorization: Bearer $TOKEN" \
                https://api.linode.com/v4/account/settings
        - lang: CLI
          source: >
            linode-cli account settings
    put:
      x-linode-grant: read_write
      tags:
      - Account
      summary: Update Account Settings
      description: >
        Updates your Account settings.
      operationId: updateAccountSettings
      x-linode-cli-action: settings-update
      security:
      - personalAccessToken: []
      - oauth:
        - account:read_write
      requestBody:
        description: Update Account settings information.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AccountSettings'
      responses:
        '200':
          description: The updated Account settings.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccountSettings'
        default:
          $ref: '#/components/responses/ErrorResponse'
      x-code-samples:
        - lang: Shell
          source: >
            curl -H "Content-Type: application/json" \
                -H "Authorization: Bearer $TOKEN" \
                -X PUT -d '{
                    "network_helper": true,
                    "longview_subscription": "longview-10"
                }' \
                https://api.linode.com/v4/account/settings
        - lang: CLI
          source: >
            linode-cli account settings-update \
              --longview_subscription longview-30 \
              --network_helper false
  /account/transfer:
    x-linode-cli-command: account
    get:
      x-linode-grant: read_only
      tags:
      - Account
      summary: View Network Utilization
      description: >
        Returns a Transfer object showing your network utilization,
        in GB, for the current month.
      operationId: getTransfer
      x-linode-cli-action: transfer
      security:
      - personalAccessToken: []
      - oauth:
        - account:read_only
      responses:
        '200':
          description: Returns a single Transfer object.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Transfer'
        default:
          $ref: '#/components/responses/ErrorResponse'
      x-code-samples:
        - lang: Shell
          source: >
            curl -H "Authorization: Bearer $TOKEN" \
                https://api.linode.com/v4/account/transfer
        - lang: CLI
          source: >
            linode-cli account transfer
  /account/users:
    x-linode-cli-command: users
    get:
      x-linode-grant: unrestricted only
      parameters:
      - $ref: '#/components/parameters/pageOffset'
      - $ref: '#/components/parameters/pageSize'
      tags:
      - Account
      summary: List Users
      description: >
        Returns a paginated list of Users on your Account. Users may access all
        or part of your Account based on their restricted status and grants.  An
        unrestricted User may access everything on the account, whereas restricted
        User may only access entities or perform actions they've been given specific
        grants to.
      operationId: getUsers
      x-linode-cli-action: list
      security:
      - personalAccessToken: []
      - oauth:
        - account:read_only
      responses:
        '200':
          description: A paginated list of Users.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/User'
                  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/account/users
        - lang: CLI
          source: >
            linode-cli users list
    post:
      x-linode-grant: unrestricted only
      tags:
      - Account
      summary: Create User
      description: >
        Creates a User on your Account. Once created, the User will be
        able to log in and access portions of your Account. Access is
        determined by whether or not they are restricted, and what grants they
        have been given.
      operationId: createUser
      x-linode-cli-action: create
      security:
      - personalAccessToken: []
      - oauth:
        - account:read_write
      requestBody:
        description: Information about the User to create.
        content:
          application/json:
            schema:
              required:
              - username
              - email
              properties:
                username:
                  type: string
                  pattern: ^[a-zA-Z0-9]((?![_-]{2,})[a-zA-Z0-9-_])+[a-zA-Z0-9]$
                  minLength: 3
                  maxLength: 32
                  description: >
                    The new User's username. This is used for logging in, and may also be
                    displayed alongside actions the User performs (for example, in Events
                    or public StackScripts).
                  example: example_user
                email:
                  type: string
                  format: email
                  description: >
                    The new User's email address.
                  example: example_user@linode.com
                restricted:
                  type: boolean
                  description: >
                    If true, the new User must be granted access to perform actions or access
                    entities on this Account. See
                    [/account/users/{username}/grants](#operation/getUserGrants)
                    for details on how to configure grants for a restricted User.
                  example: true
      responses:
        '200':
          description: New User created successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/User'
        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": "example_user",
                    "email": "person@place.com",
                    "restricted": true
                }' \
                https://api.linode.com/v4/account/users
        - lang: CLI
          source: >
            linode-cli users create \
              --username example_user \
              --email example_user@linode.com
  /account/users/{username}:
    x-linode-cli-command: users
    parameters:
      - name: username
        in: path
        description: The username to look up.
        required: true
        schema:
          type: string
    get:
      x-linode-grant: unrestricted only
      tags:
      - Account
      summary: View User
      description: >
        Returns information about a single User on your Account.
      operationId: getUser
      x-linode-cli-action: view
      security:
      - personalAccessToken: []
      - oauth:
        - account:read_only
      responses:
        '200':
          description: The requested User object
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/User'
        default:
          $ref: '#/components/responses/ErrorResponse'
      x-code-samples:
        - lang: Shell
          source: >
            curl -H "Authorization: Bearer $TOKEN" \
                https://api.linode.com/v4/account/users/example_user
        - lang: CLI
          source: >
            linode-cli users view example_user
    put:
      x-linode-grant: unrestricted only
      tags:
      - Account
      summary: Update User
      description: >
        Update information about a User on your Account. This can be used to
        change the restricted status of a User. When making a User restricted,
        no grants will be configured by default and you must then set up grants
        in order for the User to access anything on the Account.
      operationId: updateUser
      x-linode-cli-action: update
      security:
      - personalAccessToken: []
      - oauth:
        - account:read_write
      requestBody:
        description: The information to update.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/User'
      responses:
        '200':
          description: User updated successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/User'
        default:
          $ref: '#/components/responses/ErrorResponse'
      x-code-samples:
        - lang: Shell
          source: >
            curl -H "Content-Type: application/json" \
                -H "Authorization: Bearer $TOKEN" \
                -X PUT -d '{
                    "username": example_user
                    "restricted": true
                }' \
                https://api.linode.com/v4/account/users/example_user
        - lang: CLI
          source: >
            linode-cli users update example_user \
              --username example_user \
              --restricted true
    delete:
      x-linode-grant: unrestricted only
      tags:
      - Account
      summary: Delete User
      description: >
        Deletes a User. The deleted User will be immediately logged out and
        may no longer log in or perform any actions. All of the User's Grants
        will be removed.
      operationId: deleteUser
      x-linode-cli-action: delete
      security:
      - personalAccessToken: []
      - oauth:
        - account:read_write
      responses:
        '200':
          description: User 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/account/users/example_user
        - lang: CLI
          source: >
            linode-cli users delete example_user
  /account/users/{username}/grants:
    x-linode-cli-command: users
    parameters:
      - name: username
        in: path
        description: The username to look up.
        required: true
        schema:
          type: string
    get:
      x-linode-grant: unrestricted only
      tags:
      - Account
      summary: View User's grants
      description: >
        Returns the full grants structure for this User. This includes all
        entities on the Account alongside what level of access this User has
        to each of them. Individual users may view their own grants at the
        [/profile/grants](#operation/getProfileGrants)
        endpoint, but will not see entities that they have no access to.
      operationId: getUserGrants
      x-linode-cli-action: grants
      x-linode-cli-skip: true
      security:
      - personalAccessToken: []
      - oauth:
        - account:read_only
      responses:
        '200':
          description: The User's grants.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GrantsResponse'
        '204':
          description: >
            This is an unrestricted User, and therefore has no grants to return.
            This User may access everything on the Account and perform all actions.
        default:
          $ref: '#/components/responses/ErrorResponse'
      x-code-samples:
        - lang: Shell
          source: >
            curl -H "Authorization: Bearer $TOKEN" \
                https://api.linode.com/v4/account/users/example_user/grants
    put:
      x-linode-grant: unrestricted only
      tags:
      - Account
      summary: Update User's grants
      description: >
        Update the grants a User has. This can be used to give a User access
        to new entities or actions, or take access away.  You do not need to
        include the grant for every entity on the Account in this request; any
        that are not included will remain unchanged.
      operationId: updateUserGrants
      x-linode-cli-action: update-grants
      x-linode-cli-skip: true
      security:
      - personalAccessToken: []
      - oauth:
        - account:read_write
      requestBody:
        description: The grants to update. Omitted grants will be left unchanged.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GrantsResponse'
      responses:
        '200':
          description: Grants updated successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GrantsResponse'
        default:
          $ref: '#/components/responses/ErrorResponse'
      x-code-samples:
        - lang: Shell
          source: >
            curl -H "Content-Type: application/json" \
                -H "Authorization: Bearer $TOKEN" \
                -X PUT -d '{
                    "global": {
                      "add_linodes": true,
                      "add_nodebalancers": false,
                      "add_domains": true,
                      "add_longview": false,
                      "add_stackscripts": true,
                      "longview_subscription": true,
                      "add_images": true,
                      "add_volumes": true,
                      "account_access": "read_only",
                      "cancel_account": false
                    },
                    "domain": [
                      {
                        "id": 123,
                        "permissions": "read_only"
                      }
                    ],
                    "image": [
                      {
                        "id": 123,
                        "permissions": "read_only"
                      }
                    ],
                    "linode": [
                      {
                        "id": 123,
                        "permissions": "read_only"
                      },
                      {
                        "id": 234,
                        "permissions": "read_write"
                      },
                      {
                        "id": 345,
                        "permissions": "read_only"
                      },
                    ],
                    "longview": [
                      {
                        "id": 123,
                        "permissions": "read_only"
                      },
                      {
                        "id": 234,
                        "permissions": "read_write"
                      }
                    ],
                    "nodebalancer": [
                      {
                        "id": 123,
                        "permissions": "read_write"
                      }
                    ],
                    "stackscript": [
                      {
                        "id": 123,
                        "permissions": "read_only"
                      },
                      {
                        "id": 124,
                        "permissions": "read_write"
                      }
                    ],
                    "volume": [
                      {
                        "id": 123,
                        "permissions": "read_only"
                      }
                    ]
                }' \
                https://api.linode.com/v4/account/users/example_user/grants
  /domains:
    x-linode-cli-command: domains
    get:
      x-linode-grant: read_only
      parameters:
      - $ref: '#/components/parameters/pageOffset'
      - $ref: '#/components/parameters/pageSize'
      tags:
      - Domains
      summary: List Domains
      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:
        - domains:read_only
      responses:
        '200':
          description: A paginated list of Domains you have registered.
          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'
        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
      tags:
      - Domains
      summary: Create Domain
      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
      security:
      - personalAccessToken: []
      - oauth:
        - domains:read_write
      requestBody:
        description: Information about the domain you are registering.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Domain'
      responses:
        '200':
          description: |
            Domain added successfully.
          content:
            application/json:
              schema:
                $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 '{
                    "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"],
                    "display_group": "Example Display Group"
                }' \
                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: domainId
        in: path
        description: The ID of the Domain to access.
        required: true
        schema:
          type: integer
    get:
      x-linode-grant: read_only
      tags:
      - Domains
      summary: View Domain
      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
      security:
      - personalAccessToken: []
      - oauth:
        - domains:read_only
      responses:
        '200':
          description: |
            A single Domain in Linode's DNS Manager.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Domain'
        default:
          $ref: '#/components/responses/ErrorResponse'
      x-code-samples:
      - lang: Shell
        source: >
          curl -H "Authorization: Bearer $TOKEN" \
              https://api.linode.com/v4/domains/123
      - lang: CLI
        source: >
          linode-cli domains view 123
    put:
      x-linode-grant: read_write
      tags:
      - Domains
      summary: Update Domain
      description: |
        Update information about a Domain in Linode's DNS Manager.
      operationId: updateDomain
      x-linode-cli-action: update
      security:
      - personalAccessToken: []
      - oauth:
        - domains:read_write
      requestBody:
        description: The Domain information to update.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Domain'
      responses:
        '200':
          description: Domain update successful.
          content:
            application/json:
              schema:
                $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 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"],
                  "display_group": "Example Display Group"
              }' \
              https://api.linode.com/v4/domains/123
      - lang: CLI
        source: >
          linode-cli domains update 1234 \
            --retry_sec 7200 \
            --ttl_sec 300
    delete:
      x-linode-grant: read_write
      tags:
      - Domains
      summary: Delete Domain
      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/import:
    post:
      x-linode-grant: read_write
      x-linode-cli-command: domains
      tags:
      - Domains
      summary: Import a Domain Zone
      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
      security:
      - personalAccessToken: []
      - oauth:
        - domains:read_write
      requestBody:
        description: Information about the Domain to import.
        content:
          application/json:
            schema:
              required:
              - domain
              - remote_nameserver
              allOf:
              - type: object
                properties:
                  domain:
                    type: string
                    description: >
                       The domain to import.
                    example: example.com
                  remote_nameserver:
                    type: string
                    description: >
                      The remote nameserver that allows zone transfers (AXFR).
                    example: examplenameserver.com
      responses:
        '200':
          description: |
            A single Domain in Linode's DNS Manager.
          content:
            application/json:
              schema:
                $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 '{
                  "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}/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:
      - Domains
      parameters:
      - $ref: '#/components/parameters/pageOffset'
      - $ref: '#/components/parameters/pageSize'
      security:
      - personalAccessToken: []
      - oauth:
        - domains:read_only
      summary: List Domain Records
      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: A list of Domain Records.
          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'
      x-code-samples:
      - lang: Shell
        source: >
          curl -H "Authorization: Bearer $TOKEN" \
              https://api.linode.com/v4/domains/1234/records
      - lang: CLI
        source: >
          linode-cli domains records-list 1234
    post:
      x-linode-grant: read_write
      tags:
      - Domains
      security:
      - personalAccessToken: []
      - oauth:
        - domains:read_write
      summary: Create Domain Record
      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: Domain Record created successfully.
          content:
            application/json:
              schema:
                $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 '{
                "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 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:
      x-linode-grant: read_only
      tags:
      - Domains
      security:
      - personalAccessToken: []
      - oauth:
        - domains:read_only
      summary: View Domain Record
      description: >
        View a single Record on this Domain.
      operationId: getDomainRecord
      x-linode-cli-action: records-view
      responses:
        '200':
          description: A Domain Record object.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DomainRecord'
        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
      - lang: CLI
        source: >
          linode-cli domains records-view 123 234
    put:
      x-linode-grant: read_write
      tags:
      - Domains
      security:
      - personalAccessToken: []
      - oauth:
        - domains:read_write
      summary: Update Domain Record
      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'
      responses:
        '200':
          description: Domain Record updated.
          content:
            application/json:
              schema:
                $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 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
      - 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
      tags:
      - Domains
      security:
      - personalAccessToken: []
      - oauth:
        - domains:read_write
      summary: Delete Domain Record
      description: >
        Deletes a Record on this Domain.
      operationId: deleteDomainRecord
      x-linode-cli-action: records-delete
      responses:
        '200':
          description: Record 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/123/records/234
      - lang: CLI
        source: >
          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:
      - Images
      summary: List Images
      description: >
        Returns a paginated list of Images.


        * Calling this endpoint without authentication returns all public Images.

        * Authentication is required to return a combined paginated list of all public and
          your private Images.
      x-linode-redoc-load-ids: true
      operationId: getImages
      x-linode-cli-action: list
      security:
      - personalAccessToken: []
      - oauth:
        - images:read_only
      responses:
        '200':
          description: A paginated list of Images.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/ImagePublic'
                  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/images
      - lang: CLI
        source: >
          linode-cli images list
    post:
      x-linode-grant: read_write
      tags:
      - Images
      summary: Create Image
      description: >
        Creates a private gold-master Image from a Linode Disk. There is no
        additional charge to store Images for Linode users.

        Images are limited to three per Account.
      operationId: createImage
      x-linode-cli-action: create
      security:
      - personalAccessToken: []
      - oauth:
        - images:read_write
      requestBody:
        description: Information about the Image to create.
        content:
          application/json:
            schema:
              required:
              - disk_id
              allOf:
              - $ref: '#/components/schemas/ImagePrivate'
              - type: object
                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.
      responses:
        '200':
          description: New private Image created successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ImagePrivate'
        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
      - lang: CLI
        source: >
          linode-cli images create \
            --label this_is_a_label \
            --description "A longer description \
              of the image" \
            --disk_id 123
  /images/{imageId}:
    x-linode-cli-command: images
    parameters:
    - name: imageId
      in: path
      description: ID of the Image to look up.
      required: true
      schema:
        type: string
    get:
      tags:
      - Images
      summary: View Image
      description: >
        Get information about a single Image.
      operationId: getImage
      x-linode-cli-action: view
      responses:
        '200':
          description: A single Image object.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ImagePrivate'
        default:
          $ref: '#/components/responses/ErrorResponse'
      x-code-samples:
      - lang: Shell
        source: >
          curl https://api.linode.com/v4/images/linode/debian9
      - lang: CLI
        source: >
          linode-cli images view linode/debian9
    put:
      x-linode-grant: read_write
      tags:
      - Images
      summary: Update Image
      description: >
        Updates a private Image that you have permission to
        `read_write`.
      operationId: updateImage
      x-linode-cli-action: update
      security:
      - personalAccessToken: []
      - oauth:
        - images:read_write
      requestBody:
        description: >
          The fields to update.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ImagePrivate'
      responses:
        '200':
          description: The updated image.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ImagePrivate'
        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 gold-master image",
                "description": "The detailed description of my Image."
              }' \
              https://api.linode.com/v4/images/private/67848373
      - lang: CLI
        source: >
          linode-cli images update private/67848373 \
            --label "My gold-master image" \
            --description "The detailed description \
              of my Image."
    delete:
      x-linode-grant: read_write
      tags:
      - Images
      summary: Delete Image
      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:
        - images:read_write
      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/images/private/67848373
      - lang: CLI
        source: >
          linode-cli images delete 67848373
  /linode/instances:
    x-linode-cli-command: linodes
    get:
      x-linode-grant: read_only
      parameters:
      - $ref: '#/components/parameters/pageOffset'
      - $ref: '#/components/parameters/pageSize'
      summary: List Linodes
      description: >
        Returns a paginated list of Linodes you have permission to view.
      tags:
      - Linode Instances
      operationId: getLinodeInstances
      x-linode-cli-action: list
      security:
      - personalAccessToken: []
      - oauth:
        - linodes:read_only
      responses:
        '200':
          description: Returns an array of all Linodes on your Account.
          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
      - lang: CLI
        source: >
          linode-cli linodes list
    post:
      x-linode-charge: true
      x-linode-grant: add_linodes
      summary: Create Linode
      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
        [GET /linode/types](#operation/getLinodeTypes) to get more
        information about each Type's specs and cost.

        Linodes can be created in any one of our available
        [Regions](#operation/getRegions) for a list
        of available Regions you can deploy your Linode in.

        Linodes can be created in a number of ways:

        * Using a Linode Linux Distribution image or an Image you created based on another Linode.
          * The Linode will be `running` after it completes `provisioning`.
          * A default config with two Disks, one being a 512 swap disk, is created.
            * `swap_size` can be used to customize the swap disk size.
          * Requires a `root_pass` be supplied to use for the root User's Account.
          * It is recommended to supply SSH keys for the root User using the `authorized_keys` field.
          * You may also supply a list of usernames via the `authorized_users` field.
            * These users must have an SSH Key associated with your Profile first. See [/profile/sshkeys](#operation/addSSHKey) for more information.

        * Using a StackScript.
          * See [/linode/stackscripts](#operation/getStackScripts) for
            a list of available StackScripts.
          * The Linode will be `running` after it completes `provisioning`.
          * Requires a compatible Image to be supplied.
            * See [/linode/stackscript/{stackscriptId}](#operation/getStackScript) for compatible Images.
          * Requires a `root_pass` be supplied to use for the root User's Account.
          * It is recommended to supply SSH keys for the root User using the `authorized_keys` field.
          * You may also supply a list of usernames via the `authorized_users` field.
            * These users must have an SSH Key associated with your Profile first. See [/profile/sshkeys](#operation/addSSHKey) 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.

        * Create an empty Linode.
          * The Linode will remain `offline` and must be manually started.
            * See [POST /linode/instances/{linodeId}/boot](#operation/bootLinodeInstance).
          * 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
      operationId: createLinodeInstance
      x-linode-cli-action: create
      security:
      - personalAccessToken: []
      - oauth:
        - linodes:read_write
      requestBody:
        description: The requested initial state of a new Linode.
        required: true
        content:
          application/json:
            schema:
              required:
              - type
              - region
              type: object
              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 [/linode/instances/{linodeId}/backups](#operation/getBackups)
                      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](#operaton/getAccountSettings)
                      for more information.

                      Backup pricing is included in the response from [/linodes/types](#operation/getLinodeTypes)
                  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](#operation/getLinodeTypes) of the Linode
                      you are creating.
                    example: g6-standard-2
                  region:
                    type: string
                    description: >
                      The [Region](#operation/getRegions) where the Linode
                      will be located.
                    example: us-east
                  image:
                    type: string
                    description: >
                      An Image ID to deploy the Disk from. Official Linode
                      Images start with `linode/ `, while your Images start
                      with `private/`.

                      See [/images](#operation/getImages) for more information
                      on the Images available for you to use.
                    example: linode/debian9
                  root_pass:
                    type: string
                    format: password
                    description: >
                      The password for the root user on the newly-created Linode.
                      Only accepted if "image" is provided.
                    example: s3cureP@ssw0rd
                  authorized_keys:
                    type: array
                    description: >
                      A list of SSH public keys to deploy for the root user on
                      the newly-created Linode.  Only accepted if `image` is
                      provided.
                    items:
                      type: string
                  stackscript_id:
                    type: integer
                    description: >
                      The StackScript to deploy to the newly-created Linode.  If
                      provided, "image" must also be provided, and must be an
                      Image that is compatible with this StackScript.
                    example: 10079
                  stackscript_data:
                    type: object
                    description: >
                      An object containing responses to any User Defined Fields
                      present in the StackScript being deployed to this Linode.
                      Only accepted if `stackscript_id` is given.  The required
                      values depend on the StackScript being deployed.
                  booted:
                    type: boolean
                    description: >
                      Whether to boot this Linode after the deploy is complete.
                      Defaults to true if `image` is provided. Not accepted
                      if not deploying from an Image.
                  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.
                    example: true
                  authorized_users:
                    type: array
                    description: >
                      A list of usernames. If the usernames have associated
                      SSH keys, the keys will be appended to the root users
                      `~/.ssh/authorized_keys` file automatically.
                    items:
                      type: string
      responses:
        '200':
          description: >
            A new Linode is being created.
          content:
            application/json:
              schema:
                $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 '{
                "backup_id": 1234,
                "backups_enabled": true,
                "swap_size": 512,
                "image": "linode/debian9",
                "root_pass": "aComplexP@ssword",
                "stackscript_id": 10079,
                "stackscript_data": {
                  "gh_username": "linode"
                },
                "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
      required: true
      schema:
        type: integer
    x-linode-cli-command: linodes
    get:
      x-linode-grant: read_only
      tags:
      - Linode Instances
      summary: View Linode
      description: Get a specific Linode by ID.
      operationId: getLinodeInstance
      x-linode-cli-action: view
      security:
      - personalAccessToken: []
      - oauth:
        - linodes:read_only
      responses:
        '200':
          description: Returns a single Linode object.
          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'
        default:
          $ref: '#/components/responses/ErrorResponse'
      x-code-samples:
      - lang: Shell
        source: >
          curl -H "Authorization: Bearer $TOKEN" \
              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: Update Linode
      description: >
        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_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 updated Linode.
          content:
            application/json:
              schema:
                $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 PUT -d '{
                "label": "linode123",
                "group": "Linode-Group",
                "alerts": {
                  "cpu": 90,
                  "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 90 \
            --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: Delete Linode
      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.
      operationId: deleteLinodeInstance
      x-linode-cli-action: delete
      security:
      - personalAccessToken: []
      - oauth:
        - linodes:read_write
      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/linode/instances/123
      - lang: CLI
        source: >
          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
      summary: List Backups
      description: >
        Returns information about this Linode's available backups.
      tags:
      - Linode Instances
      operationId: getBackups
      x-linode-cli-action: backups-list
      security:
      - personalAccessToken: []
      - oauth:
        - linodes:read_only
      responses:
        '200':
          description: A collection of the specified Linode's available backups.
          content:
            application/json:
              schema:
                type: object
                properties:
                  automatic:
                    type: array
                    items:
                      allOf:
                      - $ref: '#/components/schemas/Backup'
                      - type: object
                        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 -H "Authorization: Bearer $TOKEN" \
              https://api.linode.com/v4/linode/instances/123/backups
      - lang: CLI
        source: >
          linode-cli linodes backups-list 123
    post:
      x-linode-grant: read_write
      summary: Create Snapshot
      description: >
        Creates a snapshot Backup of a Linode.

        ** If you already have a snapshot of this Linode, this is a destructive
        action. The previous snapshot will be deleted.**
      tags:
      - Linode Instances
      operationId: createSnapshot
      x-linode-cli-action: snapshot
      security:
      - personalAccessToken: []
      - oauth:
        - linodes:read_write
      requestBody:
        description: The label for the new snapshot.
        required: true
        content:
          application/json:
            schema:
              required:
              - label
              type: object
              properties:
                label:
                  type: string
                  minLength: 1
                  maxLength: 255
                  example: SnapshotLabel
      responses:
        '200':
          description: Snapshot was successfully taken.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Backup'
        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
      - 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: Cancel Backups
      description: >
        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:
        - linodes:read_write
      responses:
        '200':
          description: Backup service was cancelled for the specified 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/linode/instances/123/backups/cancel
      - 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
    post:
      x-linode-grant: read_write
      summary: Enable Backups
      description: >
        Enables backups for the specified Linode.
      tags:
      - Linode Instances
      operationId: enableBackups
      x-linode-cli-action: backups-enable
      security:
      - personalAccessToken: []
      - oauth:
        - linodes:read_write
      responses:
        '200':
          description: Backup service was enabled.
          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/linode/instances/123/backups/enable
      - lang: CLI
        source: >
          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: View Backup
      description: >
        Returns information about a Backup.
      tags:
      - Linode Instances
      operationId: getBackup
      x-linode-cli-action: backup-view
      security:
      - personalAccessToken: []
      - oauth:
        - linodes:read_only
      responses:
        '200':
          description: A single Backup.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Backup'
        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
      - 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:
      x-linode-grant: read_write
      summary: Restore Backup
      description: >
        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.
                  example: true
      responses:
        '200':
          description: Restore from Backup was initiated.
          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 '{
                "linode_id": 234,
                "overwrite": true
              }' \
              https://api.linode.com/v4/linode/instances/123/backups/123456/restore
      - lang: CLI
        source: >
          linode-cli linodes backup-restore 123 123456 \
            --linode_id 234 \
            --overwrite true
  /linode/instances/{linodeId}/boot:
    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: Boot Linode
      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 Instances
      operationId: bootLinodeInstance
      x-linode-cli-action: boot
      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. If omitted, we will attempt to select a
                    config to use. (This will do the right thing in most cases.)
                  example: null
      responses:
        '200':
          description: Boot 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 \
              https://api.linode.com/v4/linode/instances/123/boot
      - 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
    post:
      x-linode-charge: true
      x-linode-grant: add_linodes
      summary: Clone Linode
      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.
      tags:
      - Linode Instances
      operationId: cloneLinodeInstance
      x-linode-cli-action: clone
      security:
      - personalAccessToken: []
      - oauth:
        - linodes:read_write
      requestBody:
        description: The requested state your Linode will be cloned into.
        required: true
        content:
          application/json:
            schema:
              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](#operation/getRegions).

                    * Region can only be provided 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](#operation/getLinodeTypes).

                    * Type can only be provided when cloning to a new Linode.
                  example: g6-standard-2
                linode_id:
                  type: integer
                  description: >
                    If an existing Linode is to be the target for the clone,
                    the ID of that Linode. The existing Linode must have enough
                    resources to accept the clone.
                  example: 124
                label:
                  type: string
                  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](#operation/getLinodeTypes).

                    * Can only be included when cloning to a new Linode.
                  example: true
                disks:
                  type: array
                  description: >
                    All disks attached to configs will be cloned from the
                    source Linode if not provided.
                  items:
                    type: integer
                    example: 25674
                configs:
                  type: array
                  description: >
                    All configs attached to will be cloned from the source
                    Linode if not provided.
                  items:
                    type: integer
                    example: 23456
      responses:
        '200':
          description: Clone 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 '{
                "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 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: linodeId
      in: path
      description: ID of the Linode to look up Configuration profiles for.
      required: true
      schema:
        type: integer
    x-linode-cli-command: linodes
    get:
      parameters:
      - $ref: '#/components/parameters/pageOffset'
      - $ref: '#/components/parameters/pageSize'
      tags:
      - Linode Instances
      summary: List Configuration Profiles
      description: |
        Lists Configuration profiles associated with a Linode.
      operationId: getLinodeConfigs
      x-linode-cli-action: configs-list
      security:
      - personalAccessToken: []
      - oauth:
        - linodes:read_only
      responses:
        '200':
          description: >
            Returns an array of Configuration profiles associated with this Linode.
          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'
      x-code-samples:
      - lang: Shell
        source: >
          curl -H "Authorization: Bearer $TOKEN" \
              https://api.linode.com/v4/linode/instances/123/configs
      - lang: CLI
        source: >
          linode-cli linodes configs-list 123
    post:
      tags:
      - Linode Instances
      summary: Create Configuration Profile
      description: >
        Adds a new Configuration profile to a Linode.
      operationId: addLinodeConfig
      x-linode-cli-action: config-create
      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:
              $ref: '#/components/schemas/LinodeConfig'
      responses:
        '200':
          description: |
            A Configuration profile was created.
          content:
            application/json:
              schema:
                $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 POST -d '{
                "kernel": "linode/latest-64bit",
                "comments": "This is my main Config",
                "memory_limit": 2048,
                "run_level": "default",
                "virt_mode": "paravirt",
                "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 linodes config-create 7590910 \
            --label "My Config" \
            --devices.sda.disk_id 123456 \
            --devices.sdb.disk_id 123457
  /linode/instances/{linodeId}/configs/{configId}:
    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:
      tags:
      - Linode Instances
      x-linode-grant: read_only
      summary: View Configuration Profile
      description: >
        Returns information about a specific Configuration profile.
      operationId: getLinodeConfig
      x-linode-cli-action: config-view
      security:
      - personalAccessToken: []
      - oauth:
        - linodes:read_only
      responses:
        '200':
          description: A Configuration profile object.
          content:
            application/json:
              schema:
                $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/linode/instances/123/configs/23456
      - lang: CLI
        source: >
          linode-cli linodes config-view 123 23456
    put:
      x-linode-grant: read_write
      summary: Update Configuration Profile
      description: >
        Updates a Configuration profile.
      tags:
      - Linode Instances
      operationId: updateLinodeConfig
      x-linode-cli-action: config-update
      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",
                "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
      responses:
        '200':
          description: Configuration profile successfully updated.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LinodeConfig'
        default:
          $ref: '#/components/responses/ErrorResponse'
    delete:
      summary: Delete Configuration Profile
      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:
        - linodes:read_write
      responses:
        '200':
          description: >
            Configuration profile 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/linode/instances/123/configs/23456
      - lang: CLI
        source: >
          linode-cli linodes config-delete 123 23456
  /linode/instances/{linodeId}/disks:
    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 Instances
      summary: List Disks
      description: >
        View Disk information for Disks associated with this Linode.
      operationId: getLinodeDisks
      x-linode-cli-action: disks-list
      security:
      - personalAccessToken: []
      - oauth:
        - linodes:read_only
      responses:
        '200':
          description: Returns a paginated list of disks associated with this Linode.
          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'
        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
      - lang: CLI
        source: >
          linode-cli linodes disks-list 123
    post:
      tags:
      - Linode Instances
      summary: Create Disk
      description: >
        Adds a new Disk to a Linode. You can optionally create a Disk
        from an Image (see [/images](#operation/getImages) for a list of available public images,
        or use one of your own), and optionally provide a StackScript to deploy
        with this Disk.
      operationId: addLinodeDisk
      x-linode-cli-action: disk-create
      security:
      - personalAccessToken: []
      - oauth:
        - linodes:read_write
      requestBody:
        description: >
          The parameters to set when creating the Disk.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DiskRequest'
      responses:
        '200':
          description: Disk created.
          content:
            application/json:
              schema:
                $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 -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 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: View Disk
      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
      responses:
        '200':
          description: Returns a single Disk object.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Disk'
        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
      - lang: CLI
        source: >
          linode-cli linodes disk-view 123 25674
    put:
      x-linode-grant: read_write
      tags:
      - Linode Instances
      summary: Update Disk
      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.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Disk'
      responses:
        '200':
          description: The updated Disk.
          content:
            application/json:
              schema:
                $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 '{
                "label": "Debian 9 Disk"
              }' \
              https://api.linode.com/v4/linode/instances/123/disks/25674
      - lang: CLI
        source: >
          linode-cli linodes disk-update 123 25674 \
            --label "Debian 9 Disk"
    delete:
      x-linode-grant: read_write
      tags:
      - Linode Instances
      summary: Delete Disk
      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:
        - linodes:read_write
      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/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
    post:
      x-linode-grant: read_write
      tags:
      - Linode Instances
      summary: Clone Disk
      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:
        - linodes:read_write
      responses:
        '200':
          description: Disk clone initiated.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Disk'
        default:
          $ref: '#/components/responses/ErrorResponse'
  /linode/instances/{linodeId}/disks/{diskId}/password:
    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
      tags:
      - Linode Instances
      summary: Reset Disk Root Password
      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:
        - 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 contain at least two of these four
                    character classes:

                      * lowercase letters
                      * uppercase letters
                      * numbers
                      * punctuation
                  minLength: 6
                  maxLength: 128
                  example: another@complex^Password123
      responses:
        '200':
          description: Returns a single Disk object.
          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 '{
                "password": "another@complex^Password123"
              }' \
              https://api.linode.com/v4/linode/instances/123/disks/25674/password
      - 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:
      x-linode-grant: read_write
      tags:
      - Linode Instances
      summary: Resize Disk
      description: >
        Resizes a Disk you have permission to `read_write`.

        The Linode this Disk is attached to must be shut down for resizing to
        take effect.

        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.
        The Disk must not be in use. If the Disk is in use, the request will
        succeed but the resize will ultimately fail.
      operationId: resizeDisk
      x-linode-cli-action: disk-resize
      security:
      - personalAccessToken: []
      - oauth:
        - linodes:read_write
      requestBody:
        description: The new size of the Disk.
        required: true
        content:
          application/json:
            schema:
              required:
              - password
              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}/ips:
    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:
      - Linode Instances
      summary: List Networking Information
      description: >
        Returns networking information for a single Linode.
      operationId: getLinodeIPs
      x-linode-cli-action: ips-list
      security:
      - personalAccessToken: []
      - oauth:
        - linodes:read_only
      responses:
        '200':
          description: Requested Linode's networking configuration.
          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'
                  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'
        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
      - lang: CLI
        source: >
          linode-cli linodes 123 ips-list
    post:
      x-linode-grant: read_write
      tags:
      - Linode Instances
      summary: Allocate IPv4 Address
      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](#operation/createTicket).
        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:
        - 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: IP address was successfully allocated.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IPAddress'
        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}:
    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:
      x-linode-grant: read_only
      tags:
      - Linode Instances
      summary: View IP Address
      description: >
        View information about the specified IP address associated
        with the specified Linode.
      operationId: getLinodeIP
      x-linode-cli-action: ip-view
      security:
      - personalAccessToken: []
      - oauth:
        - linodes:read_only
      responses:
        '200':
          description: A single IP address.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IPAddress'
        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
      - lang: CLI
        source: >
          linode-cli linodes ip-view 123 97.107.143.141
    put:
      x-linode-grant: read_write
      tags:
      - Linode Instances
      summary: Update IP Address
      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:
        - linodes:read_write
      requestBody:
        description: The information to update for the IP address.
        content:
          application/json:
            schema:
              allOf:
              - $ref: '#/components/schemas/IPAddress'
              - type: object
              properties:
                rdns:
                  type: string
                  example: linode.com
      responses:
        '200':
          description: The updated IP address record.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IPAddress'
        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/linode/instances/123/ips/97.107.143.141
      - lang: CLI
        source: >
          linode-cli linodes ip-update 123 \
            97.107.143.141 \
            --rdns test.example.org
    delete:
      x-linode-grant: read_write
      tags:
      - Linode Instances
      summary: Delete IPv4 Address
      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
      security:
      - personalAccessToken: []
      - oauth:
        - linodes:read_write
      responses:
        '200':
          description: IP address successfully removed.
          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/linode/instances/123/ips/97.107.143.141
      - lang: CLI
        source: >
          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:
      - Linode Instances
      summary: List Kernels
      description: |
        Lists available Kernels.
      operationId: getKernels
      x-linode-cli-action: list
      responses:
        '200':
          description: Returns an array of Kernels.
          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'
        default:
          $ref: '#/components/responses/ErrorResponse'
      x-code-samples:
      - lang: Shell
        source: >
          curl https://api.linode.com/v4/linode/kernels
      - 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:
      tags:
      - Linode Instances
      summary: View Kernel
      description: >
        Returns information about a single Kernel.
      operationId: getKernel
      x-linode-cli-action: view
      responses:
        '200':
          description: A single Kernel object.
          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: Initiate Pending Migration
      description: >
        In some circumstances, a Linode may have pending migrations scheduled that
        that you can initiate when convenient.  In these cases, a Notification
        will be returned from [GET /account/notifications](#getNotifications).
        This endpoint initiates the scheduled migration, which will shut the Linode
        down, migrate it, and then bring it back to its original state.
      tags:
       - Linode Instances
      operationId: migrateLinodeInstance
      x-linode-cli-action: migrate
      security:
      - personalAccessToken: []
      - oauth:
        - linodes:read_write
      responses:
        '200':
          description: Scheduled migration started
          content:
            'application/json':
              schema:
                type: object
        default:
          $ref: '#/components/responses/ErrorResponse'
  /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
      summary: Upgrade Linode
      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
      security:
      - personalAccessToken: []
      - oauth:
        - linodes:read_write
      responses:
        '200':
          description: Mutate 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 \
              https://api.linode.com/v4/linode/instances/123/mutate
      - lang: CLI
        source: >
          linode-cli linodes upgrade 123
  /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
    post:
      x-linode-grant: read_write
      summary: Reboot Linode
      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.
      tags:
      - Linode Instances
      operationId: rebootLinodeInstance
      x-linode-cli-action: reboot
      security:
      - personalAccessToken: []
      - oauth:
        - 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: Reboot 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 \
              https://api.linode.com/v4/linode/instances/123/reboot
      - lang: CLI
        source: >
          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: read_write
      summary: Rebuild Linode
      description: >
        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:
        - 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'
              properties:
                image:
                  type: string
                root_pass:
                  type: string
                  format: password
      responses:
        '200':
          description: Rebuild started.
          content:
            application/json:
              schema:
                  $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 '{
                "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
      - 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:
      x-linode-grant: read_write
      summary: Boot Linode 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: Resize Linode
      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
      security:
      - personalAccessToken: []
      - oauth:
        - linodes:read_write
      requestBody:
        description: The Type your current Linode will resize to.
        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
      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 '{
                "type": "g6-standard-2"
              }' \
              https://api.linode.com/v4/linode/instances/123/resize
      - 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:
      x-linode-grant: read_write
      summary: Shut Down Linode
      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
      security:
      - personalAccessToken: []
      - oauth:
        - linodes:read_write
      responses:
        '200':
          description: Shutdown 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 \
              https://api.linode.com/v4/linode/instances/123/shutdown
      - lang: CLI
        source: >
          linode-cli linodes shutdown 123
  /linode/instances/{linodeId}/stats:
    parameters:
    - name: linodeId
      in: path
      description: ID of the Linode to look up.
      required: true
      schema:
        type: integer
    x-linode-cli-command: linodes
    get:
      tags:
      - Linode Instances
      summary: View Linode Statistics
      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
      security:
      - personalAccessToken: []
      - oauth:
        - linodes:read_only
      responses:
        '200':
          description: The Linode's stats for the past 24 hours.
          content:
            application/json:
              schema:
                $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/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:
      - Linode Instances
      summary: View Statistics (year/month)
      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
      security:
      - personalAccessToken: []
      - oauth:
        - linodes:read_only
      responses:
        '200':
          description: The Linode's statistics for the requested period.
          content:
            application/json:
              schema:
                $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/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'
      tags:
      - Linode Instances
      summary: List Linode's Volumes
      description: >
        View Block Storage Volumes attached to this Linode.
      operationId: getLinodeVolumes
      x-linode-cli-action: volumes
      security:
      - personalAccessToken: []
      - oauth:
        - linodes:read_only
      responses:
        '200':
          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 "Authorization: Bearer $TOKEN" \
              https://api.linode.com/v4/linode/instances/123/volumes
      - lang: CLI
        source: >
          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:
      - StackScripts
      summary: List StackScripts
      description: >
        If the request is not authenticated, only public StackScripts are returned.


        For more information on StackScripts, please read our guide:
        <a target="_top" href="https://linode.com/docs/platform/stackscripts/">Automate Deployment with StackScripts</a>.
      operationId: getStackScripts
      x-linode-cli-action: list
      security:
      - personalAccessToken: []
      - oauth:
        - stackscripts: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.
          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 https://api.linode.com/v4/linode/stackscripts
      - lang: CLI
        source: >
          linode-cli stackscripts list
    post:
      x-linode-grant: add_stackscripts
      tags:
      - StackScripts
      summary: Create StackScript
      description: >
        Creates a StackScript in your Account.
      operationId: addStackScript
      x-linode-cli-action: create
      security:
      - personalAccessToken: []
      - oauth:
         - 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: StackScript successfully created.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StackScript'
        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": "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 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: read_only
      tags:
      - StackScripts
      summary: View StackScript
      description: >
        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:
        - stackscripts:read_only
      responses:
        '200':
          description: A single StackScript.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StackScript'
        default:
          $ref: '#/components/responses/ErrorResponse'
      x-code-samples:
      - lang: Shell
        source: >
          curl https://api.linode.com/v4/linode/stackscripts/10079
      - lang: CLI
        source: >
          linode-cli stackscripts view 10079
    put:
      x-linode-grant: read_write
      tags:
      - StackScripts
      summary: Update StackScript
      description: >
        Updates a StackScript.


        **Once a StackScript is made public, it cannot be made private.**
      operationId: updateStackScript
      x-linode-cli-action: update
      security:
      - personalAccessToken: []
      - oauth:
        - stackscripts:read_write
      requestBody:
          description: The fields to update.
          content:
              application/json:
                  schema:
                      $ref: '#/components/schemas/StackScript'
      responses:
        '200':
          description: StackScript was successfully modified.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StackScript'
        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": "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:
      - StackScripts
      summary: Delete StackScript
      description: >
        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:
        - stackscripts:read_write
      responses:
        '200':
          description: StackScript was 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/linode/stackscripts/10079
      - lang: CLI
        source: >
          linode-cli stackscripts delete 10079
  /linode/types:
    x-linode-cli-command: linodes
    get:
      tags:
      - Linode Types
      summary: List Types
      description: >
        Returns collection of Linode Types, including pricing and
        specifications for each Type. These are used when
        [creating](#operation/createLinodeInstance)
        or [resizing](#operation/resizeLinodeInstance)
        Linodes.
      x-linode-redoc-load-ids: true
      operationId: getLinodeTypes
      x-linode-cli-action: types
      responses:
        '200':
          description: A collection of Linode Types.
          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'
      parameters:
      - $ref: '#/components/parameters/pageOffset'
      - $ref: '#/components/parameters/pageSize'
      x-code-samples:
      - lang: Shell
        source: >
          curl https://api.linode.com/v4/linode/types
      - lang: CLI
        source: >
          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:
      - Linode Types
      summary: View Type
      description: >
        Returns information about a specific Linode Type, including pricing and
        specifications. This is used when
        [creating](#operation/createLinodeInstance)
        or [resizing](#operation/resizeLinodeInstance)
        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
  /longview/clients:
    x-linode-cli-command: longview
    get:
      x-linode-grant: read_only
      parameters:
      - $ref: '#/components/parameters/pageOffset'
      - $ref: '#/components/parameters/pageSize'
      tags:
      - Longview
      summary: List Longview Clients
      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:
        - longview:read_only
      responses:
        '200':
          description: A paginated list of Longview Clients.
          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
      - lang: CLI
        source: >
          linode-cli longview list
    post:
      x-linode-grant: add_longview
      tags:
      - Longview
      summary: Create Longview Client
      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'
      responses:
        '200':
          description: Longview Client created successfully.
          content:
            application/json:
              schema:
                $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" \
              -X POST -d '{
                "label": "client789"
              }' \
              https://api.linode.com/v4/longview/clients
      - lang: CLI
        source: >
          linode-cli longview create \
            --label client789
  /longview/clients/{clientId}:
    parameters:
    - 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
      tags:
      - Longview
      summary: View Longview Client
      description: >
        Returns a single Longview Client you can access.
      operationId: getLongviewClient
      x-linode-cli-action: view
      security:
      - personalAccessToken: []
      - oauth:
        - longview:read_only
      responses:
        '200':
          description: The requested Longview Client.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LongviewClient'
        default:
          $ref: '#/components/responses/ErrorResponse'
      x-code-samples:
      - lang: Shell
        source: >
          curl -H "Authorization: Bearer $TOKEN" \
              https://api.linode.com/v4/longview/clients/789
      - lang: CLI
        source: >
          linode-cli longview view 789
    put:
      x-linode-grant: read_write
      tags:
      - Longview
      summary: Update Longview Client
      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:
        - longview:read_write
      requestBody:
        description: The fields to update.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LongviewClient'
      responses:
        '200':
          description: Longview Client updated successfully.
          content:
            application/json:
              schema:
                $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" \
              -X POST -d '{
                "label": "client789"
              }' \
              https://api.linode.com/v4/longview/clients/789
      - lang: CLI
        source: >
          linode-cli longview update 789 \
            --label client789
    delete:
      x-linode-grant: read_write
      tags:
      - Longview
      summary: Delete Longview Client
      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:
        - longview:read_write
      responses:
        '200':
          description: Longview Client 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/longview/clients/789
      - lang: CLI
        source: >
          linode-cli longview delete 789
  /longview/subscriptions:
    x-linode-cli-command: longview
    get:
      parameters:
      - $ref: '#/components/parameters/pageOffset'
      - $ref: '#/components/parameters/pageSize'
      tags:
      - Longview
      summary: List Longview Subscriptions
      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: A paginated list of Longview Subscriptions.
          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
      - lang: CLI
        source: >
          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:
      - Longview
      summary: View Longview Subscription
      description: >
        Returns a single LongviewSubscription object.  This is a public
        endpoint and requires no authentication.
      operationId: getLongviewSubscription
      x-linode-cli-action: subscription-view
      responses:
        '200':
          description: The requested Longview Subscription.
          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'
      tags:
      - Managed
      summary: List Managed Contacts
      description: >
        Returns a paginated list of Managed Contacts on your Account.
      operationId: getManagedContacts
      x-linode-cli-action: contacts-list
      security:
      - personalAccessToken: []
      - oauth:
        - account:read_only
      responses:
        '200':
          description: A paginated list of ManagedContacts
          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
      - lang: CLI
        source: >
          linode-cli managed contacts-list
    post:
      x-linode-grant: unrestricted only
      tags:
      - Managed
      summary: Create Managed Contact
      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:
        - account:read_write
      requestBody:
        description: Information about the contact to create.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ManagedContact'
      responses:
        '200':
          description: Contact created.
          content:
            application/json:
              schema:
                $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 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/managed/contacts
      - 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: View Managed Contact
      description: >
        Returns a single Managed Contact.
      operationId: getManagedContact
      x-linode-cli-action: contact-view
      security:
      - personalAccessToken: []
      - oauth:
        - account:read_write
      responses:
        '200':
          description: The requested Managed Contact.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedContact'
        default:
          $ref: '#/components/responses/ErrorResponse'
      x-code-samples:
      - lang: Shell
        source: >
          curl -H "Authorization: Bearer $TOKEN" \
              https://api.linode.com/v4/managed/contacts/567
      - lang: CLI
        source: >
          linode-cli managed contact-view 567
    put:
      x-linode-grant: unrestricted only
      tags:
      - Managed
      summary: Update Managed Contact
      description: >
        Updates information about a Managed Contact.
      operationId: updateManagedContact
      x-linode-cli-action: contact-update
      security:
      - personalAccessToken: []
      - oauth:
        - account:read_write
      requestBody:
        description: The fields to update.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ManagedContact'
      responses:
        '200':
          description: Contact updated successfully.
          content:
            application/json:
              schema:
                $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: Delete Managed Contact
      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: List Managed Credentials
      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'
                  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/credentials
      - lang: CLI
        source: >
          linode-cli managed credentials-list
    post:
      x-linode-grant: unrestricted only
      tags:
      - Managed
      summary: Create Managed Credential
      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
      security:
      - personalAccessToken: []
      - oauth:
        - account:read_write
      requestBody:
        description: Information about the Credential to create.
        content:
          application/json:
            schema:
              required:
              - label
              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
                    minLength: 0
                    maxLength: 5000
                    description: >
                      The password to use when accessing the Managed Service.
                    example: s3cur3P@ssw0rd
      responses:
        '200':
          description: Credential created.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedCredential'
        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}:
    parameters:
    - name: credentialId
      in: path
      required: true
      description: The ID of the Credential to access.
      schema:
        type: integer
    x-linode-cli-command: managed
    get:
      x-linode-grant: unrestricted only
      tags:
      - Managed
      summary: View Managed Credential
      description: >
        Returns a single Managed Credential.
      operationId: getManagedCredential
      x-linode-cli-action: credential-view
      security:
      - personalAccessToken: []
      - oauth:
        - account:read_write
      responses:
        '200':
          description: The requested Managed Credential.
          content:
            application/json:
              schema:
                $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/managed/credentials/9991
      - lang: CLI
        source: >
          linode-cli managed credential-view 9991
    put:
      x-linode-grant: unrestricted only
      tags:
      - Managed
      summary: Update Managed Credential
      description: >
        Updates information about a Managed Credential.
      operationId: updateManagedCredential
      x-linode-cli-action: credential-update
      security:
      - personalAccessToken: []
      - oauth:
        - account:read_write
      requestBody:
        description: The fields to update.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ManagedCredential'
      responses:
        '200':
          description: Credential updated successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedCredential'
        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}/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
      tags:
      - Managed
      summary: Delete Managed Credential
      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
      security:
      - personalAccessToken: []
      - oauth:
        - account:read_write
      responses:
        '200':
          description: Credential 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/credentials/9991
      - lang: CLI
        source: >
          linode-cli managed credential-revoke 9991
  /managed/issues:
    x-linode-cli-command: managed
    get:
      x-linode-grant: unrestricted only
      parameters:
        - $ref: '#/components/parameters/pageOffset'
        - $ref: '#/components/parameters/pageSize'
      tags:
      - Managed
      summary: List Managed Issues
      description: >
        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:
            - account:read_only
      responses:
        '200':
          description: >
            A paginated list of open or ongoing Managed Issues.
          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'
        default:
          $ref: '#/components/responses/ErrorResponse'
      x-code-samples:
      - lang: Shell
        source: >
          curl -H "Authorization: Bearer $TOKEN" \
              https://api.linode.com/v4/managed/issues
      - 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
      tags:
      - Managed
      summary: View Managed Issue
      description: >
        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:
        - account:read_only
      responses:
        '200':
          description: The requested issue.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedIssue'
        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'
      tags:
      - Managed
      summary: List Managed Linode Settings
      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
      security:
        - personalAccessToken: []
        - oauth:
            - account:read_only
      responses:
        '200':
          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" \
              https://api.linode.com/v4/managed/linode-settings
      - 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
    get:
      x-linode-grant: unrestricted only
      tags:
      - Managed
      summary: View Linode's Managed Settings
      description: >
        Returns a single Linode's Managed settings.
      operationId: getManagedLinodeSetting
      x-linode-cli-action: linode-setting-view
      security:
      - personalAccessToken: []
      - oauth:
        - 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: Update Linode's Managed Settings
      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'
      responses:
        '200':
          description: Settings updated successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedLinodeSettings'
        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
      - 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
    get:
      x-linode-grant: unrestricted only
      tags:
      - Managed
      parameters:
      - $ref: '#/components/parameters/pageOffset'
      - $ref: '#/components/parameters/pageSize'
      summary: List Managed Services
      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
      security:
      - personalAccessToken: []
      - oauth:
        - account:read_only
      responses:
        '200':
          description: A paginated list of Managed Services
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/ManagedService'
                  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/services
      - lang: CLI
        source: >
          linode-cli managed services-list
    post:
      x-linode-grant: unrestricted only
      tags:
      - Managed
      summary: Create Managed Service
      description: >
        Creates a Managed Service. Linode Managed will being monitoring this
        service and reporting and attempting to resolve any Issues.
      operationId: createManagedService
      x-linode-cli-action: service-create
      security:
      - personalAccessToken: []
      - oauth:
        - account:read_write
      requestBody:
        description: Information about the service to monitor.
        content:
          application/json:
            schema:
              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
      - 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}:
    parameters:
    - name: serviceId
      in: path
      required: true
      description: The ID of the Managed Service to access.
      schema:
        type: integer
    x-linode-cli-command: managed
    get:
      x-linode-grant: unrestricted only
      tags:
      - Managed
      summary: View Managed Service
      description: >
        Returns information about a single Managed Service on your Account.
      operationId: getManagedService
      x-linode-cli-action: service-view
      security:
      - personalAccessToken: []
      - oauth:
        - account:read_only
      responses:
        '200':
          description: The requested Managed Service.
          content:
            application/json:
              schema:
                $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/managed/services/9994
      - lang: CLI
        source: >
          linode-cli managed service-view 9994
    put:
      x-linode-grant: unrestricted only
      tags:
      - Managed
      summary: Update Managed Service
      description: >
        Updates information about a Managed Service.
      operationId: updateManagedService
      x-linode-cli-action: service-update
      security:
      - personalAccessToken: []
      - oauth:
        - account:read_write
      requestBody:
        description: The fields to update.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ManagedService'
      responses:
        '200':
          description: Service updated successfully.
          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 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
      - 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
    delete:
      x-linode-grant: unrestricted only
      tags:
      - Managed
      summary: Delete Managed Service
      description: >
        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:
        - account:read_write
      responses:
        '200':
          description: Service 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/services/9994
      - lang: CLI
        source: >
          linode-cli managed service-delete 9994
  /managed/services/{serviceId}/disable:
    parameters:
    - name: serviceId
      in: path
      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: Disable Managed Service
      description: >
        Temporarily disables monitoring of a Managed Service.
      operationId: disableManagedService
      x-linode-cli-action: service-disable
      security:
      - personalAccessToken: []
      - oauth:
        - account:read_write
      responses:
        '200':
          description: Service disabled.
          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/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: Enable Managed Service
      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
  /networking/ips:
    description: >
      A collection of IP Addresses on your Account. Excludes private addresses.
    x-linode-cli-command: networking
    get:
      x-linode-grant: read_only
      parameters:
      - $ref: '#/components/parameters/pageOffset'
      - $ref: '#/components/parameters/pageSize'
      tags:
      - Networking
      summary: List IP Addresses
      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:
        - ips:read_only
      responses:
        '200':
          description: A paginated list of IP Addresses.
          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'
      x-code-samples:
      - lang: Shell
        source: >
          curl -H "Authorization: Bearer $TOKEN" \
              https://api.linode.com/v4/networking/ips
      - lang: CLI
        source: >
          linode-cli networking ips-list
    post:
      x-linode-grant: read_write
      tags:
      - Networking
      summary: Allocate IP Address
      description: >
        Allocates a new IPv4 Address on your Account. The Linode must be
        configured to support additional addresses - please
        [open a support ticket](#operation/createTicket) requesting additional
        addresses before attempting allocation.
      operationId: allocateIP
      x-linode-cli-action: ip-add
      security:
      - personalAccessToken: []
      - oauth:
        - ips:read_write
        - linodes:read_write
      requestBody:
        description: Information about the address you are creating.
        required: true
        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
      responses:
        '200':
          description: IP Address allocated successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IPAddress'
        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,
                "linode_id": 123
              }' \
              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: 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: View IP Address
      description: >
        Returns information about a single IP Address on your Account.
      operationId: getIP
      x-linode-cli-action: ip-view
      security:
      - personalAccessToken: []
      - oauth:
        - ips:read_only
      responses:
        '200':
          description: The requested IP Address.
          content:
            application/json:
              schema:
                $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/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:
      - Networking
      summary: Update IP Address RDNS
      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 _members.linode.com_
        RDNS value.
      operationId: updateIP
      x-linode-cli-action: ip-update
      security:
      - personalAccessToken: []
      - oauth:
        - ips:read_write
      requestBody:
        description: The information to update.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/IPAddress'
      responses:
        '200':
          description: RDNS set successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IPAddress'
        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
      - lang: CLI
        source: >
          linode-cli networking ip-update \
            97.107.143.141 \
            --rdns "test.example.org"
  /networking/ipv4/assign:
    description: >
      Allows redistribution of IPv4 Addresses within a Region. Any number
      of IPs may be assigned in one request, as long as all Linodes end up
      with at least one public and no more than one private IP Address at the
      end of the assignment.
    x-linode-cli-command: networking
    post:
      x-linode-grant: read_write
      tags:
      - Networking
      summary: Assign IPs to Linodes
      description: >
        Assign multiple IPs 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.
      operationId: assignIPs
      x-linode-cli-action: ip-assign
      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.
                  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: All assignments completed 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 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
      - lang: CLI
        source: >
          linode-cli networking ip-assign \
            --region us-east \
            --assignments \
              '{"address": "12.34.56.100", "linode_id": 123}' \
            --assignments \
              '{"23.45.67.200", "linode_id": 234}'
  /networking/ipv4/share:
    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.
    x-linode-cli-command: networking
    post:
      x-linode-grant: read_write
      tags:
      - Networking
      summary: Configure IP Sharing
      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: shareIPs
      x-linode-cli-action: ip-share
      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.
      responses:
        '200':
          description: Sharing configured 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 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:
      - Networking
      summary: List IPv6 Pools
      description: >
        Displays the IPv6 pools on your Account.
      operationId: getIPv6Pools
      x-linode-cli-action: v6-pools
      security:
      - personalAccessToken: []
      - oauth:
        - ips:read_only
      responses:
        '200':
          description: The IPv6 pools on your Account.
          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'
        default:
          $ref: '#/components/responses/ErrorResponse'
      x-code-samples:
      - lang: Shell
        source: >
          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:
      parameters:
      - $ref: '#/components/parameters/pageOffset'
      - $ref: '#/components/parameters/pageSize'
      tags:
      - Networking
      summary: List IPv6 Ranges
      description: >
        Displays the IPv6 ranges on your Account.
      operationId: getIPv6Ranges
      x-linode-cli-action: v6-ranges
      security:
      - personalAccessToken: []
      - oauth:
        - ips:read_only
      responses:
        '200':
          description: The IPv6 ranges on your Account.
          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
      - lang: CLI
        source: >
          linode-cli networking v6-ranges
  /nodebalancers:
    x-linode-cli-command: nodebalancers
    get:
      x-linode-grant: read_only
      tags:
      - NodeBalancers
      parameters:
      - $ref: '#/components/parameters/pageOffset'
      - $ref: '#/components/parameters/pageSize'
      summary: List NodeBalancers
      description: >
        Returns a paginated list of NodeBalancers you have access to.
      operationId: getNodeBalancers
      x-linode-cli-action: list
      security:
      - personalAccessToken: []
      - oauth:
        - nodebalancers:read_only
      responses:
        '200':
          description: A paginated list of NodeBalancers.
          content:
            application/json:
              schema:
                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/nodebalancers
      - lang: CLI
        source: >
          linode-cli nodebalancers list
    post:
      x-linode-grant: add_nodebalancers
      tags:
      - NodeBalancers
      summary: Create NodeBalancer
      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
      security:
      - personalAccessToken: []
      - oauth:
        - nodebalancers:read_write
      requestBody:
        description: Information about the NodeBalancer to create.
        required: true
        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: NodeBalancer created successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NodeBalancer'
        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",
                "label": "balancer12345",
                "client_conn_throttle": 0
              }' \
              https://api.linode.com/v4/nodebalancers
      - lang: CLI
        source: >
          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:
      - NodeBalancers
      summary: View NodeBalancer
      description: >
        Returns a single NodeBalancer you can access.
      operationId: getNodeBalancer
      x-linode-cli-action: view
      security:
      - personalAccessToken: []
      - oauth:
        - nodebalancers:read_only
      responses:
        '200':
          description: The requested NodeBalancer object.
          content:
            application/json:
              schema:
                $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/nodebalancers/12345
      - lang: CLI
        source: >
          linode-cli nodebalancers view 12345
    put:
      x-linode-grant: read_write
      tags:
      - NodeBalancers
      summary: Update NodeBalancer
      description: >
        Updates information about a NodeBalancer you can access.
      operationId: updateNodeBalancer
      x-linode-cli-action: update
      security:
      - personalAccessToken: []
      - oauth:
        - nodebalancers:read_write
      requestBody:
        description: The information to update.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NodeBalancer'
      responses:
        '200':
          description: NodeBalancer updated successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NodeBalancer'
        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": "balancer12345",
                "client_conn_throttle": 0
              }' \
              https://api.linode.com/v4/nodebalancers/12345
      - lang: CLI
        source: >
          linode-cli nodebalancers update 12345 \
            --label balancer12345 \
            --client_conn_throttle 0
    delete:
      x-linode-grant: read_write
      tags:
      - NodeBalancers
      summary: Delete NodeBalancer
      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
      security:
      - personalAccessToken: []
      - oauth:
        - nodebalancers:read_write
      responses:
        '200':
          description: NodeBalancer 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/nodebalancers/12345
      - lang: CLI
        source: >
          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:
      - NodeBalancers
      parameters:
      - $ref: '#/components/parameters/pageOffset'
      - $ref: '#/components/parameters/pageSize'
      summary: List Configs
      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
      security:
      - personalAccessToken: []
      - oauth:
        - nodebalancers:read_only
      responses:
        '200':
          description: A paginted list of NodeBalancer Configs
          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
      - lang: CLI
        source: >
          linode-cli nodebalancers configs-list 12345
    post:
      x-linode-grant: read_write
      tags:
      - NodeBalancers
      summary: Create Config
      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
      security:
      - personalAccessToken: []
      - oauth:
        - nodebalancers:read_write
      requestBody:
        description: Information about the port to configure.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NodeBalancerConfig'
      responses:
        '200':
          description: Config created successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NodeBalancerConfig'
        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,
                "cipher_suite": "recommended"
              }' \
              https://api.linode.com/v4/nodebalancers/12345/configs
      - 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 \
            --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
    get:
      x-linode-grant: read_only
      tags:
      - NodeBalancers
      summary: View Config
      description: >
        Returns configuration information for a single port of this
        NodeBalancer.
      operationId: getNodeBalancerConfig
      x-linode-cli-action: config-view
      security:
      - personalAccessToken: []
      - oauth:
        - nodebalancers:read_only
      responses:
        '200':
          description: The requested NodeBalancer config.
          content:
            application/json:
              schema:
                $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/nodebalancers/12345/configs/4567
      - lang: CLI
        source: >
          linode-cli nodebalancers config-view \
            12345 4567
    put:
      x-linode-grant: read_write
      tags:
      - NodeBalancers
      summary: Update Config
      description: >
        Updates the configuration for a single port on a NodeBalancer.
      operationId: updateNodeBalancerConfig
      x-linode-cli-action: config-update
      security:
      - personalAccessToken: []
      - oauth:
        - nodebalancers:read_write
      requestBody:
        description: The fields to update.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NodeBalancerConfig'
      responses:
        '200':
          description: Config updated successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NodeBalancerConfig'
        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,
                "cipher_suite": "recommended"
              }' \
              https://api.linode.com/v4/nodebalancers/12345/configs/4567
      - 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 \
            --cipher_suite recommended
    delete:
      x-linode-grant: read_write
      tags:
      - NodeBalancers
      summary: Delete Config
      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
      security:
      - personalAccessToken: []
      - oauth:
        - nodebalancers:read_write
      responses:
        '200':
          description: NodeBalancer Config 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/nodebalancers/12345/configs/4567
      - lang: CLI
        source: >
          linode-cli nodebalancers config-delete \
            12345 4567
  /nodebalancers/{nodeBalancerId}/configs/{configId}/rebuild:
    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
    post:
      x-linode-grant: add_nodebalancers
      tags:
      - NodeBalancers
      summary: Rebuild Config
      description: >
        Rebuilds a NodeBalancer Config and its Nodes that you have
        permission to modify.
      operationId: rebuildNodeBalancerConfig
      x-linode-cli-action: rebuild
      security:
      - personalAccessToken: []
      - oauth:
        - nodebalancers:read_write
      requestBody:
        description: >
          Information about the NodeBalancer Config to rebuild.
        required: true
        content:
          application/json:
            schema:
              properties:
                configs:
                  type: array
                  description: >
                    Each config must have a unique port and at least one Node. Additionally:
                      * 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:
                      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: NodeBalancer created successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NodeBalancer'
        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,
                "cipher_suite": "recommended",
                "nodes": [
                  {
                    "id": 543231,
                    "address": "192.168.210.120:80",
                    "label": "node54321",
                    "weight": 50,
                    "mode": "accept"
                  },
                  {
                    "address": "192.168.210.122:81",
                    "label": "thenewnode",
                    "weight": 50,
                    "mode": "accept"
                  },
                ]
              }' \
              https://api.linode.com/v4/nodebalancers/12345/configs/4567/rebuild
      - 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 \
            --cipher_suite recommended
  /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:
      - NodeBalancers
      parameters:
      - $ref: '#/components/parameters/pageOffset'
      - $ref: '#/components/parameters/pageSize'
      summary: List Nodes
      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
      security:
      - personalAccessToken: []
      - oauth:
        - nodebalancers:read_only
      responses:
        '200':
          description: A paginated list of NodeBalancer nodes.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/NodeBalancerNode'
                  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/nodes
      - lang: CLI
        source: >
          linode-cli nodebalancers nodes-list 12345 4567
    post:
      x-linode-grant: read_write
      tags:
      - NodeBalancers
      summary: Create Node
      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
      security:
      - personalAccessToken: []
      - oauth:
        - nodebalancers:read_write
      requestBody:
        description: Information about the Node to create.
        required: true
        content:
          application/json:
            schema:
              allOf:
              - $ref: '#/components/schemas/NodeBalancerNode'
              required:
              - label
              - address
      responses:
        '200':
          description: Node created successfully.
          content:
            application/json:
              schema:
                $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 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:
      - NodeBalancers
      summary: View Node
      description: >
        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:
        - nodebalancers:read_write
      responses:
        '200':
          description: A paginated list of NodeBalancer nodes.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NodeBalancerNode'
        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
      - lang: CLI
        source: >
          linode-cli nodebalancers node-view 12345 4567 54321
    put:
      x-linode-grant: read_write
      tags:
      - NodeBalancers
      summary: Update Node
      description: >
        Updates information about a Node, a backend for this NodeBalancer's
        configured port.
      operationId: updateNodeBalancerNode
      x-linode-cli-action: node-update
      security:
      - personalAccessToken: []
      - oauth:
        - nodebalancers:read_write
      requestBody:
        description: The fields to update.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NodeBalancerNode'
      responses:
        '200':
          description: Node updated successfully.
          content:
            application/json:
              schema:
                $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 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 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:
      - NodeBalancers
      summary: Delete Node
      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
      security:
      - personalAccessToken: []
      - oauth:
        - nodebalancers:read_write
      responses:
        '200':
          description: Node 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/nodebalancers/12345/configs/4567/nodes/54321
      - lang: CLI
        source: >
          linode-cli nodebalancers node-delete \
            12345 4567 54321
  /nodebalancers/{nodeBalancerId}/stats:
    x-linode-cli-command: nodebalancers
    parameters:
    - name: nodeBalancerId
      in: path
      description: The ID of the NodeBalancer to access.
      required: true
      schema:
        type: integer
    get:
      x-linode-grant: read_only
      tags:
      - NodeBalancers
      summary: View NodeBalancer Statistics
      description: >
          Returns detailed statistics about the requested NodeBalancer.
      x-linode-cli-action: stats
      x-linode-cli-skip: true
      security:
      - personalAccessToken: []
      - oauth:
        - nodebalancers:read_only
      responses:
        '200':
          description: The requested stats.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NodeBalancerStats'
        default:
          $ref: '#/components/responses/ErrorResponse'
  /profile:
    x-linode-cli-command: profile
    get:
      tags:
      - Profile
      summary: View Profile
      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: Profile response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Profile'
        default:
          $ref: '#/components/responses/ErrorResponse'
      x-code-samples:
      - lang: Shell
        source: >
          curl -H "Authorization: Bearer $TOKEN" \
              https://api.linode.com/v4/profile
      - lang: CLI
        source: >
          linode-cli profile view
    put:
      tags:
      - Profile
      summary: Update Profile
      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:
        - account:read_write
      requestBody:
        description: The fields to update.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Profile'
      responses:
        '200':
          description: Profile updated successfully.
          content:
            application/json:
              schema:
                $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 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/profile
      - 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:
    description: >
      Returns information about OAuth Apps you have authorized to access your Account.
    x-linode-cli-command: profile
    get:
      parameters:
        - $ref: '#/components/parameters/pageOffset'
        - $ref: '#/components/parameters/pageSize'
      tags:
        - Profile
      summary: List Authorized Apps
      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:
            - account:read_only
      responses:
        '200':
          description: |
            A paginated list of apps you've authorized.
          content:
            application/json:
              schema:
                type: object
                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 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
    get:
      tags:
      - Profile
      summary: View Authorized App
      description: >
        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: Revoke App Access
      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: List Grants
      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
      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:
      - Profile
      summary: Disable Two Factor Authentication
      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:
        - account:read_write
      responses:
        '200':
          description: TFA disabled.
          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/profile/tfa-disable
      - lang: CLI
        source: >
          linode-cli profile tfa-disable
  /profile/tfa-enable:
    x-linode-cli-command: profile
    post:
      tags:
      - Profile
      summary: Create Two Factor Secret
      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](#operation/tfaConfirm) (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
      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: Confirm/Enable Two Factor Authentication
      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
    description: >
      A collection of Personal Access Tokens you've created.
    get:
      tags:
      - Profile
      parameters:
      - $ref: '#/components/parameters/pageOffset'
      - $ref: '#/components/parameters/pageSize'
      summary: List Personal Access Tokens
      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: Create Personal Access Token
      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}:
    description: View or revoke a single token.
    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: View Personal Access Token
      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: Update Personal Access Token
      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: Revoke Personal Access Token
      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/devices:
    x-linode-cli-command: profile
    description: >
      A collection of active TrustedDevices for your user.
    get:
      tags:
      - Profile
      parameters:
      - $ref: '#/components/parameters/pageOffset'
      - $ref: '#/components/parameters/pageSize'
      summary: List Trusted Devices
      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
    description: >
      View or revoke individual TrustedDevices for your User.
    parameters:
    - name: deviceId
      in: path
      description: The ID of the TrustedDevice
      required: true
      schema:
        type: integer
    get:
      tags:
      - Profile
      summary: View Trusted Device
      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: Revoke Trusted Device
      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/sshkeys:
    x-linode-cli-command: sshkeys
    description: >
      A collection of SSH Keys added by you.
    get:
      x-linode-grant: read_only
      parameters:
      - $ref: '#/components/parameters/pageOffset'
      - $ref: '#/components/parameters/pageSize'
      tags:
      - Profile
      summary: List SSH Keys
      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: Add SSH Key
      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: View SSH Key
      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: Update SSH Key
      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: Delete SSH Key
      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
  /regions:
    x-linode-cli-command: regions
    get:
      tags:
      - Regions
      parameters:
      - $ref: '#/components/parameters/pageOffset'
      - $ref: '#/components/parameters/pageSize'
      summary: List Regions
      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: View Region
      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: List Support Tickets
      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: Open Support Ticket
      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: View Support Ticket
      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: Create Ticket Attachment
      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: Close Support Ticket
      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/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: List Replies
      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: Create Reply
      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: List Tags
      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: Create New Tag
      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'
  /tags/{label}:
    x-linode-cli-command: tags
    parameters:
    - name: label
      in: path
      schema:
        type: string
      required: true
    get:
      summary: List Tagged Objects
      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:
                          - $ref: '#/components/schemas/Linode'
                          - $ref: '#/components/schemas/Domain'
                          - $ref: '#/components/schemas/Volume'
                          - $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'
    delete:
      summary: Delete a Tag
      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: List Volumes
      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: Create Volume
      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
        content:
          application/json:
            schema:
              type: object
              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: View Volume
      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: Update Volume
      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:
                    region:
                      allOf:
                      - $ref: '#/components/schemas/Volume/properties/region'
                      readOnly: true
                    size:
                      allOf:
                      - $ref: '#/components/schemas/Volume/properties/size'
                      readOnly: true
                    linode_id:
                      allOf:
                      - $ref: '#/components/schemas/Volume/properties/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: Delete Volume
      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.
      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: Attach Volume
      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
              properties:
                linode_id:
                  allOf:
                  - $ref: '#/components/schemas/Volume/properties/linode_id'
                  readOnly: false
                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
      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 PUT -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: Clone Volume
      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.
      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:
                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 '{
                "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: Detach Volume
      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: Resize Volume
      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.
      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.
            '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.
            'longview:read_only': Allows access to GET your Longview Clients.
            'longview:read_write': Allows access to all endpoints related to your Longview Clients.
            'nodebalancers:read_only': Allows access to GET NodeBalancers on your Account.
            'nodebalancers:read_write': Allows access to all NodeBalancer 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:
    ErrorResponse:
      description: Error
      content:
        application/json:
          schema:
            type: object
            properties:
              errors:
                type: array
                items:
                  $ref: '#/components/schemas/ErrorObject'
  parameters:
    pageOffset:
      name: page
      in: query
      description: The page of a collection to return.
      required: false
      schema:
        type: integer
        minimum: 1
        default: 1
    pageSize:
      name: page_size
      in: query
      description: The number of items to return per page.
      schema:
        type: integer
        minimum: 25
        maximum: 100
        default: 100
  links:
    bootLinode:
      operationId: bootLinodeInstance
      parameters:
        linodeId: '$request.body#/id'
    rebootLinode:
      operationId: rebootLinodeInstance
      parameters:
        linodeId: '$request.body#/id'
    shutdownLinode:
      operationId: shutdownLinodeInstance
      parameters:
        linodeId: '$request.body#/id'
    updateLinode:
      operationId: updateLinodeInstance
      parameters:
        linodeId: '$request.body#/id'
    deleteLinode:
      operationId: deleteLinodeInstance
      parameters:
        linodeId: '$request.body#/id'
    rebuildLinode:
      operationId: rebuildLinodeInstance
      parameters:
        linodeId: '$request.body#/id'
    mutateLinode:
      operationId: mutateLinodeInstance
      parameters:
        linodeId: '$request.body#/id'
    resizeLinode:
      operationId: resizeLinodeInstance
      parameters:
        linodeId: '$request.body#/id'
    rescueLinode:
      operationId: rescueLinodeInstance
      parameters:
        linodeId: '$request.body#/id'
    cloneLinode:
      operationId: cloneLinodeInstance
      parameters:
        linodeId: '$request.body#/id'
    attachVolume:
      operationId: attachVolume
      parameters:
        volumeID: '$request.body#/id'
    cloneVolume:
      operationId: cloneVolume
      parameters:
        volumeId: '$request.body#/id'
    detachVolume:
      operationId: detachVolume
      parameters:
        volumeId: '$request.body#/id'
    resizeVolume:
      operationId: resizeVolume
      parameters:
        volumeId: '$request.body#/id'
  schemas:
    Account:
      type: object
      description: Account object
      properties:
        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. Bandwidth charges are not included in
            the estimate.
          example: 145
          x-linode-cli-display: 4
        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 country code of this Account's billing address.
          minLength: 2
          maxLength: 2
          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, this is the State
            portion of the Account's billing address. If the address is outside
            the US, this is the Province associated with the Account's billing
            address.
          maxLength: 24
          example: Pennsylvania
        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 `null`.
          maxLength: 100
          example: ATU99999999
        zip:
          type: string
          description: The zip code of this Account's billing address.
          maxLength: 16
          example: 19102
    AccountSettings:
      type: object
      description: Account Settings object
      properties:
        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
          description: >
            The Longview Pro tier you are currently subscribed to. The value must
            a [Longview Subscription](#operation/getLongviewSubscriptions)
            ID or `null`.
          example: longview-30
          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
    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: When this app was authorized.
          example: '2018-01-01T00:01:01'
          readOnly: true
          x-linode-filterable: true
          x-linode-cli-display: 5
        expiry:
          type: string
          format: date-time
          description: >
            When this app's access token expires.  Please note that apps may still have active
            refresh tokens after this time passes.
          example: '2018-01-15T00:01:01'
          readOnly: true
          x-linode-cli-display: 6
        website:
          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:
      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: The date the Backup was taken.
          example: '2018-01-15T00:01:01'
          x-linode-cli-display: 4
        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 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:
      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
      properties:
        card_number:
          type: string
          format: PAN
          description: Your credit card number. No spaces or dashes allowed.
          minLength: 13
          maxLength: 23
          example: 4111111111111111
        expiry_month:
          type: integer
          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:
          type: integer
          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
    Device:
      type: object
      description: >
        Device can be either a Disk or Volume identified by `disk_id` or
        `volume_id`. Only one type per slot allowed. Can be null.

        Devices mapped from _sde_ through _sdh_ are unavailable in `fullvirt` virt_mode.
      properties:
        disk_id:
          type: integer
          description: The Disk ID, or `null` if a Volume is assigned to this slot.
          example: 124458
        volume_id:
          type: integer
          description: The Volume ID, or `null` if a Disk is assigned to this slot.
          example: null
    Devices:
      type: object
      properties:
        sda:
          $ref: '#/components/schemas/Device'
        sdb:
          $ref: '#/components/schemas/Device'
        sdc:
          $ref: '#/components/schemas/Device'
        sdd:
          $ref: '#/components/schemas/Device'
        sde:
          $ref: '#/components/schemas/Device'
        sdf:
          $ref: '#/components/schemas/Device'
        sdg:
          $ref: '#/components/schemas/Device'
        sdh:
          $ref: '#/components/schemas/Device'
    Disk:
      type: object
      properties:
        id:
          type: integer
          description: >
            This Disk's ID which must be provided for all
            operations impacting this Disk.
          example: 25674
          readOnly: true
          x-linode-cli-display: 1
        label:
          x-linode-filterable: true
          type: string
          description: >
            The Disk's label is for display purposes only.
          example: Debian 9 Disk
          minLength: 1
          maxLength: 48
          x-linode-cli-display: 2
        status:
          type: string
          description: >
            A brief description of this Disk's current state. This field may change without
            direct action from you, as a result of operations performed to the Disk
            or the Linode containing the Disk.
          example: ready
          readOnly: true
          enum:
          - ready
          - not ready
          - deleting
          x-linode-cli-display: 3
          x-linode-cli-color:
            ready: green
            not ready: red
            default_: yellow
        size:
          x-linode-filterable: true
          type: integer
          readOnly: true
          description: The size of the Disk in MB.
          example: 48640
          x-linode-cli-display: 4
        filesystem:
          type: string
          description: >
            The Disk filesystem can be one of:

              * raw - No filesystem, just a raw binary stream.
              * swap - Linux swap area.
              * ext3 - The ext3 journaling filesystem for Linux.
              * ext4 - The ext4 journaling filesystem for Linux.
              * initrd - initrd (uncompressed initrd, ext2, max 32 MB).
          example: ext4
          enum:
          - raw
          - swap
          - ext3
          - ext4
          - initrd
          x-linode-cli-display: 5
        created:
          type: string
          format: date-time
          description: When this Linode was created.
          example: '2018-01-01T00:01:01'
          readOnly: true
        updated:
          type: string
          format: date-time
          description: When this Linode was last updated.
          example: '2018-01-01T00:01:01'
          readOnly: true
    DiskRequest:
      type: object
      description: Disk object request.
      required:
      - size
      - label
      properties:
        size:
          x-linode-filterable: true
          type: integer
          example: 48640
        label:
          $ref: '#/components/schemas/Disk/properties/label'
        filesystem:
          $ref: '#/components/schemas/Disk/properties/filesystem'
        read_only:
          type: boolean
          description: >
            If true, this Disk is read-only.
          example: false
        image:
          type: string
          description: >
            An Image ID to deploy the Disk from. Official Linode Images start with
            `linode/ `, while your Images start with `private/`.

            See [/images](#operation/getImages) for more information on the Images available for you to use.
          example: linode/debian9
        authorized_keys:
          type: array
          items:
            type: string
          writeOnly: true
          example:
          - ssh-rsa AAAA_valid_public_ssh_key_123456785== user@their-computer
          description: >
            A list of public SSH keys that will be automatically appended
            to the root user's `~/.ssh/authorized_keys` file.
        authorized_users:
          type: array
          items:
            type: string
          writeOnly: true
          example:
          - myUser
          - secondaryUser
          description: >
            A list of usernames that will have their SSH keys,
            if any, automatically appended to the root user's
            `~/.ssh/authorized_keys` file.
        root_pass:
          type: string
          format: password
          writeOnly: true
          example: aComplexP@ssword
          description: |
            This will set the root user's password on the newly-created Linode.
            The root password must conform to the following constraints:

              * May only use alphanumerics, punctuation, spaces, and tabs.
              * Must contain at least two of the following characters classes:
                * Upper-case letters
                * Lower-case letters
                * Digits
                * Punctuation
          minLength: 6
          maxLength: 128
          pattern: ^(((?=.*[a-z])(?=.*[A-Z]))|((?=.*[a-z])(?=.*[0-9]))|((?=.*[A-Z])(?=.*[0-9]))|((?=.*[a-z])(?=.*[!"#$%&'()*+,-.\/:;<=>?@\[\]^_`{|}~\\]))|((?=.*[A-Z])(?=.*[!"#$%&'()*+,-.\/:;<=>?@\[\]^_`{|}~\\]))|((?=.*[0-9])(?=.*[!"#$%&'()*+,-.\/:;<=>?@\[\]^_`{|}~\\])))
        stackscript_id:
          type: integer
          example: 10079
          description: |
            A StackScript ID that will cause the referenced StackScript to be run during
            deployment of this Linode. A compatible `image` is required to use a
            StackScript. To get a list of available StackScript and their permitted Images
            see [/stackscripts](#operation/getStackScripts).
            This field cannot be used when deploying from a Backup or a private Image.
        stackscript_data:
          type: object
          example:
            gh_username: linode
          description: |
            This field is required only if the StackScript being deployed requires input
            data from the User for successful completion. See
            <a target="_top" href="https://www.linode.com/docs/platform/stackscripts/#variables-and-udfs">Variables and UDFs</a>
            for more details. This field is required to be valid JSON.
    Domain:
      type: object
      description: >
        A domain zonefile in our DNS system.  You must own the domain name and
        tell your registrar to use Linode's nameservers in order for a domain
        in our system to be treated as authoritative.
      required:
      - id
      - domain
      - type
      properties:
        id:
          type: integer
          description: This Domain's unique ID
          example: 1234
          readOnly: true
          x-linode-cli-display: 1
        type:
          type: string
          enum:
          - master
          - slave
          description: >
            If this Domain represents the authoritative source of information for
            the domain it describes, or if it is a read-only copy of a master
            (also called a slave).
          example: master
          x-linode-cli-display: 3
        domain:
          type: string
          pattern: ([a-zA-Z0-9-_]+\.)+([a-zA-Z]{2,3}\.)?([a-zA-Z]{2,16}|XN--[a-zA-Z0-9]+)
          description: >
            The domain this Domain represents. These must be unique in our
            system; you cannot have two Domains representing the same domain.
          example: example.org
          x-linode-filterable: true
          x-linode-cli-display: 2
        group:
          deprecated: true
          type: string
          description: >
            The group this Domain belongs to.  This is for display purposes
            only.
          example: null
          minLength: 1
          maxLength: 50
          x-linode-filterable: true
        status:
          type: string
          enum:
          - disabled
          - active
          - edit_mode
          - has_errors
          description: >
            Used to control whether this Domain is currently being rendered.
          example: active
          x-linode-cli-display: 4
          x-linode-cli-color:
            active: green
            disabled: yellow
            edit_mode: yellow
            default_: red
        description:
          type: string
          minLength: 1
          maxLength: 255
          description: |
            A description for this Domain. This is for display purposes only.
          example: null
        soa_email:
          type: string
          format: email
          description: >
            Start of Authority email address. This is required for master
            Domains.
          example: admin@example.org
          x-linode-cli-display: 5
        retry_sec:
          type: integer
          description: >
            The interval, in seconds, at which a failed refresh should be retried.
            Valid values are 300, 3600, 7200, 14400, 28800, 57600,
            86400, 172800, 345600, 604800, 1209600, and 2419200 - any other
            value will be rounded to the nearest valid value.
          example: 300
        master_ips:
          type: array
          items:
            type: string
            format: ip
          description: >
            The IP addresses representing the master DNS for this Domain.
          example: []
        axfr_ips:
          type: array
          items:
            type: string
            format: ip
          description: >
            The list of IPs that may perform a zone transfer for this Domain.
            This is potentially dangerous, and should be set to an empty list
            unless you intend to use it.
          example: []
        expire_sec:
          type: integer
          description: >
            The amount of time in seconds that may pass before this Domain is no longer
            authoritative. Valid values are
            300, 3600, 7200, 14400, 28800, 57600, 86400, 172800, 345600,
            604800, 1209600, and 2419200 - any other value will be rounded to
            the nearest valid value.
          example: 300
        refresh_sec:
          type: integer
          description: >
            The amount of time in seconds before this Domain should be refreshed.
            Valid values are 300, 3600, 7200, 14400, 28800, 57600, 86400, 172800, 345600,
            604800, 1209600, and 2419200 - any other value will be rounded to
            the nearest valid value.
          example: 300
        ttl_sec:
          type: integer
          description: >
            "Time to Live" - the amount of time in seconds that this Domain's
            records may be cached by resolvers or other domain servers. Valid
            values are 300, 3600, 7200, 14400, 28800, 57600, 86400, 172800,
            345600, 604800, 1209600, and 2419200 - any other value will be
            rounded to the nearest valid value.
          example: 300
        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
    DomainRecord:
      type: object
      description: >
        A single record on a Domain.
      properties:
        id:
          type: integer
          description: This Record's unique ID.
          example: 123456
          readOnly: true
          x-linode-cli-display: 1
        type:
          type: string
          enum:
          - A
          - AAAA
          - NS
          - MX
          - CNAME
          - TXT
          - SRV
          - PTR
          - CAA
          description: >
            The type of Record this is in the DNS system. For example, A
            records associate a domain name with an IPv4 address, and AAAA
            records associate a domain name with an IPv6 address.
          example: A
          x-linode-cli-display: 2
        name:
          type: string
          description: >
            The name of this Record. This field's actual usage depends on the
            type of record this represents. For A and AAAA records, this is
            the subdomain being associated with an IP address.
          minLength: 1
          maxLength: 100
          example: test
          x-linode-cli-display: 3
        target:
          type: string
          description: >
            The target for this Record. This field's actual usage depends on
            the type of record this represents. For A and AAAA records, this
            is the address the named Domain should resolve to.
          example: 12.34.56.78
          x-linode-cli-display: 4
        priority:
          type: integer
          minimum: 0
          maximum: 255
          description: >
            The priority of the target host. Lower values are preferred.
          example: 50
          x-linode-cli-display: 6
        weight:
          type: integer
          description: >
            The relative weight of this Record. Higher values are preferred.
          example: 50
          x-linode-cli-display: 7
        port:
          type: integer
          description: >
            The port this Record points to.
          example: 80
        service:
          type: string
          nullable: true
          description: >
            The service this Record identified. Only valid for SRV records.
          example: null
        protocol:
          type: string
          nullable: true
          description: >
            The protocol this Record's service communicates with. Only valid
            for SRV records.
          example: null
        ttl_sec:
          type: integer
          description: >
            "Time to Live" - the amount of time in seconds that this Domain's
            records may be cached by resolvers or other domain servers. Valid
            values are 300, 3600, 7200, 14400, 28800, 57600, 86400, 172800,
            345600, 604800, 1209600, and 2419200 - any other value will be
            rounded to the nearest valid value.
          example: 604800
          x-linode-cli-display: 5
        tag:
          type: string
          nullable: true
          description: >
            The tag portion of a CAA record. It is invalid to set this on
            other record types.
          example: null
    ErrorObject:
      type: object
      description: >
        An object for describing a single error that occurred during the processing of a request.
      properties:
        reason:
          type: string
          description: >
            What happened to cause this error. In most cases, this can be fixed immediately by
            changing the data you sent in the request, but in some cases you will be instructed to
            [open a Support Ticket](#operation/createTicket) or perform some
            other action before you can complete the request successfully.
          example: fieldname must be a valid value
        field:
          type: string
          description: >
            The field in the request that caused this error. This may be a path, separated by
            periods in the case of nested fields. In some cases this may come back as "null" if the
            error is not specific to any single element of the request.
          example: fieldname
    Event:
      type: object
      description: >
        A collection of Event objects. An Event is an action taken against an
        entity related to your Account. For example, booting a Linode would
        create an Event.

        The Events returned depends on your grants.
      properties:
        id:
          type: integer
          readOnly: true
          description: The unique ID of this Event.
          example: 123
          x-linode-cli-display: 1
        action:
          type: string
          enum:
          - account_update
          - account_settings_update
          - backups_enable
          - backups_cancel
          - backups_restore
          - community_question_reply
          - community_like
          - credit_card_updated
          - disk_create
          - disk_delete
          - disk_update
          - disk_duplicate
          - disk_imagize
          - disk_resize
          - dns_record_create
          - dns_record_delete
          - dns_record_update
          - dns_zone_create
          - dns_zone_delete
          - dns_zone_update
          - image_delete
          - image_update
          - linode_addip
          - linode_boot
          - linode_clone
          - linode_create
          - linode_delete
          - linode_update
          - linode_deleteip
          - linode_migrate
          - linode_mutate
          - linode_reboot
          - linode_rebuild
          - linode_resize
          - linode_shutdown
          - linode_snapshot
          - linode_config_create
          - linode_config_delete
          - linode_config_update
          - longviewclient_create
          - longviewclient_delete
          - longviewclient_update
          - managed_disabled
          - managed_enabled
          - managed_service_create
          - managed_service_delete
          - nodebalancer_create
          - nodebalancer_delete
          - nodebalancer_update
          - nodebalancer_config_create
          - nodebalancer_config_delete
          - nodebalancer_config_update
          - password_reset
          - payment_submitted
          - stackscript_create
          - stackscript_delete
          - stackscript_update
          - stackscript_publicize
          - stackscript_revise
          - tfa_disabled
          - tfa_enabled
          - ticket_attachment_upload
          - ticket_create
          - ticket_update
          - user_ssh_key_add
          - user_ssh_key_delete
          - user_ssh_key_update
          - volume_attach
          - volume_clone
          - volume_create
          - volume_delete
          - volume_update
          - volume_detach
          - volume_resize
          readOnly: true
          description: >
            The action that caused this Event. New actions may be added in the future.
          example: ticket_create
          x-linode-cli-display: 3
        created:
          type: string
          readOnly: true
          format: date-time
          description: When this Event was created.
          example: '2018-01-01T00:01:01'
          x-linode-cli-display: 5
        entity:
          type: object
          readOnly: true
          description: >
            Detailed information about the Event's entity, including ID, type,
            label, and URL used to access it.
          x-linode-cli-display: 4
          properties:
            id:
              type: integer
              description: The unique ID for this Event's Entity.
              example: 11111
              x-linode-filterable: true
            label:
              type: string
              description: >
                The current label of this object. The label may reflect changes
                that occur with this Event.
              example: Problem booting my Linode
            type:
              type: string
              description: >
                The type of entity this Event is related to.
              example: ticket
              x-linode-filterable: true
            url:
              type: string
              description: >
                The URL where you can access the object this Event is for. If
                a relative URL, it is relative to the domain you retrieved the
                Event from.
              example: /v4/support/tickets/11111
        percent_complete:
          type: integer
          readOnly: true
          description: >
            A percentage estimating the amount of time remaining for an Event.

            Returns `null` for notification events.
          example: null
        rate:
          type: string
          readOnly: true
          description: >
              The rate of completion of the Event. Only some Events will return
              rate; for example, migration and resize Events.
          example: null
        read:
          type: boolean
          readOnly: true
          description: If this Event has been read.
          example: true
          x-linode-cli-display: 8
        seen:
          type: boolean
          readOnly: true
          description: If this Event has been seen.
          example: true
          x-linode-cli-display: 7
        status:
          type: string
          readOnly: true
          description: The current status of this Event.
          enum:
          - failed
          - finished
          - notification
          - scheduled
          - started
          x-linode-cli-display: 6
          x-linode-cli-color:
            failed: red
            finished: green
            started: yellow
            default_: white
        time_remaining:
          type: string
          readOnly: true
          nullable: true
          description: >
            The estimated time remaining until the completion of this Event.
            This value is only returned for some in-progress migration events.
            For all other in-progress events, the `percent_complete` attribute
            will indicate about how much more work is to be done.
          example: null
        username:
          type: string
          readOnly: true
          description: >
            The username of the User who caused the Event.
          example: exampleUser
          x-linode-cli-display: 2
    Grant:
      type: object
      description: >
        Represents the level of access a restricted User has to a specific
        resource on the Account.
      properties:
        id:
          type: integer
          description: >
            The ID of the entity this grant applies to.
          example: 123
        permissions:
          type: string
          nullable: true
          enum:
          - null
          - read_only
          - read_write
          description: >
            The level of access this User has to this entity.  If null, this
            User has no access.
          example: read_only
        label:
          type: string
          description: >
            The current label of the entity this grant applies to, for display
            purposes.
          example: example-entity
          readOnly: true
    GrantsResponse:
      type: object
      description: >
        A structure representing all grants a restricted User has on the
        Account. Not available for unrestricted users, as they have access to
        everything without grants. If retrieved from the `/profile/grants`
        endpoint, entities to which a User has no access will be omitted.
      properties:
        global:
          type: object
          description: >
            A structure containing the Account-level grants a User has.
          properties:
            add_linodes:
              type: boolean
              description: If true, this User may create Linodes.
              example: true
            add_longview:
              type: boolean
              description: If true, this User may create Longview clients.
              example: true
            longview_subscription:
              type: boolean
              description: If true, this User may manage the Account's Longview subscription.
              example: true
            account_access:
              type: string
              nullable: true
              enum:
              - null
              - read_only
              - read_write
              description: >
                The level of access this User has to Account-level actions,
                like billing information. A restricted User will never be able
                to manage users.
              example: read_only
            cancel_account:
              type: boolean
              description: If true, this User may cancel the entire Account.
              example: false
            add_domains:
              type: boolean
              description: If true, this User may add Domains.
              example: true
            add_stackscripts:
              type: boolean
              description: If true, this User may add StackScripts.
              example: true
            add_nodebalancers:
              type: boolean
              description: If true, this User may add NodeBalancers.
              example: true
            add_images:
              type: boolean
              description: If true, this User may add Images.
              example: true
            add_volumes:
              type: boolean
              description: If true, this User may add Volumes.
              example: true
        linode:
          type: array
          items:
            $ref: '#/components/schemas/Grant'
          description: >
            The grants this User has pertaining to Linodes on this Account.
            There will be one entry per Linode on the Account.
        domain:
          type: array
          items:
            $ref: '#/components/schemas/Grant'
          description: >
            The grants this User has pertaining to Domains on this Account.
            There will be one entry per Domain on the Account.
        nodebalancer:
          type: array
          items:
            $ref: '#/components/schemas/Grant'
          description: >
            The grants this User has pertaining to NodeBalancers on this
            Account. There will be one entry per NodeBalancer on the Account.
        image:
          type: array
          items:
            $ref: '#/components/schemas/Grant'
          description: >
            The grants this User has pertaining to Images on this Account.
            There will be one entry per Image on the Account.
        longview:
          type: array
          items:
            $ref: '#/components/schemas/Grant'
          description: >
            The grants this User has pertaining to Longview Clients on this
            Account. There will be one entry per Longview Client on the
            Account.
        stackscript:
          type: array
          items:
            $ref: '#/components/schemas/Grant'
          description: >
            The grants this User has pertaining to StackScripts on this
            Account.  There will be one entry per StackScript on the Account.
        volume:
          type: array
          items:
            $ref: '#/components/schemas/Grant'
          description: >
            The grants this User has pertaining to Volumes on this Account.
            There will be one entry per Volume on the Account.
    ImagePrivate:
      type: object
      description: Private Image object
      properties:
        id:
          type: string
          description: The unique ID of this Image.
          example: private/67848373
          readOnly: true
          x-linode-cli-display: 1
        label:
          x-linode-filterable: true
          type: string
          description: >
            A short description of the Image. Labels cannot contain
            special characters.
          example: My gold-master image
          x-linode-cli-display: 2
        created:
          type: string
          format: date-time
          description: When this Image was created.
          example: '2018-01-01T00:01:01'
          readOnly: true
        created_by:
          type: string
          description: >
            The name of the User who created this Image.
          example: somename
          readOnly: true
        deprecated:
          x-linode-filterable: true
          type: boolean
          description: >
            Whether or not this Image is deprecated. Will only be True for
            deprecated public Images.
          example: false
          readOnly: true
        description:
          type: string
          description: A detailed description of this Image.
          example: The detailed description of my Image.
          x-linode-cli-display: 4
          x-linode-cli-color:
            None: black
            default_: white
        is_public:
          x-linode-filterable: true
          description: True if the Image is public.
          type: boolean
          example: false
          readOnly: true
          x-linode-cli-display: 5
        size:
          x-linode-filterable: true
          type: integer
          description: >
            The minimum size this Image needs to deploy. Size is in MB.
          example: 2500
          readOnly: true
          x-linode-cli-display: 6
        type:
          type: string
          description: >
            How the Image was created. "Manual" Images can be created at any time.
            "Automatic" images are created automatically from a deleted Linode.
          enum:
          - manual
          - automatic
          example: manual
          readOnly: true
        expiry:
          type: string
          format: date-time
          description: >
            Only Images created automatically (from a deleted Linode; type=automatic) will expire.
          example: '2018-08-01T00:01:01'
          readOnly: true
        vendor:
          x-linode-filterable: true
          type: string
          nullable: true
          description: >
            The upstream distribution vendor. `None` for private Images.
          example: null
          readOnly: true
          x-linode-cli-display: 3
          x-linode-cli-color:
            None: black
            default_: white
    ImagePublic:
      type: object
      description: Public Image object
      properties:
        id:
          type: string
          description: The unique ID of this Image.
          example: linode/ubuntu17.10
          readOnly: true
          x-linode-cli-display: 1
        label:
          x-linode-filterable: true
          type: string
          description: >
            A short description of the Image.
          example: Ubuntu 17.10
          x-linode-cli-display: 2
        created:
          type: string
          format: date-time
          description: When this Image was created.
          example: '2018-01-01T00:01:01'
          readOnly: true
        created_by:
          type: string
          description: >
            The name of the User who created this Image, or "linode" for
            official Images.
          example: linode
          readOnly: true
        deprecated:
          x-linode-filterable: true
          type: boolean
          description: >
            Whether or not this Image is deprecated. Will only be true for
            deprecated public Images.
          example: false
          readOnly: true
        description:
          type: string
          description: A detailed description of this Image.
          example: null
          x-linode-cli-display: 4
          x-linode-cli-color:
            None: black
            default_: white
        is_public:
          x-linode-filterable: true
          description: True if the Image is public.
          type: boolean
          example: true
          readOnly: true
          x-linode-cli-display: 5
        size:
          x-linode-filterable: true
          type: integer
          description: >
            The minimum size this Image needs to deploy. Size is in MB.
          example: 2500
          readOnly: true
          x-linode-cli-display: 6
        type:
          type: string
          description: >
            How the Image was created. Manual Images can be created at any time.
            "Automatic" Images are created automatically from a deleted Linode.
          enum:
          - manual
          - automatic
          example: manual
          readOnly: true
        expiry:
          type: string
          format: date-time
          description: >
            Only Images created automatically (from a deleted Linode; type=automatic) will expire.
          example: null
          readOnly: true
        vendor:
          x-linode-filterable: true
          type: string
          description: >
            The upstream distribution vendor. `None` for private Images.
          example: Ubuntu
          readOnly: true
          x-linode-cli-display: 3
          x-linode-cli-color:
            None: black
            default_: white
    Invoice:
      type: object
      description: Account Invoice object
      properties:
        id:
          type: integer
          readOnly: true
          description: The Invoice's unique ID.
          example: 123
          x-linode-cli-display: 1
        date:
          type: string
          readOnly: true
          format: date-time
          description: When this Invoice was generated.
          example: '2018-01-01T00:01:01'
          x-linode-cli-display: 2
        label:
          type: string
          readOnly: true
          description: The Invoice's display label.
          example: Invoice
          x-linode-cli-display: 3
        total:
          type: integer
          readOnly: true
          description: The amount of the Invoice in US Dollars.
          example: 120
          x-linode-cli-display: 4
    InvoiceItem:
      type: object
      description: An InvoiceItem object.
      properties:
        amount:
          type: integer
          readOnly: true
          description: The price, in US dollars, of unit price multiplied by quantity.
          example: 20
          x-linode-cli-display: 4
        from:
          type: string
          readOnly: true
          format: date-time
          description: The date the Invoice Item started, based on month.
          example: '2018-01-01T00:01:01'
          x-linode-cli-display: 2
        label:
          type: string
          readOnly: true
          description: The Invoice Item's display label.
          example: Linode 123
          x-linode-cli-display: 1
        quantity:
          type: integer
          readOnly: true
          description: The quantity of this Item for the specified Invoice.
          example: 1
        to:
          type: string
          readOnly: true
          format: date-time
          description: The date the Invoice Item ended, based on month.
          example: '2018-01-31T11:59:59'
          x-linode-cli-display: 3
        type:
          type: string
          readOnly: true
          description: The type of service, ether `prepay` or `misc`.
          enum:
          - hourly
          - prepay
          - misc
        unitprice:
          type: integer
          readOnly: true
          description: The monthly service fee in US Dollars for this Item.
          example: 10
    IPAddress:
      type: object
      description: >
        An IP address that exists in Linode's system, either IPv4 or IPv6.
      properties:
        address:
          type: string
          format: ip
          description: >
            The IP address.
          example: 97.107.143.141
          readOnly: true
          x-linode-cli-display: 1
        gateway:
          type: string
          nullable: true
          format: ip
          description: >
            The default gateway for this address.
          example: 97.107.143.1
          readOnly: true
        subnet_mask:
          type: string
          format: ip
          description: >
            The mask that separates host bits from network bits for this address.
          example: 255.255.255.0
          readOnly: true
        prefix:
          type: integer
          description: >
            The number of bits set in the subnet mask.
          example: 24
          readOnly: true
        type:
          type: string
          enum:
          - ipv4
          - ipv6
          - ipv6/pool
          - ipv6/range
          description: >
            The type of address this is.
          example: ipv4
          readOnly: true
          x-linode-cli-display: 2
        public:
          type: boolean
          description: >
            Whether this is a public or private IP address.
          example: true
          readOnly: true
          x-linode-cli-display: 3
        rdns:
          type: string
          description: >
            The reverse DNS assigned to this address. For public IPv4 addresses,
            this will be set to a default value provided by Linode if not
            explicitly set.
          x-linode-cli-display: 4
          example: test.example.org
        linode_id:
          type: integer
          description: >
            The ID of the Linode this address currently belongs to. For IPv4
            addresses, this is by default the Linode that this address was
            assigned to on creation, and these addresses my be moved using the
            [/networking/ipv4/assign](#operation/assignIPs)
            endpoint. For SLAAC and link-local addresses, this value may not be changed.
          example: 123
          readOnly: true
          x-linode-cli-display: 6
        region:
          type: string
          description: >
            The Region this IP address resides in.
          example: us-east
          readOnly: true
          x-linode-filterable: true
          x-linode-cli-display: 5
    IPAddressPrivate:
      type: object
      description: >
        A private IPv4 address that exists in Linode's system.
      properties:
        address:
          type: string
          format: ip
          description: >
            The private IPv4 address.
          example: 192.168.133.234
          readOnly: true
          x-linode-cli-display: 1
        gateway:
          type: string
          format: ip
          description: >
            The default gateway for this address.
          example: null
          readOnly: true
        subnet_mask:
          type: string
          format: ip
          description: >
            The mask that separates host bits from network bits for this address.
          example: 255.255.128.0
          readOnly: true
        prefix:
          type: integer
          description: >
            The number of bits set in the subnet mask.
          example: 17
          readOnly: true
        type:
          type: string
          description: >
            The type of address this is.
          example: ipv4
          readOnly: true
          x-linode-cli-display: 2
        public:
          type: boolean
          description: >
            Whether this is a public or private IP address.
          example: false
          readOnly: true
          x-linode-cli-display: 3
        rdns:
          type: string
          description: >
            The reverse DNS assigned to this address.
          example: null
          x-linode-cli-display: 4
        linode_id:
          type: integer
          description: >
            The ID of the Linode this address currently belongs to.
          example: 123
          readOnly: true
          x-linode-cli-display: 6
        region:
          type: string
          description: >
            The Region this address resides in.
          example: us-east
          readOnly: true
          x-linode-filterable: true
          x-linode-cli-display: 5
    IPAddressV6LinkLocal:
      type: object
      description: >
        A link-local IPv6 address that exists in Linode's system,.
      properties:
        address:
          type: string
          format: ip
          description: >
            The IPv6 link-local address.
          example: fe80::f03c:91ff:fe24:3a2f
          readOnly: true
          x-linode-cli-display: 1
        gateway:
          type: string
          description: >
            The default gateway for this address.
          example: fe80::1
          readOnly: true
        subnet_mask:
          type: string
          format: ip
          description: >
            The subnet mask.
          example: ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff
          readOnly: true
        prefix:
          type: integer
          description: >
            The network prefix.
          example: 64
          readOnly: true
        type:
          type: string
          description: >
            The type of address this is.
          example: ipv6
          readOnly: true
          x-linode-cli-display: 2
        public:
          type: boolean
          description: >
            Whether this is a public or private IP address.
          example: false
          readOnly: true
          x-linode-cli-display: 3
        rdns:
          type: string
          description: >
            The reverse DNS assigned to this address.
          example: null
          x-linode-cli-display: 4
        linode_id:
          type: integer
          description: >
            The ID of the Linode this address currently belongs to.
          example: 123
          readOnly: true
          x-linode-cli-display: 6
        region:
          type: string
          description: >
            The Region this address resides in.
          example: us-east
          readOnly: true
          x-linode-filterable: true
          x-linode-cli-display: 5
    IPAddressV6Slaac:
      type: object
      description: >
        A SLAAC IPv6 address that exists in Linode's system.
      properties:
        address:
          type: string
          format: ip
          description: >
            The address.
          example: 2600:3c03::f03c:91ff:fe24:3a2f
          readOnly: true
          x-linode-cli-display: 1
        gateway:
          type: string
          description: >
            The default gateway for this address.
          example: fe80::1
          readOnly: true
        subnet_mask:
          type: string
          format: ip
          description: >
            The subnet mask.
          example: ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff
          readOnly: true
        prefix:
          type: integer
          description: >
            The network prefix.
          example: 64
          readOnly: true
        type:
          type: string
          description: >
            The type of address this is.
          example: ipv6
          readOnly: true
          x-linode-cli-display: 2
        public:
          type: boolean
          description: >
            Whether this is a public or private IP address.
          example: true
          readOnly: true
          x-linode-cli-display: 3
        rdns:
          type: string
          description: >
            The reverse DNS assigned to this address.
          example: null
          x-linode-cli-display: 4
        linode_id:
          type: integer
          description: >
            The ID of the Linode this address currently belongs to.
          example: 123
          readOnly: true
          x-linode-cli-display: 6
        region:
          type: string
          description: >
            The Region this address resides in.
          example: us-east
          readOnly: true
          x-linode-filterable: true
          x-linode-cli-display: 5
    IPv6Pool:
      type: object
      description: >
        An object representing an IPv6 pool.
      properties:
        range:
          type: string
          description: >
            The IPv6 pool
          example: '2600:3c01::02:5000::'
          readOnly: true
          x-linode-cli-display: 1
        prefix:
          type: integer
          description: >
            The prefix length of the address, denoting which addresses can be
            assigned from this pool.
          example: 124
          x-linode-cli-display: 2
        region:
          type: string
          description: >
            A pool of IPv6 addresses that are routed to all of
            your Linodes in a single Region. Any Linode you own may bring up any
            address in this pool at any time, with no external configuration
            required.
          example: us-east
          readOnly: true
          x-linode-cli-display: 3
    IPv6Range:
      type: object
      description: >
        An object representing an IPv6 range.
      properties:
        range:
          type: string
          description: >
            The IPv6 range.
          example: '2600:3c01::02:5000::'
          readOnly: true
          x-linode-cli-display: 1
        region:
          type: string
          description: >
            A range of IPv6 addresses routed to a single Linode in the given
            Region. Your Linode is responsible for routing individual addresses
            in the range, or handling traffic for all of the addresses in the
            range.
          example: us-east
          readOnly: true
          x-linode-cli-display: 2
    Kernel:
      type: object
      description: Linux kernel object
      properties:
        id:
          type: string
          description: The unique ID of this Kernel.
          example: linode/latest-64bit
          readOnly: true
          x-linode-cli-display: 1
        label:
          x-linode-filterable: true
          type: string
          description: The friendly name of this Kernel.
          example: Latest 64 bit (4.15.7-x86_64-linode102)
          readOnly: true
          x-linode-cli-display: 2
        version:
          x-linode-filterable: true
          type: string
          description: Linux Kernel version.
          example: 4.15.7
          readOnly: true
          x-linode-cli-display: 3
        kvm:
          x-linode-filterable: true
          type: boolean
          description: If this Kernel is suitable for KVM Linodes.
          example: true
          readOnly: true
        xen:
          x-linode-filterable: true
          type: boolean
          description: If this Kernel is suitable for Xen Linodes.
          example: false
          readOnly: true
        architecture:
          x-linode-filterable: true
          type: string
          description: The architecture of this Kernel.
          enum:
          - x86_64
          - i386
          example: x86_64
          readOnly: true
          x-linode-cli-display: 4
        pvops:
          x-linode-filterable: true
          type: boolean
          description: If this Kernel is suitable for paravirtualized operations.
          example: false
          readOnly: true
    Linode:
      type: object
      allOf:
      - $ref: '#/components/schemas/LinodeBase'
      properties:
        label:
          x-linode-filterable: true
          x-linode-cli-display: 2
          description: >
            The Linode's label is for display purposes only. If no label is provided for a Linode,
            a default will be assigned.

            Linode labels have the following constraints:

              * Must start with an alpha character.
              * May only consist of alphanumeric characters, dashes (`-`), underscores (`_`) or periods (`.`).
              * Cannot have two dashes (`--`), underscores (`__`) or periods (`..`) in a row.
        region:
          x-linode-filterable: true
          readOnly: true
          description: >
            This is the location where the Linode was deployed. This cannot be
            changed without
            [opening a support ticket](#operation/createTicket).
          x-linode-cli-display: 4
        image:
          x-linode-filterable: true
          readOnly: true
          nullable: true
          allOf:
          - $ref: '#/components/schemas/DiskRequest/properties/image'
          x-linode-cli-display: 6
        type:
          readOnly: true
          description: >
            This is the [Linode Type](#operation/getLinodeTypes) that this
            Linode was deployed with.

            To change a Linode's Type, use
            [POST /linode/instances/{linodeId}/resize](#operation/resizeLinodeInstance).
          x-linode-cli-display: 5
        group:
          deprecated: true
          type: string
          x-linode-filterable: true
          description: >
            A deprecated property denoting a group label for this Linode.
          example: "Linode-Group"
        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
        id:
          type: integer
          description: >
            This Linode's ID which must be provided for all operations impacting this Linode.
          example: 123
          readOnly: true
          x-linode-cli-display: 1
        status:
          type: string
          description: >
            A brief description of this Linode's current state. This field may change without
            direct action from you. For instance, the status will change to "running"
             when the boot process completes.
          example: running
          readOnly: true
          enum:
          - running
          - offline
          - booting
          - rebooting
          - shutting_down
          - provisioning
          - deleting
          - migrating
          - rebuilding
          - cloning
          - restoring
          x-linode-cli-display: 7
          x-linode-cli-color:
              running: green
              offline: red
              default_: yellow
        hypervisor:
          type: string
          description: >
            The virtualization software powering this Linode.
          example: kvm
          readOnly: true
          enum:
          - kvm
        created:
          type: string
          format: date-time
          description: When this Linode was created.
          example: '2018-01-01T00:01:01'
          readOnly: true
        updated:
          type: string
          format: date-time
          description: When this Linode was last updated.
          example: '2018-01-01T00:01:01'
          readOnly: true
        ipv4:
          type: array
          items:
            type: string
          example:
            - 123.45.67.890
          readOnly: true
          description: |
            This Linode's IPv4 Addresses. Each Linode is assigned a single public IPv4 address
            upon creation, and may get a single private IPv4 address if needed. You may need to
            [open a support ticket](#operation/createTicket)
            to get additional IPv4 addresses.

            IPv4 addresses may be reassigned between your Linodes, or shared with other Linodes.
            See the [/networking](#tag/networking) endpoints for details.
          x-linode-cli-display: 10
        ipv6:
          type: string
          description: >
            This Linode's IPv6 SLAAC addresses. This address is specific to a Linode, and may not
            be shared.
          example: 'c001:d00d::1234'
          readOnly: true
        specs:
          type: object
          description: Information about the resources available to this Linode.
          readOnly: true
          properties:
            disk:
              type: integer
              description: >
                The amount of storage space, in MB, this Linode has access to. A typical Linode
                will divide this space between a primary disk with an `image` deployed to it, and
                a swap disk, usually 512 MB. This is the default configuration created when
                deploying a Linode with an `image` through
                [POST /linode/instances](#operation/createLinodeInstance).
                While this configuration is suitable for 99% of use cases, if you need finer control over
                your Linode's disks, see the
                [/linode/instances/{linodeId}/disks](#operation/getLinodeDisks)
                endpoints.
              example: 30720
              readOnly: true
            memory:
              type: integer
              description: >
                The amount of RAM, in MB, this Linode has access to. Typically a Linode will
                choose to boot with all of its available RAM, but this can be configured in a
                Config profile, see the
                [/linode/instances/{linodeId}/configs](#operation/getLinodeConfigs)
                endpoints and the LinodeConfig object for more information.
              example: 2048
              readOnly: true
            vcpus:
              type: integer
              description: >
                The number of vcpus this Linode has access to.
                Typically a Linode will choose to
                boot with all of its available vcpus, but this can be configured in a Config
                Profile, see the
                [/linode/instances/{linodeId}/configs](#operation/getLinodeConfigs)
                endpoints and the LinodeConfig object for more information.
              example: 1
              readOnly: true
            transfer:
              type: integer
              description: The amount of network transfer this Linode is allotted each month.
              example: 2000
              readOnly: true
        alerts:
          type: object
          properties:
            cpu:
              type: integer
              description: >
                The percentage of CPU usage required to trigger an alert. If the average CPU
                usage over two hours exceeds this value, we'll send you an alert. If this is set
                to 0, the alert is disabled.
              example: 90
            network_in:
              type: integer
              description: >
                The amount of incoming traffic, in Mbit/s, required to trigger an alert. If the
                average incoming traffic over two hours exceeds this value, we'll send you an
                alert. If this is set to 0 (zero), the alert is disabled.
              example: 10
            network_out:
              type: integer
              description: >
                The amount of outbound traffic, in Mbit/s, required to trigger an alert. If the
                average outbound traffic over two hours exceeds this value, we'll send you an
                alert. If this is set to 0 (zero), the alert is disabled.
              example: 10
            transfer_quota:
              type: integer
              description: >
                The percentage of network transfer that may be used before an alert is triggered.
                When this value is exceeded, we'll alert you. If this is set to 0 (zero), the alert is
                disabled.
              example: 80
            io:
              type: integer
              description: >
                The amount of disk IO operation per second required to trigger an alert. If the
                average disk IO over two hours exceeds this value, we'll send you an alert. If set
                to 0, this alert is disabled.
              example: 10000
        backups:
          type: object
          description: >
            Information about this Linode's backups status. For information about available
            backups, see [/linode/instances/{linodeId}/backups](#operation/getBackups).
          properties:
            enabled:
              type: boolean
              description: >
                If this Linode has the Backup service enabled. To enable backups, see
                [POST /linode/instances/{linodeId}/backups/enable](#operation/enableBackups).
              example: true
              readOnly: true
            schedule:
              type: object
              properties:
                day:
                  type: string
                  nullable: true
                  description: |
                    The day of the week that your Linode's weekly Backup is taken.
                    If not set manually, a day will be chosen for you. Backups
                    are taken every day, but backups taken on this day are
                    preferred when selecting backups to retain for a longer period.


                    If not set manually, then when backups are initially enabled, this
                    may come back as `Scheduling` until the `day` is automatically selected.
                  example: Saturday
                  enum:
                  - Scheduling
                  - Sunday
                  - Monday
                  - Tuesday
                  - Wednesday
                  - Thursday
                  - Friday
                  - Saturday
                window:
                  type: string
                  nullable: true
                  description: |
                    The window in which your backups will be taken, in UTC. A
                    backups window is a two-hour span of time in which the backup
                    may occur.


                    For example, `W10` indicates that your backups should be
                    taken between 10:00 and 12:00. If you do not choose a backup
                    window, one will be selected for you automatically.


                    If not set manually, when backups are initially enabled this
                    may come back as `Scheduling` until the `window` is automatically selected.
                  example: W22
                  enum:
                  - Scheduling
                  - W0
                  - W2
                  - W4
                  - W6
                  - W8
                  - W10
                  - W12
                  - W14
                  - W16
                  - W18
                  - W20
                  - W22
        watchdog_enabled:
          type: boolean
          description: >
            The watchdog, named Lassie, is a Shutdown Watchdog that monitors your Linode and will reboot it
            if it powers off unexpectedly. It works by issuing a boot job when your
            Linode powers off without a shutdown job being responsible.

            To prevent a loop, Lassie will give up if there have been more than 5 boot
            jobs issued within 15 minutes.
          example: true
    LinodeBase:
      type: object
      description: Common properties for Linode Request and Response objects.
      properties:
        label:
          type: string
          description: >
            The Linode's label is for display purposes only. If no label is provided for a Linode,
            a default will be assigned.

            Linode labels have the following constraints:

              * Must start with an alpha character.
              * May only consist of alphanumeric characters, dashes (`-`), underscores (`_`) or periods (`.`).
              * Cannot have two dashes (`--`), underscores (`__`) or periods (`..`) in a row.
          example: linode123
          minLength: 3
          maxLength: 32
          pattern: '^[a-zA-Z]((?!--|__|..)[a-zA-Z0-9-_.])+$'
        group:
          deprecated: true
          type: string
          x-linode-filterable: true
          description: >
            A deprecated property denoting a group label for this Linode.
          example: "Linode-Group"
        type:
          $ref: '#/components/schemas/LinodeType/properties/id'
        region:
          $ref: '#/components/schemas/Region/properties/id'
    LinodeConfig:
      type: object
      required:
      - label
      - devices
      properties:
        id:
          type: integer
          description: The ID of this Config.
          example: 23456
          readOnly: true
          x-linode-cli-display: 1
        kernel:
          type: string
          description: A Kernel ID to boot a Linode with. Defaults to "linode/latest-64bit".
          example: linode/latest-64bit
          x-linode-cli-display: 3
        comments:
          type: string
          nullable: true
          description: Optional field for arbitrary User comments on this Config.
          example: This is my main Config
        memory_limit:
          type: integer
          description: >
            Defaults to the total RAM of the Linode.
          example: 2048
        run_level:
          type: string
          description: >
            Defines the state of your Linode after booting. Defaults to `default`.
          enum:
          - default
          - single
          - binbash
          example: default
        virt_mode:
          type: string
          description: >
            Controls the virtualization mode. Defaults to `paravirt`.

            * `paravirt` is suitable for most cases. Linodes running in paravirt mode
              share some qualities with the host, ultimately making it run faster since
              there is less transition between it and the host.
            * `full_virt` affords more customization, but is slower because 100% of the VM
              is virtualized.
          enum:
          - paravirt
          - fullvirt
          example: paravirt
        helpers:
          type: object
          description: Helpers enabled when booting to this Linode Config.
          properties:
            updatedb_disabled:
              type: boolean
              description: Disables updatedb cron job to avoid disk thrashing.
              example: true
            distro:
              type: boolean
              description: Helps maintain correct inittab/upstart console device.
              example: true
            modules_dep:
              type: boolean
              description: Creates a modules dependency file for the Kernel you run.
              example: true
            network:
              type: boolean
              description: Automatically configures static networking.
              example: true
            devtmpfs_automount:
              type: boolean
              description: >
                Populates the /dev directory early during boot without udev.  Defaults to false.
              example: false
        label:
          x-linode-filterable: true
          type: string
          description: >
            The Config's label is for display purposes only.
          example: My Config
          minLength: 1
          maxLength: 48
          x-linode-cli-display: 2
        devices:
          $ref: '#/components/schemas/Devices'
        root_device:
          type: string
          description: >
            The root device to boot. The corresponding disk must be attached.
          example: /dev/sda
    LinodeRequest:
      type: object
      description: Common properties for creating and rebuilding Linodes.
      properties:
        image:
          $ref: '#/components/schemas/DiskRequest/properties/image'
        root_pass:
          $ref: '#/components/schemas/DiskRequest/properties/root_pass'
        authorized_keys:
          $ref: '#/components/schemas/DiskRequest/properties/authorized_keys'
        authorized_users:
          $ref: '#/components/schemas/DiskRequest/properties/authorized_users'
        stackscript_id:
          $ref: '#/components/schemas/DiskRequest/properties/stackscript_id'
        stackscript_data:
          $ref: '#/components/schemas/DiskRequest/properties/stackscript_data'
        booted:
          type: boolean
          writeOnly: true
          description: >
            This field defaults to `true` if the Linode is created with an Image or from a
            Backup.

            If it is deployed from an Image or a Backup and you wish it to remain `offline`
            after deployment, set this to `false`.
    LinodeStats:
      type: object
      description: >
        CPU, IO, IPv4, and IPv6 statistics. Graph data, if available,
        is in "[timestamp, reading]" array format. Timestamp is a UNIX timestamp
        in EST.
      readOnly: true
      properties:
        cpu:
          type: array
          description: >
            Percentage of CPU used.
          items:
            type: array
            items:
              type: number
              example:
              - 1521483600000
              - 0.42
        io:
          type: object
          description: Input/Output statistics.
          properties:
            io:
              type: array
              description: Block/s written.
              items:
                type: array
                items:
                  type: number
                  example:
                  - 1521484800000
                  - 0.19
            swap:
              type: array
              description: Block/s written.
              items:
                type: array
                items:
                  type: number
                  example:
                  - 1521484800000
                  - 0
        netv4:
          type: object
          description: IPv4 statistics.
          properties:
            in:
              type: array
              description: Input stats for IPv4, measured in bits/s (bits/second).
              items:
                type: array
                items:
                  type: number
                  example:
                  - 1521484800000
                  - 2004.36
            out:
              type: array
              description: Output stats for IPv4, measured in bits/s (bits/second).
              items:
                type: array
                items:
                  type: number
                  example:
                  - 1521484800000
                  - 3928.91
            private_in:
              type: array
              description: Private IPv4 input statistics, measured in bits/s (bits/second).
              items:
                type: array
                items:
                  type: number
                  example:
                  - 1521484800000
                  - 0
            private_out:
              type: array
              description: Private IPv4 output statistics, measured in bits/s (bits/second).
              items:
                type: array
                items:
                  type: number
                  example:
                  - 1521484800000
                  - 5.6
        netv6:
          type: object
          description: IPv6 statistics.
          properties:
            in:
              type: array
              description: Input stats for IPv6, measured in bits/s (bits/second).
              items:
                type: array
                items:
                  type: number
                  example:
                  - 1521484800000
                  - 0
            out:
              type: array
              description: Output stats for IPv6, measured in bits/s (bits/second).
              items:
                type: array
                items:
                  type: number
                  example:
                  - 1521484800000
                  - 0
            private_in:
              type: array
              description: Private IPv6 input statistics, measured in bits/s (bits/second).
              items:
                type: array
                items:
                  type: number
                  example:
                  - 1521484800000
                  - 195.18
            private_out:
              type: array
              description: Private IPv6 output statistics, measured in bits/s (bits/second).
              items:
                type: array
                items:
                  type: number
                  example:
                  - 1521484800000
                  - 5.6
        title:
          type: string
          description: The title for this data set.
          example: linode.com - my-linode (linode123456) - day (5 min avg)
    LinodeType:
      type: object
      description: >
        Returns collection of Linode types, including pricing and specifications
        for each type. These are used when
        [creating](#operation/createLinodeInstance)
        or [resizing](#operation/resizeLinodeInstance)
        Linodes.
      properties:
        id:
          readOnly: true
          type: string
          description: The ID representing the Linode Type.
          example: g6-standard-2
          x-linode-cli-display: 1
        label:
          x-linode-filterable: true
          type: string
          readOnly: true
          description: >
            The Linode Type's label is for display purposes only.
          example: Linode 4GB
          x-linode-cli-display: 2
        disk:
          x-linode-filterable: true
          type: integer
          readOnly: true
          description: >
            The Disk size, in MB, of the Linode Type.
          example: 81920
          x-linode-cli-display: 4
        class:
          x-linode-filterable: true
          type: string
          readOnly: true
          description: >
            The class of the Linode Type. We currently offer four classes of Linodes:

              * nanode - Our entry-level Linode Type.
              * standard - Our flagship Linode Type.
              * dedicated - Our Dedicated CPU Linode Type.
              * highmem - A Linode Type featuring high memory availability.
          enum:
          - nanode
          - standard
          - dedicated
          - highmem
          example: standard
          x-linode-cli-display: 3
        price:
          type: object
          readOnly: true
          description: >
            Cost in US dollars, broken down into hourly and monthly charges.
          properties:
            hourly:
              type: integer
              description: Cost (in US dollars) per hour.
              example: 0.03
              x-linode-cli-display: 9
            monthly:
              type: integer
              description: Cost (in US dollars) per month.
              example: 20
              x-linode-cli-display: 10
        addons:
          type: object
          readOnly: true
          description: >
            A list of optional add-on services for Linodes and their associated
            costs.
          properties:
            backups:
              type: object
              readOnly: true
              description: >
                Information about the optional Backup service offered for Linodes.
              properties:
                price:
                  type: object
                  description: Cost of enabling Backups for this Linode Type.
                  properties:
                    hourly:
                      type: integer
                      description: >
                        The cost (in US dollars) per hour to add Backups service.
                      example: 0.008
                    monthly:
                      type: integer
                      description: >
                        The cost (in US dollars) per month to add Backups service.
                      example: 5
        network_out:
          x-linode-filterable: true
          type: integer
          readOnly: true
          description: >
            The Mbits outbound bandwidth allocation.
          example: 1000
          x-linode-cli-display: 7
        memory:
          x-linode-filterable: true
          type: integer
          readOnly: true
          description: >
            Amount of RAM included in this Linode Type.
          example: 4096
          x-linode-cli-display: 5
        successor:
          type: string
          readOnly: true
          nullable: true
          description: >
            The Linode Type that a [mutate](#operation/mutateLinodeInstance)
            will upgrade to for a Linode of this type.  If "null", a Linode of this type
            may not mutate.
          example: null
        transfer:
          x-linode-filterable: true
          type: integer
          readOnly: true
          description: >
            The monthly outbound transfer amount, in MB.
          example: 4000
          x-linode-cli-display: 8
        vcpus:
          x-linode-filterable: true
          type: integer
          readOnly: true
          description: >
            The number of VCPU cores this Linode Type offers.
          example: 2
          x-linode-cli-display: 6
    LongviewClient:
      type: object
      description: >
        A LongviewClient is a single monitor set up to track statistics about
        one of your servers.
      properties:
        id:
          type: integer
          description: >
            This Client's unique ID.
          example: 789
          readOnly: true
          x-linode-cli-display: 1
        label:
          x-linode-filterable: true
          type: string
          minLength: 3
          maxLength: 32
          pattern: '[a-zA-Z0-9-_]{3,32}'
          description: >
            This Client's unique label. This is for display purposes only.
          example: client789
          x-linode-cli-display: 2
        api_key:
          type: string
          description: >
            The API key for this Client, used when configuring the Longview
            Client application on your Linode.
          example: BD1B4B54-D752-A76D-5A9BD8A17F39DB61
          readOnly: true
        install_code:
          type: string
          description: >
            The install code for this Client, used when configuring the Longview
            Client application on your Linode.
          example: BD1B5605-BF5E-D385-BA07AD518BE7F321
          readOnly: true
          x-linode-cli-display: 4
        apps:
          type: object
          description: >
            The apps this Client is monitoring on your Linode. This is configured
            when you install the Longview Client application, and is present here
            for information purposes only.
          readOnly: true
          properties:
            apache:
              type: boolean
              description: >
                If True, the Apache Longview Client module is monitoring Apache on
                your server.
              example: true
              readOnly: true
            nginx:
              type: boolean
              description: >
                If True, the Nginx Longview Client module is monitoring Nginx on
                your server.
              example: false
              readOnly: true
            mysql:
              type: boolean
              description: >
                If True, the MySQL Longview Client modules is monitoring MySQL on
                your server.
              example: true
              readOnly: true
        created:
          type: string
          format: date-time
          description: >
            When this Longview Client was created.
          example: 2018-01-01T00:01:01
          readOnly: true
          x-linode-cli-display: 3
        updated:
          type: string
          format: date-time
          description: >
            When this Longview Client was last updated.
          example: 2018-01-01T00:01:01
          readOnly: true
    LongviewSubscription:
      type: object
      description: >
        A Longview Subscriptions represents a tier of Longview service you
        can subscribe to.
      properties:
        id:
          type: string
          description: >
            The unique ID of this Subscription tier.
          example: longview-10
          readOnly: true
          x-linode-cli-display: 1
        price:
          type: object
          description: >
            Pricing information about this Subscription tier.
          readOnly: true
          x-linode-cli-display: 4
          properties:
            hourly:
              type: number
              description: >
                The hourly price, in US dollars, for this Subscription tier.
              example: 0.06
              readOnly: true
            monthly:
              type: number
              description: >
                The maximum monthly price in US Dollars for this Subscription tier.
                You will never be charged more than this amount per
                month for this subscription.
              example: 40
              readOnly: true
        label:
          type: string
          description: >
            A display name for this Subscription tier.
          example: Longivew Pro 10 pack
          readOnly: true
          x-linode-cli-display: 2
        clients_included:
          type: integer
          description: >
            The number of Longview Clients that may be created with this Subscription tier.
          example: 10
          readOnly: true
          x-linode-cli-display: 3
    ManagedContact:
      type: object
      description: >
        Information about someone Linode's special forces may contact
        in case an issue is detected with a manager service.
      properties:
        id:
          type: integer
          description: >
            This Contact's unique ID.
          example: 567
          readOnly: true
          x-linode-cli-display: 1
        name:
          type: string
          minLength: 2
          maxLength: 64
          pattern: '[a-zA-Z0-9-_ ]{2,64}'
          description: >
            The name of this Contact.
          example: John Doe
          x-linode-cli-display: 2
        email:
          type: string
          format: email
          description: >
            The address to email this Contact to alert them of issues.
          example: john.doe@example.org
          x-linode-cli-display: 3
        phone:
          type: object
          description: >
            Information about how to reach this Contact by phone.
          x-linode-cli-display: 4
          properties:
            primary:
              type: string
              nullable: true
              format: phone
              description: >
                This Contact's primary phone number.
              example: 123-456-7890
            secondary:
              type: string
              nullable: true
              format: phone
              description: >
                This Contact's secondary phone number.
              example: null
        group:
          x-linode-filterable: true
          deprecated: true
          type: string
          minLength: 2
          maxLength: 50
          description: >
            A grouping for this Contact. This is for display purposes only.
          example: on-call
          x-linode-cli-display: 5
        updated:
          type: string
          format: date-time
          description: >
            When this Contact was last updated.
          example: '2018-01-01T00:01:01'
          readOnly: true
    ManagedCredential:
      type: object
      description: >
        A securely-stored Credential that allows Linode's special forces
        to access a Managed server to respond to Issues.
      properties:
        id:
          type: integer
          description: >
            This Credential's unique ID.
          example: 9991
          readOnly: true
          x-linode-cli-display: 1
        label:
          type: string
          minLength: 2
          maxLength: 75
          pattern: '[a-zA-Z0-9-_ \.]{2,75}'
          description: >
            The unique label for this Credential. This is for display purposes
            only.
          example: prod-password-1
          x-linode-cli-display: 2
    ManagedIssue:
      type: object
      description: >
        An Issue that was detected with a service Linode is managing.
      properties:
        id:
          type: integer
          description: >
            This Issue's unique ID.
          example: 823
          readOnly: true
          x-linode-cli-display: 1
        created:
          type: string
          format: date-time
          description: >
            When this Issue was created. Issues are created in response to issues
            detected with Managed Services, so this is also when the Issue was
            detected.
          example: '2018-01-01T00:01:01'
          readOnly: true
          x-linode-cli-display: 2
        services:
          type: array
          items:
            type: integer
            example: 654
          description: >
            An array of Managed Service IDs that were affected by this Issue.
          readOnly: true
          x-linode-cli-display: 3
        entity:
          type: object
          description: >
            The ticket this Managed Issue opened.
          readOnly: true
          x-linode-cli-display: 4
          properties:
            id:
              type: integer
              description: >
                This ticket's ID
              example: 98765
              readOnly: true
            type:
              type: string
              enum:
              - ticket
              description: >
                The type of entity this is. In this case, it is always a Ticket.
              example: ticket
              readOnly: true
            label:
              type: string
              description: >
                The summary for this Ticket.
              example: Managed Issue opened!
              readOnly: true
            url:
              type: string
              format: url
              description: >
                The relative URL where you can access this Ticket.
              example: /support/tickets/98765
              readOnly: true
    ManagedLinodeSettings:
      type: object
      description: >
        Settings for a specific Linode related to Managed Services. There is
        one ManagedLinodeSettings object for each Linode on your Account.
      properties:
        id:
          type: integer
          description: >
            The ID of the Linode these Settings are for.
          example: 123
          readOnly: true
          x-linode-cli-display: 1
        label:
          type: string
          description: >
            The label of the Linode these Settings are for.
          example: linode123
          readOnly: true
          x-linode-cli-display: 2
        group:
          deprecated: true
          type: string
          description: >
            The group of the Linode these Settings are for. This is for display
            purposes only.
          example: linodes
          readOnly: true
          x-linode-cli-display: 3
        ssh:
          type: object
          description: >
            The SSH settings for this Linode.
          x-linode-cli-display: 4
          properties:
            access:
              type: boolean
              description: >
                If true, Linode special forces may access this Linode over
                ssh to respond to Issues.
              example: true
            user:
              type: string
              minLength: 0
              maxLength: 32
              description: >
                The user Linode's special forces should use when accessing this
                Linode to respond to an issue.
              example: linode
            ip:
              type: string
              format: ip
              description: >
                The IP Linode special forces should use to access this Linode
                when responding to an Issue.
              example: 12.34.56.78
            port:
              type: integer
              minimum: 1
              maximum: 65535
              description: >
                The port Linode special forces should use to access this Linode
                over ssh to respond to an Issue.
              example: 22
    ManagedService:
      type: object
      description: >
        A service that Linode is monitoring as part of your Managed services.
        If issues are detected with this service, a ManagedIssue will be opened
        and, optionally, Linode special forces will attempt to resolve the Issue.
      properties:
        id:
          type: integer
          description: >
            This Service's unique ID.
          example: 9944
          readOnly: true
          x-linode-cli-display: 1
        status:
          type: string
          enum:
          - disabled
          - pending
          - ok
          - problem
          description: >
            The current status of this Service.
          example: ok
          readOnly: true
          x-linode-cli-display: 2
          x-linode-cli-color:
            ok: green
            disabled: red
            default_: yellow
        service_type:
          type: string
          enum:
          - url
          - tcp
          description: >
            How this Service is monitored.
          example: url
          x-linode-cli-display: 3
        label:
          type: string
          minLength: 3
          maxLength: 64
          pattern: '[a-zA-Z0-9-_ \.]{3,64}'
          description: >
            The label for this Service. This is for display purposes only.
          example: prod-1
          x-linode-cli-display: 4
        address:
          type: string
          format: url
          minLength: 3
          description: >
            The URL at which this Service is monitored.
          example: https://example.org
          x-linode-cli-display: 5
        timeout:
          type: integer
          minimum: 1
          maximum: 255
          description: >
            How long to wait, in seconds, for a response before considering the
            Service to be down.
          example: 30
        body:
          type: string
          nullable: true
          minLength: 0
          maxLength: 100
          description: >
            What to expect to find in the response body for the Service to be
            considered up.
          example: it worked
        consultation_group:
          deprecated: true
          type: string
          minLength: 0
          maxLength: 50
          description: >
            The group of ManagedContacts who should be notified or consulted
            with when an Issue is detected.
          example: on-call
          x-linode-cli-display: 6
        notes:
          type: string
          nullable: true
          description: >
            Any information relevant to the Service that Linode special forces
            should know when attempting to resolve Issues.
          example: The service name is my-cool-application
        region:
          type: string
          description: >
            The Region in which this Service is located. This is required if
            address is a private IP, and may not be set otherwise.
          example: null
        credentials:
          type: array
          items:
            type: integer
            example: 9991
          description: >
            An array of ManagedCredential IDs that should be used when attempting to
            resolve issues with this Service.
        created:
          type: string
          format: date-time
          description: When this Managed Service was created.
          example: '2018-01-01T00:01:01'
          readOnly: true
        updated:
          type: string
          format: date-time
          description: When this Managed Service was last updated.
          example: '2018-03-01T00:01:01'
          readOnly: true
    NodeBalancer:
      type: object
      description: >
        Linode's load balancing solution.  Can handle multiple ports, SSL termination,
        and any number of backends.  NodeBalancer ports are configured with
        NodeBalancer Configs, and each config is given one or more NodeBalancer Node that
        accepts traffic.  The traffic should be routed to the  NodeBalancer's ip address,
        the NodeBalancer will handle routing individual requests to backends.
      properties:
        id:
          type: integer
          description: >
            This NodeBalancer's unique ID.
          example: 12345
          readOnly: true
          x-linode-cli-display: 1
        label:
          x-linode-filterable: true
          type: string
          minLength: 3
          maxLength: 32
          pattern: '[a-zA-Z0-9-_]{3,32}'
          description: >
            This NodeBalancer's label. These must be unique on your Account.
          example: balancer12345
          x-linode-cli-display: 2
        region:
          x-linode-filterable: true
          type: string
          description: >
            The Region where this NodeBalancer is located. NodeBalancers only
            support backends in the same Region.
          example: us-east
          readOnly: true
          x-linode-cli-display: 3
        hostname:
          type: string
          description: >
            This NodeBalancer's hostname, ending with _.nodebalancer.linode.com_
          example: nb-207-192-68-16.newark.nodebalancer.linode.com
          readOnly: true
          x-linode-cli-display: 4
        ipv4:
          type: string
          format: ip
          description: >
            This NodeBalancer's public IPv4 address.
          example: 12.34.56.78
          readOnly: true
          x-linode-cli-display: 5
        ipv6:
          type: string
          nullable: true
          format: ip
          description: >
            This NodeBalancer's public IPv6 address.
          example: null
          readOnly: true
          x-linode-cli-display: 6
        created:
          type: string
          format: date-time
          description: >
            When this NodeBalancer was created.
          example: 2018-01-01T00:01:01
          readOnly: true
        updated:
          type: string
          format: date-time
          description: >
            When this NodeBalancer was last updated.
          example: 2018-03-01T00:01:01
          readOnly: true
        client_conn_throttle:
          type: integer
          minimum: 0
          maximum: 20
          description: >
            Throttle connections per second.  Set to 0 (zero) to disable throttling.
          example: 0
          x-linode-cli-display: 6
        transfer:
          type: object
          description: >
            Information about the amount of transfer this NodeBalancer has had
            so far this month.
          properties:
            total:
              type: number
              nullable: true
              description: >
                The total transfer, in MB, used by this NodeBalancer this month.
              example: 32.46078109741211
              readOnly: true
            out:
              type: number
              nullable: true
              description: >
                The total inbound transfer, in MB, used for this NodeBalancer
                this month.
              example: 3.5487728118896484
              readOnly: true
            in:
              type: number
              nullable: true
              description: >
                The total outbound transfer, in MB, used for this NodeBalancer
                this month.
              example: 28.91200828552246
              readOnly: true
        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
    NodeBalancerConfig:
      type: object
      description: >
        A NodeBalancer config represents the configuration of this NodeBalancer
        on a single port.  For example, a NodeBalancer Config on port 80 would
        typically represent how this NodeBalancer response to HTTP requests.


        NodeBalancer configs have a list of backends, called "nodes," that they
        forward requests between based on their configuration.
      properties:
        id:
          type: integer
          description: This config's unique ID
          example: 4567
          readOnly: true
          x-linode-cli-display: 1
        port:
          type: integer
          minimum: 1
          maximum: 65535
          description: >
            The port this Config is for. These values must be unique across configs
            on a single NodeBalancer (you can't have two configs for port 80, for
            example).  While some ports imply some protocols, no enforcement is done
            and you may configure your NodeBalancer however is useful to you. For
            example, while port 443 is generally used for HTTPS, you do not need
            SSL configured to have a NodeBalancer listening on port 443.
          example: 80
          x-linode-cli-display: 2
        protocol:
          type: string
          enum:
          - http
          - https
          - tcp
          description: >
            The protocol this port is configured to serve.

            * If this is set to `https` you must include an `ssl_cert` and an `ssl_key`.
          example: http
          x-linode-cli-display: 3
        algorithm:
          type: string
          enum:
          - roundrobin
          - leastconn
          - source
          description: >
            What algorithm this NodeBalancer should use for routing traffic to backends.
          example: roundrobin
          x-linode-cli-display: 4
        stickiness:
          type: string
          enum:
          - none
          - table
          - http_cookie
          description: >
            Controls how session stickiness is handled on this port.

            * If set to `none` connections will always be assigned a backend based on the algorithm configured.

            * If set to `table` sessions from the same remote address will be routed to the same
              backend.

            * For HTTP or HTTPS clients, `http_cookie` allows sessions to be
              routed to the same backend based on a cookie set by the NodeBalancer.
          example: http_cookie
          x-linode-cli-display: 5
        check:
          type: string
          enum:
          - none
          - connection
          - http
          - http_body
          description: >
            The type of check to perform against backends to ensure they are serving
            requests. This is used to determine if backends are up or down.

            * If `none` no check is performed.

            * `connection` requires only a connection to the backend to succeed.

            * `http` and `http_body` rely on the backend serving HTTP, and that
              the response returned matches what is expected.
          example: http_body
        check_interval:
          type: integer
          description: >
            How often, in seconds, to check that backends are up and serving requests.
          example: 90
        check_timeout:
          type: integer
          minimum: 1
          maximum: 30
          description: >
            How long, in seconds, to wait for a check attempt before considering it failed.
          example: 10
        check_attempts:
          type: integer
          minimum: 1
          maximum: 30
          description: >
            How many times to attempt a check before considering a backend to be down.
          example: 3
        check_path:
          type: string
          description: >
            The URL path to check on each backend. If the backend does not respond
            to this request it is considered to be down.
          example: /test
        check_body:
          type: string
          description: >
            This value must be present in the response body of the check in order for
            it to pass. If this value is not present in the response body of a check
            request, the backend is considered to be down.
          example: it works
        check_passive:
          type: boolean
          description: >
            If true, any response from this backend with a `5xx` status code will be
            enough for it to be considered unhealthy and taken out of rotation.
          example: true
          x-linode-cli-display: 6
        cipher_suite:
          type: string
          enum:
          - recommended
          - legacy
          description: >
            What ciphers to use for SSL connections served by this NodeBalancer.


            * `legacy` is considered insecure and should only be used if necessary.
          example: recommended
          x-linode-cli-display: 7
          x-linode-cli-color:
            legacy: red
            default_: white
        nodebalancer_id:
          type: integer
          description: >
            The ID for the NodeBalancer this config belongs to.
          example: 12345
          readOnly: true
        ssl_commonname:
          type: string
          description: >
            The common name for the SSL certification this port is serving
            if this port is not configured to use SSL.
          example: null
          readOnly: true
          x-linode-cli-display: 8
        ssl_fingerprint:
          type: string
          description: >
            The fingerprint for the SSL certification this port is serving
            if this port is not configured to use SSL.
          example: null
          readOnly: true
          x-linode-cli-display: 9
        ssl_cert:
          type: string
          format: ssl-cert
          nullable: true
          description: >
            The certificate this port is serving. This is not returned. If set,
            this field will come back as "&lt;REDACTED&gt;".

            Please use the `ssl_commonname` and `ssl_fingerprint` to identify the certificate.
          example: null
        ssl_key:
          type: string
          format: ssl-key
          nullable: true
          description: >
            The private key corresponding to this port's certificate.  This is not
            returned. If set, this field will come back as "&lt;REDACTED&gt;".

            Please use the `ssl_commonname` and `ssl_fingerprint` to identify the certificate.
          example: null
        nodes_status:
          type: object
          description: >
            A structure containing information about the health of the backends
            for this port.  This information is updated periodically as checks
            are performed against backends.
          readOnly: true
          x-linode-cli-display: 10
          properties:
            up:
              type: integer
              description: >
                The number of backends considered to be "UP" and healthy, and that
                are serving requests.
              example: 4
              readOnly: true
            down:
              type: integer
              description: >
                The number of backends considered to be "DOWN" and unhealthy.  These
                are not in rotation, and not serving requests.
              example: 0
              readOnly: true
    NodeBalancerNode:
      type: object
      description: >
        A NodeBalancerNode represents a single backend serving requests for a single
        port of a NodeBalancer.  Nodes are specific to NodeBalancer Configs, and serve
        traffic over their private IP.  If the same Linode is serving traffic for more
        than one port on the same NodeBalancer, one NodeBalancer Node is required for
        each config (port) it should serve requests on.  For example, if you have
        four backends, and each should response to both HTTP and HTTPS requests, you
        will need two NodeBalancerConfigs (port 80 and port 443) and four backends
        each - one for each of the Linodes serving requests for that port.
      properties:
        id:
          type: integer
          description: This node's unique ID.
          example: 54321
          readOnly: true
          x-linode-cli-display: 1
        address:
          type: string
          format: ip
          description: >
            The private IP Address where this backend can be reached. This _must_
            be a private IP address.
          example: 192.168.210.120:80
          x-linode-cli-display: 3
        label:
          type: string
          minLength: 3
          maxLength: 32
          description: >
            The label for this node.  This is for display purposes only.
          example: node54321
          x-linode-cli-display: 2
        status:
          type: string
          enum:
          - unknown
          - UP
          - DOWN
          description: >
            The current status of this node, based on the configured checks
            of its NodeBalancer Config.
          example: UP
          readOnly: true
          x-linode-cli-display: 4
          x-linode-cli-color:
            UP: green
            unknown: yellow
            DOWN: red
            default_: white
        weight:
          type: integer
          minimum: 1
          maximum: 255
          description: >
            Used when picking a backend to serve a request and is not pinned to
            a single backend yet.  Nodes with a higher weight will receive more
            traffic.
          example: 50
          x-linode-cli-display: 5
        mode:
          type: string
          enum:
          - accept
          - reject
          - drain
          - backup
          description: >
            The mode this NodeBalancer should use when sending traffic to this backend.

            * If set to `accept` this backend is accepting traffic.

            * If set to `reject` this backend will not receive traffic.

            * If set to `drain` this backend will not receive _new_ traffic, but connections already
              pinned to it will continue to be routed to it.

            * If set to `backup`, this backend will only receive traffic if all `accept` nodes
              are down.
          example: accept
          x-linode-cli-display: 6
        config_id:
          type: integer
          description: >
            The NodeBalancer Config ID that this Node belongs to.
          example: 4567
          readOnly: true
        nodebalancer_id:
          type: integer
          description: >
            The NodeBalancer ID that this Node belongs to.
          example: 12345
          readOnly: true
    NodeBalancerStats:
      type: object
      description: >
        Stats for this NodeBalancer.
      properties:
        data:
          type: object
          description: >
            The data returned about this NodeBalancers.
          properties:
            connections:
              type: array
              description: >
                An array of key/value pairs representing unix timestamp and
                reading for connections to this NodeBalancer.
              items:
                type: number
                example:
                - 1526391300000
                - 0
            traffic:
              type: object
              description: >
                Traffic statistics for this NodeBalancer.
              properties:
                in:
                  type: array
                  description: >
                    An array of key/value pairs representing unix timestamp and
                    reading for inbound traffic.
                  items:
                    type: number
                    example:
                    - 1526391300000
                    - 631.21
                out:
                  type: array
                  description: >
                    An array of key/value pairs representing unix timestamp and
                    reading for outbound traffic.
                  items:
                    type: number
                    example:
                    - 1526391300000
                    - 103.44
        title:
          type: string
          description: >
            The title for the statistics generated in this response.
          example: linode.com - balancer12345 (12345) - day (5 min avg)
    Notification:
      type: object
      description: >
        An important, often time-sensitive item related to your Account.
      properties:
        entity:
          type: object
          readOnly: true
          description: Detailed information about the Notification.
          properties:
            id:
              type: integer
              description: >
                The unique ID of the Notification's entity, based on the entity
                type.
              example: 3456
            label:
              type: string
              description: >
                The current label for this Notification's entity.
              example: Linode not booting.
            type:
              type: string
              description: The type of entity this is related to.
              example: ticket
            url:
              type: string
              description: >
                The URL where you can access the object this Notification is for.
                If a relative URL, it is relative to the domain you retrieved the
                Notification from.
              example: /support/tickets/3456
        label:
          type: string
          description: >
            A short description of this Notification.
          example: You have an important ticket open!
          readOnly: true
          x-linode-cli-display: 1
        message:
          type: string
          readOnly: true
          description: A human-readable description of the Notification.
          example: You have an important ticket open!
          x-linode-cli-display: 2
        body:
          type: string
          readOnly: true
          description: >
            A full description of this Notification, in markdown format.  Not all
            Notifications include bodies.
          nullable: true
          example: null
        type:
          type: string
          enum:
          - migration_scheduled
          - migration_imminent
          - migration_pending
          - reboot_scheduled
          - outage
          - payment_due
          - ticket_important
          - ticket_abuse
          - notice
          - maintenance
          readOnly: true
          description: The type of Notification this is.
          example: ticket_important
        severity:
          type: string
          enum:
          - minor
          - major
          - critical
          description: >
            The severity of this Notification.  This field can be used to
            decide how prominently to display the Notification, what color
            to make the display text, etc.
          example: major
          readOnly: true
          x-linode-cli-display: 3
          x-linode-cli-color:
            critical: b
            minor: blue
            default_: white
        when:
          type: string
          readOnly: true
          format: date-time
          description: >
            If this Notification is of an Event that will happen at a fixed,
            future time, this is when the named action will be taken. For
            example, if a Linode is to be migrated in response to a
            Security Advisory, this field will contain the approximate time the
            Linode will be taken offline for migration.
          example: null
          x-linode-cli-display: 4
          x-linode-cli-color:
            None: black
            default_: white
        until:
          type: string
          format: date-time
          description: >
            If this Notification has a duration, this will be the ending time
            for the Event/action. For example, if there is scheduled
            maintenance for one of our systems, `until` would be set to the end
            of the maintenance window.
          example: null
          readOnly: true
          x-linode-cli-display: 5
          x-linode-cli-color:
            None: black
            default_: white
    OAuthClient:
      type: object
      description: >
        A third-party application registered to Linode that users may log into
        with their Linode account through our authentication server at
        <a target="_top" href="https://login.linode.com">https://login.linode.com</a>.  Using an OAuth Client, a third-party
        developer may be given access to some, or all, of a User's account for
        the purposes of their application.
      properties:
        id:
          type: string
          description: >
            The OAuth Client ID.  This is used to identify the client, and is a
            publicly-known value (it is not a secret).
          example: 2737bf16b39ab5d7b4a1
          readOnly: true
          x-linode-cli-display: 1
        redirect_uri:
          type: string
          format: url
          description: >
            The location a successful log in from <a target="_top" href="https://login.linode.com">https://login.linode.com</a> should be
            redirected to for this client.  The receiver of this redirect should be
            ready to accept an OAuth exchange code and finish the OAuth exchange.
          example: https://example.org/oauth/callback
          x-linode-cli-display: 5
        label:
          x-linode-filterable: true
          type: string
          minLength: 1
          maxLength: 512
          description: >
            The name of this application.  This will be presented to users when they
            are asked to grant it access to their Account.
          example: Test_Client_1
          x-linode-cli-display: 2
        status:
          type: string
          enum:
          - active
          - disabled
          - suspended
          description: >
            The status of this application.  `active` by default.
          example: active
          readOnly: true
          x-linode-cli-display: 3
          x-linode-cli-color:
            suspended: red
            default_: white
        secret:
          type: string
          description: >
            The OAuth Client secret, used in the OAuth exchange.  This is returned
            as `<REDACTED>` except when an OAuth Client is created or its secret
            is reset.  This is a secret, and should not be shared or disclosed
            publicly.
          example: <REDACTED>
          readOnly: true
        thumbnail_url:
          type: string
          nullable: true
          format: url
          description: >
            The URL where this client's thumbnail may be viewed, or `null` if this client
            does not have a thumbnail set.
          example: https://api.linode.com/v4/account/clients/2737bf16b39ab5d7b4a1/thumbnail
          readOnly: true
        public:
          x-linode-filterable: true
          type: boolean
          description: >
            If this is a public or private OAuth Client.  Public clients have a slightly
            different authentication workflow than private clients.  See the
            <a target="_top" href="https://oauth.net/2/">OAuth spec</a> for more details.
          example: false
          readOnly: true
          x-linode-cli-display: 4
    PaginationEnvelope:
      type: object
      description: >
        An envelope for paginated response. When accessing a collection through a GET endpoint, the
        results are wrapped in this envelope which includes metadata about those results.
      required:
      - pages
      - page
      - results
      - data
      properties:
        data:
          type: array
          readOnly: true
          items:
            type: object
        pages:
          type: integer
          readOnly: true
          example: 1
        page:
          type: integer
          readOnly: true
          example: 1
        results:
          type: integer
          readOnly: true
          example: 1
    Payment:
      type: object
      description: Payment object response.
      properties:
        id:
          type: integer
          readOnly: true
          description: The unique ID of the Payment.
          example: 123
          x-linode-cli-display: 1
        date:
          type: string
          readOnly: true
          format: date-time
          description: When the Payment was made.
          example: '2018-01-15T00:01:01'
          x-linode-cli-display: 2
        usd:
          type: integer
          readOnly: true
          description: The amount, in US dollars, of the Payment.
          example: '120.50'
          x-linode-cli-display: 3
    PaymentRequest:
      type: object
      description: Payment object request.
      required:
      - usd
      properties:
        cvv:
          type: string
          description: >
            CVV (Card Verification Value) of the credit card to be used for
            the Payment.
          example: '123'
        usd:
          type: string
          description: >
            The amount in US Dollars of the Payment.
          example: '120.50'
    PayPal:
      type: object
      required:
      - cancel_url
      - redirect_url
      - usd
      description: >
        An object representing the staging of a Payment via PayPal.
      properties:
        cancel_url:
          type: string
          description: The URL to have PayPal redirect to when Payment is cancelled.
          example: https://example.org
        redirect_url:
          type: string
          description: The URL to have PayPal redirect to when Payment is approved.
          example: https://example.org
        usd:
          type: string
          description: The payment amount in USD. Minimum accepted value of $5 USD.
            Maximum accepted value of $500 USD or credit card payment limit; whichever value is highest. PayPal's
            maximum transaction limit is $10,000 USD.
          example: '120.50'
    PayPalExecute:
      type: object
      required:
      - payer_id
      - payment_id
      description: >
        An object representing an execution of Payment to PayPal to capture the
        funds and credit your Linode Account.
      properties:
        payer_id:
          type: string
          description: >
            The PayerID returned by PayPal during the transaction authorization
            process.
          example: ABCDEFGHIJKLM
        payment_id:
          type: string
          description: >
            The PaymentID returned from
            [POST /account/payments/paypal](#operation/createPayPalPayment) that has
            been approved with PayPal.
          example: PAY-1234567890ABCDEFGHIJKLMN
    PersonalAccessToken:
      type: object
      description: >
        A Personal Access Token is a token generated manually to access the API
        without going through an OAuth login.  Personal Access Tokens can have
        scopes just like OAuth tokens do, and are commonly used to give access
        to command-line tools like the Linode CLI, or when writing your own
        integrations.
      properties:
        id:
          type: integer
          description: >
            This token's unique ID, which can be used to revoke it.
          example: 123
          readOnly: true
          x-linode-cli-display: 1
        scopes:
          type: string
          format: oauth-scopes
          description: >
            The scopes this token was created with. These define what parts of
            the Account the token can be used to access. Many command-line tools,
            such as the <a target="_top" href="https://github.com/linode/linode-cli">Linode CLI</a>,
            require tokens with access to `*`. Tokens with more restrictive scopes
            are generally more secure.
          example: '*'
          readOnly: true
          x-linode-cli-display: 3
        created:
          type: string
          format: date-time
          description: >
            The date and time this token was created.
          x-linode-filterable: true
          example: 2018-01-01T00:01:01
          readOnly: true
          x-linode-cli-display: 4
        label:
          type: string
          minLength: 1
          maxLength: 100
          description: >
            This token's label.  This is for display purposes only, but can be used to
            more easily track what you're using each token for.
          x-linode-filterable: true
          example: linode-cli
          x-linode-cli-display: 2
        token:
          type: string
          description: >
            The token used to access the API.  When the token is created, the full token
            is returned here.  Otherwise, only the first 16 characters are returned.
          example: abcdefghijklmnop
          readOnly: true
          x-linode-cli-display: 5
        expiry:
          type: string
          format: date-time
          description: >
            When this token will expire.  Personal Access Tokens cannot be renewed, so
            after this time the token will be completely unusable and a new token will
            need to be generated.  Tokens may be created with "null" as their expiry
            and will never expire unless revoked.
          x-linode-cli-display: 6
          example: '2018-01-01T13:46:32'
          readOnly: true
    Profile:
      type: object
      description: >
        A Profile represents your User in our system. This is where you can change
        information about your User. This information is available to any OAuth Client
        regardless of requested scopes, and can be used to populate User information
        in third-party applications.
      properties:
        uid:
          type: integer
          description: >
            Your unique ID in our system. This value will never change, and can
            safely be used to identify your User.
          example: 1234
          readOnly: true
        username:
          type: string
          description: >
            Your username, used for logging in to our system.
          example: exampleUser
          readOnly: true
          x-linode-cli-display: 1
        email:
          type: string
          format: email
          description: >
            Your email address.  This address will be used for communication with Linode
            as necessary.
          example: example-user@gmail.com
          x-linode-cli-display: 2
        timezone:
          type: string
          description: >
            The timezone you prefer to see times in.  This is not used by the API, and is
            for the benefit of clients only.  All times the API returns are in UTC.
          example: US/Eastern
        email_notifications:
          type: boolean
          description: >
            If true, you will receive email notifications about account activity.  If false,
            you may still receive business-critical communications through email.
          example: true
        referrals:
          type: object
          description: >
            Information about your status in our referral program.
          readOnly: true
          properties:
            code:
              type: string
              description: >
                Your referral code.  If others use this when signing up for Linode, you will
                receive account credit.
              example: 871be32f49c1411b14f29f618aaf0c14637fb8d3
              readOnly: true
            url:
              type: string
              format: url
              description: >
                Your referral url, used to direct others to sign up for Linode with your referral
                code.
              example: https://www.linode.com/?r=871be32f49c1411b14f29f618aaf0c14637fb8d3
              readOnly: true
            total:
              type: integer
              description: >
                The number of users who have signed up with your referral code.
              example: 0
              readOnly: true
            completed:
              type: integer
              description: >
                The number of completed signups with your referral code.
              example: 0
              readOnly: true
            pending:
              type: integer
              description: >
                The number of pending signups with your referral code.  You will not receive
                credit for these signups until they are completed.
              example: 0
              readOnly: true
            credit:
              type: integer
              description: >
                The amount of account credit in US Dollars issued to you through
                the referral program.
              example: 0
              readOnly: true
        ip_whitelist_enabled:
          deprecated: true
          type: boolean
          description: >
            If true, logins for your User will only be allowed from whitelisted IPs.
            This setting is currently deprecated, and cannot be enabled.


            If you disable this setting, you will not be able to re-enable it.
          example: false
        lish_auth_method:
          type: string
          enum:
          - password_keys
          - keys_only
          - disabled
          description: >
            What methods of authentication are allowed when connecting via
            Lish.  "keys_only" is the most secure if you intend to use Lish,
            and "disabled" is recommended if you do not intend to use Lish at
            all.
          example: keys_only
        authorized_keys:
          type: array
          nullable: true
          items:
            type: string
            format: ssh-key
          description: >
            The list of SSH Keys authorized to use Lish for your User. This value is ignored if
            `lish_auth_method` is "disabled."
          example: null
        two_factor_auth:
          type: boolean
          description: >
            If true, logins from untrusted computers will require Two Factor
            Authentication.  See [/profile/tfa-enable](#operation/tfaEnable) to
            enable Two Factor Authentication.
          example: true
          x-linode-cli-display: 4
        restricted:
          type: boolean
          description: >
            If true, your User has restrictions on what can be accessed on your
            Account. To get details on what entities/actions you can
            access/perform, see [/profile/grants](#operation/getProfileGrants).
          example: false
          x-linode-cli-display: 3
    Region:
      type: object
      description: An area where Linode services are available.
      properties:
        id:
          readOnly: true
          type: string
          description: The unique ID of this Region.
          example: us-east
          x-linode-cli-display: 1
        country:
          type: string
          description: The country where this Region resides.
          example: us
          readOnly: true
          x-linode-cli-display: 2
    RescueDevices:
      type: object
      properties:
        sda:
          $ref: '#/components/schemas/Device'
        sdb:
          $ref: '#/components/schemas/Device'
        sdc:
          $ref: '#/components/schemas/Device'
        sdd:
          $ref: '#/components/schemas/Device'
        sde:
          $ref: '#/components/schemas/Device'
        sdf:
          $ref: '#/components/schemas/Device'
        sdg:
          $ref: '#/components/schemas/Device'
    StackScript:
      type: object
      description: >
        A StackScript enables you to quickly deploy a
        fully-configured application in an automated manner.
      properties:
        id:
          type: integer
          description: The unique ID of this StackScript.
          example: 10079
          readOnly: true
          x-linode-cli-display: 1
        username:
          type: string
          description: >
            The User who created the StackScript.
          example: myuser
          readOnly: true
          x-linode-cli-display: 2
        user_gravatar_id:
          type: string
          description: >
            The Gravatar ID for the User who created the StackScript.
          example: a445b305abda30ebc766bc7fda037c37
          readOnly: true
        label:
          x-linode-filterable: true
          type: string
          description: >
            The StackScript's label is for display purposes only.
          example: a-stackscript
          minLength: 3
          maxLength: 128
          x-linode-cli-display: 3
        description:
          x-linode-filterable: true
          type: string
          description: >
            A description for the StackScript.
          example: >
            This StackScript installs and configures MySQL
        images:
          type: array
          x-linode-filterable: true
          description: >
            An array of Image IDs. These are the images that can be deployed
            with this Stackscript.
          items:
            type: string
          example:
          - linode/debian9
          - linode/debian8
          x-linode-cli-display: 4
        deployments_total:
          type: integer
          description: >
            The total number of times this StackScript has been deployed.
          example: 12
          readOnly: true
        deployments_active:
          type: integer
          description: >
            Count of currently active, deployed Linodes created from
            this StackScript.
          example: 1
          readOnly: true
        is_public:
          x-linode-filterable: true
          type: boolean
          description: >
            This determines whether other users can use your StackScript.
            **Once a StackScript is made public, it cannot be made private.**
          example: true
          x-linode-cli-display: 5
        created:
          type: string
          format: date-time
          description: >
            The date this StackScript was created.
          readOnly: true
          example: "2018-01-01T00:01:01"
          x-linode-cli-display: 6
        updated:
          type: string
          format: date-time
          description: >
            The date this StackScript was last updated.
          readOnly: true
          example: "2018-01-01T00:01:01"
          x-linode-cli-display: 7
        rev_note:
          x-linode-filterable: true
          type: string
          description: >
            This field allows you to add notes for the set of revisions made to
            this StackScript.
          example: Set up MySQL
        script:
          type: string
          description: >
            The script to execute when provisioning a new Linode with this StackScript.
          example: >
            "#!/bin/bash"
        user_defined_fields:
          type: array
          description: >
            This is a list of fields defined with a special syntax inside this StackScript
            that allow for supplying customized parameters during deployment. See
            <a target="_top" href="https://www.linode.com/docs/platform/stackscripts/#variables-and-udfs">Variables and UDFs</a>
            for more information.
          items:
            $ref: '#/components/schemas/UserDefinedField'
          readOnly: true
          example:
            label: Enter the DB password
            name: DB_PASSWORD
            example: hunter2
    SupportTicket:
      type: object
      description: >
        A Support Ticket opened on your Account.
      properties:
        id:
          type: integer
          readOnly: true
          description: >
            The ID of the Support Ticket.
          example: 11223344
          x-linode-cli-display: 1
        attachments:
          type: array
          description: >
            A list of filenames representing attached files associated
            with this Ticket.
          readOnly: true
          items:
            type: string
            example:
            - screenshot.jpg
            - screenshot.txt
        closed:
          x-linode-filterable: true
          type: string
          nullable: true
          format: date-time
          readOnly: true
          description: >
            The date and time this Ticket was closed.
          example: '2015-06-04T16:07:03'
        closable:
          type: boolean
          description: >
            Whether the Support Ticket may be closed.
          example: false
        description:
          type: string
          readOnly: true
          description: >
            The full details of the issue or question.
          minLength: 1
          maxLength: 65000
          example: >
            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?
          x-linode-cli-display: 5
        entity:
          type: object
          nullable: true
          readOnly: true
          description: >
            The entity this Ticket was opened for.
          x-linode-cli-display: 6
          properties:
            id:
              type: integer
              readOnly: true
              description: >
                The unique ID for this Ticket's entity.
              example: 10400
            label:
              type: string
              readOnly: true
              description: >
                The current label of this entity.
              example: linode123456
            type:
              type: string
              readOnly: true
              description: >
                The type of entity this is related to.
              example: linode
            url:
              type: string
              readOnly: true
              description: >
                The URL where you can access the object this event is
                for. If a relative URL, it is relative to the domain you
                retrieved the entity from.
              example: /v4/linode/instances/123456
        gravatar_id:
          type: string
          readOnly: true
          description: >
            The Gravatar ID of the User who opened this Ticket.
          example: 474a1b7373ae0be4132649e69c36ce30
        opened:
          x-linode-filterable: true
          type: string
          format: date-time
          readOnly: true
          description: >
            The date and time this Ticket was created.
          example: '2015-06-04T14:16:44'
          x-linode-cli-display: 4
        opened_by:
          type: string
          readOnly: true
          description: >
            The User who opened this Ticket.
          example: some_user
          x-linode-cli-display: 3
        status:
          type: string
          readOnly: true
          description: The current status of this Ticket.
          enum:
          - closed
          - new
          - open
          example: open
        summary:
          type: string
          readOnly: true
          minLength: 1
          maxLength: 64
          description: >
            The summary or title for this Ticket.
          example: >
            Having trouble resetting root password on my Linode
          x-linode-cli-display: 2
        updated:
          x-linode-filterable: true
          type: string
          format: date-time
          readOnly: true
          description: >
            The date and time this Ticket was last updated.
          example: '2015-06-04T16:07:03'
        updated_by:
          type: string
          nullable: true
          readOnly: true
          description: >
            The User who last updated this Ticket.
          example: some_other_user
    SupportTicketReply:
      type: object
      description: >
        An object representing a reply to a Support Ticket.
      properties:
        created:
          type: string
          format: date-time
          readOnly: true
          description: >
            The date and time this Ticket reply was created.
          example: '2015-06-02T14:31:41'
          x-linode-cli-display: 3
        created_by:
          type: string
          readOnly: true
          description: >
            The User who submitted this reply.
          example: John Q. Linode
          x-linode-cli-display: 2
        description:
          type: string
          readOnly: true
          description: >
            The body of this Support Ticket reply.
          example: >
            Hello,\nI'm sorry to hear that you are having trouble resetting the
            root password of your Linode. Just to be sure, have you tried to
            follow the instructions in our online documentation? The link is here:\n
            \nhttps://linode.com/docs/quick-answers/linode-platform/reset-the-root-password-on-your-linode/
            \n\nIf you have, please reply with any additional steps you have also
            taken.\n\nRegards, Linode Support Team
        from_linode:
          type: boolean
          readOnly: true
          description: >
            If set to true, this reply came from a Linode employee.
          example: true
        gravatar_id:
          type: string
          readOnly: true
          description: >
            The Gravatar ID of the User who created this reply.
          example: 474a1b7373ae0be4132649e69c36ce30
        id:
          type: integer
          readOnly: true
          description: >
            The unique ID of this Support Ticket reply.
          example: 11223345
          x-linode-cli-display: 1
    SupportTicketRequest:
      type: object
      required:
      - summary
      - description
      description: >
        An object representing a created Support Ticket - a question or issue
        and request for help from the Linode support team.

        Only one of the ID attributes (`linode_id`, `domain_id`, etc.) can be set
        on a single Support Ticket.
      properties:
        description:
          type: string
          description: >
            The full details of the issue or question.
          minLength: 1
          maxLength: 65000
          example: >
            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?
        domain_id:
          type: integer
          description: >
            The ID of the Domain this ticket is regarding, if relevant.
          example: null
        linode_id:
          type: integer
          description: >
            The ID of the Linode this ticket is regarding, if relevant.
          example: 123
        longviewclient_id:
          type: integer
          description: >
            The ID of the Longview client this ticket is regarding, if relevant.
          example: null
        nodebalancer_id:
          type: integer
          description: >
            The ID of the NodeBalancer this ticket is regarding, if relevant.
          example: null
        summary:
          type: string
          minLength: 1
          maxLength: 64
          description: >
            The summary or title for this SupportTicket.
          example: >
            Having trouble resetting root password on my Linode
        volume_id:
          type: integer
          description: >
            The ID of the Volume this ticket is regarding, if relevant.
          example: null
    Transfer:
      type: object
      description: >
        An object representing your network utilization for the current month,
        in Gigabytes.
      properties:
        billable:
          type: integer
          readOnly: true
          description: >
            The amount of your transfer pool that is billable this billing cycle.
          example: 0
          x-linode-cli-display: 3
        quota:
          type: integer
          readOnly: true
          description: >
            The amount of network usage allowed this billing cycle.
          example: 9141
          x-linode-cli-display: 1
        used:
          type: integer
          readOnly: true
          description: >
            The amount of network usage you have used this billing cycle.
          example: 2
          x-linode-cli-display: 2
    Tag:
      type: object
      description: >
        A tag that has been applied to an object on your Account. Tags are
        currently for organizational purposes only.
      properties:
        label:
          type: string
          description: >
            A Label used for organization of objects on your Account.
          example: example tag
    User:
      type: object
      description: >
        A User on your Account. Unrestricted users can log in and access information about
        your Account, while restricted users may only access entities or perform
        actions they've been granted access to.
      properties:
        username:
          type: string
          pattern: ^[a-zA-Z0-9]((?![_-]{2,})[a-zA-Z0-9-_])+[a-zA-Z0-9]$
          minLength: 3
          maxLength: 32
          description: >
            This User's username. This is used for logging in, and may also be
            displayed alongside actions the User performs (for example, in Events
            or public StackScripts).
          x-linode-filterable: true
          example: example_user
          x-linode-cli-display: 1
        email:
          type: string
          format: email
          description: >
            The email address for this User, for account management
            communications, and may be used for other communications as configured.
          example: example_user@linode.com
          readOnly: true
          x-linode-cli-display: 2
        restricted:
          type: boolean
          description: >
            If true, this User must be granted access to perform actions or access
            entities on this Account. See
            [/account/users/{username}/grants](#operation/getUserGrants)
            for details on how to configure grants for a restricted User.
          example: true
          x-linode-cli-display: 3
        ssh_keys:
          type: array
          items:
            type: string
          description: >
            A list of SSH Key labels added by this User. These are the keys
            that will be deployed if this User is included in the `authorized_users`
            field of a [create Linode](#operation/createLinodeInstance),
            [rebuild Linode](#operation/rebuildLinodeInstance),
            or [create Disk](#operation/addLinodeDisk) request.
          example:
          - home-pc
          - laptop
    UserDefinedField:
      type: object
      required:
      - label
      - name
      - example
      description: >
        A custom field defined by the User with a special syntax within a
        StackScript. Derived from the contents of the script.
      properties:
        label:
          type: string
          description: >
            A human-readable label for the field that will serve as the input
            prompt for entering the value during deployment.
          example: Enter the password
          readOnly: true
        name:
          type: string
          description: >
            The name of the field.
          example: DB_PASSWORD
          readOnly: true
        example:
          type: string
          description: >
            An example value for the field.
          example: hunter2
          readOnly: true
        oneOf:
          type: string
          description: >
            A list of acceptable single values for the field.
          example: avalue,anothervalue,thirdvalue
          readOnly: true
        manyOf:
          type: string
          description: >
            A list of acceptable values for the field in any quantity,
            combination or order.
          example: avalue,anothervalue,thirdvalue
          readOnly: true
        default:
          type: string
          description: >
            The default value.  If not specified, this value will be used.
          readOnly: true
    TrustedDevice:
      type: object
      description: >
        A trusted device object represents an active Remember Me session with <a target="_top" href="https://login.linode.com">login.linode.com</a>.
      properties:
        id:
          type: integer
          description: The unique ID for this TrustedDevice
          example: 123
          readOnly: true
        created:
          type: string
          format: date-time
          description: >
            When this Remember Me session was started.  This corresponds to the time of login
            with the "Remember Me" box checked.
          example: "2018-01-01T01:01:01"
          readOnly: true
        expiry:
          type: string
          format: date-time
          description: >
            When this TrustedDevice session expires.  Sessions typically last 30 days.
          example: "2018-01-31T01:01:01"
          readOnly: true
        user_agent:
          type: string
          description: >
            The User Agent of the browser that created this TrustedDevice session.
          example: >
            Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_3) AppleWebKit/537.36 (KHTML, like Gecko)
            Chrome/70.0.3538.77 Safari/537.36 Vivaldi/2.1.1337.36
          readOnly: true
        last_authenticated:
          type: string
          format: date-time
          description: >
            The last time this TrustedDevice was successfully used to authenticate to
            <a target="_top" href="https://login.linode.com">login.linode.com</a>.
          example: "2018-01-05T12:57:12"
          readOnly: true
        last_remote_addr:
          type: string
          description: >
            The last IP Address to successfully authenticate with this TrustedDevice.
          example: 12.34.56.78
          readOnly: true
    SSHKey:
      type: object
      description: >
        A credential object for authenticating a User's secure shell connection to a Linode.
      properties:
        id:
          type: integer
          description: >
            The unique identifier of an SSH Key object.
          example: 42
          readOnly: true
        label:
          type: string
          description: >
            A label for the SSH Key.
          example: "My SSH Key"
          minLength: 0
          maxLength: 64
        ssh_key:
          type: string
          format: ssh-key
          description: >
            The public SSH Key, which is used to authenticate to the root user
            of the Linodes you deploy.
          readOnly: true
        created:
          type: string
          format: date-time
          description: >
            The date this key was added.
          example: "2018-01-01T00:01:01"
          readOnly: true
    SSHKeyRequest:
      type: object
      description: >
        An object consisting of a user identified name as the `label` and the
        generated key as the `ssh-key`.
      properties:
        label:
          type: string
          minLength: 1
          maxLength: 64
          description: >
            A label for the key.
          example: "My SSH Key"
        ssh_key:
          type: string
          format: ssh-key
          description: >
            The public SSH Key, which is used to authenticate to the root user
            of the Linodes you deploy.
    Volume:
      type: object
      required:
      - label
      description: >
        A Block Storage Volume associated with your Account.
      properties:
        id:
          type: integer
          description: The unique ID of this Volume.
          example: 12345
          readOnly: true
          x-linode-cli-display: 1
        label:
          x-linode-filterable: true
          type: string
          description: >
            The Volume's label is for display purposes only.
          example: my-volume
          minLength: 1
          maxLength: 32
          pattern: '^[a-zA-Z]((?!--|__)[a-zA-Z0-9-_])+$'
          x-linode-cli-display: 2
        filesystem_path:
          type: string
          description: >
            The full filesystem path for the Volume based on the Volume's label.
            Path is /dev/disk/by-id/scsi-0Linode_Volume_ + Volume label.
          example: /dev/disk/by-id/scsi-0Linode_Volume_my-volume
          readOnly: true
        status:
          type: string
          description: >
            The current status of the volume.  Can be one of:

              * `creating` - the Volume is being created and is not yet available
                for use.
              * `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](#operation/createTicket) to resolve the issue.
          enum:
          - creating
          - active
          - resizing
          - contact_support
          example: active
          readOnly: true
          x-linode-cli-display: 3
          x-linode-cli-color:
            active: green
            contact_support: red
            default_: yellow
        size:
          type: integer
          description: >
            The Volume's size, in GiB.
          maximum: 10240
          x-linode-cli-display: 4
          example: 30
        region:
          $ref: '#/components/schemas/Region/properties/id'
          x-linode-cli-display: 5
        linode_id:
          type: integer
          nullable: true
          description: >
            If a Volume is attached to a specific Linode, the ID of that Linode
            will be displayed here.
          example: 12346
          x-linode-cli-display: 6
        created:
          type: string
          format: date-time
          description: When this Volume was created.
          example: '2018-01-01T00:01:01'
          readOnly: true
        updated:
          type: string
          format: date-time
          description: When this Volume was last updated.
          example: '2018-01-01T00:01:01'
          readOnly: true
        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