openapi: "3.0.0"
info:
  title: Influx API Service
  version: 0.1.0
servers:
  - url: /api/v2
paths:
  /signin:
    post:
      operationId: PostSignin
      summary: Exchange basic auth credentials for session
      security:
        - BasicAuth: []
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
      responses:
        '204':
          description: Successfully authenticated
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        '403':
          description: user account is disabled
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        default:
          description: Unsuccessful authentication
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  /signout:
    post:
      operationId: PostSignout
      summary: Expire the current session
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
      responses:
        '204':
          description: Session successfully expired
        '401':
          description: Unauthorized access
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        default:
          description: Unsuccessful session expiry
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  /:
    get:
      operationId: GetRoutes
      summary: Map of all top level routes available
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
      responses:
        default:
          description: All routes
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Routes"
  /setup:
    get:
      operationId: GetSetup
      tags:
        - Setup
      summary: Check if database has default user, org, bucket
      description: Returns `true` if no default user, organization, or bucket has been created.
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
      responses:
        '200':
          description:
            allowed true or false
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/IsOnboarding"
    post:
      operationId: PostSetup
      tags:
        - Setup
      summary: Set up initial user, org and bucket
      description: Post an onboarding request to set up initial user, org and bucket.
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
      requestBody:
        description: Source to create
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/OnboardingRequest"
      responses:
        '201':
          description: Created default user, bucket, org
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/OnboardingResponse"
  /documents/templates:
    get:
      operationId: GetDocumentsTemplates
      tags:
        - Templates
      parameters:
          - $ref: '#/components/parameters/TraceSpan'
          - in: query
            name: org
            description: Specifies the name of the organization of the template.
            schema:
              type: string
          - in: query
            name: orgID
            description: Specifies the organization ID of the template.
            schema:
              type: string
      responses:
        '200':
          description: A list of template documents
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Documents"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
    post:
      operationId: PostDocumentsTemplates
      tags:
        - Templates
      summary: Create a template
      parameters:
          - $ref: '#/components/parameters/TraceSpan'
      requestBody:
        description: Template that will be created
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/DocumentCreate"
      responses:
        '201':
          description: Template created
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Document"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  '/documents/templates/{templateID}':
    get:
      operationId: GetDocumentsTemplatesID
      tags:
        - Templates
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: templateID
          schema:
            type: string
          required: true
          description: The template ID.
      responses:
        '200':
          description: The template requested
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Document"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
    put:
      operationId: PutDocumentsTemplatesID
      tags:
        - Templates
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: templateID
          schema:
            type: string
          required: true
          description: The template ID.
      requestBody:
        description: Template that will be updated
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/DocumentUpdate"
      responses:
        '200':
          description: The newly updated template
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Document"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
    delete:
      operationId: DeleteDocumentsTemplatesID
      tags:
        - Templates
      summary: Delete a template
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: templateID
          schema:
            type: string
          required: true
          description: The template ID.
      responses:
        '204':
          description: Delete has been accepted
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  '/documents/templates/{templateID}/labels':
    get:
      operationId: GetDocumentsTemplatesIDLabels
      tags:
        - Templates
      summary: List all labels for a template
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: templateID
          schema:
            type: string
          required: true
          description: The template ID.
      responses:
        '200':
          description: A list of all labels for a template
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LabelsResponse"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
    post:
      operationId: PostDocumentsTemplatesIDLabels
      tags:
        - Templates
      summary: Add a label to a template
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: templateID
          schema:
            type: string
          required: true
          description: The template ID.
      requestBody:
        description: Label to add
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/LabelMapping"
      responses:
        '201':
          description: The label added to the template
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LabelResponse"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  '/documents/templates/{templateID}/labels/{labelID}':
    delete:
      operationId: DeleteDocumentsTemplatesIDLabelsID
      tags:
        - Templates
      summary: Delete a label from a template
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: templateID
          schema:
            type: string
          required: true
          description: The template ID.
        - in: path
          name: labelID
          schema:
            type: string
          required: true
          description: The label ID.
      responses:
        '204':
          description: Delete has been accepted
        '404':
          description: Template not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  /telegraf/plugins:
    get:
      operationId: GetTelegrafPlugins
      parameters:
          - $ref: '#/components/parameters/TraceSpan'
          - in: query
            name: type
            description: The type of plugin desired.
            schema:
              type: string
      responses:
        '200':
          description: A list of Telegraf plugins.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/TelegrafPlugins"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  /telegrafs:
    get:
      operationId: GetTelegrafs
      tags:
        - Telegrafs
      parameters:
          - $ref: '#/components/parameters/TraceSpan'
          - in: query
            name: orgID
            description: The organization ID the Telegraf config belongs to.
            schema:
              type: string
      responses:
        '200':
          description: A list of Telegraf configs
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Telegrafs"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
    post:
      operationId: PostTelegrafs
      tags:
        - Telegrafs
      summary: Create a Telegraf config
      parameters:
          - $ref: '#/components/parameters/TraceSpan'
      requestBody:
        description: Telegraf config to create
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/TelegrafRequest"
      responses:
        '201':
          description: Telegraf config created
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Telegraf"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  '/telegrafs/{telegrafID}':
    get:
      operationId: GetTelegrafsID
      tags:
        - Telegrafs
      summary: Retrieve a Telegraf config
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: telegrafID
          schema:
            type: string
          required: true
          description: The Telegraf config ID.
        - in: header
          name: Accept
          required: false
          schema:
            type: string
            default: application/toml
            enum:
              - application/toml
              - application/json
              - application/octet-stream
      responses:
        '200':
          description: Telegraf config details
          content:
            application/toml:
              example: "[agent]\ninterval = \"10s\""
              schema:
                type: string
            application/json:
              schema:
                $ref: "#/components/schemas/Telegraf"
            application/octet-stream:
              example: "[agent]\ninterval = \"10s\""
              schema:
                type: string
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
    put:
      operationId: PutTelegrafsID
      tags:
        - Telegrafs
      summary: Update a Telegraf config
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: telegrafID
          schema:
            type: string
          required: true
          description: The Telegraf config ID.
      requestBody:
        description: Telegraf config update to apply
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/TelegrafRequest"
      responses:
        '200':
          description: An updated Telegraf config
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Telegraf"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
    delete:
      operationId: DeleteTelegrafsID
      tags:
        - Telegrafs
      summary: Delete a Telegraf config
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: telegrafID
          schema:
            type: string
          required: true
          description: The Telegraf config ID.
      responses:
        '204':
          description: Delete has been accepted
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  '/telegrafs/{telegrafID}/labels':
    get:
      operationId: GetTelegrafsIDLabels
      tags:
        - Telegrafs
      summary: List all labels for a Telegraf config
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: telegrafID
          schema:
            type: string
          required: true
          description: The Telegraf config ID.
      responses:
        '200':
          description: A list of all labels for a Telegraf config
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LabelsResponse"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
    post:
      operationId: PostTelegrafsIDLabels
      tags:
        - Telegrafs
      summary: Add a label to a Telegraf config
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: telegrafID
          schema:
            type: string
          required: true
          description: The Telegraf config ID.
      requestBody:
        description: Label to add
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/LabelMapping"
      responses:
        '201':
          description: The label added to the Telegraf config
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LabelResponse"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  '/telegrafs/{telegrafID}/labels/{labelID}':
    delete:
      operationId: DeleteTelegrafsIDLabelsID
      tags:
        - Telegrafs
      summary: Delete a label from a Telegraf config
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: telegrafID
          schema:
            type: string
          required: true
          description: The Telegraf config ID.
        - in: path
          name: labelID
          schema:
            type: string
          required: true
          description: The label ID.
      responses:
        '204':
          description: Delete has been accepted
        '404':
          description: Telegraf config not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  '/telegrafs/{telegrafID}/members':
    get:
      operationId: GetTelegrafsIDMembers
      tags:
        - Users
        - Telegrafs
      summary: List all users with member privileges for a Telegraf config
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: telegrafID
          schema:
            type: string
          required: true
          description: The Telegraf config ID.
      responses:
        '200':
          description: A list of Telegraf config members
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ResourceMembers"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
    post:
      operationId: PostTelegrafsIDMembers
      tags:
        - Users
        - Telegrafs
      summary: Add a member to a Telegraf config
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: telegrafID
          schema:
            type: string
          required: true
          description: The Telegraf config ID.
      requestBody:
        description: User to add as member
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/AddResourceMemberRequestBody"
      responses:
        '201':
          description: Member added to Telegraf config
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ResourceMember"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  '/telegrafs/{telegrafID}/members/{userID}':
    delete:
      operationId: DeleteTelegrafsIDMembersID
      tags:
        - Users
        - Telegrafs
      summary: Remove a member from a Telegraf config
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: userID
          schema:
            type: string
          required: true
          description: The ID of the member to remove.
        - in: path
          name: telegrafID
          schema:
            type: string
          required: true
          description: The Telegraf config ID.
      responses:
        '204':
          description: Member removed
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  '/telegrafs/{telegrafID}/owners':
    get:
      operationId: GetTelegrafsIDOwners
      tags:
        - Users
        - Telegrafs
      summary: List all owners of a Telegraf config
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: telegrafID
          schema:
            type: string
          required: true
          description: The Telegraf config ID.
      responses:
        '200':
          description: A list of Telegraf config owners
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ResourceOwners"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
    post:
      operationId: PostTelegrafsIDOwners
      tags:
        - Users
        - Telegrafs
      summary: Add an owner to a Telegraf config
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: telegrafID
          schema:
            type: string
          required: true
          description: The Telegraf config ID.
      requestBody:
        description: User to add as owner
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/AddResourceMemberRequestBody"
      responses:
        '201':
          description: Telegraf config owner added
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ResourceOwner"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  '/telegrafs/{telegrafID}/owners/{userID}':
    delete:
      operationId: DeleteTelegrafsIDOwnersID
      tags:
        - Users
        - Telegrafs
      summary: Remove an owner from a Telegraf config
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: userID
          schema:
            type: string
          required: true
          description: The ID of the owner to remove.
        - in: path
          name: telegrafID
          schema:
            type: string
          required: true
          description: The Telegraf config ID.
      responses:
        '204':
          description: Owner removed
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  /scrapers:
    get:
      operationId: GetScrapers
      tags:
        - ScraperTargets
      summary: Get all scraper targets
      parameters:
          - $ref: '#/components/parameters/TraceSpan'
          - in: query
            name: name
            description: Specifies the name of the scraper target.
            schema:
              type: string
          - in: query
            name: id
            description: List of scraper target IDs to return. If both `id` and `owner` are specified, only `id` is used.
            schema:
              type: array
              items:
                type: string
          - in: query
            name: orgID
            description: Specifies the organization ID of the scraper target.
            schema:
              type: string
          - in: query
            name: org
            description: Specifies the organization name of the scraper target.
            schema:
              type: string
      responses:
        '200':
          description: All scraper targets
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ScraperTargetResponses"
    post:
      operationId: PostScrapers
      summary: Create a scraper target
      tags:
        - ScraperTargets
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
      requestBody:
        description: Scraper target to create
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ScraperTargetRequest"
      responses:
        '201':
          description: Scraper target created
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ScraperTargetResponse"
        default:
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  '/scrapers/{scraperTargetID}':
    get:
      operationId: GetScrapersID
      tags:
        - ScraperTargets
      summary: Get a scraper target by ID
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: scraperTargetID
          required: true
          schema:
            type: string
          description: The scraper target ID.
      responses:
        '200':
          description: Scraper target updated
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ScraperTargetResponse"
        default:
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
    delete:
      operationId: DeleteScrapersID
      tags:
        - ScraperTargets
      summary: Delete a scraper target
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: scraperTargetID
          required: true
          schema:
            type: string
          description: The scraper target ID.
      responses:
        '204':
          description: Scraper target deleted
        default:
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
    patch:
      operationId: PatchScrapersID
      summary: Update a scraper target
      tags:
        - ScraperTargets
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: scraperTargetID
          required: true
          schema:
            type: string
          description: The scraper target ID.
      requestBody:
        description: Scraper target update to apply
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ScraperTargetRequest"
      responses:
        '200':
          description: Scraper target updated
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ScraperTargetResponse"
        default:
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  '/scrapers/{scraperTargetID}/labels':
    get:
      operationId: GetScrapersIDLabels
      tags:
        - ScraperTargets
      summary: List all labels for a scraper target
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: scraperTargetID
          schema:
            type: string
          required: true
          description: The scraper target ID.
      responses:
        '200':
          description: A list of all labels for a scraper target
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LabelsResponse"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
    post:
      operationId: PostScrapersIDLabels
      tags:
        - ScraperTargets
      summary: Add a label to a scraper target
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: scraperTargetID
          schema:
            type: string
          required: true
          description: The scraper target ID.
      requestBody:
        description: Label to add
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/LabelMapping"
      responses:
        '201':
          description: The newly added label
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LabelResponse"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  '/scrapers/{scraperTargetID}/labels/{labelID}':
    delete:
      operationId: DeleteScrapersIDLabelsID
      tags:
        - ScraperTargets
      summary: Delete a label from a scraper target
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: scraperTargetID
          schema:
            type: string
          required: true
          description: The scraper target ID.
        - in: path
          name: labelID
          schema:
            type: string
          required: true
          description: The label ID.
      responses:
        '204':
          description: Delete has been accepted
        '404':
          description: Scraper target not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
    patch:
      operationId: PatchScrapersIDLabelsID
      tags:
        - ScraperTargets
      summary: Update a label on a scraper target
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: scraperTargetID
          schema:
            type: string
          required: true
          description: The scraper target ID.
        - in: path
          name: labelID
          schema:
            type: string
          required: true
          description: The label ID.
      requestBody:
        description: Label update to apply
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/Label"
      responses:
        '200':
          description: Updated successfully
        '404':
          description: Scraper target not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  '/scrapers/{scraperTargetID}/members':
    get:
      operationId: GetScrapersIDMembers
      tags:
        - Users
        - ScraperTargets
      summary: List all users with member privileges for a scraper target
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: scraperTargetID
          schema:
            type: string
          required: true
          description: The scraper target ID.
      responses:
        '200':
          description: A list of scraper target members
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ResourceMembers"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
    post:
      operationId: PostScrapersIDMembers
      tags:
        - Users
        - ScraperTargets
      summary: Add a member to a scraper target
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: scraperTargetID
          schema:
            type: string
          required: true
          description: The scraper target ID.
      requestBody:
        description: User to add as member
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/AddResourceMemberRequestBody"
      responses:
        '201':
          description: Member added to scraper targets
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ResourceMember"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  '/scrapers/{scraperTargetID}/members/{userID}':
    delete:
      operationId: DeleteScrapersIDMembersID
      tags:
        - Users
        - ScraperTargets
      summary: Remove a member from a scraper target
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: userID
          schema:
            type: string
          required: true
          description: The ID of member to remove.
        - in: path
          name: scraperTargetID
          schema:
            type: string
          required: true
          description: The scraper target ID.
      responses:
        '204':
          description: Member removed
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  '/scrapers/{scraperTargetID}/owners':
    get:
      operationId: GetScrapersIDOwners
      tags:
        - Users
        - ScraperTargets
      summary: List all owners of a scraper target
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: scraperTargetID
          schema:
            type: string
          required: true
          description: The scraper target ID.
      responses:
        '200':
          description: A list of scraper target owners
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ResourceOwners"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
    post:
      operationId: PostScrapersIDOwners
      tags:
        - Users
        - ScraperTargets
      summary: Add an owner to a scraper target
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: scraperTargetID
          schema:
            type: string
          required: true
          description: The scraper target ID.
      requestBody:
        description: User to add as owner
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/AddResourceMemberRequestBody"
      responses:
        '201':
          description: Scraper target owner added
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ResourceOwner"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  '/scrapers/{scraperTargetID}/owners/{userID}':
    delete:
      operationId: DeleteScrapersIDOwnersID
      tags:
        - Users
        - ScraperTargets
      summary: Remove an owner from a scraper target
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: userID
          schema:
            type: string
          required: true
          description: The ID of owner to remove.
        - in: path
          name: scraperTargetID
          schema:
            type: string
          required: true
          description: The scraper target ID.
      responses:
        '204':
          description: Owner removed
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  /variables:
    get:
      operationId: GetVariables
      tags:
        - Variables
      summary: Get all variables
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: query
          name: org
          description: The organization name.
          schema:
            type: string
        - in: query
          name: orgID
          description: The organization ID.
          schema:
            type: string
      responses:
        '200':
          description: All variables for an organization
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Variables"
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        default:
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
    post:
      operationId: PostVariables
      summary: Create a variable
      tags:
        - Variables
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
      requestBody:
        description: Variable to create
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/Variable"
      responses:
        '201':
          description: Variable created
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Variable"
        default:
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  '/variables/{variableID}':
    get:
      operationId: GetVariablesID
      tags:
        - Variables
      summary: Get a variable
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: variableID
          required: true
          schema:
            type: string
          description: The variable ID.
      responses:
        '200':
          description: Variable found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Variable"
        '404':
          description: Variable not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        default:
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
    delete:
      operationId: DeleteVariablesID
      tags:
        - Variables
      summary: Delete a variable
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: variableID
          required: true
          schema:
            type: string
          description: The variable ID.
      responses:
        '204':
          description: Variable deleted
        default:
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
    patch:
      operationId: PatchVariablesID
      summary: Update a variable
      tags:
        - Variables
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: variableID
          required: true
          schema:
            type: string
          description: The variable ID.
      requestBody:
        description: Variable update to apply
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/Variable"
      responses:
        '200':
          description: Variable updated
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Variable"
        default:
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
    put:
      operationId: PutVariablesID
      summary: Replace a variable
      tags:
        - Variables
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: variableID
          required: true
          schema:
            type: string
          description: The variable ID.
      requestBody:
        description: Variable to replace
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/Variable"
      responses:
        '200':
          description: Variable updated
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Variable"
        default:
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  '/variables/{variableID}/labels':
    get:
      operationId: GetVariablesIDLabels
      tags:
        - Variables
      summary: List all labels for a variable
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: variableID
          schema:
            type: string
          required: true
          description: The variable ID.
      responses:
        '200':
          description: A list of all labels for a variable
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LabelsResponse"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
    post:
      operationId: PostVariablesIDLabels
      tags:
        - Variables
      summary: Add a label to a variable
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: variableID
          schema:
            type: string
          required: true
          description: The variable ID.
      requestBody:
        description: Label to add
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/LabelMapping"
      responses:
        '201':
          description: The newly added label
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LabelResponse"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  '/variables/{variableID}/labels/{labelID}':
    delete:
      operationId: DeleteVariablesIDLabelsID
      tags:
        - Variables
      summary: Delete a label from a variable
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: variableID
          schema:
            type: string
          required: true
          description: The variable ID.
        - in: path
          name: labelID
          schema:
            type: string
          required: true
          description: The label ID to delete.
      responses:
        '204':
          description: Delete has been accepted
        '404':
          description: Variable not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  /write:
    post:
      operationId: PostWrite
      tags:
        - Write
      summary: Write time series data into InfluxDB
      requestBody:
        description: Line protocol body
        required: true
        content:
          text/plain:
            schema:
              type: string
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: header
          name: Content-Encoding
          description: When present, its value indicates to the database that compression is applied to the line-protocol body.
          schema:
            type: string
            description: Specifies that the line protocol in the body is encoded with gzip or not encoded with identity.
            default: identity
            enum:
              - gzip
              - identity
        - in: header
          name: Content-Type
          description: Content-Type is used to indicate the format of the data sent to the server.
          schema:
            type: string
            description: Text/plain specifies the text line protocol; charset is assumed to be utf-8.
            default: text/plain; charset=utf-8
            enum:
              - text/plain
              - text/plain; charset=utf-8
              - application/vnd.influx.arrow
        - in: header
          name: Content-Length
          description: Content-Length is an entity header is indicating the size of the entity-body, in bytes, sent to the database. If the length is greater than the database max body configuration option, a 413 response is sent.
          schema:
            type: integer
            description: The length in decimal number of octets.
        - in: header
          name: Accept
          description: Specifies the return content format.
          schema:
            type: string
            description: The return format for errors.
            default: application/json
            enum:
              - application/json
        - in: query
          name: org
          description: Specifies the destination organization for writes. Takes either the ID or Name interchangeably. If both `orgID` and `org` are specified, `org` takes precedence.
          required: true
          schema:
            type: string
            description: All points within batch are written to this organization.
        - in: query
          name: orgID
          description: Specifies the ID of the destination organization for writes. If both `orgID` and `org` are specified, `org` takes precedence.
          schema:
            type: string
        - in: query
          name: bucket
          description: The destination bucket for writes.
          required: true
          schema:
            type: string
            description: All points within batch are written to this bucket.
        - in: query
          name: precision
          description: The precision for the unix timestamps within the body line-protocol.
          schema:
            $ref: "#/components/schemas/WritePrecision"
      responses:
        '204':
          description: Write data is correctly formatted and accepted for writing to the bucket.
        '400':
          description: Line protocol poorly formed and no points were written.  Response can be used to determine the first malformed line in the body line-protocol. All data in body was rejected and not written.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LineProtocolError"
        '401':
          description: Token does not have sufficient permissions to write to this organization and bucket or the organization and bucket do not exist.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        '403':
          description: No token was sent and they are required.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        '413':
          description: Write has been rejected because the payload is too large. Error message returns max size supported. All data in body was rejected and not written.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LineProtocolLengthError"
        '429':
          description: Token is temporarily over quota. The Retry-After header describes when to try the write again.
          headers:
            Retry-After:
              description: A non-negative decimal integer indicating the seconds to delay after the response is received.
              schema:
                type: integer
                format: int32
        '503':
          description: Server is temporarily unavailable to accept writes.  The Retry-After header describes when to try the write again.
          headers:
            Retry-After:
              description: A non-negative decimal integer indicating the seconds to delay after the response is received.
              schema:
                type: integer
                format: int32
        default:
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  /delete:
    post:
      summary: Delete time series data from InfluxDB
      requestBody:
          description: Predicate delete request
          required: true
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/DeletePredicateRequest"
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: query
          name: org
          description: Specifies the organization to delete data from.
          schema:
            type: string
            description: Only points from this organization are deleted.
        - in: query
          name: bucket
          description: Specifies the bucket to delete data from.
          schema:
            type: string
            description: Only points from this bucket are deleted.
        - in: query
          name: orgID
          description: Specifies the organization ID of the resource.
          schema:
            type: string
        - in: query
          name: bucketID
          description: Specifies the bucket ID to delete data from.
          schema:
            type: string
            description: Only points from this bucket ID are deleted.
      responses:
        '204':
          description: delete has been accepted
        '400':
          description: invalid request.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        '404':
          description: the bucket or organization is not found.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        '403':
          description: no token was sent or does not have sufficient permissions.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        default:
          description: internal server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  /ready:
    servers:
        - url: /
    get:
      operationId: GetReady
      tags:
        - Ready
      summary: Get the readiness of an instance at startup
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
      responses:
        '200':
          description: The instance is ready
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Ready"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  /health:
    servers:
        - url: /
    get:
      operationId: GetHealth
      tags:
        - Health
      summary: Get the health of an instance
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
      responses:
        '200':
          description: The instance is healthy
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/HealthCheck"
        '503':
          description: The instance is unhealthy
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/HealthCheck"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  /sources:
    post:
      operationId: PostSources
      tags:
        - Sources
      summary: Creates a source
      parameters:
          - $ref: '#/components/parameters/TraceSpan'
      requestBody:
          description: Source to create
          required: true
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Source"
      responses:
        '201':
          description: Created Source
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Source"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
    get:
      operationId: GetSources
      tags:
        - Sources
      summary: Get all sources
      parameters:
          - $ref: '#/components/parameters/TraceSpan'
          - in: query
            name: org
            description: The organization name.
            schema:
              type: string
      responses:
        '200':
          description: All sources
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Sources"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  /sources/{sourceID}:
    delete:
      operationId: DeleteSourcesID
      tags:
        - Sources
      summary: Delete a source
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: sourceID
          schema:
            type: string
          required: true
          description: The source ID.
      responses:
        '204':
          description: Delete has been accepted
        '404':
          description: View not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
    patch:
      operationId: PatchSourcesID
      tags:
        - Sources
      summary: Update a Source
      parameters:
          - $ref: '#/components/parameters/TraceSpan'
          - in: path
            name: sourceID
            schema:
              type: string
            required: true
            description: The source ID.
      requestBody:
          description: Source update
          required: true
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Source"
      responses:
        '200':
          description: Created Source
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Source"
        '404':
          description: Source not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
    get:
      operationId: GetSourcesID
      tags:
        - Sources
      summary: Get a source
      parameters:
          - $ref: '#/components/parameters/TraceSpan'
          - in: path
            name: sourceID
            schema:
              type: string
            required: true
            description: The source ID.
      responses:
        '200':
          description: A source
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Source"
        '404':
          description: Source not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  /sources/{sourceID}/health:
    get:
      operationId: GetSourcesIDHealth
      tags:
        - Sources
      summary: Get the health of a source
      parameters:
          - $ref: '#/components/parameters/TraceSpan'
          - in: path
            name: sourceID
            schema:
              type: string
            required: true
            description: The source ID.
      responses:
        '200':
          description: The source is healthy
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/HealthCheck"
        '503':
          description: The source is not healthy
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/HealthCheck"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  /sources/{sourceID}/buckets:
    get:
      operationId: GetSourcesIDBuckets
      tags:
        - Sources
        - Buckets
      summary: Get buckets in a source
      parameters:
          - $ref: '#/components/parameters/TraceSpan'
          - in: path
            name: sourceID
            schema:
              type: string
            required: true
            description: The source ID.
          - in: query
            name: org
            description: The organization name.
            schema:
              type: string
      responses:
        '200':
          description: A source
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Buckets"
        '404':
          description: Source not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  /labels:
    post:
      operationId: PostLabels
      tags:
        - Labels
      summary: Create a label
      requestBody:
          description: Label to create
          required: true
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LabelCreateRequest"
      responses:
        '201':
          description: Added label
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LabelResponse"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
    get:
      operationId: GetLabels
      tags:
        - Labels
      summary: Get all labels
      parameters:
          - $ref: '#/components/parameters/TraceSpan'
          - in: query
            name: orgID
            description: The organization ID.
            schema:
              type: string
      responses:
        '200':
          description: All labels
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LabelsResponse"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  /labels/{labelID}:
    get:
      operationId: GetLabelsID
      tags:
        - Labels
      summary: Get a label
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: labelID
          schema:
            type: string
          required: true
          description: The ID of the label to update.
      responses:
        '200':
          description: A label
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LabelResponse"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
    patch:
      operationId: PatchLabelsID
      tags:
        - Labels
      summary: Update a label
      requestBody:
          description: Label update
          required: true
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LabelUpdate"
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: labelID
          schema:
            type: string
          required: true
          description: The ID of the label to update.
      responses:
        '200':
          description: Updated label
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LabelResponse"
        '404':
          description: Label not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
    delete:
      operationId: DeleteLabelsID
      tags:
        - Labels
      summary: Delete a label
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: labelID
          schema:
            type: string
          required: true
          description: The ID of the label to delete.
      responses:
        '204':
          description: Delete has been accepted
        '404':
          description: Label not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  /dashboards:
    post:
      operationId: PostDashboards
      tags:
        - Dashboards
      summary: Create a dashboard
      parameters:
          - $ref: '#/components/parameters/TraceSpan'
      requestBody:
          description: Dashboard to create
          required: true
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CreateDashboardRequest"
      responses:
        '201':
          description: Added dashboard
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: "#/components/schemas/Dashboard"
                  - $ref: "#/components/schemas/DashboardWithViewProperties"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
    get:
      operationId: GetDashboards
      tags:
        - Dashboards
      summary: Get all dashboards
      parameters:
          - $ref: '#/components/parameters/TraceSpan'
          - in: query
            name: owner
            description: The owner ID.
            schema:
              type: string
          - in: query
            name: sortBy
            description: The column to sort by.
            schema:
              type: string
              enum:
                - "ID"
                - "CreatedAt"
                - "UpdatedAt"
          - in: query
            name: id
            description: List of dashboard IDs to return. If both `id and `owner` are specified, only `id` is used.
            schema:
              type: array
              items:
                type: string
          - in: query
            name: orgID
            description: The organization ID.
            schema:
              type: string
          - in: query
            name: org
            description: The organization name.
            schema:
              type: string
      responses:
        '200':
          description: All dashboards
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Dashboards"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  '/dashboards/{dashboardID}':
    get:
      operationId: GetDashboardsID
      tags:
        - Dashboards
      summary: Get a Dashboard
      parameters:
          - $ref: '#/components/parameters/TraceSpan'
          - in: path
            name: dashboardID
            schema:
              type: string
            required: true
            description: The ID of the dashboard to update.
          - in: query
            name: include
            required: false
            schema:
              type: string
              enum:
                - properties
            description: Includes the cell view properties in the response if set to `properties`
      responses:
          '200':
            description: Get a single dashboard
            content:
              application/json:
                schema:
                  oneOf:
                    - $ref: "#/components/schemas/Dashboard"
                    - $ref: "#/components/schemas/DashboardWithViewProperties"
          '404':
            description: Dashboard not found
            content:
              application/json:
                schema:
                  $ref: "#/components/schemas/Error"
          default:
            description: Unexpected error
            content:
              application/json:
                schema:
                  $ref: "#/components/schemas/Error"
    patch:
      operationId: PatchDashboardsID
      tags:
        - Dashboards
      summary: Update a dashboard
      requestBody:
          description: Patching of a dashboard
          required: true
          content:
            application/json:
              schema:
                type: object
                properties:
                  name:
                    description: optional, when provided will replace the name
                    type: string
                  description:
                    description: optional, when provided will replace the description
                    type: string
                  cells:
                    description: optional, when provided will replace all existing cells with the cells provided
                    $ref: "#/components/schemas/CellWithViewProperties"
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: dashboardID
          schema:
            type: string
          required: true
          description: The ID of the dashboard to update.
      responses:
        '200':
          description: Updated dashboard
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Dashboard"
        '404':
          description: Dashboard not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
    delete:
      operationId: DeleteDashboardsID
      tags:
        - Dashboards
      summary: Delete a dashboard
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: dashboardID
          schema:
            type: string
          required: true
          description: The ID of the dashboard to update.
      responses:
        '204':
          description: Delete has been accepted
        '404':
          description: Dashboard not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  '/dashboards/{dashboardID}/cells':
    put:
      operationId: PutDashboardsIDCells
      tags:
        - Cells
        - Dashboards
      summary: Replace cells in a dashboard
      description: Replaces all cells in a dashboard. This is used primarily to update the positional information of all cells.
      requestBody:
          required: true
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Cells"
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: dashboardID
          schema:
            type: string
          required: true
          description: The ID of the dashboard to update.
      responses:
        '201':
          description: Replaced dashboard cells
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Dashboard"
        '404':
          description: Dashboard not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
    post:
      operationId: PostDashboardsIDCells
      tags:
        - Cells
        - Dashboards
      summary: Create a dashboard cell
      requestBody:
          description: Cell that will be added
          required: true
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CreateCell"
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: dashboardID
          schema:
            type: string
          required: true
          description: The ID of the dashboard to update.
      responses:
        '201':
          description: Cell successfully added
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Cell"
        '404':
          description: Dashboard not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  '/dashboards/{dashboardID}/cells/{cellID}':
    patch:
      operationId: PatchDashboardsIDCellsID
      tags:
        - Cells
        - Dashboards
      summary: Update the non-positional information related to a cell
      description: Updates the non positional information related to a cell. Updates to a single cell's positional data could cause grid conflicts.
      requestBody:
          required: true
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CellUpdate"
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: dashboardID
          schema:
            type: string
          required: true
          description: The ID of the dashboard to update.
        - in: path
          name: cellID
          schema:
            type: string
          required: true
          description: The ID of the cell to update.
      responses:
        '200':
          description: Updated dashboard cell
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Cell"
        '404':
          description: Cell or dashboard not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
    delete:
      operationId: DeleteDashboardsIDCellsID
      tags:
        - Cells
        - Dashboards
      summary: Delete a dashboard cell
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: dashboardID
          schema:
            type: string
          required: true
          description: The ID of the dashboard to delete.
        - in: path
          name: cellID
          schema:
            type: string
          required: true
          description: The ID of the cell to delete.
      responses:
        '204':
          description: Cell successfully deleted
        '404':
          description: Cell or dashboard not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  '/dashboards/{dashboardID}/cells/{cellID}/view':
    get:
      operationId: GetDashboardsIDCellsIDView
      tags:
        - Cells
        - Dashboards
        - Views
      summary: Retrieve the view for a cell
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: dashboardID
          schema:
            type: string
          required: true
          description: The dashboard ID.
        - in: path
          name: cellID
          schema:
            type: string
          required: true
          description: The cell ID.
      responses:
        '200':
          description: A dashboard cells view
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/View"
        '404':
          description: Cell or dashboard not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
    patch:
      operationId: PatchDashboardsIDCellsIDView
      tags:
        - Cells
        - Dashboards
        - Views
      summary: Update the view for a cell
      requestBody:
          required: true
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/View"
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: dashboardID
          schema:
            type: string
          required: true
          description: The ID of the dashboard to update.
        - in: path
          name: cellID
          schema:
            type: string
          required: true
          description: The ID of the cell to update.
      responses:
        '200':
          description: Updated cell view
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/View"
        '404':
          description: Cell or dashboard not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  '/dashboards/{dashboardID}/labels':
    get:
      operationId: GetDashboardsIDLabels
      tags:
        - Dashboards
      summary: list all labels for a dashboard
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: dashboardID
          schema:
            type: string
          required: true
          description: The dashboard ID.
      responses:
        '200':
          description: A list of all labels for a dashboard
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LabelsResponse"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
    post:
      operationId: PostDashboardsIDLabels
      tags:
        - Dashboards
      summary: Add a label to a dashboard
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: dashboardID
          schema:
            type: string
          required: true
          description: The dashboard ID.
      requestBody:
        description: Label to add
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/LabelMapping"
      responses:
        '201':
          description: The label added to the dashboard
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LabelResponse"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  '/dashboards/{dashboardID}/labels/{labelID}':
    delete:
      operationId: DeleteDashboardsIDLabelsID
      tags:
        - Dashboards
      summary: Delete a label from a dashboard
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: dashboardID
          schema:
            type: string
          required: true
          description: The dashboard ID.
        - in: path
          name: labelID
          schema:
            type: string
          required: true
          description: The ID of the label to delete.
      responses:
        '204':
          description: Delete has been accepted
        '404':
          description: Dashboard not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  '/dashboards/{dashboardID}/members':
    get:
      operationId: GetDashboardsIDMembers
      tags:
        - Users
        - Dashboards
      summary: List all dashboard members
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: dashboardID
          schema:
            type: string
          required: true
          description: The dashboard ID.
      responses:
        '200':
          description: A list of users who have member privileges for a dashboard
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ResourceMembers"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
    post:
      operationId: PostDashboardsIDMembers
      tags:
        - Users
        - Dashboards
      summary: Add a member to a dashboard
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: dashboardID
          schema:
            type: string
          required: true
          description: The dashboard ID.
      requestBody:
        description: User to add as member
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/AddResourceMemberRequestBody"
      responses:
        '201':
          description: Added to dashboard members
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ResourceMember"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  '/dashboards/{dashboardID}/members/{userID}':
    delete:
      operationId: DeleteDashboardsIDMembersID
      tags:
        - Users
        - Dashboards
      summary: Remove a member from a dashboard
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: userID
          schema:
            type: string
          required: true
          description: The ID of the member to remove.
        - in: path
          name: dashboardID
          schema:
            type: string
          required: true
          description: The dashboard ID.
      responses:
        '204':
          description: Member removed
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  '/dashboards/{dashboardID}/owners':
    get:
      operationId: GetDashboardsIDOwners
      tags:
        - Users
        - Dashboards
      summary: List all dashboard owners
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: dashboardID
          schema:
            type: string
          required: true
          description: The dashboard ID.
      responses:
        '200':
          description: A list of users who have owner privileges for a dashboard
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ResourceOwners"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
    post:
      operationId: PostDashboardsIDOwners
      tags:
        - Users
        - Dashboards
      summary: Add an owner to a dashboard
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: dashboardID
          schema:
            type: string
          required: true
          description: The dashboard ID.
      requestBody:
        description: User to add as owner
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/AddResourceMemberRequestBody"
      responses:
        '201':
          description: Added to dashboard owners
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ResourceOwner"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  '/dashboards/{dashboardID}/owners/{userID}':
    delete:
      operationId: DeleteDashboardsIDOwnersID
      tags:
        - Users
        - Dashboards
      summary: Remove an owner from a dashboard
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: userID
          schema:
            type: string
          required: true
          description: The ID of the owner to remove.
        - in: path
          name: dashboardID
          schema:
            type: string
          required: true
          description: The dashboard ID.
      responses:
        '204':
          description: Owner removed
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  '/dashboards/{dashboardID}/logs':
    get:
      operationId: GetDashboardsIDLogs
      tags:
        - Dashboards
        - OperationLogs
      summary: Retrieve operation logs for a dashboard
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - $ref: '#/components/parameters/Offset'
        - $ref: '#/components/parameters/Limit'
        - in: path
          name: dashboardID
          required: true
          description: The dashboard ID.
          schema:
            type: string
      responses:
        '200':
          description: Operation logs for the dashboard
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/OperationLogs"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  /query/ast:
    post:
      operationId: PostQueryAst
      description: Analyzes flux query and generates a query specification.
      tags:
        - Query
      parameters:
      - $ref: '#/components/parameters/TraceSpan'
      - in: header
        name: Content-Type
        schema:
          type: string
          enum:
            - application/json
      requestBody:
        description: Analyzed Flux query to generate abstract syntax tree.
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/LanguageRequest"
      responses:
        '200':
          description: Abstract syntax tree of flux query.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ASTResponse"
        default:
          description: Any response other than 200 is an internal server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  /query/suggestions:
    get:
      operationId: GetQuerySuggestions
      tags:
        - Query
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
      responses:
        '200':
          description: Suggestions for next functions in call chain
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/FluxSuggestions"
        default:
          description: Any response other than 200 is an internal server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  '/query/suggestions/{name}':
    get:
      operationId: GetQuerySuggestionsName
      tags:
        - Query
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: name
          schema:
            type: string
          required: true
          description: The name of the branching suggestion.
      responses:
        '200':
          description: Suggestions for next functions in call chain
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/FluxSuggestion"
        default:
          description: Any response other than 200 is an internal server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  /authorizations:
    get:
      operationId: GetAuthorizations
      tags:
        - Authorizations
      summary: List all authorizations
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: query
          name: userID
          schema:
            type: string
          description: Only show authorizations that belong to a user ID.
        - in: query
          name: user
          schema:
            type: string
          description: Only show authorizations that belong to a user name.
        - in: query
          name: orgID
          schema:
            type: string
          description: Only show authorizations that belong to an organization ID.
        - in: query
          name: org
          schema:
            type: string
          description: Only show authorizations that belong to a organization name.
      responses:
        '200':
          description: A list of authorizations
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Authorizations"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
    post:
      operationId: PostAuthorizations
      tags:
        - Authorizations
      summary: Create an authorization
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
      requestBody:
        description: Authorization to create
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/Authorization"
      responses:
        '201':
          description: Authorization created
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Authorization"
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  /authorizations/{authID}:
    get:
      operationId: GetAuthorizationsID
      tags:
        - Authorizations
      summary: Retrieve an authorization
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: authID
          schema:
            type: string
          required: true
          description: The ID of the authorization to get.
      responses:
        '200':
          description: Authorization details
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Authorization"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
    patch:
      operationId: PatchAuthorizationsID
      tags:
        - Authorizations
      summary: Update an authorization to be active or inactive
      requestBody:
        description: Authorization to update
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/AuthorizationUpdateRequest"
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: authID
          schema:
            type: string
          required: true
          description: The ID of the authorization to update.
      responses:
        '200':
          description: The active or inactie authorization
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Authorization"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
    delete:
      operationId: DeleteAuthorizationsID
      tags:
        - Authorizations
      summary: Delete a authorization
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: authID
          schema:
            type: string
          required: true
          description: The ID of the authorization to delete.
      responses:
        '204':
          description: Authorization deleted
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  /query/analyze:
    post:
      operationId: PostQueryAnalyze
      tags:
        - Query
      summary: Analyze an InfluxQL or Flux query
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: header
          name: Content-Type
          schema:
            type: string
            enum:
              - application/json
      requestBody:
          description: Flux or InfluxQL query to analyze
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Query"
      responses:
          '200':
            description: Query analyze results. Errors will be empty if the query is valid.
            content:
              application/json:
                schema:
                  $ref: "#/components/schemas/AnalyzeQueryResponse"
          default:
            description: Internal server error
            headers:
              X-Influx-Error:
                description: Error string describing the problem
                schema:
                  type: string
              X-Influx-Reference:
                description: Reference code unique to the error type
                schema:
                  type: integer
            content:
              application/json:
                schema:
                  $ref: "#/components/schemas/Error"
  /query:
    post:
      operationId: PostQuery
      tags:
        - Query
      summary: Query InfluxDB
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: header
          name: Accept-Encoding
          description: The Accept-Encoding request HTTP header advertises which content encoding, usually a compression algorithm, the client is able to understand.
          schema:
            type: string
            description: Specifies that the query response in the body should be encoded with gzip or not encoded with identity.
            default: identity
            enum:
              - gzip
              - identity
        - in: header
          name: Content-Type
          schema:
            type: string
            enum:
              - application/json
              - application/vnd.flux
        - in: query
          name: org
          description: Specifies the name of the organization executing the query. Takes either the ID or Name interchangeably. If both `orgID` and `org` are specified, `org` takes precedence.
          schema:
            type: string
        - in: query
          name: orgID
          description: Specifies the ID of the organization executing the query. If both `orgID` and `org` are specified, `org` takes precedence.
          schema:
            type: string
      requestBody:
          description: Flux query or specification to execute
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: "#/components/schemas/Query"
                  - $ref: "#/components/schemas/InfluxQLQuery"
            application/vnd.flux:
              schema:
                type: string
      responses:
          '200':
            description: Query results
            headers:
              Content-Encoding:
                description: The Content-Encoding entity header is used to compress the media-type.  When present, its value indicates which encodings were applied to the entity-body
                schema:
                    type: string
                    description: Specifies that the response in the body is encoded with gzip or not encoded with identity.
                    default: identity
                    enum:
                    - gzip
                    - identity
              Trace-Id:
                description: The Trace-Id header reports the request's trace ID, if one was generated.
                schema:
                  type: string
                  description: Specifies the request's trace ID.
            content:
              text/csv:
                schema:
                  type: string
                  example: >
                    result,table,_start,_stop,_time,region,host,_value
                    mean,0,2018-05-08T20:50:00Z,2018-05-08T20:51:00Z,2018-05-08T20:50:00Z,east,A,15.43
                    mean,0,2018-05-08T20:50:00Z,2018-05-08T20:51:00Z,2018-05-08T20:50:20Z,east,B,59.25
                    mean,0,2018-05-08T20:50:00Z,2018-05-08T20:51:00Z,2018-05-08T20:50:40Z,east,C,52.62
              application/vnd.influx.arrow:
                schema:
                  type: string
                  format: binary
          '429':
            description: Token is temporarily over quota. The Retry-After header describes when to try the read again.
            headers:
              Retry-After:
                description: A non-negative decimal integer indicating the seconds to delay after the response is received.
                schema:
                  type: integer
                  format: int32
          default:
            description: Error processing query
            content:
              application/json:
                schema:
                  $ref: "#/components/schemas/Error"
  /buckets:
    get:
      operationId: GetBuckets
      tags:
        - Buckets
      summary: List all buckets
      parameters:
          - $ref: '#/components/parameters/TraceSpan'
          - $ref: "#/components/parameters/Offset"
          - $ref: "#/components/parameters/Limit"
          - in: query
            name: org
            description: The organization name.
            schema:
              type: string
          - in: query
            name: orgID
            description: The organization ID.
            schema:
              type: string
          - in: query
            name: name
            description: Only returns buckets with a specific name.
            schema:
              type: string
      responses:
        '200':
          description: A list of buckets
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Buckets"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
    post:
      operationId: PostBuckets
      tags:
        - Buckets
      summary: Create a bucket
      parameters:
          - $ref: '#/components/parameters/TraceSpan'
      requestBody:
        description: Bucket to create
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/PostBucketRequest"
      responses:
        '201':
          description: Bucket created
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Bucket"
        422:
          description: Request body failed validation
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  '/buckets/{bucketID}':
    get:
      operationId: GetBucketsID
      tags:
        - Buckets
      summary: Retrieve a bucket
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: bucketID
          schema:
            type: string
          required: true
          description: The bucket ID.
      responses:
        '200':
          description: Bucket details
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Bucket"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
    patch:
      operationId: PatchBucketsID
      tags:
        - Buckets
      summary: Update a bucket
      requestBody:
        description: Bucket update to apply
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/Bucket"
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: bucketID
          schema:
            type: string
          required: true
          description: The bucket ID.
      responses:
        '200':
          description: An updated bucket
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Bucket"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
    delete:
      operationId: DeleteBucketsID
      tags:
        - Buckets
      summary: Delete a bucket
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: bucketID
          schema:
            type: string
          required: true
          description: The ID of the bucket to delete.
      responses:
        '204':
          description: Delete has been accepted
        '404':
          description: Bucket not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  '/buckets/{bucketID}/labels':
    get:
      operationId: GetBucketsIDLabels
      tags:
        - Buckets
      summary: List all labels for a bucket
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: bucketID
          schema:
            type: string
          required: true
          description: The bucket ID.
      responses:
        '200':
          description: A list of all labels for a bucket
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LabelsResponse"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
    post:
      operationId: PostBucketsIDLabels
      tags:
        - Buckets
      summary: Add a label to a bucket
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: bucketID
          schema:
            type: string
          required: true
          description: The bucket ID.
      requestBody:
        description: Label to add
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/LabelMapping"
      responses:
        '201':
          description: The newly added label
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LabelResponse"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  '/buckets/{bucketID}/labels/{labelID}':
    delete:
      operationId: DeleteBucketsIDLabelsID
      tags:
        - Buckets
      summary: delete a label from a bucket
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: bucketID
          schema:
            type: string
          required: true
          description: The bucket ID.
        - in: path
          name: labelID
          schema:
            type: string
          required: true
          description: The ID of the label to delete.
      responses:
        '204':
          description: Delete has been accepted
        '404':
          description: Bucket not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  '/buckets/{bucketID}/members':
    get:
      operationId: GetBucketsIDMembers
      tags:
        - Users
        - Buckets
      summary: List all users with member privileges for a bucket
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: bucketID
          schema:
            type: string
          required: true
          description: The bucket ID.
      responses:
        '200':
          description: A list of bucket members
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ResourceMembers"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
    post:
      operationId: PostBucketsIDMembers
      tags:
        - Users
        - Buckets
      summary: Add a member to a bucket
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: bucketID
          schema:
            type: string
          required: true
          description: The bucket ID.
      requestBody:
        description: User to add as member
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/AddResourceMemberRequestBody"
      responses:
        '201':
          description: Member added to bucket
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ResourceMember"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  '/buckets/{bucketID}/members/{userID}':
    delete:
      operationId: DeleteBucketsIDMembersID
      tags:
        - Users
        - Buckets
      summary: Remove a member from a bucket
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: userID
          schema:
            type: string
          required: true
          description: The ID of the member to remove.
        - in: path
          name: bucketID
          schema:
            type: string
          required: true
          description: The bucket ID.
      responses:
        '204':
          description: Member removed
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  '/buckets/{bucketID}/owners':
    get:
      operationId: GetBucketsIDOwners
      tags:
        - Users
        - Buckets
      summary: List all owners of a bucket
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: bucketID
          schema:
            type: string
          required: true
          description: The bucket ID.
      responses:
        '200':
          description: A list of bucket owners
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ResourceOwners"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
    post:
      operationId: PostBucketsIDOwners
      tags:
        - Users
        - Buckets
      summary: Add an owner to a bucket
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: bucketID
          schema:
            type: string
          required: true
          description: The bucket ID.
      requestBody:
        description: User to add as owner
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/AddResourceMemberRequestBody"
      responses:
        '201':
          description: Bucket owner added
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ResourceOwner"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  '/buckets/{bucketID}/owners/{userID}':
    delete:
      operationId: DeleteBucketsIDOwnersID
      tags:
        - Users
        - Buckets
      summary: Remove an owner from a bucket
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: userID
          schema:
            type: string
          required: true
          description: The ID of the owner to remove.
        - in: path
          name: bucketID
          schema:
            type: string
          required: true
          description: The bucket ID.
      responses:
        '204':
          description: Owner removed
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  '/buckets/{bucketID}/logs':
    get:
      operationId: GetBucketsIDLogs
      tags:
        - Buckets
        - OperationLogs
      summary: Retrieve operation logs for a bucket
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - $ref: '#/components/parameters/Offset'
        - $ref: '#/components/parameters/Limit'
        - in: path
          name: bucketID
          required: true
          description: The bucket ID.
          schema:
            type: string
      responses:
        '200':
          description: Operation logs for the bucket
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/OperationLogs"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  /orgs:
    get:
      operationId: GetOrgs
      tags:
        - Organizations
      summary: List all organizations
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: query
          name: org
          schema:
            type: string
          description: Filter organizations to a specific organization name.
        - in: query
          name: orgID
          schema:
            type: string
          description: Filter organizations to a specific organization ID.
        - in: query
          name: userID
          schema:
            type: string
          description: Filter organizations to a specific user ID.
      responses:
        '200':
          description: A list of organizations
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Organizations"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
    post:
      operationId: PostOrgs
      tags:
        - Organizations
      summary: Create an organization
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
      requestBody:
        description: Organization to create
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/Organization"
      responses:
        '201':
          description: Organization created
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Organization"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  '/orgs/{orgID}':
    get:
      operationId: GetOrgsID
      tags:
        - Organizations
      summary: Retrieve an organization
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: orgID
          schema:
            type: string
          required: true
          description: The ID of the organization to get.
      responses:
        '200':
          description: Organization details
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Organization"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
    patch:
      operationId: PatchOrgsID
      tags:
        - Organizations
      summary: Update an organization
      requestBody:
        description: Organization update to apply
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/Organization"
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: orgID
          schema:
            type: string
          required: true
          description: The ID of the organization to get.
      responses:
        '200':
          description: Organization updated
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Organization"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
    delete:
      operationId: DeleteOrgsID
      tags:
        - Organizations
      summary: Delete an organization
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: orgID
          schema:
            type: string
          required: true
          description: The ID of the organization to delete.
      responses:
        '204':
          description: Delete has been accepted
        '404':
          description: Organization not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  '/orgs/{orgID}/labels':
    get:
      operationId: GetOrgsIDLabels
      tags:
        - Organizations
      summary: List all labels for a organization
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: orgID
          schema:
            type: string
          required: true
          description: The organization ID.
      responses:
        '200':
          description: A list of all labels for an organization
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LabelsResponse"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
    post:
      operationId: PostOrgsIDLabels
      tags:
        - Organizations
      summary: Add a label to an organization
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: orgID
          schema:
            type: string
          required: true
          description: The organization ID.
      requestBody:
        description: Label to add
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/LabelMapping"
      responses:
        '201':
          description: Returns the created label
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LabelResponse"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  '/orgs/{orgID}/labels/{labelID}':
    delete:
      operationId: DeleteOrgsIDLabelsID
      tags:
        - Organizations
      summary: Delete a label from an organization
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: orgID
          schema:
            type: string
          required: true
          description: The organization ID.
        - in: path
          name: labelID
          schema:
            type: string
          required: true
          description: The label ID.
      responses:
        '204':
          description: Delete has been accepted
        '404':
          description: Organization not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  '/orgs/{orgID}/secrets':
    get:
      operationId: GetOrgsIDSecrets
      tags:
        - Secrets
        - Organizations
      summary: List all secret keys for an organization
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: orgID
          schema:
            type: string
          required: true
          description: The organization ID.
      responses:
        '200':
          description: A list of all secret keys
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/SecretKeysResponse"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
    patch:
      operationId: PatchOrgsIDSecrets
      tags:
        - Secrets
        - Organizations
      summary: Update secrets in an organization
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: orgID
          schema:
            type: string
          required: true
          description: The organization ID.
      requestBody:
        description: Secret key value pairs to update/add
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/Secrets"
      responses:
        '204':
          description: Keys successfully patched
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  '/orgs/{orgID}/secrets/delete': # had to make this because swagger wouldn't let me have a request body with a DELETE
    post:
      operationId: PostOrgsIDSecrets
      tags:
        - Secrets
        - Organizations
      summary: Delete secrets from an organization
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: orgID
          schema:
            type: string
          required: true
          description: The organization ID.
      requestBody:
        description: Secret key to delete
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/SecretKeys"
      responses:
        '204':
          description: Keys successfully patched
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  '/orgs/{orgID}/members':
    get:
      operationId: GetOrgsIDMembers
      tags:
        - Users
        - Organizations
      summary: List all members of an organization
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: orgID
          schema:
            type: string
          required: true
          description: The organization ID.
      responses:
        '200':
          description: A list of organization members
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ResourceMembers"
        '404':
          description: Organization not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
    post:
      operationId: PostOrgsIDMembers
      tags:
        - Users
        - Organizations
      summary: Add a member to an organization
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: orgID
          schema:
            type: string
          required: true
          description: The organization ID.
      requestBody:
        description: User to add as member
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/AddResourceMemberRequestBody"
      responses:
        '201':
          description: Added to organization created
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ResourceMember"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  '/orgs/{orgID}/members/{userID}':
    delete:
      operationId: DeleteOrgsIDMembersID
      tags:
        - Users
        - Organizations
      summary: Remove a member from an organization
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: userID
          schema:
            type: string
          required: true
          description: The ID of the member to remove.
        - in: path
          name: orgID
          schema:
            type: string
          required: true
          description: The organization ID.
      responses:
        '204':
          description: Member removed
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  '/orgs/{orgID}/owners':
    get:
      operationId: GetOrgsIDOwners
      tags:
        - Users
        - Organizations
      summary: List all owners of an organization
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: orgID
          schema:
            type: string
          required: true
          description: The organization ID.
      responses:
        '200':
          description: A list of organization owners
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ResourceOwners"
        '404':
          description: Organization not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
    post:
      operationId: PostOrgsIDOwners
      tags:
        - Users
        - Organizations
      summary: Add an owner to an organization
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: orgID
          schema:
            type: string
          required: true
          description: The organization ID.
      requestBody:
        description: User to add as owner
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/AddResourceMemberRequestBody"
      responses:
        '201':
          description: Organization owner added
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ResourceOwner"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  '/orgs/{orgID}/owners/{userID}':
    delete:
      operationId: DeleteOrgsIDOwnersID
      tags:
        - Users
        - Organizations
      summary: Remove an owner from an organization
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: userID
          schema:
            type: string
          required: true
          description: The ID of the owner to remove.
        - in: path
          name: orgID
          schema:
            type: string
          required: true
          description: The organization ID.
      responses:
        '204':
          description: Owner removed
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  '/orgs/{orgID}/logs':
    get:
      operationId: GetOrgsIDLogs
      tags:
        - Organizations
        - OperationLogs
      summary: Retrieve operation logs for an organization
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - $ref: '#/components/parameters/Offset'
        - $ref: '#/components/parameters/Limit'
        - in: path
          name: orgID
          required: true
          description: The organization ID.
          schema:
            type: string
      responses:
        '200':
          description: Operation logs for the organization
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/OperationLogs"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  /packages:
    post:
      operationId: CreatePkg
      tags:
        - InfluxPackages
      summary: Create a new Influx package
      requestBody:
        description: Influx package to create.
        required: false
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/PkgCreate"
      responses:
        '200':
          description: Influx package created
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Pkg"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  /packages/apply:
    post:
      operationId: ApplyPkg
      tags:
        - InfluxPackages
      summary: Apply or dry-run an Influx package
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/PkgApply"
          application/x-jsonnet:
            schema:
              $ref: "#/components/schemas/PkgApply"
          text/yml:
            schema:
              $ref: "#/components/schemas/PkgApply"
      responses:
        '200':
          description: >
            Influx package dry-run successful, no new resources created.
            The provided diff and summary will not have IDs for resources
            that do not exist at the time of the dry run.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PkgSummary"
        '201':
          description: >
            Influx package applied successfully. Newly created resources created
            available in summary. The diff compares the state of the world before
            the package is applied with the changes the application will impose.
            This corresponds to `"dryRun": true`
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PkgSummary"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  /packages/stacks:
    post:
      operationId: CreateStack
      tags:
        - InfluxPackages
      summary: Create a new Influx package
      requestBody:
        description: Influx package to create.
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                orgID:
                  type: string
                name:
                  type: string
                description:
                  type: string
                urls:
                  type: array
                  items:
                    type: string
      responses:
        '201':
          description: Influx stack created
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  orgID:
                    type: string
                  name:
                    type: string
                  description:
                    type: string
                  urls:
                    type: array
                    items:
                      type: string
                  createdAt:
                    type: string
                    format: date-time
                    readOnly: true
                  updatedAt:
                    type: string
                    format: date-time
                    readOnly: true
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  /tasks:
    get:
      operationId: GetTasks
      tags:
        - Tasks
      summary: List all tasks
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: query
          name: name
          description: Returns task with a specific name.
          schema:
            type: string
        - in: query
          name: after
          schema:
            type: string
          description: Return tasks after a specified ID.
        - in: query
          name: user
          schema:
            type: string
          description: Filter tasks to a specific user ID.
        - in: query
          name: org
          schema:
            type: string
          description: Filter tasks to a specific organization name.
        - in: query
          name: orgID
          schema:
            type: string
          description: Filter tasks to a specific organization ID.
        - in: query
          name: status
          schema:
            type: string
            enum:
              - active
              - inactive
          description: Filter tasks by a status--"inactive" or "active".
        - in: query
          name: limit
          schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 100
          description: The number of tasks to return
      responses:
        '200':
          description: A list of tasks
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Tasks"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
    post:
      operationId: PostTasks
      tags:
        - Tasks
      summary: Create a new task
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
      requestBody:
        description: Task to create
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/TaskCreateRequest"
      responses:
        '201':
          description: Task created
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Task"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  '/tasks/{taskID}':
    get:
      operationId: GetTasksID
      tags:
        - Tasks
      summary: Retrieve a task
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: taskID
          schema:
            type: string
          required: true
          description: The task ID.
      responses:
        '200':
          description: Task details
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Task"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
    patch:
      operationId: PatchTasksID
      tags:
        - Tasks
      summary: Update a task
      description: Update a task. This will cancel all queued runs.
      requestBody:
        description: Task update to apply
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/TaskUpdateRequest"
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: taskID
          schema:
            type: string
          required: true
          description: The task ID.
      responses:
        '200':
          description: Task updated
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Task"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
    delete:
      operationId: DeleteTasksID
      tags:
        - Tasks
      summary: Delete a task
      description: Deletes a task and all associated records
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: taskID
          schema:
            type: string
          required: true
          description: The ID of the task to delete.
      responses:
        '204':
          description: Task deleted
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  '/tasks/{taskID}/runs':
    get:
      operationId: GetTasksIDRuns
      tags:
        - Tasks
      summary: List runs for a task
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: taskID
          schema:
            type: string
          required: true
          description: The ID of the task to get runs for.
        - in: query
          name: after
          schema:
            type: string
          description: Returns runs after a specific ID.
        - in: query
          name: limit
          schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 100
          description: The number of runs to return
        - in: query
          name: afterTime
          schema:
            type: string
            format: date-time
          description: Filter runs to those scheduled after this time, RFC3339
        - in: query
          name: beforeTime
          schema:
            type: string
            format: date-time
          description: Filter runs to those scheduled before this time, RFC3339
      responses:
        '200':
          description: A list of task runs
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Runs"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
    post:
      operationId: PostTasksIDRuns
      tags:
        - Tasks
      summary: Manually start a task run, overriding the current schedule
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: taskID
          schema:
            type: string
          required: true
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/RunManually"
      responses:
        '201':
          description: Run scheduled to start
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Run"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  '/tasks/{taskID}/runs/{runID}':
    get:
      operationId: GetTasksIDRunsID
      tags:
        - Tasks
      summary: Retrieve a single run for a task
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: taskID
          schema:
            type: string
          required: true
          description: The task ID.
        - in: path
          name: runID
          schema:
            type: string
          required: true
          description: The run ID.
      responses:
        '200':
          description: The run record
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Run"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
    delete:
      operationId: DeleteTasksIDRunsID
      tags:
        - Tasks
      summary: Cancel a running task
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: taskID
          schema:
            type: string
          required: true
          description: The task ID.
        - in: path
          name: runID
          schema:
            type: string
          required: true
          description: The run ID.
      responses:
        '204':
          description: Delete has been accepted
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  '/tasks/{taskID}/runs/{runID}/retry':
    post:
      operationId: PostTasksIDRunsIDRetry
      tags:
        - Tasks
      summary: Retry a task run
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: taskID
          schema:
            type: string
          required: true
          description: The task ID.
        - in: path
          name: runID
          schema:
            type: string
          required: true
          description: The run ID.
      responses:
        '200':
          description: Run that has been queued
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Run"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  '/tasks/{taskID}/logs':
    get:
      operationId: GetTasksIDLogs
      tags:
        - Tasks
      summary: Retrieve all logs for a task
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: taskID
          schema:
            type: string
          required: true
          description: The task ID.
      responses:
        '200':
          description: All logs for a task
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Logs"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  '/tasks/{taskID}/runs/{runID}/logs':
    get:
      operationId: GetTasksIDRunsIDLogs
      tags:
        - Tasks
      summary: Retrieve all logs for a run
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: taskID
          schema:
            type: string
          required: true
          description: ID of task to get logs for.
        - in: path
          name: runID
          schema:
            type: string
          required: true
          description: ID of run to get logs for.
      responses:
        '200':
          description: All logs for a run
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Logs"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  '/tasks/{taskID}/labels':
    get:
      operationId: GetTasksIDLabels
      tags:
        - Tasks
      summary: List all labels for a task
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: taskID
          schema:
            type: string
          required: true
          description: The task ID.
      responses:
        '200':
          description: A list of all labels for a task
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LabelsResponse"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
    post:
      operationId: PostTasksIDLabels
      tags:
        - Tasks
      summary: Add a label to a task
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: taskID
          schema:
            type: string
          required: true
          description: The task ID.
      requestBody:
        description: Label to add
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/LabelMapping"
      responses:
        '201':
          description: A list of all labels for a task
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LabelResponse"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  '/tasks/{taskID}/labels/{labelID}':
    delete:
      operationId: DeleteTasksIDLabelsID
      tags:
        - Tasks
      summary: Delete a label from a task
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: taskID
          schema:
            type: string
          required: true
          description: The task ID.
        - in: path
          name: labelID
          schema:
            type: string
          required: true
          description: The label ID.
      responses:
        '204':
          description: Delete has been accepted
        '404':
          description: Task not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  /me:
    get:
      operationId: GetMe
      tags:
        - Users
      summary: Return the current authenticated user
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
      responses:
        '200':
          description: Currently authenticated user
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/User"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  /me/password:
    put:
      operationId: PutMePassword
      tags:
        - Users
      summary: Update a password
      security:
        - BasicAuth: []
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
      requestBody:
        description: New password
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/PasswordResetBody"
      responses:
        '204':
          description: Password successfully updated
        default:
          description: Unsuccessful authentication
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  '/tasks/{taskID}/members':
    get:
      operationId: GetTasksIDMembers
      tags:
        - Users
        - Tasks
      summary: List all task members
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: taskID
          schema:
            type: string
          required: true
          description: The task ID.
      responses:
        '200':
          description: A list of users who have member privileges for a task
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ResourceMembers"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
    post:
      operationId: PostTasksIDMembers
      tags:
        - Users
        - Tasks
      summary: Add a member to a task
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: taskID
          schema:
            type: string
          required: true
          description: The task ID.
      requestBody:
        description: User to add as member
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/AddResourceMemberRequestBody"
      responses:
        '201':
          description: Added to task members
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ResourceMember"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  '/tasks/{taskID}/members/{userID}':
    delete:
      operationId: DeleteTasksIDMembersID
      tags:
        - Users
        - Tasks
      summary: Remove a member from a task
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: userID
          schema:
            type: string
          required: true
          description: The ID of the member to remove.
        - in: path
          name: taskID
          schema:
            type: string
          required: true
          description: The task ID.
      responses:
        '204':
          description: Member removed
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  '/tasks/{taskID}/owners':
    get:
      operationId: GetTasksIDOwners
      tags:
        - Users
        - Tasks
      summary: List all owners of a task
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: taskID
          schema:
            type: string
          required: true
          description: The task ID.
      responses:
        '200':
          description: A list of users who have owner privileges for a task
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ResourceOwners"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
    post:
      operationId: PostTasksIDOwners
      tags:
        - Users
        - Tasks
      summary: Add an owner to a task
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: taskID
          schema:
            type: string
          required: true
          description: The task ID.
      requestBody:
        description: User to add as owner
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/AddResourceMemberRequestBody"
      responses:
        '201':
          description: Added to task owners
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ResourceOwner"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  '/tasks/{taskID}/owners/{userID}':
    delete:
      operationId: DeleteTasksIDOwnersID
      tags:
        - Users
        - Tasks
      summary: Remove an owner from a task
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: userID
          schema:
            type: string
          required: true
          description: The ID of the owner to remove.
        - in: path
          name: taskID
          schema:
            type: string
          required: true
          description: The task ID.
      responses:
        '204':
          description: Owner removed
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  /users:
    get:
      operationId: GetUsers
      tags:
        - Users
      summary: List all users
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
      responses:
        '200':
          description: A list of users
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Users"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
    post:
      operationId: PostUsers
      tags:
        - Users
      summary: Create a user
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
      requestBody:
        description: User to create
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/User"
      responses:
        '201':
          description: User created
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/User"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  '/users/{userID}':
    get:
      operationId: GetUsersID
      tags:
        - Users
      summary: Retrieve a user
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: userID
          schema:
            type: string
          required: true
          description: The user ID.
      responses:
        '200':
          description: User details
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/User"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
    patch:
      operationId: PatchUsersID
      tags:
        - Users
      summary: Update a user
      requestBody:
        description: User update to apply
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/User"
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: userID
          schema:
            type: string
          required: true
          description: The ID of the user to update.
      responses:
        '200':
          description: User updated
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/User"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
    delete:
      operationId: DeleteUsersID
      tags:
        - Users
      summary: Delete a user
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: userID
          schema:
            type: string
          required: true
          description: The ID of the user to delete.
      responses:
        '204':
          description: User deleted
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  '/users/{userID}/password':
    put:
      operationId: PutUsersIDPassword
      tags:
        - Users
      summary: Update a password
      security:
        - BasicAuth: []
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: userID
          schema:
            type: string
          required: true
          description: The user ID.
      requestBody:
        description: New password
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/PasswordResetBody"
      responses:
        '204':
          description: Password successfully updated
        default:
          description: Unsuccessful authentication
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  '/users/{userID}/logs':
    get:
      operationId: GetUsersIDLogs
      tags:
        - Users
        - OperationLogs
      summary: Retrieve operation logs for a user
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - $ref: '#/components/parameters/Offset'
        - $ref: '#/components/parameters/Limit'
        - in: path
          name: userID
          required: true
          description: The user ID.
          schema:
            type: string
      responses:
        '200':
          description: Operation logs for the user
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/OperationLogs"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  /checks:
    get:
      operationId: GetChecks
      tags:
          - Checks
      summary: Get all checks
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - $ref: '#/components/parameters/Offset'
        - $ref: '#/components/parameters/Limit'
        - in: query
          name: orgID
          required: true
          description: Only show checks that belong to a specific organization ID.
          schema:
            type: string
      responses:
        '200':
          description: A list of checks
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Checks"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                  $ref: "#/components/schemas/Error"
    post:
      operationId: CreateCheck
      tags:
        - Checks
      summary: Add new check
      requestBody:
        description: Check to create
        required: true
        content:
          application/json:
            schema:
                $ref: "#/components/schemas/PostCheck"
      responses:
        '201':
          description: Check created
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Check"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  '/checks/{checkID}':
    get:
      operationId: GetChecksID
      tags:
        - Checks
      summary: Get a check
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: checkID
          schema:
            type: string
          required: true
          description: The check ID.
      responses:
        '200':
          description: The check requested
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Check"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
    put:
      operationId: PutChecksID
      tags:
        - Checks
      summary: Update a check
      requestBody:
        description: Check update to apply
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/Check"
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: checkID
          schema:
            type: string
          required: true
          description: The check ID.
      responses:
        '200':
          description: An updated check
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Check"
        '404':
          description: The check was not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
    patch:
      operationId: PatchChecksID
      tags:
        - Checks
      summary: Update a check
      requestBody:
        description: Check update to apply
        required: true
        content:
          application/json:
            schema:
                $ref: "#/components/schemas/CheckPatch"
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: checkID
          schema:
            type: string
          required: true
          description: The check ID.
      responses:
        '200':
          description: An updated check
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Check"
        '404':
          description: The check was not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
    delete:
      operationId: DeleteChecksID
      tags:
        - Checks
      summary: Delete a check
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: checkID
          schema:
            type: string
          required: true
          description: The check ID.
      responses:
        '204':
          description: Delete has been accepted
        '404':
          description: The check was not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  '/checks/{checkID}/labels':
    get:
      operationId: GetChecksIDLabels
      tags:
        - Checks
      summary: List all labels for a check
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: checkID
          schema:
            type: string
          required: true
          description: The check ID.
      responses:
        '200':
          description: A list of all labels for a check
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LabelsResponse"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
    post:
      operationId: PostChecksIDLabels
      tags:
        - Checks
      summary: Add a label to a check
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: checkID
          schema:
            type: string
          required: true
          description: The check ID.
      requestBody:
        description: Label to add
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/LabelMapping"
      responses:
        '201':
          description: The label was added to the check
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LabelResponse"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  '/checks/{checkID}/labels/{labelID}':
    delete:
      operationId: DeleteChecksIDLabelsID
      tags:
        - Checks
      summary: Delete label from a check
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: checkID
          schema:
            type: string
          required: true
          description: The check ID.
        - in: path
          name: labelID
          schema:
            type: string
          required: true
          description: The ID of the label to delete.
      responses:
        '204':
          description: Delete has been accepted
        '404':
          description: Check or label not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  /notificationRules:
    get:
      operationId: GetNotificationRules
      tags:
          - NotificationRules
      summary: Get all notification rules
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - $ref: '#/components/parameters/Offset'
        - $ref: '#/components/parameters/Limit'
        - in: query
          name: orgID
          required: true
          description: Only show notification rules that belong to a specific organization ID.
          schema:
            type: string
        - in: query
          name: checkID
          description: Only show notifications that belong to the specific check ID.
          schema:
            type: string
        - in: query
          name: tag
          description: Only return notification rules that "would match" statuses which contain the tag key value pairs provided.
          schema:
            type: string
            pattern: ^[a-zA-Z0-9_]+:[a-zA-Z0-9_]+$
            example: env:prod
      responses:
        '200':
          description: A list of notification rules
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/NotificationRules"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                  $ref: "#/components/schemas/Error"
    post:
      operationId: CreateNotificationRule
      tags:
        - NotificationRules
      summary: Add a notification rule
      requestBody:
        description: Notification rule to create
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/PostNotificationRule"
      responses:
        '201':
          description: Notification rule created
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/NotificationRule"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  '/checks/{checkID}/query':
    get:
      operationId: GetChecksIDQuery
      tags:
        - Checks
      summary: Get a check query
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: checkID
          schema:
            type: string
          required: true
          description: The check ID.
      responses:
        '200':
          description: The check query requested
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/FluxResponse"
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        '404':
          description: Check not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  '/notificationRules/{ruleID}':
    get:
      operationId: GetNotificationRulesID
      tags:
        - NotificationRules
      summary: Get a notification rule
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: ruleID
          schema:
            type: string
          required: true
          description: The notification rule ID.
      responses:
        '200':
          description: The notification rule requested
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/NotificationRule"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
    put:
      operationId: PutNotificationRulesID
      tags:
        - NotificationRules
      summary: Update a notification rule
      requestBody:
        description: Notification rule update to apply
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/NotificationRule"
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: ruleID
          schema:
            type: string
          required: true
          description: The notification rule ID.
      responses:
        '200':
          description: An updated notification rule
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/NotificationRule"
        '404':
          description: The notification rule was not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
    patch:
      operationId: PatchNotificationRulesID
      tags:
        - NotificationRules
      summary: Update a notification rule
      requestBody:
        description: Notification rule update to apply
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/NotificationRuleUpdate"
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: ruleID
          schema:
            type: string
          required: true
          description: The notification rule ID.
      responses:
        '200':
          description: An updated notification rule
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/NotificationRule"
        '404':
          description: The notification rule was not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
    delete:
      operationId: DeleteNotificationRulesID
      tags:
        - NotificationRules
      summary: Delete a notification rule
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: ruleID
          schema:
            type: string
          required: true
          description: The notification rule ID.
      responses:
        '204':
          description: Delete has been accepted
        '404':
          description: The check was not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  '/notificationRules/{ruleID}/labels':
    get:
      operationId: GetNotificationRulesIDLabels
      tags:
        - NotificationRules
      summary: List all labels for a notification rule
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: ruleID
          schema:
            type: string
          required: true
          description: The notification rule ID.
      responses:
        '200':
          description: A list of all labels for a notification rule
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LabelsResponse"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
    post:
      operationId: PostNotificationRuleIDLabels
      tags:
        - NotificationRules
      summary: Add a label to a notification rule
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: ruleID
          schema:
            type: string
          required: true
          description: The notification rule ID.
      requestBody:
        description: Label to add
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/LabelMapping"
      responses:
        '201':
          description: The label was added to the notification rule
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LabelResponse"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  '/notificationRules/{ruleID}/labels/{labelID}':
    delete:
      operationId: DeleteNotificationRulesIDLabelsID
      tags:
        - NotificationRules
      summary: Delete label from a notification rule
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: ruleID
          schema:
            type: string
          required: true
          description: The notification rule ID.
        - in: path
          name: labelID
          schema:
            type: string
          required: true
          description: The ID of the label to delete.
      responses:
        '204':
          description: Delete has been accepted
        '404':
          description: Rule or label not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  '/notificationRules/{ruleID}/query':
    get:
      operationId: GetNotificationRulesIDQuery
      tags:
        - Rules
      summary: Get a notification rule query
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: ruleID
          schema:
            type: string
          required: true
          description: The notification rule ID.
      responses:
        '200':
          description: The notification rule query requested
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/FluxResponse"
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        '404':
          description: Notification rule not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  /notificationEndpoints:
    get:
      operationId: GetNotificationEndpoints
      tags:
          - NotificationEndpoints
      summary: Get all notification endpoints
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - $ref: '#/components/parameters/Offset'
        - $ref: '#/components/parameters/Limit'
        - in: query
          name: orgID
          required: true
          description: Only show notification endpoints that belong to specific organization ID.
          schema:
            type: string
      responses:
        '200':
          description: A list of notification endpoints
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/NotificationEndpoints"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                  $ref: "#/components/schemas/Error"
    post:
      operationId: CreateNotificationEndpoint
      tags:
        - NotificationEndpoints
      summary: Add a notification endpoint
      requestBody:
        description: Notification endpoint to create
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/PostNotificationEndpoint"
      responses:
        '201':
          description: Notification endpoint created
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/NotificationEndpoint"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  '/notificationEndpoints/{endpointID}':
    get:
      operationId: GetNotificationEndpointsID
      tags:
        - NotificationEndpoints
      summary: Get a notification endpoint
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: endpointID
          schema:
            type: string
          required: true
          description: The notification endpoint ID.
      responses:
        '200':
          description: The notification endpoint requested
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/NotificationEndpoint"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
    put:
      operationId: PutNotificationEndpointsID
      tags:
        - NotificationEndpoints
      summary: Update a notification endpoint
      requestBody:
        description: A new notification endpoint to replace the existing endpoint with
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/NotificationEndpoint"
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: endpointID
          schema:
            type: string
          required: true
          description: The notification endpoint ID.
      responses:
        '200':
          description: An updated notification endpoint
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/NotificationEndpoint"
        '404':
          description: The notification endpoint was not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
    patch:
      operationId: PatchNotificationEndpointsID
      tags:
        - NotificationEndpoints
      summary: Update a notification endpoint
      requestBody:
        description: Check update to apply
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/NotificationEndpointUpdate"
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: endpointID
          schema:
            type: string
          required: true
          description: The notification endpoint ID.
      responses:
        '200':
          description: An updated notification endpoint
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/NotificationEndpoint"
        '404':
          description: The notification endpoint was not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
    delete:
      operationId: DeleteNotificationEndpointsID
      tags:
        - NotificationEndpoints
      summary: Delete a notification endpoint
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: endpointID
          schema:
            type: string
          required: true
          description: The notification endpoint ID.
      responses:
        '204':
          description: Delete has been accepted
        '404':
          description: The endpoint was not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  '/notificationEndpoints/{endpointID}/labels':
    get:
      operationId: GetNotificationEndpointsIDLabels
      tags:
        - NotificationEndpoints
      summary: List all labels for a notification endpoint
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: endpointID
          schema:
            type: string
          required: true
          description: The notification endpoint ID.
      responses:
        '200':
          description: A list of all labels for a notification endpoint
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LabelsResponse"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
    post:
      operationId: PostNotificationEndpointIDLabels
      tags:
        - NotificationEndpoints
      summary: Add a label to a notification endpoint
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: endpointID
          schema:
            type: string
          required: true
          description: The notification endpoint ID.
      requestBody:
        description: Label to add
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/LabelMapping"
      responses:
        '201':
          description: The label was added to the notification endpoint
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LabelResponse"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  '/notificationEndpoints/{endpointID}/labels/{labelID}':
    delete:
      operationId: DeleteNotificationEndpointsIDLabelsID
      tags:
        - NotificationEndpoints
      summary: Delete a label from a notification endpoint
      parameters:
        - $ref: '#/components/parameters/TraceSpan'
        - in: path
          name: endpointID
          schema:
            type: string
          required: true
          description: The notification endpoint ID.
        - in: path
          name: labelID
          schema:
            type: string
          required: true
          description: The ID of the label to delete.
      responses:
        '204':
          description: Delete has been accepted
        '404':
          description: Endpoint or label not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
components:
  parameters:
    Offset:
      in: query
      name: offset
      required: false
      schema:
        type: integer
        minimum: 0
    Limit:
      in: query
      name: limit
      required: false
      schema:
        type: integer
        minimum: 1
        maximum: 100
        default: 20
    Descending:
      in: query
      name: descending
      required: false
      schema:
        type: boolean
        default: false
    SortBy:
      in: query
      name: sortBy
      required: false
      schema:
        type: string
    TraceSpan:
      in: header
      name: Zap-Trace-Span
      description: OpenTracing span context
      example:
        trace_id: '1'
        span_id: '1'
        baggage:
          key: value
      required: false
      schema:
        type: string
  schemas:
    LanguageRequest:
      description: Flux query to be analyzed.
      type: object
      required:
        - query
      properties:
        query:
          description: Flux query script to be analyzed
          type: string
    Query:
      description: Query influx using the Flux language
      type: object
      required:
        - query
      properties:
        extern:
          $ref: "#/components/schemas/File"
        query:
          description: Query script to execute.
          type: string
        type:
          description: The type of query. Must be "flux".
          type: string
          enum:
            - flux
        dialect:
          $ref: "#/components/schemas/Dialect"
        now:
          description: Specifies the time that should be reported as "now" in the query. Default is the server's now time.
          type: string
          format: date-time
    InfluxQLQuery:
      description: Query influx using the InfluxQL language
      type: object
      required:
        - query
      properties:
        query:
          description: InfluxQL query execute.
          type: string
        type:
          description: The type of query. Must be "influxql".
          type: string
          enum:
            - influxql
        bucket:
          description: Bucket is to be used instead of the database and retention policy specified in the InfluxQL query.
          type: string
    Package:
      description: Represents a complete package source tree.
      type: object
      properties:
        type:
          $ref: "#/components/schemas/NodeType"
        path:
          description: Package import path
          type: string
        package:
          description: Package name
          type: string
        files:
          description: Package files
          type: array
          items:
            $ref: "#/components/schemas/File"
    File:
      description: Represents a source from a single file
      type: object
      properties:
        type:
          $ref: "#/components/schemas/NodeType"
        name:
          description: The name of the file.
          type: string
        package:
          $ref: "#/components/schemas/PackageClause"
        imports:
          description: A list of package imports
          type: array
          items:
            $ref: "#/components/schemas/ImportDeclaration"
        body:
          description: List of Flux statements
          type: array
          items:
            $ref: "#/components/schemas/Statement"
    PackageClause:
      description: Defines a package identifier
      type: object
      properties:
        type:
          $ref: "#/components/schemas/NodeType"
        name:
          $ref: "#/components/schemas/Identifier"
    ImportDeclaration:
      description: Declares a package import
      type: object
      properties:
        type:
          $ref: "#/components/schemas/NodeType"
        as:
          $ref: "#/components/schemas/Identifier"
        path:
          $ref: "#/components/schemas/StringLiteral"
    DeletePredicateRequest:
      description: The delete predicate request.
      type: object
      required: [start, stop]
      properties:
        start:
          description: RFC3339Nano
          type: string
          format: date-time
        stop:
          description: RFC3339Nano
          type: string
          format: date-time
        predicate:
          description: InfluxQL-like delete statement
          example: tag1="value1" and (tag2="value2" and tag3!="value3")
          type: string
    Node:
      oneOf:
        - $ref: "#/components/schemas/Expression"
        - $ref: "#/components/schemas/Block"
    Block:
      description: A set of statements
      type: object
      properties:
        type:
          $ref: "#/components/schemas/NodeType"
        body:
          description: Block body
          type: array
          items:
            $ref: "#/components/schemas/Statement"
    Statement:
      oneOf:
        - $ref: "#/components/schemas/BadStatement"
        - $ref: "#/components/schemas/VariableAssignment"
        - $ref: "#/components/schemas/MemberAssignment"
        - $ref: "#/components/schemas/ExpressionStatement"
        - $ref: "#/components/schemas/ReturnStatement"
        - $ref: "#/components/schemas/OptionStatement"
        - $ref: "#/components/schemas/BuiltinStatement"
        - $ref: "#/components/schemas/TestStatement"
    BadStatement:
      description: A placeholder for statements for which no correct statement nodes can be created
      type: object
      properties:
        type:
          $ref: "#/components/schemas/NodeType"
        text:
          description: Raw source text
          type: string
    VariableAssignment:
      description: Represents the declaration of a variable
      type: object
      properties:
        type:
          $ref: "#/components/schemas/NodeType"
        id:
          $ref: "#/components/schemas/Identifier"
        init:
          $ref: "#/components/schemas/Expression"
    MemberAssignment:
      description: Object property assignment
      type: object
      properties:
        type:
          $ref: "#/components/schemas/NodeType"
        member:
          $ref: "#/components/schemas/MemberExpression"
        init:
          $ref: "#/components/schemas/Expression"
    ExpressionStatement:
      description: May consist of an expression that does not return a value and is executed solely for its side-effects
      type: object
      properties:
        type:
          $ref: "#/components/schemas/NodeType"
        expression:
          $ref: "#/components/schemas/Expression"
    ReturnStatement:
      description: Defines an expression to return
      type: object
      properties:
        type:
          $ref: "#/components/schemas/NodeType"
        argument:
          $ref: "#/components/schemas/Expression"
    OptionStatement:
      description: A single variable declaration
      type: object
      properties:
        type:
          $ref: "#/components/schemas/NodeType"
        assignment:
          oneOf:
            - $ref: "#/components/schemas/VariableAssignment"
            - $ref: "#/components/schemas/MemberAssignment"
    BuiltinStatement:
      description: Declares a builtin identifier and its type
      type: object
      properties:
        type:
          $ref: "#/components/schemas/NodeType"
        id:
          $ref: "#/components/schemas/Identifier"
    TestStatement:
      description: Declares a Flux test case
      type: object
      properties:
        type:
          $ref: "#/components/schemas/NodeType"
        assignment:
          $ref: "#/components/schemas/VariableAssignment"
    Expression:
      oneOf:
        - $ref: "#/components/schemas/ArrayExpression"
        - $ref: "#/components/schemas/FunctionExpression"
        - $ref: "#/components/schemas/BinaryExpression"
        - $ref: "#/components/schemas/CallExpression"
        - $ref: "#/components/schemas/ConditionalExpression"
        - $ref: "#/components/schemas/LogicalExpression"
        - $ref: "#/components/schemas/MemberExpression"
        - $ref: "#/components/schemas/IndexExpression"
        - $ref: "#/components/schemas/ObjectExpression"
        - $ref: "#/components/schemas/ParenExpression"
        - $ref: "#/components/schemas/PipeExpression"
        - $ref: "#/components/schemas/UnaryExpression"
        - $ref: "#/components/schemas/BooleanLiteral"
        - $ref: "#/components/schemas/DateTimeLiteral"
        - $ref: "#/components/schemas/DurationLiteral"
        - $ref: "#/components/schemas/FloatLiteral"
        - $ref: "#/components/schemas/IntegerLiteral"
        - $ref: "#/components/schemas/PipeLiteral"
        - $ref: "#/components/schemas/RegexpLiteral"
        - $ref: "#/components/schemas/StringLiteral"
        - $ref: "#/components/schemas/UnsignedIntegerLiteral"
        - $ref: "#/components/schemas/Identifier"
    ArrayExpression:
      description: Used to create and directly specify the elements of an array object
      type: object
      properties:
        type:
          $ref: "#/components/schemas/NodeType"
        elements:
          description: Elements of the array
          type: array
          items:
            $ref: "#/components/schemas/Expression"
    FunctionExpression:
      description: Function expression
      type: object
      properties:
        type:
          $ref: "#/components/schemas/NodeType"
        params:
          description: Function parameters
          type: array
          items:
            $ref: "#/components/schemas/Property"
        body:
          $ref: "#/components/schemas/Node"
    BinaryExpression:
      description:  uses binary operators to act on two operands in an expression
      type: object
      properties:
        type:
          $ref: "#/components/schemas/NodeType"
        operator:
          type: string
        left:
          $ref: "#/components/schemas/Expression"
        right:
          $ref: "#/components/schemas/Expression"
    CallExpression:
      description: Represents a function call
      type: object
      properties:
        type:
          $ref: "#/components/schemas/NodeType"
        callee:
          $ref: "#/components/schemas/Expression"
        arguments:
          description: Function arguments
          type: array
          items:
            $ref: "#/components/schemas/Expression"
    ConditionalExpression:
      description: Selects one of two expressions, `Alternate` or `Consequent`, depending on a third boolean expression, `Test`
      type: object
      properties:
        type:
          $ref: "#/components/schemas/NodeType"
        test:
          $ref: "#/components/schemas/Expression"
        alternate:
          $ref: "#/components/schemas/Expression"
        consequent:
          $ref: "#/components/schemas/Expression"
    LogicalExpression:
      description: Represents the rule conditions that collectively evaluate to either true or false
      type: object
      properties:
        type:
          $ref: "#/components/schemas/NodeType"
        operator:
          type: string
        left:
          $ref: "#/components/schemas/Expression"
        right:
          $ref: "#/components/schemas/Expression"
    MemberExpression:
      description: Represents accessing a property of an object
      type: object
      properties:
        type:
          $ref: "#/components/schemas/NodeType"
        object:
          $ref: "#/components/schemas/Expression"
        property:
          $ref: "#/components/schemas/PropertyKey"
    IndexExpression:
      description: Represents indexing into an array
      type: object
      properties:
        type:
          $ref: "#/components/schemas/NodeType"
        array:
          $ref: "#/components/schemas/Expression"
        index:
          $ref: "#/components/schemas/Expression"
    ObjectExpression:
      description: Allows the declaration of an anonymous object within a declaration
      type: object
      properties:
        type:
          $ref: "#/components/schemas/NodeType"
        properties:
          description: Object properties
          type: array
          items:
            $ref: "#/components/schemas/Property"
    ParenExpression:
      description: Represents an expression wrapped in parenthesis
      type: object
      properties:
        type:
          $ref: "#/components/schemas/NodeType"
        expression:
          $ref: "#/components/schemas/Expression"
    PipeExpression:
      description: Call expression with pipe argument
      type: object
      properties:
        type:
          $ref: "#/components/schemas/NodeType"
        argument:
          $ref: "#/components/schemas/Expression"
        call:
          $ref: "#/components/schemas/CallExpression"
    UnaryExpression:
      description: Uses operators to act on a single operand in an expression
      type: object
      properties:
        type:
          $ref: "#/components/schemas/NodeType"
        operator:
          type: string
        argument:
          $ref: "#/components/schemas/Expression"
    BooleanLiteral:
      description: Represents boolean values
      type: object
      properties:
        type:
          $ref: "#/components/schemas/NodeType"
        value:
          type: boolean
    DateTimeLiteral:
      description: Represents an instant in time with nanosecond precision using the syntax of golang's RFC3339 Nanosecond variant
      type: object
      properties:
        type:
          $ref: "#/components/schemas/NodeType"
        value:
          type: string
    DurationLiteral:
      description: Represents the elapsed time between two instants as an int64 nanosecond count with syntax of golang's time.Duration
      type: object
      properties:
        type:
          $ref: "#/components/schemas/NodeType"
        values:
          description: Duration values
          type: array
          items:
            $ref: "#/components/schemas/Duration"
    FloatLiteral:
      description: Represents floating point numbers according to the double representations defined by the IEEE-754-1985
      type: object
      properties:
        type:
          $ref: "#/components/schemas/NodeType"
        value:
          type: number
    IntegerLiteral:
      description: Represents integer numbers
      type: object
      properties:
        type:
          $ref: "#/components/schemas/NodeType"
        value:
          type: string
    PipeLiteral:
      description: Represents a specialized literal value, indicating the left hand value of a pipe expression
      type: object
      properties:
        type:
          $ref: "#/components/schemas/NodeType"
    RegexpLiteral:
      description: Expressions begin and end with `/` and are regular expressions with syntax accepted by RE2
      type: object
      properties:
        type:
          $ref: "#/components/schemas/NodeType"
        value:
          type: string
    StringLiteral:
      description: Expressions begin and end with double quote marks
      type: object
      properties:
        type:
          $ref: "#/components/schemas/NodeType"
        value:
          type: string
    UnsignedIntegerLiteral:
      description: Represents integer numbers
      type: object
      properties:
        type:
          $ref: "#/components/schemas/NodeType"
        value:
          type: string
    Duration:
      description: A pair consisting of length of time and the unit of time measured. It is the atomic unit from which all duration literals are composed.
      type: object
      properties:
        type:
          $ref: "#/components/schemas/NodeType"
        magnitude:
          type: integer
        unit:
          type: string
    Property:
      description: The value associated with a key
      type: object
      properties:
        type:
          $ref: "#/components/schemas/NodeType"
        key:
          $ref: "#/components/schemas/PropertyKey"
        value:
          $ref: "#/components/schemas/Expression"
    PropertyKey:
      oneOf:
        - $ref: "#/components/schemas/Identifier"
        - $ref: "#/components/schemas/StringLiteral"
    Identifier:
      description: A valid Flux identifier
      type: object
      properties:
        type:
          $ref: "#/components/schemas/NodeType"
        name:
          type: string
    NodeType:
      description: Type of AST node
      type: string
    Dialect:
          description: Dialect are options to change the default CSV output format; https://www.w3.org/TR/2015/REC-tabular-metadata-20151217/#dialect-descriptions
          type: object
          properties:
            header:
              description: If true, the results will contain a header row
              type: boolean
              default: true
            delimiter:
              description: Separator between cells; the default is ,
              type: string
              default: ","
              maxLength: 1
              minLength: 1
            annotations:
              description: Https://www.w3.org/TR/2015/REC-tabular-data-model-20151217/#columns
              type: array
              items:
                type: string
                enum:
                  - "group"
                  - "datatype"
                  - "default"
                uniqueItems: true
            commentPrefix:
              description: Character prefixed to comment strings
              type: string
              default: "#"
              maxLength: 1
              minLength: 0
            dateTimeFormat:
              description: Format of timestamps
              type: string
              default: "RFC3339"
              enum:
                - RFC3339
                - RFC3339Nano
    Permission:
      required: [action, resource]
      properties:
        action:
          type: string
          enum:
            - read
            - write
        resource:
          type: object
          required: [type]
          properties:
            type:
              type: string
              enum:
                - authorizations
                - buckets
                - dashboards
                - orgs
                - sources
                - tasks
                - telegrafs
                - users
                - variables
                - scrapers
                - secrets
                - labels
                - views
                - documents
                - notificationRules
                - notificationEndpoints
                - checks
            id:
              type: string
              nullable: true
              description: If ID is set that is a permission for a specific resource. if it is not set it is a permission for all resources of that resource type.
            name:
              type: string
              nullable: true
              description: Optional name of the resource if the resource has a name field.
            orgID:
              type: string
              nullable: true
              description: If orgID is set that is a permission for all resources owned my that org. if it is not set it is a permission for all resources of that resource type.
            org:
              type: string
              nullable: true
              description: Optional name of the organization of the organization with orgID.
    AuthorizationUpdateRequest:
      properties:
        status:
          description: If inactive the token is inactive and requests using the token will be rejected.
          default: active
          type: string
          enum:
            - active
            - inactive
        description:
          type: string
          description: A description of the token.
    Authorization:
      required: [orgID, permissions]
      allOf:
        - $ref: "#/components/schemas/AuthorizationUpdateRequest"
        - type: object
          properties:
            createdAt:
              type: string
              format: date-time
              readOnly: true
            updatedAt:
              type: string
              format: date-time
              readOnly: true
            orgID:
              type: string
              description: ID of org that authorization is scoped to.
            permissions:
              type: array
              minLength: 1
              description: List of permissions for an auth.  An auth must have at least one Permission.
              items:
                $ref: "#/components/schemas/Permission"
            id:
              readOnly: true
              type: string
            token:
              readOnly: true
              type: string
              description: Passed via the Authorization Header and Token Authentication type.
            userID:
              readOnly: true
              type: string
              description: ID of user that created and owns the token.
            user:
              readOnly: true
              type: string
              description: Name of user that created and owns the token.
            org:
              readOnly: true
              type: string
              description: Name of the org token is scoped to.
            links:
              type: object
              readOnly: true
              example:
                self: "/api/v2/authorizations/1"
                user: "/api/v2/users/12"
              properties:
                self:
                  readOnly: true
                  $ref: "#/components/schemas/Link"
                user:
                  readOnly: true
                  $ref: "#/components/schemas/Link"
    Authorizations:
      type: object
      properties:
        links:
          readOnly: true
          $ref: "#/components/schemas/Links"
        authorizations:
          type: array
          items:
            $ref: "#/components/schemas/Authorization"
    PostBucketRequest:
      properties:
        orgID:
          type: string
        name:
          type: string
        description:
          type: string
        rp:
          type: string
        retentionRules:
          $ref: "#/components/schemas/RetentionRules"
      required: [name, retentionRules]
    Bucket:
      properties:
        links:
          type: object
          readOnly: true
          example:
            labels: "/api/v2/buckets/1/labels"
            logs: "/api/v2/buckets/1/logs"
            members: "/api/v2/buckets/1/members"
            org: "/api/v2/orgs/2"
            owners: "/api/v2/buckets/1/owners"
            self: "/api/v2/buckets/1"
            write: "/api/v2/write?org=2&bucket=1"
          properties:
            labels:
              description: URL to retrieve labels for this bucket
              $ref: "#/components/schemas/Link"
            logs:
              description: URL to retrieve operation logs for this bucket
              $ref: "#/components/schemas/Link"
            members:
              description: URL to retrieve members that can read this bucket
              $ref: "#/components/schemas/Link"
            org:
              description: URL to retrieve parent organization for this bucket
              $ref: "#/components/schemas/Link"
            owners:
              description: URL to retrieve owners that can read and write to this bucket.
              $ref: "#/components/schemas/Link"
            self:
              description: URL for this bucket
              $ref: "#/components/schemas/Link"
            write:
              description: URL to write line protocol for this bucket
              $ref: "#/components/schemas/Link"
        id:
          readOnly: true
          type: string
        type:
          readOnly: true
          type: string
          default: user
          enum:
            - user
            - system
        name:
          type: string
        description:
          type: string
        orgID:
          type: string
        rp:
          type: string
        createdAt:
          type: string
          format: date-time
          readOnly: true
        updatedAt:
          type: string
          format: date-time
          readOnly: true
        retentionRules:
          $ref: "#/components/schemas/RetentionRules"
        labels:
          $ref: "#/components/schemas/Labels"
      required: [name, retentionRules]
    Buckets:
      type: object
      properties:
        links:
          readOnly: true
          $ref: "#/components/schemas/Links"
        buckets:
          type: array
          items:
            $ref: "#/components/schemas/Bucket"
    RetentionRules:
      type: array
      description: Rules to expire or retain data.  No rules means data never expires.
      items:
        $ref: "#/components/schemas/RetentionRule"
    RetentionRule:
      type: object
      properties:
        type:
          type: string
          default: expire
          enum:
            - expire
        everySeconds:
          type: integer
          description: Duration in seconds for how long data will be kept in the database.
          example: 86400
          minimum: 1
      required: [type, everySeconds]
    Link:
      type: string
      format: uri
      readOnly: true
      description: URI of resource.
    Links:
      type: object
      properties:
        next:
          $ref: "#/components/schemas/Link"
        self:
          $ref: "#/components/schemas/Link"
        prev:
          $ref: "#/components/schemas/Link"
      required: [self]
    Logs:
      type: object
      properties:
        events:
          readOnly: true
          type: array
          items:
            $ref: "#/components/schemas/LogEvent"
    LogEvent:
      type: object
      properties:
        time:
          readOnly: true
          description: Time event occurred, RFC3339Nano.
          type: string
          format: date-time
        message:
          readOnly: true
          description: A description of the event that occurred.
          type: string
          example: Halt and catch fire
    OperationLog:
      type: object
      readOnly: true
      properties:
        description:
          type: string
          description: A description of the event that occurred.
          example: Bucket Created
        time:
          type: string
          description: Time event occurred, RFC3339Nano.
          format: date-time
        userID:
          type: string
          description: ID of the user who operated the event.
        links:
          type: object
          properties:
            user:
              $ref: "#/components/schemas/Link"
    OperationLogs:
      type: object
      properties:
        logs:
          type: array
          items:
            $ref: "#/components/schemas/OperationLog"
        links:
          $ref: "#/components/schemas/Links"
    Organization:
      properties:
        links:
          type: object
          readOnly: true
          example:
            self: "/api/v2/orgs/1"
            members: "/api/v2/orgs/1/members"
            owners: "/api/v2/orgs/1/owners"
            labels: "/api/v2/orgs/1/labels"
            secrets: "/api/v2/orgs/1/secrets"
            buckets: "/api/v2/buckets?org=myorg"
            tasks: "/api/v2/tasks?org=myorg"
            dashboards: "/api/v2/dashboards?org=myorg"
            logs: "/api/v2/orgs/1/logs"
          properties:
            self:
              $ref: "#/components/schemas/Link"
            members:
              $ref: "#/components/schemas/Link"
            owners:
              $ref: "#/components/schemas/Link"
            labels:
              $ref: "#/components/schemas/Link"
            secrets:
              $ref: "#/components/schemas/Link"
            buckets:
              $ref: "#/components/schemas/Link"
            tasks:
              $ref: "#/components/schemas/Link"
            dashboards:
              $ref: "#/components/schemas/Link"
            logs:
              $ref: "#/components/schemas/Link"
        id:
          readOnly: true
          type: string
        name:
          type: string
        description:
          type: string
        createdAt:
          type: string
          format: date-time
          readOnly: true
        updatedAt:
          type: string
          format: date-time
          readOnly: true
        status:
          description: If inactive the organization is inactive.
          default: active
          type: string
          enum:
            - active
            - inactive
      required: [name]
    Organizations:
      type: object
      properties:
        links:
          $ref: "#/components/schemas/Links"
        orgs:
          type: array
          items:
            $ref: "#/components/schemas/Organization"
    PkgApply:
      type: object
      properties:
        dryRun:
          type: boolean
        orgID:
          type: string
        stackID:
          type: string
        package:
          $ref: "#/components/schemas/Pkg"
        packages:
          type: array
          items:
            $ref: "#/components/schemas/Pkg"
        secrets:
          type: object
          additionalProperties:
            type: string
        remotes:
          type: array
          items:
            type: object
            properties:
              url:
                type: string
              contentType:
                type: string
            required: ["url"]
    PkgCreateKind:
      type: string
      enum:
        - bucket
        - check
        - dashboard
        - label
        - notification_endpoint
        - notification_rule
        - task
        - telegraf
        - variable
    PkgCreate:
      type: object
      properties:
        orgIDs:
          type: array
          items:
            type: object
            properties:
              orgID:
                type: string
              resourceFilters:
                type: object
                properties:
                  byLabel:
                    type: array
                    items:
                      type: string
                  byResourceKind:
                    type: array
                    items:
                      $ref: "#/components/schemas/PkgCreateKind"
        resources:
          type: object
          properties:
            id:
              type: string
            kind:
              $ref: "#/components/schemas/PkgCreateKind"
            name:
              type: string
          required: [id, kind]
    Pkg:
      type: array
      items:
        type: object
        properties:
          apiVersion:
            type: string
          kind:
            type: string
            enum:
              - Bucket
              - CheckDeadman
              - CheckThreshold
              - Dashboard
              - Label
              - NotificationEndpointHTTP
              - NotificationEndpointPagerDuty
              - NotificationEndpointSlack
              - NotificationRule
              - Task
              - Telegraf
              - Variable
          meta:
            type: object
            properties:
              name:
                type: string
          spec:
            type: object
    PkgSummary:
      type: object
      properties:
        summary:
          type: object
          properties:
            buckets:
              type: array
              items:
                type: object
                properties:
                  id:
                    type: string
                  orgID:
                    type: string
                  pkgName:
                    type: string
                  name:
                    type: string
                  description:
                    type: string
                  retentionPeriod:
                    type: integer
                  labelAssociations:
                        type: array
                        items:
                          $ref: "#/components/schemas/PkgSummaryLabel"
            checks:
              type: array
              items:
                allOf:
                  - $ref: "#/components/schemas/CheckDiscriminator"
                  - type: object
                    properties:
                      pkgName:
                        type: string
                      labelAssociations:
                        type: array
                        items:
                          $ref: "#/components/schemas/PkgSummaryLabel"
            labels:
              type: array
              items:
                $ref: "#/components/schemas/PkgSummaryLabel"
            dashboards:
              type: array
              items:
                type: object
                properties:
                  id:
                    type: "string"
                  orgID:
                    type: "string"
                  pkgName:
                    type: string
                  name:
                    type: "string"
                  description:
                    type: "string"
                  labelAssociations:
                    type: array
                    items:
                      $ref: "#/components/schemas/PkgSummaryLabel"
                  charts:
                    type: array
                    items:
                      $ref: "#/components/schemas/PkgChart"
            labelMappings:
              type: array
              items:
                type: object
                properties:
                  status:
                    type: string
                  resourcePkgName:
                    type: string
                  resourceName:
                    type: string
                  resourceID:
                    type: string
                  resourceType:
                    type: string
                  labelPkgName:
                    type: string
                  labelName:
                    type: string
                  labelID:
                    type: string
            missingEnvRefs:
              type: array
              items:
                type: string
            missingSecrets:
              type: array
              items:
                type: string
            notificationEndpoints:
              type: array
              items:
                allOf:
                  - $ref: "#/components/schemas/NotificationEndpointDiscrimator"
                  - type: object
                    properties:
                      pkgName:
                        type: string
                      labelAssociations:
                        type: array
                        items:
                          $ref: "#/components/schemas/PkgSummaryLabel"
            notificationRules:
              type: array
              items:
                type: object
                properties:
                  pkgName:
                    type: string
                  name:
                    type: string
                  description:
                    type: string
                  endpointPkgName:
                    type: string
                  endpointID:
                    type: string
                  endpointType:
                    type: string
                  every:
                    type: string
                  offset:
                    type: string
                  messageTemplate:
                    type: string
                  status:
                    type: string
                  statusRules:
                    type: array
                    items:
                      type: object
                      properties:
                        currentLevel:
                          type: string
                        previousLevel:
                          type: string
                  tagRules:
                    type: array
                    items:
                      type: object
                      properties:
                        key:
                          type: string
                        value:
                          type: string
                        operator:
                          type: string
                  labelAssociations:
                    type: array
                    items:
                      $ref: "#/components/schemas/PkgSummaryLabel"
            tasks:
              type: array
              items:
                type: object
                properties:
                  pkgName:
                    type: string
                  id:
                    type: string
                  name:
                    type: string
                  cron:
                    type: string
                  description:
                    type: string
                  every:
                    type: string
                  offset:
                    type: string
                  query:
                    type: string
                  status:
                    type: string
            telegrafConfigs:
              type: array
              items:
                allOf:
                  - $ref: "#/components/schemas/TelegrafRequest"
                  - type: object
                    properties:
                      pkgName:
                        type: string
                      labelAssociations:
                        type: array
                        items:
                          $ref: "#/components/schemas/PkgSummaryLabel"
            variables:
              type: array
              items:
                type: object
                properties:
                  pkgName:
                    type: string
                  id:
                    type: string
                  orgID:
                    type: string
                  name:
                    type: string
                  description:
                    type: string
                  arguments:
                    $ref: "#/components/schemas/VariableProperties"
                  labelAssociations:
                        type: array
                        items:
                          $ref: "#/components/schemas/PkgSummaryLabel"
        diff:
          type: object
          properties:
            buckets:
              type: array
              items:
                type: object
                properties:
                  stateStatus:
                    type: string
                  id:
                    type: string
                  pkgName:
                    type: string
                  new:
                    type: object
                    properties:
                      name:
                        type: string
                      description:
                        type: string
                      retentionRules:
                        $ref: "#/components/schemas/RetentionRules"
                  old:
                    type: object
                    properties:
                      name:
                        type: string
                      description:
                        type: string
                      retentionRules:
                        $ref: "#/components/schemas/RetentionRules"
            checks:
              type: array
              items:
                type: object
                properties:
                  stateStatus:
                    type: string
                  id:
                    type: string
                  pkgName:
                    type: string
                  new:
                    $ref: "#/components/schemas/CheckDiscriminator"
                  old:
                    $ref: "#/components/schemas/CheckDiscriminator"
            dashboards:
              type: array
              items:
                type: object
                properties:
                  stateStatus:
                    type: string
                  id:
                    type: string
                  pkgName:
                    type: string
                  new:
                    type: object
                    properties:
                      name:
                        type: string
                      description:
                        type: string
                      charts:
                        type: array
                        items:
                          $ref: "#/components/schemas/PkgChart"
                  old:
                    type: object
                    properties:
                      name:
                        type: string
                      description:
                        type: string
                      charts:
                        type: array
                        items:
                          $ref: "#/components/schemas/PkgChart"
            labels:
              type: array
              items:
                type: object
                properties:
                  stateStatus:
                    type: string
                  id:
                    type: string
                  pkgName:
                    type: string
                  new:
                    type: object
                    properties:
                      name:
                        type: string
                      color:
                        type: string
                      description:
                        type: string
                  old:
                    type: object
                    properties:
                      name:
                        type: string
                      color:
                        type: string
                      description:
                        type: string
            labelMappings:
              type: array
              items:
                type: object
                properties:
                  status:
                    type: string
                  resourceType:
                    type: string
                  resourceID:
                    type: string
                  resourcePkgName:
                    type: string
                  resourceName:
                    type: string
                  labelID:
                    type: string
                  labelPkgName:
                    type: string
                  labelName:
                    type: string
            notificationEndpoints:
              type: array
              items:
                type: object
                properties:
                  stateStatus:
                    type: string
                  id:
                    type: string
                  pkgName:
                    type: string
                  new:
                    $ref: "#/components/schemas/NotificationEndpointDiscrimator"
                  old:
                    $ref: "#/components/schemas/NotificationEndpointDiscrimator"
            notificationRules:
              type: array
              items:
                type: object
                properties:
                  stateStatus:
                    type: string
                  id:
                    type: string
                  pkgName:
                    type: string
                  new:
                    type: object
                    properties:
                        name:
                          type: string
                        description:
                          type: string
                        endpointName:
                          type: string
                        endpointID:
                          type: string
                        endpointType:
                          type: string
                        every:
                          type: string
                        offset:
                          type: string
                        messageTemplate:
                          type: string
                        status:
                          type: string
                        statusRules:
                          type: array
                          items:
                            type: object
                            properties:
                              currentLevel:
                                type: string
                              previousLevel:
                                type: string
                        tagRules:
                          type: array
                          items:
                            type: object
                            properties:
                              key:
                                type: string
                              value:
                                type: string
                              operator:
                                type: string
                  old:
                    type: object
                    properties:
                      name:
                        type: string
                      description:
                        type: string
                      endpointName:
                        type: string
                      endpointID:
                        type: string
                      endpointType:
                        type: string
                      every:
                        type: string
                      offset:
                        type: string
                      messageTemplate:
                        type: string
                      status:
                        type: string
                      statusRules:
                        type: array
                        items:
                          type: object
                          properties:
                            currentLevel:
                              type: string
                            previousLevel:
                              type: string
                      tagRules:
                        type: array
                        items:
                          type: object
                          properties:
                            key:
                              type: string
                            value:
                              type: string
                            operator:
                              type: string
            tasks:
              type: array
              items:
                type: object
                properties:
                  stateStatus:
                    type: string
                  id:
                    type: string
                  pkgName:
                    type: string
                  new:
                    type: object
                    properties:
                      name:
                        type: string
                      cron:
                        type: string
                      description:
                        type: string
                      every:
                        type: string
                      offset:
                        type: string
                      query:
                        type: string
                      status:
                        type: string
                  old:
                    type: object
                    properties:
                      name:
                        type: string
                      cron:
                        type: string
                      description:
                        type: string
                      every:
                        type: string
                      offset:
                        type: string
                      query:
                        type: string
                      status:
                        type: string
            telegrafConfigs:
              type: array
              items:
                type: object
                properties:
                  stateStatus:
                    type: string
                  id:
                    type: string
                  pkgName:
                    type: string
                  new:
                    $ref: "#/components/schemas/TelegrafRequest"
                  old:
                    $ref: "#/components/schemas/TelegrafRequest"
            variables:
              type: array
              items:
                type: object
                properties:
                  stateStatus:
                    type: string
                  id:
                    type: string
                  pkgName:
                    type: string
                  new:
                    type: object
                    properties:
                      name:
                        type: string
                      description:
                        type: string
                      args:
                        $ref: "#/components/schemas/VariableProperties"
                  old:
                    type: object
                    properties:
                      name:
                        type: string
                      description:
                        type: string
                      args:
                        $ref: "#/components/schemas/VariableProperties"
        errors:
          type: array
          items:
            type: object
            properties:
              kind:
                type: string
              reason:
                type: string
              fields:
                type: array
                items:
                  type: string
              indexes:
                type: array
                items:
                  type: integer
    PkgSummaryLabel:
      type: object
      properties:
        id:
          type: string
        orgID:
          type: string
        pkgName:
          type: string
        name:
          type: string
        description:
          type: string
        retentionPeriod:
          type: string
    PkgChart:
      type: object
      properties:
        xPos:
          type: integer
        yPos:
          type: integer
        height:
          type: integer
        width:
          type: integer
        properties: # field name is properties
          $ref: "#/components/schemas/ViewProperties"
    Runs:
      type: object
      properties:
        links:
          $ref: "#/components/schemas/Links"
        runs:
          type: array
          items:
            $ref: "#/components/schemas/Run"
    Run:
      properties:
        id:
          readOnly: true
          type: string
        taskID:
          readOnly: true
          type: string
        status:
          readOnly: true
          type: string
          enum:
            - scheduled
            - started
            - failed
            - success
            - canceled
        scheduledFor:
          description: Time used for run's "now" option, RFC3339.
          type: string
          format: date-time
        log:
          description: An array of logs associated with the run.
          type: array
          readOnly: true
          items:
            type: object
            properties:
              runID:
                type: string
              time:
                type: string
              message:
                type: string
        startedAt:
          readOnly: true
          description: Time run started executing, RFC3339Nano.
          type: string
          format: date-time
        finishedAt:
          readOnly: true
          description: Time run finished executing, RFC3339Nano.
          type: string
          format: date-time
        requestedAt:
          readOnly: true
          description: Time run was manually requested, RFC3339Nano.
          type: string
          format: date-time
        links:
          type: object
          readOnly: true
          example:
            self: "/api/v2/tasks/1/runs/1"
            task: "/api/v2/tasks/1"
            retry: "/api/v2/tasks/1/runs/1/retry"
            logs: "/api/v2/tasks/1/runs/1/logs"
          properties:
            self:
              type: string
              format: uri
            task:
              type: string
              format: uri
            logs:
              type: string
              format: uri
            retry:
              type: string
              format: uri
    RunManually:
      properties:
        scheduledFor:
          nullable: true
          description: Time used for run's "now" option, RFC3339.  Default is the server's now time.
          type: string
          format: date-time
    Tasks:
      type: object
      properties:
        links:
          readOnly: true
          $ref: "#/components/schemas/Links"
        tasks:
          type: array
          items:
            $ref: "#/components/schemas/Task"
    Task:
      type: object
      properties:
        id:
          readOnly: true
          type: string
        type:
          description: The type of task, this can be used for filtering tasks on list actions.
          type: string
        orgID:
          description: The ID of the organization that owns this Task.
          type: string
        org:
          description: The name of the organization that owns this Task.
          type: string
        name:
          description: The name of the task.
          type: string
        description:
          description: An optional description of the task.
          type: string
        status:
          $ref: "#/components/schemas/TaskStatusType"
        labels:
          $ref: "#/components/schemas/Labels"
        authorizationID:
          description: The ID of the authorization used when this task communicates with the query engine.
          type: string
        flux:
          description: The Flux script to run for this task.
          type: string
        every:
          description: A simple task repetition schedule; parsed from Flux.
          type: string
        cron:
          description: A task repetition schedule in the form '* * * * * *'; parsed from Flux.
          type: string
        offset:
          description: Duration to delay after the schedule, before executing the task; parsed from flux, if set to zero it will remove this option and use 0 as the default.
          type: string
        latestCompleted:
          description: Timestamp of latest scheduled, completed run, RFC3339.
          type: string
          format: date-time
          readOnly: true
        lastRunStatus:
          readOnly: true
          type: string
          enum:
            - failed
            - success
            - canceled
        lastRunError:
          readOnly: true
          type: string
        createdAt:
          type: string
          format: date-time
          readOnly: true
        updatedAt:
          type: string
          format: date-time
          readOnly: true
        links:
          type: object
          readOnly: true
          example:
            self: "/api/v2/tasks/1"
            owners: "/api/v2/tasks/1/owners"
            members: "/api/v2/tasks/1/members"
            labels: "/api/v2/tasks/1/labels"
            runs: "/api/v2/tasks/1/runs"
            logs: "/api/v2/tasks/1/logs"
          properties:
            self:
              $ref: "#/components/schemas/Link"
            owners:
              $ref: "#/components/schemas/Link"
            members:
              $ref: "#/components/schemas/Link"
            runs:
              $ref: "#/components/schemas/Link"
            logs:
              $ref: "#/components/schemas/Link"
            labels:
              $ref: "#/components/schemas/Link"
      required: [id, name, orgID, flux]
    TaskStatusType:
      type: string
      enum: [active, inactive]
    User:
      properties:
        id:
          readOnly: true
          type: string
        oauthID:
          type: string
        name:
          type: string
        status:
          description: If inactive the user is inactive.
          default: active
          type: string
          enum:
            - active
            - inactive
        links:
          type: object
          readOnly: true
          example:
            self: "/api/v2/users/1"
            logs: "/api/v2/users/1/logs"
          properties:
            self:
              type: string
              format: uri
            logs:
              type: string
              format: uri
      required: [name]
    Users:
      type: object
      properties:
        links:
          type: object
          properties:
            self:
              type: string
              format: uri
        users:
          type: array
          items:
            $ref: "#/components/schemas/User"
    ResourceMember:
      allOf:
        - $ref: "#/components/schemas/User"
        - type: object
          properties:
            role:
              type: string
              default: member
              enum:
                - member
    ResourceMembers:
      type: object
      properties:
        links:
          type: object
          properties:
            self:
              type: string
              format: uri
        users:
          type: array
          items:
            $ref: "#/components/schemas/ResourceMember"
    ResourceOwner:
      allOf:
        - $ref: "#/components/schemas/User"
        - type: object
          properties:
            role:
              type: string
              default: owner
              enum:
                - owner
    ResourceOwners:
      type: object
      properties:
        links:
          type: object
          properties:
            self:
              type: string
              format: uri
        users:
          type: array
          items:
            $ref: "#/components/schemas/ResourceOwner"
    FluxSuggestions:
      type: object
      properties:
        funcs:
          type: array
          items:
            $ref: "#/components/schemas/FluxSuggestion"
    FluxSuggestion:
      type: object
      properties:
        name:
          type: string
        params:
          type: object
          additionalProperties:
            type: string
    Routes:
      properties:
        authorizations:
          type: string
          format: uri
        buckets:
          type: string
          format: uri
        dashboards:
          type: string
          format: uri
        external:
          type: object
          properties:
            statusFeed:
              type: string
              format: uri
        variables:
          type: string
          format: uri
        me:
          type: string
          format: uri
        orgs:
          type: string
          format: uri
        query:
          type: object
          properties:
            self:
              type: string
              format: uri
            ast:
              type: string
              format: uri
            analyze:
              type: string
              format: uri
            suggestions:
              type: string
              format: uri
        setup:
          type: string
          format: uri
        signin:
          type: string
          format: uri
        signout:
          type: string
          format: uri
        sources:
          type: string
          format: uri
        system:
          type: object
          properties:
            metrics:
              type: string
              format: uri
            debug:
              type: string
              format: uri
            health:
              type: string
              format: uri
        tasks:
          type: string
          format: uri
        telegrafs:
          type: string
          format: uri
        users:
          type: string
          format: uri
        write:
          type: string
          format: uri
    Error:
      properties:
        code:
          description: Code is the machine-readable error code.
          readOnly: true
          type: string
          # This set of enumerations must remain in sync with the constants defined in errors.go
          enum:
            - internal error
            - not found
            - conflict
            - invalid
            - unprocessable entity
            - empty value
            - unavailable
            - forbidden
            - too many requests
            - unauthorized
            - method not allowed
        message:
          readOnly: true
          description: Message is a human-readable message.
          type: string
      required: [code, message]
    LineProtocolError:
      properties:
        code:
          description: Code is the machine-readable error code.
          readOnly: true
          type: string
          enum:
            - internal error
            - not found
            - conflict
            - invalid
            - empty value
            - unavailable
        message:
          readOnly: true
          description: Message is a human-readable message.
          type: string
        op:
          readOnly: true
          description: Op describes the logical code operation during error. Useful for debugging.
          type: string
        err:
          readOnly: true
          description: Err is a stack of errors that occurred during processing of the request. Useful for debugging.
          type: string
        line:
          readOnly: true
          description: First line within sent body containing malformed data
          type: integer
          format: int32
      required: [code, message, op, err]
    LineProtocolLengthError:
      properties:
        code:
          description: Code is the machine-readable error code.
          readOnly: true
          type: string
          enum:
            - invalid
        message:
          readOnly: true
          description: Message is a human-readable message.
          type: string
        maxLength:
          readOnly: true
          description: Max length in bytes for a body of line-protocol.
          type: integer
          format: int32
      required: [code, message, maxLength]
    Field:
      type: object
      properties:
        value:
          description: >-
            value is the value of the field.  Meaning of the value is implied by
            the `type` key
          type: string
        type:
          description: >-
            `type` describes the field type. `func` is a function. `field` is a field reference.
          type: string
          enum:
            - func
            - field
            - integer
            - number
            - regex
            - wildcard
        alias:
          description: >-
            Alias overrides the field name in the returned response.  Applies only
            if type is `func`
          type: string
        args:
          description: Args are the arguments to the function
          type: array
          items:
            $ref: '#/components/schemas/Field'
    BuilderConfig:
      type: object
      properties:
        buckets:
          type: array
          items:
            type: string
        tags:
          type: array
          items:
            $ref: '#/components/schemas/BuilderTagsType'
        functions:
          type: array
          items:
            $ref: '#/components/schemas/BuilderFunctionsType'
        aggregateWindow:
          type: object
          properties:
            period:
              type: string
    BuilderTagsType:
      type: object
      properties:
        key:
          type: string
        values:
          type: array
          items:
            type: string
        aggregateFunctionType:
          $ref: '#/components/schemas/BuilderAggregateFunctionType'
    BuilderAggregateFunctionType:
      type: string
      enum: ['filter', 'group']
    BuilderFunctionsType:
      type: object
      properties:
        name:
          type: string
    DashboardQuery:
      type: object
      properties:
        text:
          type: string
          description: The text of the Flux query.
        editMode:
          $ref: '#/components/schemas/QueryEditMode'
        name:
          type: string
        builderConfig:
          $ref: '#/components/schemas/BuilderConfig'
    QueryEditMode:
      type: string
      enum: ['builder', 'advanced']
    Axis:
      type: object
      description: The description of a particular axis for a visualization.
      properties:
        bounds:
          type: array
          minItems: 0
          maxItems: 2
          description: >-
            The extents of an axis in the form [lower, upper]. Clients determine
            whether bounds are to be inclusive or exclusive of their limits
          items:
            type: string
        label:
          description: Label is a description of this Axis
          type: string
        prefix:
          description: Prefix represents a label prefix for formatting axis values.
          type: string
        suffix:
          description: Suffix represents a label suffix for formatting axis values.
          type: string
        base:
          description: Base represents the radix for formatting axis values.
          type: string
          enum: ['', '2', '10']
        scale:
          $ref: '#/components/schemas/AxisScale'
    AxisScale:
      description: 'Scale is the axis formatting scale. Supported: "log", "linear"'
      type: string
      enum: ['log', 'linear']
    DashboardColor:
      type: object
      description: Defines an encoding of data value into color space.
      required: [id, type, hex, name, value]
      properties:
        id:
          description: The unique ID of the view color.
          type: string
        type:
          description: Type is how the color is used.
          type: string
          enum:
            - min
            - max
            - threshold
            - scale
            - text
            - background
        hex:
          description: The hex number of the color
          type: string
          maxLength: 7
          minLength: 7
        name:
          description: The user-facing name of the hex color.
          type: string
        value:
          description: The data value mapped to this color.
          type: number
          format: float
    RenamableField:
      description: Describes a field that can be renamed and made visible or invisible.
      type: object
      properties:
        internalName:
          description: The calculated name of a field.
          readOnly: true
          type: string
        displayName:
          description: The name that a field is renamed to by the user.
          type: string
        visible:
          description: Indicates whether this field should be visible on the table.
          type: boolean
    XYViewProperties:
      type: object
      required:
        - type
        - geom
        - queries
        - shape
        - axes
        - colors
        - legend
        - note
        - showNoteWhenEmpty
        - position
      properties:
        timeFormat:
          type: string
        type:
          type: string
          enum: [xy]
        queries:
          type: array
          items:
            $ref: "#/components/schemas/DashboardQuery"
        colors:
          description: Colors define color encoding of data into a visualization
          type: array
          items:
            $ref: "#/components/schemas/DashboardColor"
        shape:
          type: string
          enum: ['chronograf-v2']
        note:
          type: string
        showNoteWhenEmpty:
          description: If true, will display note when empty
          type: boolean
        axes:
          $ref: '#/components/schemas/Axes'
        legend:
          $ref: '#/components/schemas/Legend'
        xColumn:
          type: string
        yColumn:
          type: string
        shadeBelow:
          type: boolean
        position:
          type: string
          enum: [overlaid, stacked]
        geom:
          $ref: '#/components/schemas/XYGeom'
    XYGeom:
      type: string
      enum: [line, step, stacked, bar, monotoneX]
    LinePlusSingleStatProperties:
      type: object
      required:
        - type
        - queries
        - shape
        - axes
        - colors
        - legend
        - note
        - showNoteWhenEmpty
        - prefix
        - suffix
        - decimalPlaces
        - position
      properties:
        type:
          type: string
          enum: [line-plus-single-stat]
        queries:
          type: array
          items:
            $ref: "#/components/schemas/DashboardQuery"
        colors:
          description: Colors define color encoding of data into a visualization
          type: array
          items:
            $ref: "#/components/schemas/DashboardColor"
        shape:
          type: string
          enum: ['chronograf-v2']
        note:
          type: string
        showNoteWhenEmpty:
          description: If true, will display note when empty
          type: boolean
        axes:
          $ref: '#/components/schemas/Axes'
        legend:
          $ref: '#/components/schemas/Legend'
        xColumn:
          type: string
        yColumn:
          type: string
        shadeBelow:
          type: boolean
        position:
          type: string
          enum: [overlaid, stacked]
        prefix:
          type: string
        suffix:
          type: string
        decimalPlaces:
          $ref: '#/components/schemas/DecimalPlaces'
    ScatterViewProperties:
      type: object
      required:
        - type
        - queries
        - colors
        - shape
        - note
        - showNoteWhenEmpty
        - xColumn
        - yColumn
        - fillColumns
        - symbolColumns
        - xDomain
        - yDomain
        - xAxisLabel
        - yAxisLabel
        - xPrefix
        - yPrefix
        - xSuffix
        - ySuffix
      properties:
        timeFormat:
          type: string
        type:
          type: string
          enum: [scatter]
        queries:
          type: array
          items:
            $ref: "#/components/schemas/DashboardQuery"
        colors:
          description: Colors define color encoding of data into a visualization
          type: array
          items:
            type: string
        shape:
          type: string
          enum: ['chronograf-v2']
        note:
          type: string
        showNoteWhenEmpty:
          description: If true, will display note when empty
          type: boolean
        xColumn:
          type: string
        yColumn:
          type: string
        fillColumns:
          type: array
          items:
            type: string
        symbolColumns:
          type: array
          items:
            type: string
        xDomain:
          type: array
          items:
            type: number
          maxItems: 2
        yDomain:
          type: array
          items:
            type: number
          maxItems: 2
        xAxisLabel:
          type: string
        yAxisLabel:
          type: string
        xPrefix:
          type: string
        xSuffix:
          type: string
        yPrefix:
          type: string
        ySuffix:
          type: string
    HeatmapViewProperties:
      type: object
      required:
        - type
        - queries
        - colors
        - shape
        - note
        - showNoteWhenEmpty
        - xColumn
        - yColumn
        - xDomain
        - yDomain
        - xAxisLabel
        - yAxisLabel
        - xPrefix
        - yPrefix
        - xSuffix
        - ySuffix
        - binSize
      properties:
        timeFormat:
          type: string
        type:
          type: string
          enum: [heatmap]
        queries:
          type: array
          items:
            $ref: "#/components/schemas/DashboardQuery"
        colors:
          description: Colors define color encoding of data into a visualization
          type: array
          items:
            type: string
        shape:
          type: string
          enum: ['chronograf-v2']
        note:
          type: string
        showNoteWhenEmpty:
          description: If true, will display note when empty
          type: boolean
        xColumn:
          type: string
        yColumn:
          type: string
        xDomain:
          type: array
          items:
            type: number
          maxItems: 2
        yDomain:
          type: array
          items:
            type: number
          maxItems: 2
        xAxisLabel:
          type: string
        yAxisLabel:
          type: string
        xPrefix:
          type: string
        xSuffix:
          type: string
        yPrefix:
          type: string
        ySuffix:
          type: string
        binSize:
          type: number
    SingleStatViewProperties:
      type: object
      required:
        - type
        - queries
        - colors
        - shape
        - note
        - showNoteWhenEmpty
        - prefix
        - tickPrefix
        - suffix
        - tickSuffix
        - legend
        - decimalPlaces
      properties:
        type:
          type: string
          enum: [single-stat]
        queries:
          type: array
          items:
            $ref: "#/components/schemas/DashboardQuery"
        colors:
          description: Colors define color encoding of data into a visualization
          type: array
          items:
            $ref: "#/components/schemas/DashboardColor"
        shape:
          type: string
          enum: ['chronograf-v2']
        note:
          type: string
        showNoteWhenEmpty:
          description: If true, will display note when empty
          type: boolean
        prefix:
          type: string
        tickPrefix:
          type: string
        suffix:
          type: string
        tickSuffix:
          type: string
        legend:
          $ref: '#/components/schemas/Legend'
        decimalPlaces:
          $ref: "#/components/schemas/DecimalPlaces"
    HistogramViewProperties:
      type: object
      required:
        - type
        - queries
        - colors
        - shape
        - note
        - showNoteWhenEmpty
        - xColumn
        - fillColumns
        - xDomain
        - xAxisLabel
        - position
        - binCount
      properties:
        type:
          type: string
          enum: [histogram]
        queries:
          type: array
          items:
            $ref: "#/components/schemas/DashboardQuery"
        colors:
          description: Colors define color encoding of data into a visualization
          type: array
          items:
            $ref: "#/components/schemas/DashboardColor"
        shape:
          type: string
          enum: ['chronograf-v2']
        note:
          type: string
        showNoteWhenEmpty:
          description: If true, will display note when empty
          type: boolean
        xColumn:
          type: string
        fillColumns:
          type: array
          items:
            type: string
        xDomain:
          type: array
          items:
            type: number
            format: float
        xAxisLabel:
          type: string
        position:
          type: string
          enum: [overlaid, stacked]
        binCount:
          type: integer
    GaugeViewProperties:
      type: object
      required: [type, queries, colors, shape, note, showNoteWhenEmpty, prefix, tickPrefix, suffix, tickSuffix, legend, decimalPlaces]
      properties:
        type:
          type: string
          enum: [gauge]
        queries:
          type: array
          items:
            $ref: "#/components/schemas/DashboardQuery"
        colors:
          description: Colors define color encoding of data into a visualization
          type: array
          items:
            $ref: "#/components/schemas/DashboardColor"
        shape:
          type: string
          enum: ['chronograf-v2']
        note:
          type: string
        showNoteWhenEmpty:
          description: If true, will display note when empty
          type: boolean
        prefix:
          type: string
        tickPrefix:
          type: string
        suffix:
          type: string
        tickSuffix:
          type: string
        legend:
          $ref: '#/components/schemas/Legend'
        decimalPlaces:
          $ref: "#/components/schemas/DecimalPlaces"
    TableViewProperties:
      type: object
      required:
        - type
        - queries
        - colors
        - shape
        - note
        - showNoteWhenEmpty
        - tableOptions
        - fieldOptions
        - timeFormat
        - decimalPlaces
      properties:
        type:
          type: string
          enum: [table]
        queries:
          type: array
          items:
            $ref: "#/components/schemas/DashboardQuery"
        colors:
          description: Colors define color encoding of data into a visualization
          type: array
          items:
            $ref: "#/components/schemas/DashboardColor"
        shape:
          type: string
          enum: ['chronograf-v2']
        note:
          type: string
        showNoteWhenEmpty:
          description: If true, will display note when empty
          type: boolean
        tableOptions:
          properties:
            verticalTimeAxis:
              description: >-
                verticalTimeAxis describes the orientation of the table by
                indicating whether the time axis will be displayed vertically
              type: boolean
            sortBy:
              $ref: "#/components/schemas/RenamableField"
            wrapping:
              description: Wrapping describes the text wrapping style to be used in table views
              type: string
              enum:
                - truncate
                - wrap
                - single-line
            fixFirstColumn:
              description: >-
                fixFirstColumn indicates whether the first column of the table
                should be locked
              type: boolean
        fieldOptions:
          description: >-
            fieldOptions represent the fields retrieved by the query with
            customization options
          type: array
          items:
            $ref: '#/components/schemas/RenamableField'
        timeFormat:
          description: >-
            timeFormat describes the display format for time values according to
            moment.js date formatting
          type: string
        decimalPlaces:
          $ref: '#/components/schemas/DecimalPlaces'
    MarkdownViewProperties:
      type: object
      required:
        - type
        - shape
        - note
      properties:
        type:
          type: string
          enum: [markdown]
        shape:
          type: string
          enum: ['chronograf-v2']
        note:
          type: string
    CheckViewProperties:
      type: object
      required:
        - type
        - shape
        - checkID
        - queries
        - colors
      properties:
        type:
          type: string
          enum: [check]
        shape:
          type: string
          enum: ['chronograf-v2']
        checkID:
          type: string
        check:
          $ref: '#/components/schemas/Check'
        queries:
          type: array
          items:
            $ref: "#/components/schemas/DashboardQuery"
        colors:
          description: Colors define color encoding of data into a visualization
          type: array
          items:
            $ref: "#/components/schemas/DashboardColor"
    Axes:
      description: The viewport for a View's visualizations
      type: object
      required: ['x', 'y']
      properties:
        x:
          $ref: '#/components/schemas/Axis'
        "y": # Quoted to prevent YAML parser from interpreting y as shorthand for true.
          $ref: '#/components/schemas/Axis'
    Legend:
      description: Legend define encoding of data into a view's legend
      type: object
      properties:
        type:
          description: The style of the legend.
          type: string
          enum:
            - static
        orientation:
          description: >-
            orientation is the location of the legend with respect to the view
            graph
          type: string
          enum:
            - top
            - bottom
            - left
            - right
    DecimalPlaces:
      description: Indicates whether decimal places should be enforced, and how many digits it should show.
      type: object
      properties:
        isEnforced:
          description: Indicates whether decimal point setting should be enforced
          type: boolean
        digits:
          description: The number of digits after decimal to display
          type: integer
          format: int32
    ConstantVariableProperties:
      properties:
        type:
          type: string
          enum: [constant]
        values:
          type: array
          items:
            type: string
    MapVariableProperties:
      properties:
        type:
          type: string
          enum: [map]
        values:
          type: object
          additionalProperties:
            type: string
    QueryVariableProperties:
      properties:
        type:
          type: string
          enum: [query]
        values:
          type: object
          properties:
            query:
              type: string
            language:
              type: string
    Variable:
      type: object
      required:
        - name
        - orgID
        - arguments
      properties:
        links:
          type: object
          readOnly: true
          properties:
            self:
              type: string
              format: uri
            org:
              type: string
              format: uri
            labels:
              type: string
              format: uri
        id:
          readOnly: true
          type: string
        orgID:
          type: string
        name:
          type: string
        description:
          type: string
        selected:
          type: array
          items:
            type: string
        labels:
          $ref: "#/components/schemas/Labels"
        arguments:
          $ref: "#/components/schemas/VariableProperties"
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
    Variables:
      type: object
      example:
        variables:
        - id: '1221432'
          name: ":ok:"
          selected:
          - hello
          arguments:
            type: constant
            values:
            - howdy
            - hello
            - hi
            - yo
            - oy
        - id: '1221432'
          name: ":ok:"
          selected:
          - c
          arguments:
            type: map
            values:
              a: fdjaklfdjkldsfjlkjdsa
              b: dfaksjfkljekfajekdljfas
              c: fdjksajfdkfeawfeea
        - id: '1221432'
          name: ":ok:"
          selected:
          - host
          arguments:
            type: query
            query: 'from(bucket: "foo") |> showMeasurements()'
            language: flux
      properties:
        variables:
          type: array
          items:
            $ref: "#/components/schemas/Variable"
    VariableProperties:
      type: object
      oneOf:
        - $ref: "#/components/schemas/QueryVariableProperties"
        - $ref: "#/components/schemas/ConstantVariableProperties"
        - $ref: "#/components/schemas/MapVariableProperties"
    ViewProperties:
      oneOf:
        - $ref: "#/components/schemas/LinePlusSingleStatProperties"
        - $ref: "#/components/schemas/XYViewProperties"
        - $ref: "#/components/schemas/SingleStatViewProperties"
        - $ref: "#/components/schemas/HistogramViewProperties"
        - $ref: "#/components/schemas/GaugeViewProperties"
        - $ref: "#/components/schemas/TableViewProperties"
        - $ref: "#/components/schemas/MarkdownViewProperties"
        - $ref: "#/components/schemas/CheckViewProperties"
        - $ref: "#/components/schemas/ScatterViewProperties"
        - $ref: "#/components/schemas/HeatmapViewProperties"
    View:
      required:
        - name
        - properties
      properties:
        links:
          type: object
          readOnly: true
          properties:
            self:
              type: string
        id:
          readOnly: true
          type: string
        name:
          type: string
        properties:
          $ref: '#/components/schemas/ViewProperties'
    Views:
      type: object
      properties:
        links:
          type: object
          properties:
            self:
              type: string
        views:
          type: array
          items:
            $ref: "#/components/schemas/View"
    CellUpdate:
      type: object
      properties:
        x:
          type: integer
          format: int32
        "y": # Quoted to prevent YAML parser from interpreting y as shorthand for true.
          type: integer
          format: int32
        w:
          type: integer
          format: int32
        h:
          type: integer
          format: int32
    CreateCell:
      type: object
      properties:
        name:
          type: string
        x:
          type: integer
          format: int32
        "y": # Quoted to prevent YAML parser from interpreting y as shorthand for true.
          type: integer
          format: int32
        w:
          type: integer
          format: int32
        h:
          type: integer
          format: int32
        usingView:
          type: string
          description: Makes a copy of the provided view.
    AnalyzeQueryResponse:
      type: object
      properties:
        errors:
          type: array
          items:
            type: object
            properties:
              line:
                type: integer
              column:
                type: integer
              character:
                type: integer
              message:
                type: string
    CellWithViewProperties:
      type: object
      allOf:
        - $ref: "#/components/schemas/Cell"
        - type: object
          properties:
            name:
              type: string
            properties:
              $ref: "#/components/schemas/ViewProperties"
    Cell:
      type: object
      properties:
        id:
          type: string
        links:
          type: object
          properties:
            self:
              type: string
            view:
              type: string
        x:
          type: integer
          format: int32
        "y": # Quoted to prevent YAML parser from interpreting y as shorthand for true.
          type: integer
          format: int32
        w:
          type: integer
          format: int32
        h:
          type: integer
          format: int32
        viewID:
          type: string
          description: The reference to a view from the views API.
    CellsWithViewProperties:
      type: array
      items:
        $ref: "#/components/schemas/CellWithViewProperties"
    Cells:
      type: array
      items:
        $ref: "#/components/schemas/Cell"
    Secrets:
      additionalProperties:
        type: string
      example:
        apikey: abc123xyz
    SecretKeys:
      type: object
      properties:
        secrets:
          type: array
          items:
            type: string
    SecretKeysResponse:
      allOf:
        - $ref: "#/components/schemas/SecretKeys"
        - type: object
          properties:
            links:
              readOnly: true
              type: object
              properties:
                self:
                  type: string
                org:
                  type: string
    CreateDashboardRequest:
      properties:
        orgID:
          type: string
          description: The ID of the organization that owns the dashboard.
        name:
          type: string
          description: The user-facing name of the dashboard.
        description:
          type: string
          description: The user-facing description of the dashboard.
      required:
        - orgID
        - name
    DashboardWithViewProperties:
      type: object
      allOf:
        - $ref: "#/components/schemas/CreateDashboardRequest"
        - type: object
          properties:
            links:
              type: object
              example:
                self: "/api/v2/dashboards/1"
                cells: "/api/v2/dashboards/1/cells"
                owners: "/api/v2/dashboards/1/owners"
                members: "/api/v2/dashboards/1/members"
                logs: "/api/v2/dashboards/1/logs"
                labels: "/api/v2/dashboards/1/labels"
                org: "/api/v2/labels/1"
              properties:
                self:
                  $ref: "#/components/schemas/Link"
                cells:
                  $ref: "#/components/schemas/Link"
                members:
                  $ref: "#/components/schemas/Link"
                owners:
                  $ref: "#/components/schemas/Link"
                logs:
                  $ref: "#/components/schemas/Link"
                labels:
                  $ref: "#/components/schemas/Link"
                org:
                  $ref: "#/components/schemas/Link"
            id:
              readOnly: true
              type: string
            meta:
              type: object
              properties:
                createdAt:
                  type: string
                  format: date-time
                updatedAt:
                  type: string
                  format: date-time
            cells:
              $ref: "#/components/schemas/CellsWithViewProperties"
            labels:
              $ref: "#/components/schemas/Labels"
    Dashboard:
      type: object
      allOf:
        - $ref: "#/components/schemas/CreateDashboardRequest"
        - type: object
          properties:
            links:
              type: object
              example:
                self: "/api/v2/dashboards/1"
                cells: "/api/v2/dashboards/1/cells"
                owners: "/api/v2/dashboards/1/owners"
                members: "/api/v2/dashboards/1/members"
                logs: "/api/v2/dashboards/1/logs"
                labels: "/api/v2/dashboards/1/labels"
                org: "/api/v2/labels/1"
              properties:
                self:
                  $ref: "#/components/schemas/Link"
                cells:
                  $ref: "#/components/schemas/Link"
                members:
                  $ref: "#/components/schemas/Link"
                owners:
                  $ref: "#/components/schemas/Link"
                logs:
                  $ref: "#/components/schemas/Link"
                labels:
                  $ref: "#/components/schemas/Link"
                org:
                  $ref: "#/components/schemas/Link"
            id:
              readOnly: true
              type: string
            meta:
              type: object
              properties:
                createdAt:
                  type: string
                  format: date-time
                updatedAt:
                  type: string
                  format: date-time
            cells:
                $ref: "#/components/schemas/Cells"
            labels:
              $ref: "#/components/schemas/Labels"
    Dashboards:
      type: object
      properties:
        links:
          $ref: "#/components/schemas/Links"
        dashboards:
          type: array
          items:
            $ref: "#/components/schemas/Dashboard"
    Source:
      type: object
      properties:
        links:
          type: object
          properties:
            self:
              type: string
            query:
              type: string
            health:
              type: string
            buckets:
              type: string
        id:
          type: string
        orgID:
          type: string
        default:
          type: boolean
        name:
          type: string
        type:
          type: string
          enum: ["v1","v2","self"]
        url:
          type: string
          format: uri
        insecureSkipVerify:
          type: boolean
        telegraf:
          type: string
        token:
          type: string
        username:
          type: string
        password:
          type: string
        sharedSecret:
          type: string
        metaUrl:
          type: string
          format: uri
        defaultRP:
          type: string
        languages:
          type: array
          readOnly: true
          items:
            type: string
            enum:
              - flux
              - influxql
    Sources:
      type: object
      properties:
        links:
          type: object
          properties:
            self:
              type: string
              format: uri
        sources:
          type: array
          items:
            $ref: "#/components/schemas/Source"
    ScraperTargetRequest:
      type: object
      properties:
        name:
          type: string
          description: The name of the scraper target.
        type:
          type: string
          description: The type of the metrics to be parsed.
          enum: [prometheus]
        url:
          type: string
          description: The URL of the metrics endpoint.
          example:  http://localhost:9090/metrics
        orgID:
          type: string
          description: The organization ID.
        bucketID:
          type: string
          description: The ID of the bucket to write to.
    ScraperTargetResponse:
      type: object
      allOf:
        - $ref: "#/components/schemas/ScraperTargetRequest"
        - type: object
          properties:
            id:
              type: string
              readOnly: true
            org:
              type: string
              description: The organization name.
            bucket:
              type: string
              description: The bucket name.
            links:
              type: object
              readOnly: true
              example:
                self: "/api/v2/scrapers/1"
                owners: "/api/v2/scrapers/1/owners"
                members: "/api/v2/scrapers/1/members"
                bucket: "/api/v2/buckets/1"
                organization: "/api/v2/orgs/1"
              properties:
                self:
                  $ref: "#/components/schemas/Link"
                members:
                  $ref: "#/components/schemas/Link"
                owners:
                  $ref: "#/components/schemas/Link"
                bucket:
                  $ref: "#/components/schemas/Link"
                organization:
                  $ref: "#/components/schemas/Link"
    ScraperTargetResponses:
      type: object
      properties:
        configurations:
          type: array
          items:
            $ref: "#/components/schemas/ScraperTargetResponse"
    DocumentMeta:
      type: object
      properties:
        name:
          type: string
        type:
          type: string
        templateID:
          type: string
        description:
          type: string
        version:
          type: string
        createdAt:
          type: string
          format: date-time
          readOnly: true
        updatedAt:
          type: string
          format: date-time
          readOnly: true
      required:
        - name
        - version
    Document:
      type: object
      properties:
        id:
          type: string
          readOnly: true
        meta:
          $ref: "#/components/schemas/DocumentMeta"
        content:
          type: object
        labels:
          $ref: "#/components/schemas/Labels"
        links:
          type: object
          readOnly: true
          example:
            self: "/api/v2/documents/templates/1"
          properties:
            self:
              description: The document URL.
              $ref: "#/components/schemas/Link"
      required:
        - id
        - meta
        - content
    DocumentCreate:
      type: object
      properties:
        meta:
          $ref: "#/components/schemas/DocumentMeta"
        content:
          type: object
        org:
          type: string
          description: The organization Name. Specify either `orgID` or `org`.
        orgID:
          type: string
          description: The organization Name. Specify either `orgID` or `org`.
        labels:
          type: array
          description: An array of label IDs to be added as labels to the document.
          items:
            type: string
      required:
        - meta
        - content
    DocumentUpdate:
      type: object
      properties:
        meta:
          $ref: "#/components/schemas/DocumentMeta"
        content:
          type: object
    DocumentListEntry:
      type: object
      properties:
        id:
          type: string
          readOnly: true
        meta:
          $ref: "#/components/schemas/DocumentMeta"
        labels:
          $ref: "#/components/schemas/Labels"
        links:
          type: object
          readOnly: true
          example:
            self: "/api/v2/documents/templates/1"
          properties:
            self:
              description: The document URL.
              $ref: "#/components/schemas/Link"
      required:
        - id
        - meta
    Documents:
      type: object
      properties:
        documents:
          type: array
          items:
            $ref: "#/components/schemas/DocumentListEntry"
    TelegrafRequest:
      type: object
      properties:
        name:
          type: string
        description:
          type: string
        metadata:
          type: object
          properties:
            buckets:
              type: array
              items:
                type: string
        config:
          type: string
        orgID:
          type: string
    TelegrafRequestPlugin:
        oneOf:
        - $ref: '#/components/schemas/TelegrafPluginInputCpu'
        - $ref: '#/components/schemas/TelegrafPluginInputDisk'
        - $ref: '#/components/schemas/TelegrafPluginInputDiskio'
        - $ref: '#/components/schemas/TelegrafPluginInputDocker'
        - $ref: '#/components/schemas/TelegrafPluginInputFile'
        - $ref: '#/components/schemas/TelegrafPluginInputKubernetes'
        - $ref: '#/components/schemas/TelegrafPluginInputLogParser'
        - $ref: '#/components/schemas/TelegrafPluginInputProcstat'
        - $ref: '#/components/schemas/TelegrafPluginInputPrometheus'
        - $ref: '#/components/schemas/TelegrafPluginInputRedis'
        - $ref: '#/components/schemas/TelegrafPluginInputSyslog'
        - $ref: '#/components/schemas/TelegrafPluginOutputFile'
        - $ref: '#/components/schemas/TelegrafPluginOutputInfluxDBV2'
    TelegrafPluginInputCpu:
      type: object
      required:
        - name
        - type
      properties:
        name:
          type: string
          enum: ["cpu"]
        type:
          type: string
          enum: ["input"]
        comment:
          type: string
    TelegrafPluginInputDisk:
      type: object
      required:
        - name
        - type
      properties:
        name:
          type: string
          enum: ["disk"]
        type:
          type: string
          enum: ["input"]
        comment:
          type: string
    TelegrafPluginInputDiskio:
      type:
        object
      required:
        - name
        - type
      properties:
        name:
          type: string
          enum: ["diskio"]
        type:
          type: string
          enum: ["input"]
        comment:
          type: string
    TelegrafPluginInputDocker:
      type:
        object
      required:
        - name
        - type
        - config
      properties:
        name:
          type: string
          enum: ["docker"]
        type:
          type: string
          enum: ["input"]
        comment:
          type: string
        config:
          $ref: '#/components/schemas/TelegrafPluginInputDockerConfig'
    TelegrafPluginInputFile:
      type:
        object
      required:
        - name
        - type
        - config
      properties:
        name:
          type: string
          enum: ["file"]
        type:
          type: string
          enum: [input]
        comment:
          type: string
        config:
          $ref: '#/components/schemas/TelegrafPluginInputFileConfig'
    TelegrafPluginInputKernel:
      type:
        object
      required:
        - name
        - type
      properties:
        name:
          type: string
          enum: ["kernel"]
        type:
          type: string
          enum: ["input"]
        comment:
          type: string
    TelegrafPluginInputKubernetes:
      type:
        object
      required:
        - name
        - type
        - config
      properties:
        name:
          type: string
          enum: ["kubernetes"]
        type:
          type: string
          enum: ["input"]
        comment:
          type: string
        config:
          $ref: '#/components/schemas/TelegrafPluginInputKubernetesConfig'
    TelegrafPluginInputLogParser:
      type:
        object
      required:
        - name
        - type
        - config
      properties:
        name:
          type: string
          enum: ["logparser"]
        type:
          type: string
          enum: ["input"]
        comment:
          type: string
        config:
          $ref: '#/components/schemas/TelegrafPluginInputLogParserConfig'
    TelegrafPluginInputMem:
      type:
        object
      required:
        - name
        - type
      properties:
        name:
          type: string
          enum: ["mem"]
        type:
          type: string
          enum: ["input"]
        comment:
          type: string
    TelegrafPluginInputNetResponse:
      type:
        object
      required:
        - name
        - type
      properties:
        name:
          type: string
          enum: ["net_response"]
        type:
          type: string
          enum: ["input"]
        comment:
          type: string
    TelegrafPluginInputNet:
      type:
        object
      required:
        - name
        - type
      properties:
        name:
          type: string
          enum: ["net"]
        type:
          type: string
          enum: ["input"]
        comment:
          type: string
    TelegrafPluginInputNginx:
      type:
        object
      required:
        - name
        - type
      properties:
        name:
          type: string
          enum: ["nginx"]
        type:
          type: string
          enum: ["input"]
        comment:
          type: string
    TelegrafPluginInputProcesses:
      type:
        object
      required:
        - name
        - type
      properties:
        name:
          type: string
          enum: ["processes"]
        type:
          type: string
          enum: ["input"]
        comment:
          type: string
    TelegrafPluginInputProcstat:
      type:
        object
      required:
        - name
        - type
        - config
      properties:
        name:
          type: string
          enum: ["procstat"]
        type:
          type: string
          enum: ["input"]
        comment:
          type: string
        config:
          $ref: '#/components/schemas/TelegrafPluginInputProcstatConfig'
    TelegrafPluginInputPrometheus:
      type:
        object
      required:
        - name
        - type
        - config
      properties:
        name:
          type: string
          enum: ["prometheus"]
        type:
          type: string
          enum: ["input"]
        comment:
          type: string
        config:
          $ref: '#/components/schemas/TelegrafPluginInputPrometheusConfig'
    TelegrafPluginInputRedis:
      type:
        object
      required:
        - name
        - type
        - config
      properties:
        name:
          type: string
          enum: ["redis"]
        type:
          type: string
          enum: ["input"]
        comment:
          type: string
        config:
          $ref: '#/components/schemas/TelegrafPluginInputRedisConfig'
    TelegrafPluginInputSyslog:
      type:
        object
      required:
        - name
        - type
        - config
      properties:
        name:
          type: string
          enum: ["syslog"]
        type:
          type: string
          enum: ["input"]
        comment:
          type: string
        config:
          $ref: '#/components/schemas/TelegrafPluginInputSyslogConfig'
    TelegrafPluginInputSwap:
      type:
        object
      required:
        - name
        - type
      properties:
        name:
          type: string
          enum: ["swap"]
        type:
          type: string
          enum: ["input"]
        comment:
          type: string
    TelegrafPluginInputSystem:
      type:
        object
      required:
        - name
        - type
      properties:
        name:
          type: string
          enum: ["system"]
        type:
          type: string
          enum: ["input"]
        comment:
          type: string
    TelegrafPluginInputTail:
      type:
        object
      required:
        - name
        - type
      properties:
        name:
          type: string
          enum: ["tail"]
        type:
          type: string
          enum: ["input"]
        comment:
          type: string
    TelegrafPluginOutputFile:
      type:
        object
      required:
        - name
        - type
        - config
      properties:
        name:
          type: string
          enum: ["file"]
        type:
          type: string
          enum: ["output"]
        comment:
          type: string
        config:
          $ref: '#/components/schemas/TelegrafPluginOutputFileConfig'
    TelegrafPluginOutputInfluxDBV2:
      type:
        object
      required:
        - name
        - type
        - config
      properties:
        name:
          type: string
          enum: ["influxdb_v2"]
        type:
          type: string
          enum: ["output"]
        comment:
          type: string
        config:
          $ref: '#/components/schemas/TelegrafPluginOutputInfluxDBV2Config'
    Telegraf:
      type: object
      allOf:
        - $ref: "#/components/schemas/TelegrafRequest"
        - type: object
          properties:
            id:
              type: string
              readOnly: true
            links:
              type: object
              readOnly: true
              example:
                self: "/api/v2/telegrafs/1"
                lables: "/api/v2/telegrafs/1/labels"
                owners: "/api/v2/telegrafs/1/owners"
                members: "/api/v2/telegrafs/1/members"
              properties:
                self:
                  $ref: "#/components/schemas/Link"
                labels:
                  $ref: "#/components/schemas/Link"
                members:
                  $ref: "#/components/schemas/Link"
                owners:
                  $ref: "#/components/schemas/Link"
            labels:
              readOnly: true
              $ref: "#/components/schemas/Labels"
    Telegrafs:
      type: object
      properties:
        configurations:
          type: array
          items:
            $ref: "#/components/schemas/Telegraf"
    TelegrafPlugin:
      type: object
      properties:
        type:
          type: string
        name:
          type: string
        description:
          type: string
        config:
          type: string
    TelegrafPlugins:
      type: object
      properties:
        version:
          type: string
        os:
          type: string
        plugins:
          type: array
          items:
            $ref: "#/components/schemas/TelegrafPlugin"
    TelegrafPluginInputDockerConfig:
      type: object
      required:
        - endpoint
      properties:
        endpoint:
          type: string
    TelegrafPluginInputFileConfig:
      type: object
      properties:
        files:
          type: array
          items:
            type: string
    TelegrafPluginInputKubernetesConfig:
      type: object
      properties:
        url:
          type: string
          format: uri
    TelegrafPluginInputLogParserConfig:
      type: object
      properties:
        files:
          type: array
          items:
            type: string
    TelegrafPluginInputProcstatConfig:
      type: object
      properties:
        exe:
          type: string
    TelegrafPluginInputPrometheusConfig:
      type: object
      properties:
        urls:
          type: array
          items:
            type: string
            format: uri
    TelegrafPluginInputRedisConfig:
      type: object
      properties:
        servers:
          type: array
          items:
            type: string
        password:
          type: string
    TelegrafPluginInputSyslogConfig:
      type: object
      properties:
        server:
          type: string
    TelegrafPluginOutputFileConfig:
      type: object
      required:
        - files
      properties:
        files:
          type: array
          items:
            type: object
            properties:
              type:
                type: string
                enum: [stdout, path]
              path:
                type: string
    TelegrafPluginOutputInfluxDBV2Config:
      type: object
      required:
        - urls
        - token
        - organization
        - bucket
      properties:
        urls:
          type: array
          items:
            type: string
            format: uri
        token:
          type: string
        organization:
          type: string
        bucket:
          type: string
    IsOnboarding:
      type: object
      properties:
        allowed:
          description: True means that the influxdb instance has NOT had initial setup; false means that the database has been setup.
          type: boolean
    OnboardingRequest:
      type: object
      properties:
        username:
          type: string
        password:
          type: string
        org:
          type: string
        bucket:
          type: string
        retentionPeriodHrs:
          type: integer
      required:
        - username
        - password
        - org
        - bucket
    OnboardingResponse:
      type: object
      properties:
        user:
          $ref: "#/components/schemas/User"
        org:
          $ref: "#/components/schemas/Organization"
        bucket:
          $ref: "#/components/schemas/Bucket"
        auth:
          $ref: "#/components/schemas/Authorization"
    PasswordResetBody:
      properties:
        password:
          type: string
      required:
        - password
    AddResourceMemberRequestBody:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
      required:
        - id
    Ready:
      type: object
      properties:
        status:
          type: string
          enum:
            - ready
        started:
          type: string
          format: date-time
          example: "2019-03-13T10:09:33.891196-04:00"
        up:
          type: string
          example: "14m45.911966424s"
    HealthCheck:
      type: object
      required:
        - name
        - status
      properties:
        name:
          type: string
        message:
          type: string
        checks:
          type: array
          items:
            $ref: "#/components/schemas/HealthCheck"
        status:
          type: string
          enum:
            - pass
            - fail
    Labels:
      type: array
      items:
        $ref: "#/components/schemas/Label"
    Label:
      type: object
      properties:
        id:
          readOnly: true
          type: string
        orgID:
          readOnly: true
          type: string
        name:
          type: string
        properties:
          type: object
          additionalProperties:
            type: string
          description: Key/Value pairs associated with this label. Keys can be removed by sending an update with an empty value.
          example: {"color": "ffb3b3", "description": "this is a description"}
    LabelCreateRequest:
      type: object
      required: [orgID]
      properties:
        orgID:
          type: string
        name:
          type: string
        properties:
          type: object
          additionalProperties:
            type: string
          description: Key/Value pairs associated with this label. Keys can be removed by sending an update with an empty value.
          example: {"color": "ffb3b3", "description": "this is a description"}
    LabelUpdate:
      type: object
      properties:
        name:
          type: string
        properties:
          type: object
          description: Key/Value pairs associated with this label. Keys can be removed by sending an update with an empty value.
          example: {"color": "ffb3b3", "description": "this is a description"}
    LabelMapping:
      type: object
      properties:
        labelID:
          type: string
    LabelsResponse:
      type: object
      properties:
        labels:
          $ref: "#/components/schemas/Labels"
        links:
          $ref: "#/components/schemas/Links"
    LabelResponse:
      type: object
      properties:
        label:
          $ref: "#/components/schemas/Label"
        links:
          $ref: "#/components/schemas/Links"
    ASTResponse:
      description: Contains the AST for the supplied Flux query
      type: object
      properties:
        ast:
          $ref: "#/components/schemas/Package"
    WritePrecision:
      type: string
      enum:
        - ms
        - s
        - us
        - ns
    TaskCreateRequest:
      type: object
      properties:
        orgID:
          description: The ID of the organization that owns this Task.
          type: string
        org:
          description: The name of the organization that owns this Task.
          type: string
        status:
          $ref: "#/components/schemas/TaskStatusType"
        flux:
          description: The Flux script to run for this task.
          type: string
        description:
          description: An optional description of the task.
          type: string
      required: [flux]
    TaskUpdateRequest:
      type: object
      properties:
        status:
          $ref: "#/components/schemas/TaskStatusType"
        flux:
          description: The Flux script to run for this task.
          type: string
        name:
          description: Override the 'name' option in the flux script.
          type: string
        every:
          description: Override the 'every' option in the flux script.
          type: string
        cron:
          description: Override the 'cron' option in the flux script.
          type: string
        offset:
          description: Override the 'offset' option in the flux script.
          type: string
        description:
          description: An optional description of the task.
          type: string
    FluxResponse:
      description: Rendered flux that backs the check or notification.
      properties:
        flux:
          type: string
    CheckPatch:
      type: object
      properties:
        name:
          type: string
        description:
          type: string
        status:
          type: string
          enum:
            - active
            - inactive
    CheckDiscriminator:
      oneOf:
        - $ref: "#/components/schemas/DeadmanCheck"
        - $ref: "#/components/schemas/ThresholdCheck"
        - $ref: "#/components/schemas/CustomCheck"
      discriminator:
        propertyName: type
        mapping:
          deadman:  "#/components/schemas/DeadmanCheck"
          threshold: "#/components/schemas/ThresholdCheck"
          custom: "#/components/schemas/CustomCheck"
    Check:
      allOf:
        - $ref: "#/components/schemas/CheckDiscriminator"
    PostCheck:
      allOf:
        - $ref: "#/components/schemas/CheckDiscriminator"
    Checks:
      properties:
        checks:
          type: array
          items:
            $ref: "#/components/schemas/Check"
        links:
          $ref: "#/components/schemas/Links"
    CheckBase:
      properties:
        id:
          readOnly: true
          type: string
        name:
          type: string
        orgID:
          description: The ID of the organization that owns this check.
          type: string
        ownerID:
          description: The ID of creator used to create this check.
          type: string
          readOnly: true
        createdAt:
          type: string
          format: date-time
          readOnly: true
        updatedAt:
          type: string
          format: date-time
          readOnly: true
        query:
          $ref: "#/components/schemas/DashboardQuery"
        status:
          $ref: "#/components/schemas/TaskStatusType"
        description:
          description: An optional description of the check.
          type: string
        latestCompleted:
          description: Timestamp of latest scheduled, completed run, RFC3339.
          type: string
          format: date-time
          readOnly: true
        lastRunStatus:
          readOnly: true
          type: string
          enum:
            - failed
            - success
            - canceled
        lastRunError:
          readOnly: true
          type: string
        labels:
          $ref: "#/components/schemas/Labels"
        links:
          type: object
          readOnly: true
          example:
            self: "/api/v2/checks/1"
            labels: "/api/v2/checks/1/labels"
            members: "/api/v2/checks/1/members"
            owners: "/api/v2/checks/1/owners"
            query: "/api/v2/checks/1/query"
          properties:
            self:
              description: URL for this check
              $ref: "#/components/schemas/Link"
            labels:
              description: URL to retrieve labels for this check
              $ref: "#/components/schemas/Link"
            members:
              description: URL to retrieve members for this check
              $ref: "#/components/schemas/Link"
            owners:
              description: URL to retrieve owners for this check
              $ref: "#/components/schemas/Link"
            query:
              description: URL to retrieve flux script for this check
              $ref: "#/components/schemas/Link"
      required: [name, orgID, query]
    ThresholdCheck:
      allOf:
        - $ref: "#/components/schemas/CheckBase"
        - type: object
          required: [type]
          properties:
            type:
              type: string
              enum: [threshold]
            thresholds:
              type: array
              items:
                $ref: "#/components/schemas/Threshold"
            every:
              description: Check repetition interval.
              type: string
            offset:
              description: Duration to delay after the schedule, before executing check.
              type: string
            tags:
              description: List of tags to write to each status.
              type: array
              items:
                type: object
                properties:
                  key:
                    type: string
                  value:
                    type: string
            statusMessageTemplate:
              description: The template used to generate and write a status message.
              type: string
    Threshold:
      oneOf:
        - $ref: "#/components/schemas/GreaterThreshold"
        - $ref: "#/components/schemas/LesserThreshold"
        - $ref: "#/components/schemas/RangeThreshold"
      discriminator:
        propertyName: type
        mapping:
          greater: "#/components/schemas/GreaterThreshold"
          lesser:  "#/components/schemas/LesserThreshold"
          range: "#/components/schemas/RangeThreshold"
    DeadmanCheck:
      allOf:
        - $ref: "#/components/schemas/CheckBase"
        - type: object
          required: [type]
          properties:
            type:
              type: string
              enum: [deadman]
            timeSince:
              description: String duration before deadman triggers.
              type: string
            staleTime:
              description: String duration for time that a series is considered stale and should not trigger deadman.
              type: string
            reportZero:
              description: If only zero values reported since time, trigger an alert
              type: boolean
            level:
              $ref: "#/components/schemas/CheckStatusLevel"
            every:
              description: Check repetition interval.
              type: string
            offset:
              description: Duration to delay after the schedule, before executing check.
              type: string
            tags:
              description: List of tags to write to each status.
              type: array
              items:
                type: object
                properties:
                  key:
                    type: string
                  value:
                    type: string
            statusMessageTemplate:
              description: The template used to generate and write a status message.
              type: string
    CustomCheck:
     allOf:
        - $ref: "#/components/schemas/CheckBase"
        - type: object
          properties:
            type:
              type: string
              enum: [custom]
          required: [type]
    ThresholdBase:
      properties:
        level:
         $ref: "#/components/schemas/CheckStatusLevel"
        allValues:
          description: If true, only alert if all values meet threshold.
          type: boolean
    GreaterThreshold:
      allOf:
        - $ref: "#/components/schemas/ThresholdBase"
        - type: object
          required: [type, value]
          properties:
            type:
              type: string
              enum: [greater]
            value:
              type: number
              format: float
    LesserThreshold:
      allOf:
        - $ref: "#/components/schemas/ThresholdBase"
        - type: object
          required: [type, value]
          properties:
            type:
              type: string
              enum: [lesser]
            value:
              type: number
              format: float
    RangeThreshold:
      allOf:
        - $ref: "#/components/schemas/ThresholdBase"
        - type: object
          required: [type, min, max, within]
          properties:
            type:
              type: string
              enum: [range]
            min:
              type: number
              format: float
            max:
              type: number
              format: float
            within:
              type: boolean
    CheckStatusLevel:
      description: The state to record if check matches a criteria.
      type: string
      enum: ["UNKNOWN", "OK", "INFO", "CRIT", "WARN"]
    RuleStatusLevel:
      description: The state to record if check matches a criteria.
      type: string
      enum: ["UNKNOWN", "OK", "INFO", "CRIT", "WARN", "ANY"]
    NotificationRuleUpdate:
      type: object
      properties:
        name:
          type: string
        description:
          type: string
        status:
          type: string
          enum:
            - active
            - inactive
    NotificationRuleDiscriminator:
      oneOf:
        - $ref: "#/components/schemas/SlackNotificationRule"
        - $ref: "#/components/schemas/SMTPNotificationRule"
        - $ref: "#/components/schemas/PagerDutyNotificationRule"
        - $ref: "#/components/schemas/HTTPNotificationRule"
      discriminator:
        propertyName: type
        mapping:
          slack: "#/components/schemas/SlackNotificationRule"
          smtp: "#/components/schemas/SMTPNotificationRule"
          pagerduty: "#/components/schemas/PagerDutyNotificationRule"
          http: "#/components/schemas/HTTPNotificationRule"
    NotificationRule:
      allOf:
        - $ref: "#/components/schemas/NotificationRuleDiscriminator"
    PostNotificationRule:
      allOf:
        - $ref: "#/components/schemas/NotificationRuleDiscriminator"
    NotificationRules:
      properties:
        notificationRules:
          type: array
          items:
            $ref: "#/components/schemas/NotificationRule"
        links:
          $ref: "#/components/schemas/Links"
    NotificationRuleBase:
      type: object
      required:
        - id
        - orgID
        - status
        - name
        - tagRules
        - statusRules
        - endpointID
      properties:
        latestCompleted:
          description: Timestamp of latest scheduled, completed run, RFC3339.
          type: string
          format: date-time
          readOnly: true
        lastRunStatus:
          readOnly: true
          type: string
          enum:
            - failed
            - success
            - canceled
        lastRunError:
          readOnly: true
          type: string
        id:
          readOnly: true
          type: string
        endpointID:
          type: string
        orgID:
          description: The ID of the organization that owns this notification rule.
          type: string
        ownerID:
          description: The ID of creator used to create this notification rule.
          type: string
          readOnly: true
        createdAt:
          type: string
          format: date-time
          readOnly: true
        updatedAt:
          type: string
          format: date-time
          readOnly: true
        status:
          $ref: "#/components/schemas/TaskStatusType"
        name:
          description: Human-readable name describing the notification rule.
          type: string
        sleepUntil:
          type: string
        every:
          description: The notification repetition interval.
          type: string
        offset:
          description: Duration to delay after the schedule, before executing check.
          type: string
        runbookLink:
          type: string
        limitEvery:
          description: Don't notify me more than <limit> times every <limitEvery> seconds. If set, limit cannot be empty.
          type: integer
        limit:
          description: Don't notify me more than <limit> times every <limitEvery> seconds. If set, limitEvery cannot be empty.
          type: integer
        tagRules:
          description: List of tag rules the notification rule attempts to match.
          type: array
          items:
            $ref: "#/components/schemas/TagRule"
        description:
          description: An optional description of the notification rule.
          type: string
        statusRules:
          description: List of status rules the notification rule attempts to match.
          type: array
          minItems: 1
          items:
            $ref: "#/components/schemas/StatusRule"
        labels:
          $ref: "#/components/schemas/Labels"
        links:
          type: object
          readOnly: true
          example:
            self: "/api/v2/notificationRules/1"
            labels: "/api/v2/notificationRules/1/labels"
            members: "/api/v2/notificationRules/1/members"
            owners: "/api/v2/notificationRules/1/owners"
            query: "/api/v2/notificationRules/1/query"
          properties:
            self:
              description: URL for this endpoint.
              $ref: "#/components/schemas/Link"
            labels:
              description: URL to retrieve labels for this notification rule.
              $ref: "#/components/schemas/Link"
            members:
              description: URL to retrieve members for this notification rule.
              $ref: "#/components/schemas/Link"
            owners:
              description: URL to retrieve owners for this notification rule.
              $ref: "#/components/schemas/Link"
            query:
              description: URL to retrieve flux script for this notification rule.
              $ref: "#/components/schemas/Link"
    TagRule:
      type: object
      properties:
        key:
          type: string
        value:
          type: string
        operator:
          type: string
          enum: ["equal", "notequal", "equalregex","notequalregex"]
    StatusRule:
      type: object
      properties:
        currentLevel:
          $ref: "#/components/schemas/RuleStatusLevel"
        previousLevel:
          $ref: "#/components/schemas/RuleStatusLevel"
        count:
          type: integer
        period:
          type: string
    HTTPNotificationRuleBase:
      type: object
      required: [type]
      properties:
        type:
          type: string
          enum: [http]
        url:
          type: string
    HTTPNotificationRule:
      allOf:
        - $ref: "#/components/schemas/NotificationRuleBase"
        - $ref: "#/components/schemas/HTTPNotificationRuleBase"
    SlackNotificationRuleBase:
      type: object
      required: [type, messageTemplate]
      properties:
        type:
          type: string
          enum: [slack]
        channel:
          type: string
        messageTemplate:
          type: string
    SlackNotificationRule:
      allOf:
        - $ref: "#/components/schemas/NotificationRuleBase"
        - $ref: "#/components/schemas/SlackNotificationRuleBase"
    SMTPNotificationRule:
      allOf:
        - $ref: "#/components/schemas/NotificationRuleBase"
        - $ref: "#/components/schemas/SMTPNotificationRuleBase"
    SMTPNotificationRuleBase:
      type: object
      required: [type, subjectTemplate, to]
      properties:
        type:
          type: string
          enum: [smtp]
        subjectTemplate:
          type: string
        bodyTemplate:
          type: string
        to:
          type: string
    PagerDutyNotificationRule:
      allOf:
        - $ref: "#/components/schemas/NotificationRuleBase"
        - $ref: "#/components/schemas/PagerDutyNotificationRuleBase"
    PagerDutyNotificationRuleBase:
      type: object
      required: [type, messageTemplate]
      properties:
        type:
          type: string
          enum: [pagerduty]
        messageTemplate:
          type: string
    NotificationEndpointUpdate:
      type: object

      properties:
        name:
          type: string
        description:
          type: string
        status:
          type: string
          enum:
            - active
            - inactive
    NotificationEndpointDiscrimator:
      oneOf:
        - $ref: "#/components/schemas/SlackNotificationEndpoint"
        - $ref: "#/components/schemas/PagerDutyNotificationEndpoint"
        - $ref: "#/components/schemas/HTTPNotificationEndpoint"
      discriminator:
        propertyName: type
        mapping:
          slack: "#/components/schemas/SlackNotificationEndpoint"
          pagerduty:  "#/components/schemas/PagerDutyNotificationEndpoint"
          http: "#/components/schemas/HTTPNotificationEndpoint"
    NotificationEndpoint:
      allOf:
        - $ref: "#/components/schemas/NotificationEndpointDiscrimator"
    PostNotificationEndpoint:
      allOf:
        - $ref: "#/components/schemas/NotificationEndpointDiscrimator"
    NotificationEndpoints:
      properties:
        notificationEndpoints:
          type: array
          items:
            $ref: "#/components/schemas/NotificationEndpoint"
        links:
          $ref: "#/components/schemas/Links"
    NotificationEndpointBase:
      type: object
      required: [type, name]
      properties:
        id:
          type: string
        orgID:
          type: string
        userID:
          type: string
        createdAt:
          type: string
          format: date-time
          readOnly: true
        updatedAt:
          type: string
          format: date-time
          readOnly: true
        description:
          description: An optional description of the notification endpoint.
          type: string
        name:
          type: string
        status:
          description: The status of the endpoint.
          default: active
          type: string
          enum: ["active", "inactive"]
        labels:
          $ref: "#/components/schemas/Labels"
        links:
          type: object
          readOnly: true
          example:
            self: "/api/v2/notificationEndpoints/1"
            labels: "/api/v2/notificationEndpoints/1/labels"
            members: "/api/v2/notificationEndpoints/1/members"
            owners: "/api/v2/notificationEndpoints/1/owners"
          properties:
            self:
              description: URL for this endpoint.
              $ref: "#/components/schemas/Link"
            labels:
              description: URL to retrieve labels for this endpoint.
              $ref: "#/components/schemas/Link"
            members:
              description: URL to retrieve members for this endpoint.
              $ref: "#/components/schemas/Link"
            owners:
              description: URL to retrieve owners for this endpoint.
              $ref: "#/components/schemas/Link"
        type:
          $ref: "#/components/schemas/NotificationEndpointType"
    SlackNotificationEndpoint:
      type: object
      allOf:
        - $ref: "#/components/schemas/NotificationEndpointBase"
        - type: object
          properties:
            url:
              description: Specifies the URL of the Slack endpoint. Specify either `URL` or `Token`.
              type: string
            token:
              description: Specifies the API token string. Specify either `URL` or `Token`.
              type: string
    PagerDutyNotificationEndpoint:
      type: object
      allOf:
        - $ref: "#/components/schemas/NotificationEndpointBase"
        - type: object
          required: [routingKey]
          properties:
            clientURL:
              type: string
            routingKey:
              type: string
    HTTPNotificationEndpoint:
      type: object
      allOf:
        - $ref: "#/components/schemas/NotificationEndpointBase"
        - type: object
          required: [url, authMethod, method]
          properties:
            url:
              type: string
            username:
              type: string
            password:
              type: string
            token:
              type: string
            method:
              type: string
              enum: ['POST', 'GET', 'PUT']
            authMethod:
              type: string
              enum: ['none', 'basic', 'bearer']
            contentTemplate:
              type: string
            headers:
              type: object
              description: Customized headers.
              additionalProperties:
                type: string
    NotificationEndpointType:
      type: string
      enum: ['slack', 'pagerduty', 'http']
  securitySchemes:
    BasicAuth:
      type: http
      scheme: basic
