# SPDX-FileCopyrightText: 2025 Intel Corporation
#
# SPDX-License-Identifier: Apache-2.0

openapi: 3.0.2
info:
  title: Edge Infrastructure Manager
  description: Edge Infrastructure Manager API
  license:
    name: Apache 2.0
    url: https://www.apache.org/licenses/LICENSE-2.0.html
  version: 0.1.0-dev
servers:
- url: '{apiRoot}'
  variables:
    apiRoot:
      default: https://<multitenancy-gateway-host>
security:
- BearerAuth: []
paths:
  /v1/projects/{projectName}/compute:
    get:
      description: Gets a compute object
      parameters:
      - description: Index of the first item to return. This allows skipping of items.
        in: query
        name: offset
        schema:
          default: 0
          maximum: 10000
          minimum: 0
          type: integer
      - description: Defines the amount of items to be contained in a single page,
          min of 1 and max of 100, default of 20.
        in: query
        name: pageSize
        schema:
          default: 20
          maximum: 100
          minimum: 1
          type: integer
      - description: Optional filter to return only items of interest. See https://google.aip.dev/160
          for details. Takes precedence over other filter parameters, if set.
        examples:
          example1:
            summary: through Host's Site-Id
            value: site.resourceId="site-3b382a11"
          example2:
            summary: through Metadata
            value: metadata='{"key":"exampleKey","value":"exampleValue"}'
          example3:
            summary: through Serial Number
            value: serialNumber="xxxxx"
        in: query
        name: filter
        schema:
          pattern: ^$|^[a-zA-Z-_0-9.,:/=*(){}\"' ]+$
          type: string
      - description: Optional comma separated list of fields to specify a sorting
          order. See https://google.aip.dev/132 for details.
        in: query
        name: orderBy
        schema:
          pattern: ^$|^[a-zA-Z-_0-9., ]+$
          type: string
      - deprecated: true
        description: Returns only the compute elements that are assigned with the
          given site ID. If equals to 'null', then it returns all the hosts not associated
          with any site.
        in: query
        name: siteID
        schema:
          pattern: ^site-[0-9a-f]{8}$|^null$
          type: string
      - deprecated: true
        description: Returns only the compute elements that are assigned to the given
          instanceID. If equals to 'null', then it returns all the hosts not associated
          with any instance.
        in: query
        name: instanceID
        schema:
          pattern: ^inst-[0-9a-f]{8}$|^null$
          type: string
      - deprecated: true
        description: Returns the compute elements associated with the given UUID.
          UUID field cannot be null, if specified needs to be filled.
        in: query
        name: uuid
        schema:
          maxLength: 36
          pattern: '[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}'
          type: string
      - deprecated: true
        description: Filters the metadata associated with the compute element. Values
          are expected to be in the form of 'key=value'.
        in: query
        name: metadata
        schema:
          items:
            pattern: ^[a-zA-Z-_0-9. ]+=[a-zA-Z-_0-9. ]+$
            type: string
          type: array
      - deprecated: true
        description: Indicates if compute elements identified by the filter need to
          be returned with all their respective child resources, e.g., USBs, Interfaces,
          Storages.
        in: query
        name: detail
        schema:
          type: boolean
      - description: unique projectName for the resource
        in: path
        name: projectName
        required: true
        schema:
          type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HostsList'
          description: A compute object
        "400":
          $ref: '#/components/responses/400-BadRequest'
        "401":
          $ref: '#/components/responses/401-Unauthorized'
        "403":
          $ref: '#/components/responses/403-Forbidden'
        "404":
          $ref: '#/components/responses/404-NotFound'
        "406":
          $ref: '#/components/responses/406-NotAcceptable'
        "408":
          $ref: '#/components/responses/408-Timeout'
        "409":
          $ref: '#/components/responses/409-Conflict'
        "412":
          $ref: '#/components/responses/412-PreconditionFailed'
        "422":
          $ref: '#/components/responses/422-UnprocessableEntity'
        "429":
          $ref: '#/components/responses/429-TooManyRequests'
        "500":
          $ref: '#/components/responses/500-InternalServerError'
        "501":
          $ref: '#/components/responses/501-Unimplemented'
        "503":
          $ref: '#/components/responses/503-ServiceUnavailable'
      tags:
      - Compute
  /v1/projects/{projectName}/compute/hosts:
    get:
      description: Gets all host objects
      parameters:
      - description: Index of the first item to return. This allows skipping of items.
        in: query
        name: offset
        schema:
          default: 0
          maximum: 10000
          minimum: 0
          type: integer
      - description: Defines the amount of items to be contained in a single page,
          min of 1 and max of 100, default of 20.
        in: query
        name: pageSize
        schema:
          default: 20
          maximum: 100
          minimum: 1
          type: integer
      - description: Optional filter to return only items of interest. See https://google.aip.dev/160
          for details. Takes precedence over other filter parameters, if set.
        examples:
          example1:
            summary: Through the host's site ID
            value: site.resourceId="site-3b382a11"
          example2:
            summary: Through the metadata
            value: metadata='{"key":"exampleKey","value":"exampleValue"}'
          example3:
            summary: Through the serial number
            value: serialNumber="xxxxx"
        in: query
        name: filter
        schema:
          pattern: ^$|^[a-zA-Z-_0-9.,:/=*(){}\"' ]+$
          type: string
      - description: Optional comma separated list of fields to specify a sorting
          order. See https://google.aip.dev/132 for details.
        in: query
        name: orderBy
        schema:
          pattern: ^$|^[a-zA-Z-_0-9., ]+$
          type: string
      - deprecated: true
        description: Returns only the hosts that are assigned with the given site
          ID. If equals to 'null', then it returns all the hosts not associated with
          any site.
        in: query
        name: siteID
        schema:
          pattern: ^site-[0-9a-f]{8}$|^null$
          type: string
      - deprecated: true
        description: Returns only the hosts that are assigned to the given instanceID.
          If equals to 'null', then it returns all the hosts not associated with any
          instance.
        in: query
        name: instanceID
        schema:
          pattern: ^inst-[0-9a-f]{8}$|^null$
          type: string
      - deprecated: true
        description: Returns the host associated with the given UUID. UUID field cannot
          be null, if specified needs to be filled.
        in: query
        name: uuid
        schema:
          maxLength: 36
          pattern: '[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}'
          type: string
      - description: Filters the metadata associated with the Host. Values are expected
          to be in the form 'key=value'.
        in: query
        name: metadata
        schema:
          items:
            pattern: ^[a-zA-Z-_0-9. ]+=[a-zA-Z-_0-9. ]+$
            type: string
          type: array
      - deprecated: true
        description: Indicates if the host identified by the filter needs to be returned
          with all their respective child resources, e.g., USBs, interfaces, and storages.
        in: query
        name: detail
        schema:
          type: boolean
      - description: unique projectName for the resource
        in: path
        name: projectName
        required: true
        schema:
          type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HostsList'
          description: Array of all host objects
        "400":
          $ref: '#/components/responses/400-BadRequest'
        "401":
          $ref: '#/components/responses/401-Unauthorized'
        "403":
          $ref: '#/components/responses/403-Forbidden'
        "404":
          $ref: '#/components/responses/404-NotFound'
        "406":
          $ref: '#/components/responses/406-NotAcceptable'
        "408":
          $ref: '#/components/responses/408-Timeout'
        "409":
          $ref: '#/components/responses/409-Conflict'
        "412":
          $ref: '#/components/responses/412-PreconditionFailed'
        "422":
          $ref: '#/components/responses/422-UnprocessableEntity'
        "429":
          $ref: '#/components/responses/429-TooManyRequests'
        "500":
          $ref: '#/components/responses/500-InternalServerError'
        "501":
          $ref: '#/components/responses/501-Unimplemented'
        "503":
          $ref: '#/components/responses/503-ServiceUnavailable'
      tags:
      - Host
    post:
      description: Creates a compute host.
      parameters:
      - description: unique projectName for the resource
        in: path
        name: projectName
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              allOf:
              - $ref: '#/components/schemas/Host'
        required: true
      responses:
        "201":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Host'
          description: The host was created.
          headers:
            Location:
              description: Contains the URI of the created host.
              required: true
              schema:
                type: string
        "400":
          $ref: '#/components/responses/400-BadRequest'
        "401":
          $ref: '#/components/responses/401-Unauthorized'
        "403":
          $ref: '#/components/responses/403-Forbidden'
        "404":
          $ref: '#/components/responses/404-NotFound'
        "406":
          $ref: '#/components/responses/406-NotAcceptable'
        "408":
          $ref: '#/components/responses/408-Timeout'
        "409":
          $ref: '#/components/responses/409-Conflict'
        "412":
          $ref: '#/components/responses/412-PreconditionFailed'
        "422":
          $ref: '#/components/responses/422-UnprocessableEntity'
        "429":
          $ref: '#/components/responses/429-TooManyRequests'
        "500":
          $ref: '#/components/responses/500-InternalServerError'
        "501":
          $ref: '#/components/responses/501-Unimplemented'
        "503":
          $ref: '#/components/responses/503-ServiceUnavailable'
      tags:
      - Host
  /v1/projects/{projectName}/compute/hosts/{hostID}:
    delete:
      description: Deletes a host.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/HostOperationWithNote'
      responses:
        "204":
          description: The host was deleted.
        "400":
          $ref: '#/components/responses/400-BadRequest'
        "401":
          $ref: '#/components/responses/401-Unauthorized'
        "403":
          $ref: '#/components/responses/403-Forbidden'
        "404":
          $ref: '#/components/responses/404-NotFound'
        "406":
          $ref: '#/components/responses/406-NotAcceptable'
        "408":
          $ref: '#/components/responses/408-Timeout'
        "409":
          $ref: '#/components/responses/409-Conflict'
        "412":
          $ref: '#/components/responses/412-PreconditionFailed'
        "422":
          $ref: '#/components/responses/422-UnprocessableEntity'
        "429":
          $ref: '#/components/responses/429-TooManyRequests'
        "500":
          $ref: '#/components/responses/500-InternalServerError'
        "501":
          $ref: '#/components/responses/501-Unimplemented'
        "503":
          $ref: '#/components/responses/503-ServiceUnavailable'
      tags:
      - Host
    get:
      description: Queries a host through the host ID.
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Host'
          description: The requested instance based on it's ID
        "400":
          $ref: '#/components/responses/400-BadRequest'
        "401":
          $ref: '#/components/responses/401-Unauthorized'
        "403":
          $ref: '#/components/responses/403-Forbidden'
        "404":
          $ref: '#/components/responses/404-NotFound'
        "406":
          $ref: '#/components/responses/406-NotAcceptable'
        "408":
          $ref: '#/components/responses/408-Timeout'
        "409":
          $ref: '#/components/responses/409-Conflict'
        "412":
          $ref: '#/components/responses/412-PreconditionFailed'
        "422":
          $ref: '#/components/responses/422-UnprocessableEntity'
        "429":
          $ref: '#/components/responses/429-TooManyRequests'
        "500":
          $ref: '#/components/responses/500-InternalServerError'
        "501":
          $ref: '#/components/responses/501-Unimplemented'
        "503":
          $ref: '#/components/responses/503-ServiceUnavailable'
      tags:
      - Host
    parameters:
    - description: The unique host identifier
      in: path
      name: hostID
      required: true
      schema:
        pattern: ^host-[0-9a-f]{8}$
        type: string
    - description: unique projectName for the resource
      in: path
      name: projectName
      required: true
      schema:
        type: string
    patch:
      description: Partially updates a host.
      requestBody:
        content:
          application/json:
            schema:
              allOf:
              - $ref: '#/components/schemas/Host'
              properties:
                uuid:
                  deprecated: true
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Host'
          description: The host was patched.
        "400":
          $ref: '#/components/responses/400-BadRequest'
        "401":
          $ref: '#/components/responses/401-Unauthorized'
        "403":
          $ref: '#/components/responses/403-Forbidden'
        "404":
          $ref: '#/components/responses/404-NotFound'
        "406":
          $ref: '#/components/responses/406-NotAcceptable'
        "408":
          $ref: '#/components/responses/408-Timeout'
        "409":
          $ref: '#/components/responses/409-Conflict'
        "412":
          $ref: '#/components/responses/412-PreconditionFailed'
        "422":
          $ref: '#/components/responses/422-UnprocessableEntity'
        "429":
          $ref: '#/components/responses/429-TooManyRequests'
        "500":
          $ref: '#/components/responses/500-InternalServerError'
        "501":
          $ref: '#/components/responses/501-Unimplemented'
        "503":
          $ref: '#/components/responses/503-ServiceUnavailable'
      tags:
      - Host
    put:
      description: Updates a host.
      requestBody:
        content:
          application/json:
            schema:
              allOf:
              - $ref: '#/components/schemas/Host'
              properties:
                uuid:
                  deprecated: true
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Host'
          description: The host was updated
        "400":
          $ref: '#/components/responses/400-BadRequest'
        "401":
          $ref: '#/components/responses/401-Unauthorized'
        "403":
          $ref: '#/components/responses/403-Forbidden'
        "404":
          $ref: '#/components/responses/404-NotFound'
        "406":
          $ref: '#/components/responses/406-NotAcceptable'
        "408":
          $ref: '#/components/responses/408-Timeout'
        "409":
          $ref: '#/components/responses/409-Conflict'
        "412":
          $ref: '#/components/responses/412-PreconditionFailed'
        "422":
          $ref: '#/components/responses/422-UnprocessableEntity'
        "429":
          $ref: '#/components/responses/429-TooManyRequests'
        "500":
          $ref: '#/components/responses/500-InternalServerError'
        "501":
          $ref: '#/components/responses/501-Unimplemented'
        "503":
          $ref: '#/components/responses/503-ServiceUnavailable'
      tags:
      - Host
  /v1/projects/{projectName}/compute/hosts/{hostID}/invalidate:
    parameters:
    - description: The unique host identifier
      in: path
      name: hostID
      required: true
      schema:
        pattern: ^host-[0-9a-f]{8}$
        type: string
    - description: unique projectName for the resource
      in: path
      name: projectName
      required: true
      schema:
        type: string
    put:
      description: Invalidates a host by marking it as untrusted. Once invalidated,
        a Host will no longer be able to communicate with Edge Infrastructure Manager
        unless it is deleted and provisioned again.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/HostOperationWithNote'
      responses:
        "200":
          description: The host was invalidated
        "400":
          $ref: '#/components/responses/400-BadRequest'
        "401":
          $ref: '#/components/responses/401-Unauthorized'
        "403":
          $ref: '#/components/responses/403-Forbidden'
        "404":
          $ref: '#/components/responses/404-NotFound'
        "406":
          $ref: '#/components/responses/406-NotAcceptable'
        "408":
          $ref: '#/components/responses/408-Timeout'
        "409":
          $ref: '#/components/responses/409-Conflict'
        "412":
          $ref: '#/components/responses/412-PreconditionFailed'
        "422":
          $ref: '#/components/responses/422-UnprocessableEntity'
        "429":
          $ref: '#/components/responses/429-TooManyRequests'
        "500":
          $ref: '#/components/responses/500-InternalServerError'
        "501":
          $ref: '#/components/responses/501-Unimplemented'
        "503":
          $ref: '#/components/responses/503-ServiceUnavailable'
      tags:
      - Host
  /v1/projects/{projectName}/compute/hosts/{hostID}/onboard:
    parameters:
    - description: The unique host identifier.
      in: path
      name: hostID
      required: true
      schema:
        pattern: ^host-[0-9a-f]{8}$
        type: string
    - description: unique projectName for the resource
      in: path
      name: projectName
      required: true
      schema:
        type: string
    patch:
      description: Onboards a host to Edge Orchestrator.
      responses:
        "200":
          description: The host was onboarded.
        "400":
          $ref: '#/components/responses/400-BadRequest'
        "401":
          $ref: '#/components/responses/401-Unauthorized'
        "403":
          $ref: '#/components/responses/403-Forbidden'
        "404":
          $ref: '#/components/responses/404-NotFound'
        "406":
          $ref: '#/components/responses/406-NotAcceptable'
        "408":
          $ref: '#/components/responses/408-Timeout'
        "409":
          $ref: '#/components/responses/409-Conflict'
        "412":
          $ref: '#/components/responses/412-PreconditionFailed'
        "422":
          $ref: '#/components/responses/422-UnprocessableEntity'
        "429":
          $ref: '#/components/responses/429-TooManyRequests'
        "500":
          $ref: '#/components/responses/500-InternalServerError'
        "501":
          $ref: '#/components/responses/501-Unimplemented'
        "503":
          $ref: '#/components/responses/503-ServiceUnavailable'
      tags:
      - Host
  /v1/projects/{projectName}/compute/hosts/{hostID}/register:
    parameters:
    - description: The unique host identifier.
      in: path
      name: hostID
      required: true
      schema:
        pattern: ^host-[0-9a-f]{8}$
        type: string
    - description: unique projectName for the resource
      in: path
      name: projectName
      required: true
      schema:
        type: string
    patch:
      description: Updates a host registration information.
      requestBody:
        content:
          application/json:
            schema:
              allOf:
              - $ref: '#/components/schemas/HostRegisterInfo'
              - properties:
                  serialNumber:
                    readOnly: true
                  uuid:
                    readOnly: true
        required: true
      responses:
        "200":
          description: The host registration information was updated.
        "400":
          $ref: '#/components/responses/400-BadRequest'
        "401":
          $ref: '#/components/responses/401-Unauthorized'
        "403":
          $ref: '#/components/responses/403-Forbidden'
        "404":
          $ref: '#/components/responses/404-NotFound'
        "406":
          $ref: '#/components/responses/406-NotAcceptable'
        "408":
          $ref: '#/components/responses/408-Timeout'
        "409":
          $ref: '#/components/responses/409-Conflict'
        "412":
          $ref: '#/components/responses/412-PreconditionFailed'
        "422":
          $ref: '#/components/responses/422-UnprocessableEntity'
        "429":
          $ref: '#/components/responses/429-TooManyRequests'
        "500":
          $ref: '#/components/responses/500-InternalServerError'
        "501":
          $ref: '#/components/responses/501-Unimplemented'
        "503":
          $ref: '#/components/responses/503-ServiceUnavailable'
      tags:
      - Host
  /v1/projects/{projectName}/compute/hosts/register:
    post:
      description: Registers a host by providing unique identifiers.
      parameters:
      - description: unique projectName for the resource
        in: path
        name: projectName
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/HostRegisterInfo'
        required: true
      responses:
        "201":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Host'
          description: The host was registered.
          headers:
            Location:
              description: Contains the URI of the registered host.
              required: true
              schema:
                type: string
        "400":
          $ref: '#/components/responses/400-BadRequest'
        "401":
          $ref: '#/components/responses/401-Unauthorized'
        "403":
          $ref: '#/components/responses/403-Forbidden'
        "404":
          $ref: '#/components/responses/404-NotFound'
        "406":
          $ref: '#/components/responses/406-NotAcceptable'
        "408":
          $ref: '#/components/responses/408-Timeout'
        "409":
          $ref: '#/components/responses/409-Conflict'
        "412":
          $ref: '#/components/responses/412-PreconditionFailed'
        "422":
          $ref: '#/components/responses/422-UnprocessableEntity'
        "429":
          $ref: '#/components/responses/429-TooManyRequests'
        "500":
          $ref: '#/components/responses/500-InternalServerError'
        "501":
          $ref: '#/components/responses/501-Unimplemented'
        "503":
          $ref: '#/components/responses/503-ServiceUnavailable'
      tags:
      - Host
  /v1/projects/{projectName}/compute/hosts/summary:
    get:
      description: Gets the summary of host objects.
      parameters:
      - deprecated: true
        description: The site ID the hosts belong to. If not specified, returns the
          summary of all hosts. If specified, returns the summary of hosts that have
          the given site ID applied to them.
        in: query
        name: siteID
        schema:
          deprecated: true
          pattern: ^site-[0-9a-f]{8}$
          type: string
      - description: Optional filter to return only items of interest. See https://google.aip.dev/160
          for details. Takes precedence over other filter parameters, if set.
        examples:
          example1:
            summary: Through the host's site ID
            value: site.resourceId="site-3b382a11"
          example2:
            summary: Through the metadata
            value: metadata='{"key":"exampleKey","value":"exampleValue"}'
          example3:
            summary: Through the serial number
            value: serialNumber="xxxxx"
        in: query
        name: filter
        schema:
          pattern: ^$|^[a-zA-Z-_0-9.,:/=*(){}\"' ]+$
          type: string
      - description: unique projectName for the resource
        in: path
        name: projectName
        required: true
        schema:
          type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HostsSummary'
          description: 'A summary of host objects associated with the given site ID. '
        "400":
          $ref: '#/components/responses/400-BadRequest'
        "401":
          $ref: '#/components/responses/401-Unauthorized'
        "403":
          $ref: '#/components/responses/403-Forbidden'
        "404":
          $ref: '#/components/responses/404-NotFound'
        "406":
          $ref: '#/components/responses/406-NotAcceptable'
        "408":
          $ref: '#/components/responses/408-Timeout'
        "409":
          $ref: '#/components/responses/409-Conflict'
        "412":
          $ref: '#/components/responses/412-PreconditionFailed'
        "422":
          $ref: '#/components/responses/422-UnprocessableEntity'
        "429":
          $ref: '#/components/responses/429-TooManyRequests'
        "500":
          $ref: '#/components/responses/500-InternalServerError'
        "501":
          $ref: '#/components/responses/501-Unimplemented'
        "503":
          $ref: '#/components/responses/503-ServiceUnavailable'
      tags:
      - Host
  /v1/projects/{projectName}/compute/instances:
    get:
      description: Gets all instance objects.
      parameters:
      - description: Index of the first item to return. This allows skipping of items.
        in: query
        name: offset
        schema:
          default: 0
          maximum: 10000
          minimum: 0
          type: integer
      - description: Defines the amount of items to be contained in a single page,
          min of 1 and max of 100, default of 20.
        in: query
        name: pageSize
        schema:
          default: 20
          maximum: 100
          minimum: 1
          type: integer
      - description: Optional filter to return only items of interest. See https://google.aip.dev/160
          for details.
        examples:
          example1:
            summary: Through the instance's host ID
            value: host.resourceId="host-3b382a11"
          example2:
            summary: Through the instance's name
            value: name="instance name example"
          example3:
            summary: Through the instance's OS ID
            value: os.resourceId="os-a3b1c66d"
        in: query
        name: filter
        schema:
          pattern: ^$|^[a-zA-Z-_0-9.,:/=*(){}\"' ]+$
          type: string
      - description: Optional comma-separated list of fields to specify a sorting
          order. See https://google.aip.dev/132 for details.
        in: query
        name: orderBy
        schema:
          pattern: ^$|^[a-zA-Z-_0-9., ]+$
          type: string
      - allowEmptyValue: true
        deprecated: true
        description: Returns only the instances that are assigned to the given workload
          member. If equals to 'null', returns all instances not associated with any
          workload member. If equal to '' (empty string), returns all instances that
          have a workload member associated.
        in: query
        name: workloadMemberID
        schema:
          pattern: ^$|^workloadmember-[0-9a-f]{8}$|^null$
          type: string
      - deprecated: true
        description: Returns the instances associated with the host with the given
          host ID.
        in: query
        name: hostID
        schema:
          pattern: ^host-[0-9a-f]{8}$
          type: string
      - deprecated: true
        description: Returns the instances associated with the hosts in the site identified.
          by the given siteID
        in: query
        name: siteID
        schema:
          pattern: ^site-[0-9a-f]{8}$
          type: string
      - description: unique projectName for the resource
        in: path
        name: projectName
        required: true
        schema:
          type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InstanceList'
          description: Array of all instance objects.
        "400":
          $ref: '#/components/responses/400-BadRequest'
        "401":
          $ref: '#/components/responses/401-Unauthorized'
        "403":
          $ref: '#/components/responses/403-Forbidden'
        "404":
          $ref: '#/components/responses/404-NotFound'
        "406":
          $ref: '#/components/responses/406-NotAcceptable'
        "408":
          $ref: '#/components/responses/408-Timeout'
        "409":
          $ref: '#/components/responses/409-Conflict'
        "412":
          $ref: '#/components/responses/412-PreconditionFailed'
        "422":
          $ref: '#/components/responses/422-UnprocessableEntity'
        "429":
          $ref: '#/components/responses/429-TooManyRequests'
        "500":
          $ref: '#/components/responses/500-InternalServerError'
        "501":
          $ref: '#/components/responses/501-Unimplemented'
        "503":
          $ref: '#/components/responses/503-ServiceUnavailable'
      tags:
      - Instance
    post:
      description: Creates an instance.
      parameters:
      - description: unique projectName for the resource
        in: path
        name: projectName
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              allOf:
              - $ref: '#/components/schemas/Instance'
              required:
              - kind
              - hostID
              - osID
        required: true
      responses:
        "201":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Instance'
          description: The instance was created.
          headers:
            Location:
              description: Contains the URI of the created instance.
              required: true
              schema:
                type: string
        "400":
          $ref: '#/components/responses/400-BadRequest'
        "401":
          $ref: '#/components/responses/401-Unauthorized'
        "403":
          $ref: '#/components/responses/403-Forbidden'
        "404":
          $ref: '#/components/responses/404-NotFound'
        "406":
          $ref: '#/components/responses/406-NotAcceptable'
        "408":
          $ref: '#/components/responses/408-Timeout'
        "409":
          $ref: '#/components/responses/409-Conflict'
        "412":
          $ref: '#/components/responses/412-PreconditionFailed'
        "422":
          $ref: '#/components/responses/422-UnprocessableEntity'
        "429":
          $ref: '#/components/responses/429-TooManyRequests'
        "500":
          $ref: '#/components/responses/500-InternalServerError'
        "501":
          $ref: '#/components/responses/501-Unimplemented'
        "503":
          $ref: '#/components/responses/503-ServiceUnavailable'
      tags:
      - Instance
  /v1/projects/{projectName}/compute/instances/{instanceID}:
    delete:
      description: Deletes an instance, provided that the instance does not contain
        members.
      responses:
        "204":
          description: The instance was deleted.
        "400":
          $ref: '#/components/responses/400-BadRequest'
        "401":
          $ref: '#/components/responses/401-Unauthorized'
        "403":
          $ref: '#/components/responses/403-Forbidden'
        "404":
          $ref: '#/components/responses/404-NotFound'
        "406":
          $ref: '#/components/responses/406-NotAcceptable'
        "408":
          $ref: '#/components/responses/408-Timeout'
        "409":
          $ref: '#/components/responses/409-Conflict'
        "412":
          $ref: '#/components/responses/412-PreconditionFailed'
        "422":
          $ref: '#/components/responses/422-UnprocessableEntity'
        "429":
          $ref: '#/components/responses/429-TooManyRequests'
        "500":
          $ref: '#/components/responses/500-InternalServerError'
        "501":
          $ref: '#/components/responses/501-Unimplemented'
        "503":
          $ref: '#/components/responses/503-ServiceUnavailable'
      tags:
      - Instance
    get:
      description: Gets an instance.
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Instance'
          description: The requested instance based on its ID.
        "400":
          $ref: '#/components/responses/400-BadRequest'
        "401":
          $ref: '#/components/responses/401-Unauthorized'
        "403":
          $ref: '#/components/responses/403-Forbidden'
        "404":
          $ref: '#/components/responses/404-NotFound'
        "406":
          $ref: '#/components/responses/406-NotAcceptable'
        "408":
          $ref: '#/components/responses/408-Timeout'
        "409":
          $ref: '#/components/responses/409-Conflict'
        "412":
          $ref: '#/components/responses/412-PreconditionFailed'
        "422":
          $ref: '#/components/responses/422-UnprocessableEntity'
        "429":
          $ref: '#/components/responses/429-TooManyRequests'
        "500":
          $ref: '#/components/responses/500-InternalServerError'
        "501":
          $ref: '#/components/responses/501-Unimplemented'
        "503":
          $ref: '#/components/responses/503-ServiceUnavailable'
      tags:
      - Instance
    parameters:
    - description: The unique instance identifier.
      in: path
      name: instanceID
      required: true
      schema:
        pattern: ^inst-[0-9a-f]{8}$
        type: string
    - description: unique projectName for the resource
      in: path
      name: projectName
      required: true
      schema:
        type: string
    patch:
      description: Partially updates an instance.
      requestBody:
        content:
          application/json:
            schema:
              allOf:
              - $ref: '#/components/schemas/Instance'
              properties:
                securityFeature:
                  deprecated: true
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Instance'
          description: The instance was patched.
        "400":
          $ref: '#/components/responses/400-BadRequest'
        "401":
          $ref: '#/components/responses/401-Unauthorized'
        "403":
          $ref: '#/components/responses/403-Forbidden'
        "404":
          $ref: '#/components/responses/404-NotFound'
        "406":
          $ref: '#/components/responses/406-NotAcceptable'
        "408":
          $ref: '#/components/responses/408-Timeout'
        "409":
          $ref: '#/components/responses/409-Conflict'
        "412":
          $ref: '#/components/responses/412-PreconditionFailed'
        "422":
          $ref: '#/components/responses/422-UnprocessableEntity'
        "429":
          $ref: '#/components/responses/429-TooManyRequests'
        "500":
          $ref: '#/components/responses/500-InternalServerError'
        "501":
          $ref: '#/components/responses/501-Unimplemented'
        "503":
          $ref: '#/components/responses/503-ServiceUnavailable'
      tags:
      - Instance
  /v1/projects/{projectName}/compute/instances/{instanceID}/invalidate:
    parameters:
    - description: The unique instance identifier.
      in: path
      name: instanceID
      required: true
      schema:
        pattern: ^inst-[0-9a-f]{8}$
        type: string
    - description: unique projectName for the resource
      in: path
      name: projectName
      required: true
      schema:
        type: string
    put:
      description: Invalidates an instance by marking it as untrusted. Once invalidated,
        the instance will no longer be able to communicate with Edge Infrastructure
        Manager unless it is deleted and provisioned again.
      responses:
        "200":
          description: The instance was invalidated
        "400":
          $ref: '#/components/responses/400-BadRequest'
        "401":
          $ref: '#/components/responses/401-Unauthorized'
        "403":
          $ref: '#/components/responses/403-Forbidden'
        "404":
          $ref: '#/components/responses/404-NotFound'
        "406":
          $ref: '#/components/responses/406-NotAcceptable'
        "408":
          $ref: '#/components/responses/408-Timeout'
        "409":
          $ref: '#/components/responses/409-Conflict'
        "412":
          $ref: '#/components/responses/412-PreconditionFailed'
        "422":
          $ref: '#/components/responses/422-UnprocessableEntity'
        "429":
          $ref: '#/components/responses/429-TooManyRequests'
        "500":
          $ref: '#/components/responses/500-InternalServerError'
        "501":
          $ref: '#/components/responses/501-Unimplemented'
        "503":
          $ref: '#/components/responses/503-ServiceUnavailable'
      tags:
      - Instance
  /v1/projects/{projectName}/compute/os:
    get:
      description: Gets all OS resources' objects.
      parameters:
      - description: Index of the first item to return. This allows skipping of items.
        in: query
        name: offset
        schema:
          default: 0
          maximum: 10000
          minimum: 0
          type: integer
      - description: Defines the amount of items to be contained in a single page,
          min of 1 and max of 100, default of 20.
        in: query
        name: pageSize
        schema:
          default: 20
          maximum: 100
          minimum: 1
          type: integer
      - description: Optional filter to return only items of interest. See https://google.aip.dev/160
          for details. Takes precedence over other filter parameters, if set.
        in: query
        name: filter
        schema:
          pattern: ^$|^[a-zA-Z-_0-9.,:/=*(){}\"' ]+$
          type: string
      - description: Optional comma-separated list of fields to specify a sorting
          order. See https://google.aip.dev/132 for details.
        in: query
        name: orderBy
        schema:
          pattern: ^$|^[a-zA-Z-_0-9., ]+$
          type: string
      - description: unique projectName for the resource
        in: path
        name: projectName
        required: true
        schema:
          type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OperatingSystemResourceList'
          description: Array of all OS resource objects.
        "400":
          $ref: '#/components/responses/400-BadRequest'
        "401":
          $ref: '#/components/responses/401-Unauthorized'
        "403":
          $ref: '#/components/responses/403-Forbidden'
        "404":
          $ref: '#/components/responses/404-NotFound'
        "406":
          $ref: '#/components/responses/406-NotAcceptable'
        "408":
          $ref: '#/components/responses/408-Timeout'
        "409":
          $ref: '#/components/responses/409-Conflict'
        "412":
          $ref: '#/components/responses/412-PreconditionFailed'
        "422":
          $ref: '#/components/responses/422-UnprocessableEntity'
        "429":
          $ref: '#/components/responses/429-TooManyRequests'
        "500":
          $ref: '#/components/responses/500-InternalServerError'
        "501":
          $ref: '#/components/responses/501-Unimplemented'
        "503":
          $ref: '#/components/responses/503-ServiceUnavailable'
      tags:
      - OS
    post:
      description: Creates an OS resource.
      parameters:
      - description: unique projectName for the resource
        in: path
        name: projectName
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OperatingSystemResource'
        required: true
      responses:
        "201":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OperatingSystemResource'
          description: The OS resource was created.
          headers:
            Location:
              description: Contains the URI of the created OS resource.
              required: true
              schema:
                type: string
        "400":
          $ref: '#/components/responses/400-BadRequest'
        "401":
          $ref: '#/components/responses/401-Unauthorized'
        "403":
          $ref: '#/components/responses/403-Forbidden'
        "404":
          $ref: '#/components/responses/404-NotFound'
        "406":
          $ref: '#/components/responses/406-NotAcceptable'
        "408":
          $ref: '#/components/responses/408-Timeout'
        "409":
          $ref: '#/components/responses/409-Conflict'
        "412":
          $ref: '#/components/responses/412-PreconditionFailed'
        "422":
          $ref: '#/components/responses/422-UnprocessableEntity'
        "429":
          $ref: '#/components/responses/429-TooManyRequests'
        "500":
          $ref: '#/components/responses/500-InternalServerError'
        "501":
          $ref: '#/components/responses/501-Unimplemented'
        "503":
          $ref: '#/components/responses/503-ServiceUnavailable'
      tags:
      - OS
  /v1/projects/{projectName}/compute/os/{OSResourceID}:
    delete:
      description: Deletes an OS resource.
      responses:
        "204":
          description: The OS resource was deleted.
        "400":
          $ref: '#/components/responses/400-BadRequest'
        "401":
          $ref: '#/components/responses/401-Unauthorized'
        "403":
          $ref: '#/components/responses/403-Forbidden'
        "404":
          $ref: '#/components/responses/404-NotFound'
        "406":
          $ref: '#/components/responses/406-NotAcceptable'
        "408":
          $ref: '#/components/responses/408-Timeout'
        "409":
          $ref: '#/components/responses/409-Conflict'
        "412":
          $ref: '#/components/responses/412-PreconditionFailed'
        "422":
          $ref: '#/components/responses/422-UnprocessableEntity'
        "429":
          $ref: '#/components/responses/429-TooManyRequests'
        "500":
          $ref: '#/components/responses/500-InternalServerError'
        "501":
          $ref: '#/components/responses/501-Unimplemented'
        "503":
          $ref: '#/components/responses/503-ServiceUnavailable'
      tags:
      - OS
    get:
      description: Gets an OS resource.
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OperatingSystemResource'
          description: The requested OS resource.
        "400":
          $ref: '#/components/responses/400-BadRequest'
        "401":
          $ref: '#/components/responses/401-Unauthorized'
        "403":
          $ref: '#/components/responses/403-Forbidden'
        "422":
          $ref: '#/components/responses/422-UnprocessableEntity'
        "429":
          $ref: '#/components/responses/429-TooManyRequests'
        "500":
          $ref: '#/components/responses/500-InternalServerError'
        "501":
          $ref: '#/components/responses/501-Unimplemented'
        "503":
          $ref: '#/components/responses/503-ServiceUnavailable'
      tags:
      - OS
    parameters:
    - description: The unique OS resource identifier.
      in: path
      name: OSResourceID
      required: true
      schema:
        pattern: ^os-[0-9a-f]{8}$
        type: string
    - description: unique projectName for the resource
      in: path
      name: projectName
      required: true
      schema:
        type: string
    patch:
      description: Partially updates an OS resource.
      requestBody:
        content:
          application/json:
            schema:
              allOf:
              - $ref: '#/components/schemas/OperatingSystemResource'
              properties:
                osProvider:
                  readOnly: true
                osType:
                  readOnly: true
                profileName:
                  deprecated: true
                securityFeature:
                  deprecated: true
                sha256:
                  deprecated: true
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OperatingSystemResource'
          description: The OS resource was patched.
        "400":
          $ref: '#/components/responses/400-BadRequest'
        "401":
          $ref: '#/components/responses/401-Unauthorized'
        "403":
          $ref: '#/components/responses/403-Forbidden'
        "404":
          $ref: '#/components/responses/404-NotFound'
        "406":
          $ref: '#/components/responses/406-NotAcceptable'
        "408":
          $ref: '#/components/responses/408-Timeout'
        "409":
          $ref: '#/components/responses/409-Conflict'
        "412":
          $ref: '#/components/responses/412-PreconditionFailed'
        "422":
          $ref: '#/components/responses/422-UnprocessableEntity'
        "429":
          $ref: '#/components/responses/429-TooManyRequests'
        "500":
          $ref: '#/components/responses/500-InternalServerError'
        "501":
          $ref: '#/components/responses/501-Unimplemented'
        "503":
          $ref: '#/components/responses/503-ServiceUnavailable'
      tags:
      - OS
    put:
      description: Updates an OS resource.
      requestBody:
        content:
          application/json:
            schema:
              allOf:
              - $ref: '#/components/schemas/OperatingSystemResource'
              properties:
                osProvider:
                  readOnly: true
                osType:
                  readOnly: true
                profileName:
                  deprecated: true
                securityFeature:
                  deprecated: true
                sha256:
                  deprecated: true
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OperatingSystemResource'
          description: The OS resource was updated.
        "400":
          $ref: '#/components/responses/400-BadRequest'
        "401":
          $ref: '#/components/responses/401-Unauthorized'
        "403":
          $ref: '#/components/responses/403-Forbidden'
        "404":
          $ref: '#/components/responses/404-NotFound'
        "406":
          $ref: '#/components/responses/406-NotAcceptable'
        "408":
          $ref: '#/components/responses/408-Timeout'
        "409":
          $ref: '#/components/responses/409-Conflict'
        "412":
          $ref: '#/components/responses/412-PreconditionFailed'
        "422":
          $ref: '#/components/responses/422-UnprocessableEntity'
        "429":
          $ref: '#/components/responses/429-TooManyRequests'
        "500":
          $ref: '#/components/responses/500-InternalServerError'
        "501":
          $ref: '#/components/responses/501-Unimplemented'
        "503":
          $ref: '#/components/responses/503-ServiceUnavailable'
      tags:
      - OS
  /v1/projects/{projectName}/compute/schedules:
    get:
      description: Gets all schedules to operate on objects.
      parameters:
      - description: Identifies the paging unique identifier for a single page, starts
          index at 1.
        in: query
        name: offset
        schema:
          default: 0
          maximum: 10000
          minimum: 0
          type: integer
      - description: Defines the amount of items to be contained in a single page,
          min of 1 and max of 100, default of 20.
        in: query
        name: pageSize
        schema:
          default: 20
          maximum: 100
          minimum: 1
          type: integer
      - description: The region ID target of the schedules. If not specified, returns
          all schedules (given the other query parameters). If specified, returns
          the schedules that have the specified region ID applied to them, i.e., target
          including the inherited ones (parent region if not null). If null, returns
          all schedules without a region ID as target.
        in: query
        name: regionID
        schema:
          pattern: ^region-[0-9a-f]{8}$
          type: string
      - description: The site ID target of the schedules. If not specified, returns
          all schedules (given the other query parameters). If specified, returns
          the schedules that have the specified site ID applied to them, i.e., target
          including the inherited ones. If null, returns all schedules without a site
          ID as target.
        in: query
        name: siteID
        schema:
          pattern: ^site-[0-9a-f]{8}$|^null$
          type: string
      - description: The host ID target of the schedules. If not specified, returns
          all schedules (given the other query parameters). If specified, returns
          the schedules that have the specified host ID applied to them, i.e., target
          including the inherited ones (parent site if not null). If null, returns
          all schedules without a host ID as target.
        in: query
        name: hostID
        schema:
          pattern: ^host-[0-9a-f]{8}$|^null$
          type: string
      - description: Filters based on the timestamp, expected to be UNIX epoch UTC
          timestamp in seconds
        in: query
        name: unix_epoch
        schema:
          pattern: ^[0-9]+$
          type: string
      - description: unique projectName for the resource
        in: path
        name: projectName
        required: true
        schema:
          type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SchedulesListJoin'
          description: Arrays of all schedule objects.
        "400":
          $ref: '#/components/responses/400-BadRequest'
        "401":
          $ref: '#/components/responses/401-Unauthorized'
        "403":
          $ref: '#/components/responses/403-Forbidden'
        "404":
          $ref: '#/components/responses/404-NotFound'
        "406":
          $ref: '#/components/responses/406-NotAcceptable'
        "408":
          $ref: '#/components/responses/408-Timeout'
        "409":
          $ref: '#/components/responses/409-Conflict'
        "412":
          $ref: '#/components/responses/412-PreconditionFailed'
        "422":
          $ref: '#/components/responses/422-UnprocessableEntity'
        "429":
          $ref: '#/components/responses/429-TooManyRequests'
        "500":
          $ref: '#/components/responses/500-InternalServerError'
        "501":
          $ref: '#/components/responses/501-Unimplemented'
        "503":
          $ref: '#/components/responses/503-ServiceUnavailable'
      tags:
      - Schedule
  /v1/projects/{projectName}/compute/workloads:
    get:
      description: Gets all workload objects.
      parameters:
      - description: Index of the first item to return. This allows skipping of items.
        in: query
        name: offset
        schema:
          default: 0
          maximum: 10000
          minimum: 0
          type: integer
      - description: Defines the amount of items to be contained in a single page,
          min of 1 and max of 100, default of 20.
        in: query
        name: pageSize
        schema:
          default: 20
          maximum: 100
          minimum: 1
          type: integer
      - description: Optional filter to return only items of interest. See https://google.aip.dev/160
          for details. Takes precedence over other filter parameters, if set.
        in: query
        name: filter
        schema:
          pattern: ^$|^[a-zA-Z-_0-9.,:/=*(){}\"' ]+$
          type: string
      - description: Optional comma-separated list of fields to specify a sorting
          order. See https://google.aip.dev/132 for details.
        in: query
        name: orderBy
        schema:
          pattern: ^$|^[a-zA-Z-_0-9., ]+$
          type: string
      - deprecated: true
        in: query
        name: kind
        schema:
          $ref: '#/components/schemas/WorkloadKind'
      - description: unique projectName for the resource
        in: path
        name: projectName
        required: true
        schema:
          type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkloadList'
          description: Array of all workload objects.
        "400":
          $ref: '#/components/responses/400-BadRequest'
        "401":
          $ref: '#/components/responses/401-Unauthorized'
        "403":
          $ref: '#/components/responses/403-Forbidden'
        "404":
          $ref: '#/components/responses/404-NotFound'
        "406":
          $ref: '#/components/responses/406-NotAcceptable'
        "408":
          $ref: '#/components/responses/408-Timeout'
        "409":
          $ref: '#/components/responses/409-Conflict'
        "412":
          $ref: '#/components/responses/412-PreconditionFailed'
        "422":
          $ref: '#/components/responses/422-UnprocessableEntity'
        "429":
          $ref: '#/components/responses/429-TooManyRequests'
        "500":
          $ref: '#/components/responses/500-InternalServerError'
        "501":
          $ref: '#/components/responses/501-Unimplemented'
        "503":
          $ref: '#/components/responses/503-ServiceUnavailable'
      tags:
      - Workload
    post:
      description: Creates a workload object.
      parameters:
      - description: unique projectName for the resource
        in: path
        name: projectName
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Workload'
        required: true
      responses:
        "201":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Workload'
          description: The workload was created.
          headers:
            Location:
              description: Contains the URI of the workload created.
              required: true
              schema:
                type: string
        "400":
          $ref: '#/components/responses/400-BadRequest'
        "401":
          $ref: '#/components/responses/401-Unauthorized'
        "403":
          $ref: '#/components/responses/403-Forbidden'
        "404":
          $ref: '#/components/responses/404-NotFound'
        "406":
          $ref: '#/components/responses/406-NotAcceptable'
        "408":
          $ref: '#/components/responses/408-Timeout'
        "409":
          $ref: '#/components/responses/409-Conflict'
        "412":
          $ref: '#/components/responses/412-PreconditionFailed'
        "422":
          $ref: '#/components/responses/422-UnprocessableEntity'
        "429":
          $ref: '#/components/responses/429-TooManyRequests'
        "500":
          $ref: '#/components/responses/500-InternalServerError'
        "501":
          $ref: '#/components/responses/501-Unimplemented'
        "503":
          $ref: '#/components/responses/503-ServiceUnavailable'
      tags:
      - Workload
  /v1/projects/{projectName}/compute/workloads/{workloadID}:
    delete:
      description: Deletes a workload, provided that the workload does not contain
        members.
      responses:
        "204":
          description: The workload was deleted.
        "400":
          $ref: '#/components/responses/400-BadRequest'
        "401":
          $ref: '#/components/responses/401-Unauthorized'
        "403":
          $ref: '#/components/responses/403-Forbidden'
        "404":
          $ref: '#/components/responses/404-NotFound'
        "406":
          $ref: '#/components/responses/406-NotAcceptable'
        "408":
          $ref: '#/components/responses/408-Timeout'
        "409":
          $ref: '#/components/responses/409-Conflict'
        "412":
          $ref: '#/components/responses/412-PreconditionFailed'
        "422":
          $ref: '#/components/responses/422-UnprocessableEntity'
        "429":
          $ref: '#/components/responses/429-TooManyRequests'
        "500":
          $ref: '#/components/responses/500-InternalServerError'
        "501":
          $ref: '#/components/responses/501-Unimplemented'
        "503":
          $ref: '#/components/responses/503-ServiceUnavailable'
      tags:
      - Workload
    get:
      description: Gets a workload object.
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Workload'
          description: The requested workload object given its ID.
        "400":
          $ref: '#/components/responses/400-BadRequest'
        "401":
          $ref: '#/components/responses/401-Unauthorized'
        "403":
          $ref: '#/components/responses/403-Forbidden'
        "404":
          $ref: '#/components/responses/404-NotFound'
        "406":
          $ref: '#/components/responses/406-NotAcceptable'
        "408":
          $ref: '#/components/responses/408-Timeout'
        "409":
          $ref: '#/components/responses/409-Conflict'
        "412":
          $ref: '#/components/responses/412-PreconditionFailed'
        "422":
          $ref: '#/components/responses/422-UnprocessableEntity'
        "429":
          $ref: '#/components/responses/429-TooManyRequests'
        "500":
          $ref: '#/components/responses/500-InternalServerError'
        "501":
          $ref: '#/components/responses/501-Unimplemented'
        "503":
          $ref: '#/components/responses/503-ServiceUnavailable'
      tags:
      - Workload
    parameters:
    - description: The unique workload identifier.
      in: path
      name: workloadID
      required: true
      schema:
        pattern: ^workload-[0-9a-f]{8}$
        type: string
    - description: unique projectName for the resource
      in: path
      name: projectName
      required: true
      schema:
        type: string
    patch:
      description: Partially updates a workload object.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Workload'
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Workload'
          description: The workload was patched.
        "400":
          $ref: '#/components/responses/400-BadRequest'
        "401":
          $ref: '#/components/responses/401-Unauthorized'
        "403":
          $ref: '#/components/responses/403-Forbidden'
        "404":
          $ref: '#/components/responses/404-NotFound'
        "406":
          $ref: '#/components/responses/406-NotAcceptable'
        "408":
          $ref: '#/components/responses/408-Timeout'
        "409":
          $ref: '#/components/responses/409-Conflict'
        "412":
          $ref: '#/components/responses/412-PreconditionFailed'
        "422":
          $ref: '#/components/responses/422-UnprocessableEntity'
        "429":
          $ref: '#/components/responses/429-TooManyRequests'
        "500":
          $ref: '#/components/responses/500-InternalServerError'
        "501":
          $ref: '#/components/responses/501-Unimplemented'
        "503":
          $ref: '#/components/responses/503-ServiceUnavailable'
      tags:
      - Workload
    put:
      description: Updates a workload object.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Workload'
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Workload'
          description: The workload was updated.
        "400":
          $ref: '#/components/responses/400-BadRequest'
        "401":
          $ref: '#/components/responses/401-Unauthorized'
        "403":
          $ref: '#/components/responses/403-Forbidden'
        "404":
          $ref: '#/components/responses/404-NotFound'
        "406":
          $ref: '#/components/responses/406-NotAcceptable'
        "408":
          $ref: '#/components/responses/408-Timeout'
        "409":
          $ref: '#/components/responses/409-Conflict'
        "412":
          $ref: '#/components/responses/412-PreconditionFailed'
        "422":
          $ref: '#/components/responses/422-UnprocessableEntity'
        "429":
          $ref: '#/components/responses/429-TooManyRequests'
        "500":
          $ref: '#/components/responses/500-InternalServerError'
        "501":
          $ref: '#/components/responses/501-Unimplemented'
        "503":
          $ref: '#/components/responses/503-ServiceUnavailable'
      tags:
      - Workload
  /v1/projects/{projectName}/compute/workloads/{workloadID}/members:
    get:
      description: Gets the list of workload members.
      parameters:
      - description: Index of the first item to return. This allows skipping of items.
        in: query
        name: offset
        schema:
          default: 0
          maximum: 10000
          minimum: 0
          type: integer
      - description: Defines the amount of items to be contained in a single page,
          min of 1 and max of 100, default of 20.
        in: query
        name: pageSize
        schema:
          default: 20
          maximum: 100
          minimum: 1
          type: integer
      - description: Optional filter to return only items of interest. See https://google.aip.dev/160
          for details. Takes precedence over other filter parameters, if set.
        in: query
        name: filter
        schema:
          pattern: ^$|^[a-zA-Z-_0-9.,:/=*(){}\"' ]+$
          type: string
      - description: Optional comma-separated list of fields to specify a sorting
          order. See https://google.aip.dev/132 for details.
        in: query
        name: orderBy
        schema:
          pattern: ^$|^[a-zA-Z-_0-9., ]+$
          type: string
      - deprecated: true
        description: The unique workload identifier.
        in: query
        name: workload_id
        schema:
          pattern: ^workload-[0-9a-f]{8}$
          type: string
      - description: unique projectName for the resource
        in: path
        name: projectName
        required: true
        schema:
          type: string
      - description: unique workloadID for the resource
        in: path
        name: workloadID
        required: true
        schema:
          type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkloadMemberList'
          description: The requested workload members.
        "400":
          $ref: '#/components/responses/400-BadRequest'
        "401":
          $ref: '#/components/responses/401-Unauthorized'
        "403":
          $ref: '#/components/responses/403-Forbidden'
        "404":
          $ref: '#/components/responses/404-NotFound'
        "406":
          $ref: '#/components/responses/406-NotAcceptable'
        "408":
          $ref: '#/components/responses/408-Timeout'
        "409":
          $ref: '#/components/responses/409-Conflict'
        "412":
          $ref: '#/components/responses/412-PreconditionFailed'
        "422":
          $ref: '#/components/responses/422-UnprocessableEntity'
        "429":
          $ref: '#/components/responses/429-TooManyRequests'
        "500":
          $ref: '#/components/responses/500-InternalServerError'
        "501":
          $ref: '#/components/responses/501-Unimplemented'
        "503":
          $ref: '#/components/responses/503-ServiceUnavailable'
      tags:
      - Workload
    post:
      description: Adds a workload member object.
      parameters:
      - description: unique projectName for the resource
        in: path
        name: projectName
        required: true
        schema:
          type: string
      - description: unique workloadID for the resource
        in: path
        name: workloadID
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WorkloadMember'
        required: true
      responses:
        "201":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkloadMember'
          description: The member was added.
          headers:
            Location:
              description: Contains the URI of the workload member created.
              required: true
              schema:
                type: string
        "400":
          $ref: '#/components/responses/400-BadRequest'
        "401":
          $ref: '#/components/responses/401-Unauthorized'
        "403":
          $ref: '#/components/responses/403-Forbidden'
        "404":
          $ref: '#/components/responses/404-NotFound'
        "406":
          $ref: '#/components/responses/406-NotAcceptable'
        "408":
          $ref: '#/components/responses/408-Timeout'
        "409":
          $ref: '#/components/responses/409-Conflict'
        "412":
          $ref: '#/components/responses/412-PreconditionFailed'
        "422":
          $ref: '#/components/responses/422-UnprocessableEntity'
        "429":
          $ref: '#/components/responses/429-TooManyRequests'
        "500":
          $ref: '#/components/responses/500-InternalServerError'
        "501":
          $ref: '#/components/responses/501-Unimplemented'
        "503":
          $ref: '#/components/responses/503-ServiceUnavailable'
      tags:
      - Workload
  /v1/projects/{projectName}/compute/workloads/{workloadID}/members/{workloadMemberID}:
    delete:
      description: Removes the workload member.
      responses:
        "204":
          description: The workload member was removed.
        "400":
          $ref: '#/components/responses/400-BadRequest'
        "401":
          $ref: '#/components/responses/401-Unauthorized'
        "403":
          $ref: '#/components/responses/403-Forbidden'
        "404":
          $ref: '#/components/responses/404-NotFound'
        "406":
          $ref: '#/components/responses/406-NotAcceptable'
        "408":
          $ref: '#/components/responses/408-Timeout'
        "409":
          $ref: '#/components/responses/409-Conflict'
        "412":
          $ref: '#/components/responses/412-PreconditionFailed'
        "422":
          $ref: '#/components/responses/422-UnprocessableEntity'
        "429":
          $ref: '#/components/responses/429-TooManyRequests'
        "500":
          $ref: '#/components/responses/500-InternalServerError'
        "501":
          $ref: '#/components/responses/501-Unimplemented'
        "503":
          $ref: '#/components/responses/503-ServiceUnavailable'
      tags:
      - Workload
    get:
      description: Gets the workload member based on its given ID.
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkloadMember'
          description: The requested workload member.
        "400":
          $ref: '#/components/responses/400-BadRequest'
        "401":
          $ref: '#/components/responses/401-Unauthorized'
        "403":
          $ref: '#/components/responses/403-Forbidden'
        "404":
          $ref: '#/components/responses/404-NotFound'
        "406":
          $ref: '#/components/responses/406-NotAcceptable'
        "408":
          $ref: '#/components/responses/408-Timeout'
        "409":
          $ref: '#/components/responses/409-Conflict'
        "412":
          $ref: '#/components/responses/412-PreconditionFailed'
        "422":
          $ref: '#/components/responses/422-UnprocessableEntity'
        "429":
          $ref: '#/components/responses/429-TooManyRequests'
        "500":
          $ref: '#/components/responses/500-InternalServerError'
        "501":
          $ref: '#/components/responses/501-Unimplemented'
        "503":
          $ref: '#/components/responses/503-ServiceUnavailable'
      tags:
      - Workload
    parameters:
    - description: The unique identifier of the workload member.
      in: path
      name: workloadMemberID
      required: true
      schema:
        pattern: ^workloadmember-[0-9a-f]{8}$
        type: string
    - description: unique projectName for the resource
      in: path
      name: projectName
      required: true
      schema:
        type: string
    - description: unique workloadID for the resource
      in: path
      name: workloadID
      required: true
      schema:
        type: string
  /v1/projects/{projectName}/localAccounts:
    get:
      description: Gets all local account objects.
      parameters:
      - description: Index of the first item to return. This allows skipping of items.
        in: query
        name: offset
        schema:
          default: 0
          maximum: 10000
          minimum: 0
          type: integer
      - description: Defines the amount of items to be contained in a single page,
          min of 1 and max of 100, default of 20.
        in: query
        name: pageSize
        schema:
          default: 20
          maximum: 100
          minimum: 1
          type: integer
      - description: Optional filter to return only items of interest. See https://google.aip.dev/160
          for details.
        in: query
        name: filter
        schema:
          pattern: ^$|^[a-zA-Z-_0-9.,:/=*(){}\"' ]+$
          type: string
      - description: Optional comma-separated list of fields to specify a sorting
          order. See https://google.aip.dev/132 for details.
        in: query
        name: orderBy
        schema:
          pattern: ^$|^[a-zA-Z-_0-9., ]+$
          type: string
      - description: unique projectName for the resource
        in: path
        name: projectName
        required: true
        schema:
          type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LocalAccountList'
          description: Array of all local account objects.
        "400":
          $ref: '#/components/responses/400-BadRequest'
        "401":
          $ref: '#/components/responses/401-Unauthorized'
        "403":
          $ref: '#/components/responses/403-Forbidden'
        "404":
          $ref: '#/components/responses/404-NotFound'
        "406":
          $ref: '#/components/responses/406-NotAcceptable'
        "408":
          $ref: '#/components/responses/408-Timeout'
        "409":
          $ref: '#/components/responses/409-Conflict'
        "412":
          $ref: '#/components/responses/412-PreconditionFailed'
        "422":
          $ref: '#/components/responses/422-UnprocessableEntity'
        "429":
          $ref: '#/components/responses/429-TooManyRequests'
        "500":
          $ref: '#/components/responses/500-InternalServerError'
        "501":
          $ref: '#/components/responses/501-Unimplemented'
        "503":
          $ref: '#/components/responses/503-ServiceUnavailable'
      tags:
      - LocalAccount
    post:
      description: Create a Local account instance
      parameters:
      - description: unique projectName for the resource
        in: path
        name: projectName
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LocalAccount'
        required: true
      responses:
        "201":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LocalAccount'
          description: Local account created successfully.
          headers:
            Location:
              description: Contains the URI of the created Local account resource.
              required: true
              schema:
                type: string
        "400":
          $ref: '#/components/responses/400-BadRequest'
        "401":
          $ref: '#/components/responses/401-Unauthorized'
        "403":
          $ref: '#/components/responses/403-Forbidden'
        "404":
          $ref: '#/components/responses/404-NotFound'
        "406":
          $ref: '#/components/responses/406-NotAcceptable'
        "408":
          $ref: '#/components/responses/408-Timeout'
        "409":
          $ref: '#/components/responses/409-Conflict'
        "412":
          $ref: '#/components/responses/412-PreconditionFailed'
        "422":
          $ref: '#/components/responses/422-UnprocessableEntity'
        "429":
          $ref: '#/components/responses/429-TooManyRequests'
        "500":
          $ref: '#/components/responses/500-InternalServerError'
        "501":
          $ref: '#/components/responses/501-Unimplemented'
        "503":
          $ref: '#/components/responses/503-ServiceUnavailable'
      tags:
      - LocalAccount
  /v1/projects/{projectName}/localAccounts/{localAccountID}:
    delete:
      description: Delete a local account object by ID.
      responses:
        "204":
          description: The locallaccount was removed.
        "400":
          $ref: '#/components/responses/400-BadRequest'
        "401":
          $ref: '#/components/responses/401-Unauthorized'
        "403":
          $ref: '#/components/responses/403-Forbidden'
        "404":
          $ref: '#/components/responses/404-NotFound'
        "406":
          $ref: '#/components/responses/406-NotAcceptable'
        "408":
          $ref: '#/components/responses/408-Timeout'
        "409":
          $ref: '#/components/responses/409-Conflict'
        "412":
          $ref: '#/components/responses/412-PreconditionFailed'
        "422":
          $ref: '#/components/responses/422-UnprocessableEntity'
        "429":
          $ref: '#/components/responses/429-TooManyRequests'
        "500":
          $ref: '#/components/responses/500-InternalServerError'
        "501":
          $ref: '#/components/responses/501-Unimplemented'
        "503":
          $ref: '#/components/responses/503-ServiceUnavailable'
      tags:
      - LocalAccount
    get:
      description: Get a local account object by ID.
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LocalAccount'
          description: Local account object.
        "400":
          $ref: '#/components/responses/400-BadRequest'
        "401":
          $ref: '#/components/responses/401-Unauthorized'
        "403":
          $ref: '#/components/responses/403-Forbidden'
        "404":
          $ref: '#/components/responses/404-NotFound'
        "406":
          $ref: '#/components/responses/406-NotAcceptable'
        "408":
          $ref: '#/components/responses/408-Timeout'
        "409":
          $ref: '#/components/responses/409-Conflict'
        "412":
          $ref: '#/components/responses/412-PreconditionFailed'
        "422":
          $ref: '#/components/responses/422-UnprocessableEntity'
        "429":
          $ref: '#/components/responses/429-TooManyRequests'
        "500":
          $ref: '#/components/responses/500-InternalServerError'
        "501":
          $ref: '#/components/responses/501-Unimplemented'
        "503":
          $ref: '#/components/responses/503-ServiceUnavailable'
      tags:
      - LocalAccount
    parameters:
    - description: The unique identifier of the local account.
      in: path
      name: localAccountID
      required: true
      schema:
        pattern: ^localaccount-[0-9a-f]{8}$
        type: string
    - description: unique projectName for the resource
      in: path
      name: projectName
      required: true
      schema:
        type: string
  /v1/projects/{projectName}/locations:
    get:
      description: Gets a list of location node objects.
      parameters:
      - description: The name of the resource to be queried; it can be a region and/or
          site name, if the query parameters below are stated.
        in: query
        name: name
        schema:
          maxLength: 20
          pattern: '^[a-zA-Z-_0-9./: ]+$'
          type: string
      - description: Indicates if the filter will be applied on the site resources.
        in: query
        name: showSites
        schema:
          type: boolean
      - description: Indicates if the filter will be applied on the region resources.
        in: query
        name: showRegions
        schema:
          type: boolean
      - description: unique projectName for the resource
        in: path
        name: projectName
        required: true
        schema:
          type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LocationNodeList'
          description: Array of the location node objects containing the resources
            that match the query name parameter. For each type of location, the maximum
            amount of resources to be returned is 20.
        "400":
          $ref: '#/components/responses/400-BadRequest'
        "401":
          $ref: '#/components/responses/401-Unauthorized'
        "403":
          $ref: '#/components/responses/403-Forbidden'
        "429":
          $ref: '#/components/responses/429-TooManyRequests'
        "500":
          $ref: '#/components/responses/500-InternalServerError'
        "501":
          $ref: '#/components/responses/501-Unimplemented'
        "503":
          $ref: '#/components/responses/503-ServiceUnavailable'
      tags:
      - Location
  /v1/projects/{projectName}/providers:
    get:
      description: Gets all provider objects.
      parameters:
      - description: Index of the first item to return. This allows skipping of items.
        in: query
        name: offset
        schema:
          default: 0
          maximum: 10000
          minimum: 0
          type: integer
      - description: Defines the amount of items to be contained in a single page,
          min of 1 and max of 100, default of 20.
        in: query
        name: pageSize
        schema:
          default: 20
          maximum: 100
          minimum: 1
          type: integer
      - description: Optional filter to return only items of interest. See https://google.aip.dev/160
          for details. Takes precedence over other filter parameters, if set.
        in: query
        name: filter
        schema:
          pattern: ^$|^[a-zA-Z-_0-9.,:/=*(){}\"' ]+$
          type: string
      - description: Optional comma-separated list of fields to specify a sorting
          order. See https://google.aip.dev/132 for details.
        in: query
        name: orderBy
        schema:
          pattern: ^$|^[a-zA-Z-_0-9., ]+$
          type: string
      - description: unique projectName for the resource
        in: path
        name: projectName
        required: true
        schema:
          type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProviderList'
          description: Array of all provider objects.
        "400":
          $ref: '#/components/responses/400-BadRequest'
        "401":
          $ref: '#/components/responses/401-Unauthorized'
        "403":
          $ref: '#/components/responses/403-Forbidden'
        "404":
          $ref: '#/components/responses/404-NotFound'
        "406":
          $ref: '#/components/responses/406-NotAcceptable'
        "408":
          $ref: '#/components/responses/408-Timeout'
        "409":
          $ref: '#/components/responses/409-Conflict'
        "412":
          $ref: '#/components/responses/412-PreconditionFailed'
        "422":
          $ref: '#/components/responses/422-UnprocessableEntity'
        "429":
          $ref: '#/components/responses/429-TooManyRequests'
        "500":
          $ref: '#/components/responses/500-InternalServerError'
        "501":
          $ref: '#/components/responses/501-Unimplemented'
        "503":
          $ref: '#/components/responses/503-ServiceUnavailable'
      tags:
      - Provider
    post:
      description: Creates a provider resource.
      parameters:
      - description: unique projectName for the resource
        in: path
        name: projectName
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Provider'
        required: true
      responses:
        "201":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Provider'
          description: The provider resource was created.
          headers:
            Location:
              description: Contains the URI of the created provider resource.
              required: true
              schema:
                type: string
        "400":
          $ref: '#/components/responses/400-BadRequest'
        "401":
          $ref: '#/components/responses/401-Unauthorized'
        "403":
          $ref: '#/components/responses/403-Forbidden'
        "404":
          $ref: '#/components/responses/404-NotFound'
        "406":
          $ref: '#/components/responses/406-NotAcceptable'
        "408":
          $ref: '#/components/responses/408-Timeout'
        "409":
          $ref: '#/components/responses/409-Conflict'
        "412":
          $ref: '#/components/responses/412-PreconditionFailed'
        "422":
          $ref: '#/components/responses/422-UnprocessableEntity'
        "429":
          $ref: '#/components/responses/429-TooManyRequests'
        "500":
          $ref: '#/components/responses/500-InternalServerError'
        "501":
          $ref: '#/components/responses/501-Unimplemented'
        "503":
          $ref: '#/components/responses/503-ServiceUnavailable'
      tags:
      - Provider
  /v1/projects/{projectName}/providers/{providerID}:
    delete:
      description: Deletes a provider resource.
      responses:
        "204":
          description: The provider resource was deleted.
        "400":
          $ref: '#/components/responses/400-BadRequest'
        "401":
          $ref: '#/components/responses/401-Unauthorized'
        "403":
          $ref: '#/components/responses/403-Forbidden'
        "404":
          $ref: '#/components/responses/404-NotFound'
        "406":
          $ref: '#/components/responses/406-NotAcceptable'
        "408":
          $ref: '#/components/responses/408-Timeout'
        "409":
          $ref: '#/components/responses/409-Conflict'
        "412":
          $ref: '#/components/responses/412-PreconditionFailed'
        "422":
          $ref: '#/components/responses/422-UnprocessableEntity'
        "429":
          $ref: '#/components/responses/429-TooManyRequests'
        "500":
          $ref: '#/components/responses/500-InternalServerError'
        "501":
          $ref: '#/components/responses/501-Unimplemented'
        "503":
          $ref: '#/components/responses/503-ServiceUnavailable'
      tags:
      - Provider
    get:
      description: Gets a provider resource.
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Provider'
          description: The requested provider resource.
        "400":
          $ref: '#/components/responses/400-BadRequest'
        "401":
          $ref: '#/components/responses/401-Unauthorized'
        "403":
          $ref: '#/components/responses/403-Forbidden'
        "404":
          $ref: '#/components/responses/404-NotFound'
        "406":
          $ref: '#/components/responses/406-NotAcceptable'
        "408":
          $ref: '#/components/responses/408-Timeout'
        "409":
          $ref: '#/components/responses/409-Conflict'
        "412":
          $ref: '#/components/responses/412-PreconditionFailed'
        "422":
          $ref: '#/components/responses/422-UnprocessableEntity'
        "429":
          $ref: '#/components/responses/429-TooManyRequests'
        "500":
          $ref: '#/components/responses/500-InternalServerError'
        "501":
          $ref: '#/components/responses/501-Unimplemented'
        "503":
          $ref: '#/components/responses/503-ServiceUnavailable'
      tags:
      - Provider
    parameters:
    - description: The provider resource's unique identifier.
      in: path
      name: providerID
      required: true
      schema:
        pattern: ^provider-[0-9a-f]{8}$
        type: string
    - description: unique projectName for the resource
      in: path
      name: projectName
      required: true
      schema:
        type: string
  /v1/projects/{projectName}/regions:
    get:
      description: Gets all region objects.
      parameters:
      - description: Index of the first item to return. This allows skipping of items.
        in: query
        name: offset
        schema:
          default: 0
          maximum: 10000
          minimum: 0
          type: integer
      - description: Defines the amount of items to be contained in a single page,
          min of 1 and max of 100, default of 20.
        in: query
        name: pageSize
        schema:
          default: 20
          maximum: 100
          minimum: 1
          type: integer
      - description: Optional filter to return only items of interest. See https://google.aip.dev/160
          for details.
        examples:
          example1:
            summary: Through the region's parent region ID.
            value: parentRegion.resourceId="region-3b382a11"
          example2:
            summary: Through the region name.
            value: name="region name example"
          example3:
            summary: Through the metadata.
            value: metadata='{"key":"exampleKey","value":"exampleValue"}'
        in: query
        name: filter
        schema:
          pattern: ^$|^[a-zA-Z-_0-9.,:/=*(){}\"' ]+$
          type: string
      - description: Optional comma-separated list of fields to specify a sorting
          order. See https://google.aip.dev/132 for details.
        in: query
        name: orderBy
        schema:
          pattern: ^$|^[a-zA-Z-_0-9., ]+$
          type: string
      - deprecated: true
        description: The parent region ID that the region belongs to. If not specified,
          returns all regions. If specified, returns the regions that have the specified
          parent applied to them. If null, returns all the regions without a parent.
        in: query
        name: parent
        schema:
          pattern: ^region-[0-9a-f]{8}$|^null$
          type: string
      - description: Indicates if the region identified by the filter needs to be
          returned with the field totalSites filled.
        in: query
        name: showTotalSites
        schema:
          type: boolean
      - description: unique projectName for the resource
        in: path
        name: projectName
        required: true
        schema:
          type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RegionsList'
          description: Array of all region objects.
        "401":
          $ref: '#/components/responses/401-Unauthorized'
        "403":
          $ref: '#/components/responses/403-Forbidden'
        "429":
          $ref: '#/components/responses/429-TooManyRequests'
        "500":
          $ref: '#/components/responses/500-InternalServerError'
        "501":
          $ref: '#/components/responses/501-Unimplemented'
        "503":
          $ref: '#/components/responses/503-ServiceUnavailable'
      tags:
      - Region
    post:
      description: Creates a region.
      parameters:
      - description: unique projectName for the resource
        in: path
        name: projectName
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Region'
        required: true
      responses:
        "201":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Region'
          description: The region was created.
          headers:
            Location:
              description: Contains the URI of the created region.
              required: true
              schema:
                type: string
        "400":
          $ref: '#/components/responses/400-BadRequest'
        "401":
          $ref: '#/components/responses/401-Unauthorized'
        "403":
          $ref: '#/components/responses/403-Forbidden'
        "422":
          $ref: '#/components/responses/422-UnprocessableEntity'
        "500":
          $ref: '#/components/responses/500-InternalServerError'
        "501":
          $ref: '#/components/responses/501-Unimplemented'
      tags:
      - Region
  /v1/projects/{projectName}/regions/{regionID}:
    delete:
      description: Deletes a region.
      responses:
        "204":
          description: The region was deleted.
        "400":
          $ref: '#/components/responses/400-BadRequest'
        "401":
          $ref: '#/components/responses/401-Unauthorized'
        "403":
          $ref: '#/components/responses/403-Forbidden'
        "404":
          $ref: '#/components/responses/404-NotFound'
        "429":
          $ref: '#/components/responses/429-TooManyRequests'
        "500":
          $ref: '#/components/responses/500-InternalServerError'
        "501":
          $ref: '#/components/responses/501-Unimplemented'
        "503":
          $ref: '#/components/responses/503-ServiceUnavailable'
      tags:
      - Region
    get:
      description: Gets a region.
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Region'
          description: The requested region.
        "401":
          $ref: '#/components/responses/401-Unauthorized'
        "403":
          $ref: '#/components/responses/403-Forbidden'
        "404":
          $ref: '#/components/responses/404-NotFound'
        "500":
          $ref: '#/components/responses/500-InternalServerError'
        "501":
          $ref: '#/components/responses/501-Unimplemented'
      tags:
      - Region
    parameters:
    - description: The unique region identifier
      in: path
      name: regionID
      required: true
      schema:
        pattern: ^region-[0-9a-f]{8}$
        type: string
    - description: unique projectName for the resource
      in: path
      name: projectName
      required: true
      schema:
        type: string
    patch:
      description: Partially updates a region.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Region'
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Region'
          description: The region was patched.
        "400":
          $ref: '#/components/responses/400-BadRequest'
        "401":
          $ref: '#/components/responses/401-Unauthorized'
        "403":
          $ref: '#/components/responses/403-Forbidden'
        "409":
          $ref: '#/components/responses/409-Conflict'
        "422":
          $ref: '#/components/responses/422-UnprocessableEntity'
        "500":
          $ref: '#/components/responses/500-InternalServerError'
        "501":
          $ref: '#/components/responses/501-Unimplemented'
      tags:
      - Region
    put:
      description: Updates a region.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Region'
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Region'
          description: The region was updated.
        "400":
          $ref: '#/components/responses/400-BadRequest'
        "401":
          $ref: '#/components/responses/401-Unauthorized'
        "403":
          $ref: '#/components/responses/403-Forbidden'
        "422":
          $ref: '#/components/responses/422-UnprocessableEntity'
        "500":
          $ref: '#/components/responses/500-InternalServerError'
        "501":
          $ref: '#/components/responses/501-Unimplemented'
      tags:
      - Region
  /v1/projects/{projectName}/regions/{regionID}/sites:
    get:
      description: Gets all site objects.
      parameters:
      - description: Index of the first item to return. This allows skipping of items.
        in: query
        name: offset
        schema:
          default: 0
          maximum: 10000
          minimum: 0
          type: integer
      - description: Defines the amount of items to be contained in a single page,
          min of 1 and max of 100, default of 20.
        in: query
        name: pageSize
        schema:
          default: 20
          maximum: 100
          minimum: 1
          type: integer
      - description: Optional filter to return only items of interest. See https://google.aip.dev/160
          for details.
        examples:
          example1:
            summary: Through site's region ID
            value: region.resourceId="region-3b382a11"
          example2:
            summary: Through site name
            value: name="site name example"
          example3:
            summary: Through metadata
            value: metadata='{"key":"exampleKey","value":"exampleValue"}'
        in: query
        name: filter
        schema:
          pattern: ^$|^[a-zA-Z-_0-9.,:/=*(){}\"' ]+$
          type: string
      - description: Optional comma-separated list of fields to specify a sorting
          order. See https://google.aip.dev/132 for details.
        in: query
        name: orderBy
        schema:
          pattern: ^$|^[a-zA-Z-_0-9., ]+$
          type: string
      - deprecated: true
        description: The region ID that the sites belong to. If not specified, returns
          all sites (given the other query params). If specified, returns the sites
          that have the specified region ID applied to them. If null, returns all
          sites without a region ID.
        in: path
        name: regionID
        required: true
        schema:
          pattern: ^region-[0-9a-f]{8}$|^null$
          type: string
      - deprecated: true
        description: The OUID that the sites belong to. If not specified, returns
          all sites (given the other query parameters). If specified, returns the
          sites that have the specified OUID applied to them. If null, returns all
          sites without an OUID.
        in: query
        name: ouID
        schema:
          pattern: ^ou-[0-9a-f]{8}$|^null$
          type: string
      - description: unique projectName for the resource
        in: path
        name: projectName
        required: true
        schema:
          type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SitesList'
          description: Array of all site objects.
        "400":
          $ref: '#/components/responses/400-BadRequest'
        "401":
          $ref: '#/components/responses/401-Unauthorized'
        "403":
          $ref: '#/components/responses/403-Forbidden'
        "404":
          $ref: '#/components/responses/404-NotFound'
        "406":
          $ref: '#/components/responses/406-NotAcceptable'
        "408":
          $ref: '#/components/responses/408-Timeout'
        "409":
          $ref: '#/components/responses/409-Conflict'
        "412":
          $ref: '#/components/responses/412-PreconditionFailed'
        "422":
          $ref: '#/components/responses/422-UnprocessableEntity'
        "429":
          $ref: '#/components/responses/429-TooManyRequests'
        "500":
          $ref: '#/components/responses/500-InternalServerError'
        "501":
          $ref: '#/components/responses/501-Unimplemented'
        "503":
          $ref: '#/components/responses/503-ServiceUnavailable'
      tags:
      - Site
    post:
      description: Creates a site.
      parameters:
      - description: unique projectName for the resource
        in: path
        name: projectName
        required: true
        schema:
          type: string
      - description: unique regionID for the resource
        in: path
        name: regionID
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Site'
        required: true
      responses:
        "201":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Site'
          description: The site was created.
          headers:
            Location:
              description: Contains the URI of the created site.
              required: true
              schema:
                type: string
        "400":
          $ref: '#/components/responses/400-BadRequest'
        "401":
          $ref: '#/components/responses/401-Unauthorized'
        "403":
          $ref: '#/components/responses/403-Forbidden'
        "404":
          $ref: '#/components/responses/404-NotFound'
        "406":
          $ref: '#/components/responses/406-NotAcceptable'
        "408":
          $ref: '#/components/responses/408-Timeout'
        "409":
          $ref: '#/components/responses/409-Conflict'
        "412":
          $ref: '#/components/responses/412-PreconditionFailed'
        "422":
          $ref: '#/components/responses/422-UnprocessableEntity'
        "429":
          $ref: '#/components/responses/429-TooManyRequests'
        "500":
          $ref: '#/components/responses/500-InternalServerError'
        "501":
          $ref: '#/components/responses/501-Unimplemented'
        "503":
          $ref: '#/components/responses/503-ServiceUnavailable'
      tags:
      - Site
  /v1/projects/{projectName}/regions/{regionID}/sites/{siteID}:
    delete:
      description: Delete a site
      responses:
        "204":
          description: The site was deleted.
        "400":
          $ref: '#/components/responses/400-BadRequest'
        "401":
          $ref: '#/components/responses/401-Unauthorized'
        "403":
          $ref: '#/components/responses/403-Forbidden'
        "404":
          $ref: '#/components/responses/404-NotFound'
        "406":
          $ref: '#/components/responses/406-NotAcceptable'
        "408":
          $ref: '#/components/responses/408-Timeout'
        "409":
          $ref: '#/components/responses/409-Conflict'
        "412":
          $ref: '#/components/responses/412-PreconditionFailed'
        "422":
          $ref: '#/components/responses/422-UnprocessableEntity'
        "429":
          $ref: '#/components/responses/429-TooManyRequests'
        "500":
          $ref: '#/components/responses/500-InternalServerError'
        "501":
          $ref: '#/components/responses/501-Unimplemented'
        "503":
          $ref: '#/components/responses/503-ServiceUnavailable'
      tags:
      - Site
    get:
      description: Gets a site.
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Site'
          description: The requested site.
        "400":
          $ref: '#/components/responses/400-BadRequest'
        "401":
          $ref: '#/components/responses/401-Unauthorized'
        "403":
          $ref: '#/components/responses/403-Forbidden'
        "404":
          $ref: '#/components/responses/404-NotFound'
        "406":
          $ref: '#/components/responses/406-NotAcceptable'
        "408":
          $ref: '#/components/responses/408-Timeout'
        "409":
          $ref: '#/components/responses/409-Conflict'
        "412":
          $ref: '#/components/responses/412-PreconditionFailed'
        "422":
          $ref: '#/components/responses/422-UnprocessableEntity'
        "429":
          $ref: '#/components/responses/429-TooManyRequests'
        "500":
          $ref: '#/components/responses/500-InternalServerError'
        "501":
          $ref: '#/components/responses/501-Unimplemented'
        "503":
          $ref: '#/components/responses/503-ServiceUnavailable'
      tags:
      - Site
    parameters:
    - description: The unique site identifier.
      in: path
      name: siteID
      required: true
      schema:
        pattern: ^site-[0-9a-f]{8}$
        type: string
    - description: unique projectName for the resource
      in: path
      name: projectName
      required: true
      schema:
        type: string
    - description: unique regionID for the resource
      in: path
      name: regionID
      required: true
      schema:
        type: string
    patch:
      description: Partially updates a site.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Site'
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Site'
          description: The site was patched.
        "400":
          $ref: '#/components/responses/400-BadRequest'
        "401":
          $ref: '#/components/responses/401-Unauthorized'
        "403":
          $ref: '#/components/responses/403-Forbidden'
        "404":
          $ref: '#/components/responses/404-NotFound'
        "406":
          $ref: '#/components/responses/406-NotAcceptable'
        "408":
          $ref: '#/components/responses/408-Timeout'
        "409":
          $ref: '#/components/responses/409-Conflict'
        "412":
          $ref: '#/components/responses/412-PreconditionFailed'
        "422":
          $ref: '#/components/responses/422-UnprocessableEntity'
        "429":
          $ref: '#/components/responses/429-TooManyRequests'
        "500":
          $ref: '#/components/responses/500-InternalServerError'
        "501":
          $ref: '#/components/responses/501-Unimplemented'
        "503":
          $ref: '#/components/responses/503-ServiceUnavailable'
      tags:
      - Site
    put:
      description: Updates a site.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Site'
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Site'
          description: The site was updated.
        "400":
          $ref: '#/components/responses/400-BadRequest'
        "401":
          $ref: '#/components/responses/401-Unauthorized'
        "403":
          $ref: '#/components/responses/403-Forbidden'
        "404":
          $ref: '#/components/responses/404-NotFound'
        "406":
          $ref: '#/components/responses/406-NotAcceptable'
        "408":
          $ref: '#/components/responses/408-Timeout'
        "409":
          $ref: '#/components/responses/409-Conflict'
        "412":
          $ref: '#/components/responses/412-PreconditionFailed'
        "422":
          $ref: '#/components/responses/422-UnprocessableEntity'
        "429":
          $ref: '#/components/responses/429-TooManyRequests'
        "500":
          $ref: '#/components/responses/500-InternalServerError'
        "501":
          $ref: '#/components/responses/501-Unimplemented'
        "503":
          $ref: '#/components/responses/503-ServiceUnavailable'
      tags:
      - Site
  /v1/projects/{projectName}/schedules/repeated:
    get:
      description: Gets all repeated schedule objects.
      parameters:
      - description: Index of the first item to return. This allows skipping of items.
        in: query
        name: offset
        schema:
          default: 0
          maximum: 10000
          minimum: 0
          type: integer
      - description: Defines the amount of items to be contained in a single page,
          min of 1 and max of 100, default of 20.
        in: query
        name: pageSize
        schema:
          default: 20
          maximum: 100
          minimum: 1
          type: integer
      - description: The region ID target of the schedules. If not specified, returns
          all repeated schedules (given the other query parameters). If specified,
          returns the schedules that have the specified region ID applied to them,
          i.e., target. If null, returns all repeated schedules without a region ID
          as target.
        in: query
        name: regionID
        schema:
          pattern: ^region-[0-9a-f]{8}$
          type: string
      - description: The site ID target of the schedules. If not specified, returns
          all repeated schedules (given the other query parameters). If specified,
          returns the schedules that have the specified site ID applied to them, i.e.,
          target. If null, returns all repeated schedules without a site ID as target.
        in: query
        name: siteID
        schema:
          pattern: ^site-[0-9a-f]{8}$|^null$
          type: string
      - description: The host ID target of the repeated schedules. If not specified,
          returns all repeated schedules (given the other query parameters). If specified,
          returns the schedules that have the specified host ID applied to them, i.e.,
          target. If null, returns all repeated schedules without a host ID as target.
        in: query
        name: hostID
        schema:
          pattern: ^host-[0-9a-f]{8}$|^null$
          type: string
      - description: Filters based on the timestamp, expected to be UNIX epoch UTC
          timestamp in seconds.
        in: query
        name: unix_epoch
        schema:
          pattern: ^[0-9]+$
          type: string
      - description: unique projectName for the resource
        in: path
        name: projectName
        required: true
        schema:
          type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RepeatedSchedulesList'
          description: Arrays of all repeated schedule objects.
        "400":
          $ref: '#/components/responses/400-BadRequest'
        "401":
          $ref: '#/components/responses/401-Unauthorized'
        "403":
          $ref: '#/components/responses/403-Forbidden'
        "404":
          $ref: '#/components/responses/404-NotFound'
        "406":
          $ref: '#/components/responses/406-NotAcceptable'
        "408":
          $ref: '#/components/responses/408-Timeout'
        "409":
          $ref: '#/components/responses/409-Conflict'
        "412":
          $ref: '#/components/responses/412-PreconditionFailed'
        "422":
          $ref: '#/components/responses/422-UnprocessableEntity'
        "429":
          $ref: '#/components/responses/429-TooManyRequests'
        "500":
          $ref: '#/components/responses/500-InternalServerError'
        "501":
          $ref: '#/components/responses/501-Unimplemented'
        "503":
          $ref: '#/components/responses/503-ServiceUnavailable'
      tags:
      - Schedule
    post:
      description: Creates a repeated schedule.
      parameters:
      - description: unique projectName for the resource
        in: path
        name: projectName
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RepeatedSchedule'
        required: true
      responses:
        "201":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RepeatedSchedule'
          description: The repeated schedule was created.
          headers:
            Location:
              description: Contains the URI of the repeated schedule created.
              required: true
              schema:
                type: string
        "400":
          $ref: '#/components/responses/400-BadRequest'
        "401":
          $ref: '#/components/responses/401-Unauthorized'
        "403":
          $ref: '#/components/responses/403-Forbidden'
        "404":
          $ref: '#/components/responses/404-NotFound'
        "406":
          $ref: '#/components/responses/406-NotAcceptable'
        "408":
          $ref: '#/components/responses/408-Timeout'
        "409":
          $ref: '#/components/responses/409-Conflict'
        "412":
          $ref: '#/components/responses/412-PreconditionFailed'
        "422":
          $ref: '#/components/responses/422-UnprocessableEntity'
        "429":
          $ref: '#/components/responses/429-TooManyRequests'
        "500":
          $ref: '#/components/responses/500-InternalServerError'
        "501":
          $ref: '#/components/responses/501-Unimplemented'
        "503":
          $ref: '#/components/responses/503-ServiceUnavailable'
      tags:
      - Schedule
  /v1/projects/{projectName}/schedules/repeated/{repeatedScheduleID}:
    delete:
      description: Deletes a repeated schedule.
      responses:
        "204":
          description: The repeated schedule was deleted.
        "400":
          $ref: '#/components/responses/400-BadRequest'
        "401":
          $ref: '#/components/responses/401-Unauthorized'
        "403":
          $ref: '#/components/responses/403-Forbidden'
        "404":
          $ref: '#/components/responses/404-NotFound'
        "406":
          $ref: '#/components/responses/406-NotAcceptable'
        "408":
          $ref: '#/components/responses/408-Timeout'
        "409":
          $ref: '#/components/responses/409-Conflict'
        "412":
          $ref: '#/components/responses/412-PreconditionFailed'
        "422":
          $ref: '#/components/responses/422-UnprocessableEntity'
        "429":
          $ref: '#/components/responses/429-TooManyRequests'
        "500":
          $ref: '#/components/responses/500-InternalServerError'
        "501":
          $ref: '#/components/responses/501-Unimplemented'
        "503":
          $ref: '#/components/responses/503-ServiceUnavailable'
      tags:
      - Schedule
    get:
      description: Gets a repeated schedule.
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RepeatedSchedule'
          description: The requested repeated schedule.
        "400":
          $ref: '#/components/responses/400-BadRequest'
        "401":
          $ref: '#/components/responses/401-Unauthorized'
        "403":
          $ref: '#/components/responses/403-Forbidden'
        "404":
          $ref: '#/components/responses/404-NotFound'
        "406":
          $ref: '#/components/responses/406-NotAcceptable'
        "408":
          $ref: '#/components/responses/408-Timeout'
        "409":
          $ref: '#/components/responses/409-Conflict'
        "412":
          $ref: '#/components/responses/412-PreconditionFailed'
        "422":
          $ref: '#/components/responses/422-UnprocessableEntity'
        "429":
          $ref: '#/components/responses/429-TooManyRequests'
        "500":
          $ref: '#/components/responses/500-InternalServerError'
        "501":
          $ref: '#/components/responses/501-Unimplemented'
        "503":
          $ref: '#/components/responses/503-ServiceUnavailable'
      tags:
      - Schedule
    parameters:
    - description: The unique repeated schedule identifier.
      in: path
      name: repeatedScheduleID
      required: true
      schema:
        pattern: ^repeatedsche-[0-9a-f]{8}$
        type: string
    - description: unique projectName for the resource
      in: path
      name: projectName
      required: true
      schema:
        type: string
    patch:
      description: Partially updates a repeated schedule.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RepeatedSchedule'
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RepeatedSchedule'
          description: The repeated schedule was patched.
        "400":
          $ref: '#/components/responses/400-BadRequest'
        "401":
          $ref: '#/components/responses/401-Unauthorized'
        "403":
          $ref: '#/components/responses/403-Forbidden'
        "404":
          $ref: '#/components/responses/404-NotFound'
        "406":
          $ref: '#/components/responses/406-NotAcceptable'
        "408":
          $ref: '#/components/responses/408-Timeout'
        "409":
          $ref: '#/components/responses/409-Conflict'
        "412":
          $ref: '#/components/responses/412-PreconditionFailed'
        "422":
          $ref: '#/components/responses/422-UnprocessableEntity'
        "429":
          $ref: '#/components/responses/429-TooManyRequests'
        "500":
          $ref: '#/components/responses/500-InternalServerError'
        "501":
          $ref: '#/components/responses/501-Unimplemented'
        "503":
          $ref: '#/components/responses/503-ServiceUnavailable'
      tags:
      - Schedule
    put:
      description: Updates a repeated schedule.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RepeatedSchedule'
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RepeatedSchedule'
          description: The repeated schedule was updated.
        "400":
          $ref: '#/components/responses/400-BadRequest'
        "401":
          $ref: '#/components/responses/401-Unauthorized'
        "403":
          $ref: '#/components/responses/403-Forbidden'
        "404":
          $ref: '#/components/responses/404-NotFound'
        "406":
          $ref: '#/components/responses/406-NotAcceptable'
        "408":
          $ref: '#/components/responses/408-Timeout'
        "409":
          $ref: '#/components/responses/409-Conflict'
        "412":
          $ref: '#/components/responses/412-PreconditionFailed'
        "422":
          $ref: '#/components/responses/422-UnprocessableEntity'
        "429":
          $ref: '#/components/responses/429-TooManyRequests'
        "500":
          $ref: '#/components/responses/500-InternalServerError'
        "501":
          $ref: '#/components/responses/501-Unimplemented'
        "503":
          $ref: '#/components/responses/503-ServiceUnavailable'
      tags:
      - Schedule
  /v1/projects/{projectName}/schedules/single:
    get:
      description: Gets all single schedule objects.
      parameters:
      - description: Index of the first item to return. This allows skipping of items.
        in: query
        name: offset
        schema:
          default: 0
          maximum: 10000
          minimum: 0
          type: integer
      - description: Defines the amount of items to be contained in a single page,
          min of 1 and max of 100, default of 20.
        in: query
        name: pageSize
        schema:
          default: 20
          maximum: 100
          minimum: 1
          type: integer
      - description: The region ID target of the schedules. If not specified, returns
          all single schedules (given the other query parameters). If specified, returns
          the schedules that have the specified region ID applied to them, i.e., target.
          If null, returns all single schedules without a region ID as target.
        in: query
        name: regionID
        schema:
          pattern: ^region-[0-9a-f]{8}$
          type: string
      - description: The site ID target of the schedules. If not specified, returns
          all single schedules (given the other query parameters). If specified, returns
          the schedules that have the specified site ID applied to them, i.e., target.
          If null, returns all single schedules without a site ID as target.
        in: query
        name: siteID
        schema:
          pattern: ^site-[0-9a-f]{8}$|^null$
          type: string
      - description: The host ID target of the single schedules. If not specified,
          returns all single schedules (given the other query parameters). If specified,
          returns the schedules that have the specified host ID applied to them, i.e.,
          target. If null, returns all single schedules without a host ID as target.
        in: query
        name: hostID
        schema:
          pattern: ^host-[0-9a-f]{8}$|^null$
          type: string
      - description: Filters based on the timestamp, expected to be UNIX epoch UTC
          timestamp in seconds
        in: query
        name: unix_epoch
        schema:
          pattern: ^[0-9]+$
          type: string
      - description: unique projectName for the resource
        in: path
        name: projectName
        required: true
        schema:
          type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SingleSchedulesList'
          description: Arrays of all single schedule objects.
        "400":
          $ref: '#/components/responses/400-BadRequest'
        "401":
          $ref: '#/components/responses/401-Unauthorized'
        "403":
          $ref: '#/components/responses/403-Forbidden'
        "404":
          $ref: '#/components/responses/404-NotFound'
        "406":
          $ref: '#/components/responses/406-NotAcceptable'
        "408":
          $ref: '#/components/responses/408-Timeout'
        "409":
          $ref: '#/components/responses/409-Conflict'
        "412":
          $ref: '#/components/responses/412-PreconditionFailed'
        "422":
          $ref: '#/components/responses/422-UnprocessableEntity'
        "429":
          $ref: '#/components/responses/429-TooManyRequests'
        "500":
          $ref: '#/components/responses/500-InternalServerError'
        "501":
          $ref: '#/components/responses/501-Unimplemented'
        "503":
          $ref: '#/components/responses/503-ServiceUnavailable'
      tags:
      - Schedule
    post:
      description: Creates a single schedule to operate on an object.
      parameters:
      - description: unique projectName for the resource
        in: path
        name: projectName
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SingleSchedule'
        required: true
      responses:
        "201":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SingleSchedule'
          description: The single schedule was created.
          headers:
            Location:
              description: Contains the URI of the created single schedule.
              required: true
              schema:
                type: string
        "400":
          $ref: '#/components/responses/400-BadRequest'
        "401":
          $ref: '#/components/responses/401-Unauthorized'
        "403":
          $ref: '#/components/responses/403-Forbidden'
        "404":
          $ref: '#/components/responses/404-NotFound'
        "406":
          $ref: '#/components/responses/406-NotAcceptable'
        "408":
          $ref: '#/components/responses/408-Timeout'
        "409":
          $ref: '#/components/responses/409-Conflict'
        "412":
          $ref: '#/components/responses/412-PreconditionFailed'
        "422":
          $ref: '#/components/responses/422-UnprocessableEntity'
        "429":
          $ref: '#/components/responses/429-TooManyRequests'
        "500":
          $ref: '#/components/responses/500-InternalServerError'
        "501":
          $ref: '#/components/responses/501-Unimplemented'
        "503":
          $ref: '#/components/responses/503-ServiceUnavailable'
      tags:
      - Schedule
  /v1/projects/{projectName}/schedules/single/{singleScheduleID}:
    delete:
      description: Deletes a single schedule.
      responses:
        "204":
          description: The single schedule was deleted.
        "400":
          $ref: '#/components/responses/400-BadRequest'
        "401":
          $ref: '#/components/responses/401-Unauthorized'
        "403":
          $ref: '#/components/responses/403-Forbidden'
        "404":
          $ref: '#/components/responses/404-NotFound'
        "406":
          $ref: '#/components/responses/406-NotAcceptable'
        "408":
          $ref: '#/components/responses/408-Timeout'
        "409":
          $ref: '#/components/responses/409-Conflict'
        "412":
          $ref: '#/components/responses/412-PreconditionFailed'
        "422":
          $ref: '#/components/responses/422-UnprocessableEntity'
        "429":
          $ref: '#/components/responses/429-TooManyRequests'
        "500":
          $ref: '#/components/responses/500-InternalServerError'
        "501":
          $ref: '#/components/responses/501-Unimplemented'
        "503":
          $ref: '#/components/responses/503-ServiceUnavailable'
      tags:
      - Schedule
    get:
      description: Gets a single schedule based on its ID.
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SingleSchedule'
          description: The requested single schedule.
        "400":
          $ref: '#/components/responses/400-BadRequest'
        "401":
          $ref: '#/components/responses/401-Unauthorized'
        "403":
          $ref: '#/components/responses/403-Forbidden'
        "404":
          $ref: '#/components/responses/404-NotFound'
        "406":
          $ref: '#/components/responses/406-NotAcceptable'
        "408":
          $ref: '#/components/responses/408-Timeout'
        "409":
          $ref: '#/components/responses/409-Conflict'
        "412":
          $ref: '#/components/responses/412-PreconditionFailed'
        "422":
          $ref: '#/components/responses/422-UnprocessableEntity'
        "429":
          $ref: '#/components/responses/429-TooManyRequests'
        "500":
          $ref: '#/components/responses/500-InternalServerError'
        "501":
          $ref: '#/components/responses/501-Unimplemented'
        "503":
          $ref: '#/components/responses/503-ServiceUnavailable'
      tags:
      - Schedule
    parameters:
    - description: The unique single schedule identifier.
      in: path
      name: singleScheduleID
      required: true
      schema:
        pattern: ^singlesche-[0-9a-f]{8}$
        type: string
    - description: unique projectName for the resource
      in: path
      name: projectName
      required: true
      schema:
        type: string
    patch:
      description: Partially updates a single schedule.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SingleSchedule'
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SingleSchedule'
          description: The single schedule was patched.
        "400":
          $ref: '#/components/responses/400-BadRequest'
        "401":
          $ref: '#/components/responses/401-Unauthorized'
        "403":
          $ref: '#/components/responses/403-Forbidden'
        "404":
          $ref: '#/components/responses/404-NotFound'
        "406":
          $ref: '#/components/responses/406-NotAcceptable'
        "408":
          $ref: '#/components/responses/408-Timeout'
        "409":
          $ref: '#/components/responses/409-Conflict'
        "412":
          $ref: '#/components/responses/412-PreconditionFailed'
        "422":
          $ref: '#/components/responses/422-UnprocessableEntity'
        "429":
          $ref: '#/components/responses/429-TooManyRequests'
        "500":
          $ref: '#/components/responses/500-InternalServerError'
        "501":
          $ref: '#/components/responses/501-Unimplemented'
        "503":
          $ref: '#/components/responses/503-ServiceUnavailable'
      tags:
      - Schedule
    put:
      description: Updates a single schedule.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SingleSchedule'
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SingleSchedule'
          description: The single schedule was updated.
        "400":
          $ref: '#/components/responses/400-BadRequest'
        "401":
          $ref: '#/components/responses/401-Unauthorized'
        "403":
          $ref: '#/components/responses/403-Forbidden'
        "404":
          $ref: '#/components/responses/404-NotFound'
        "406":
          $ref: '#/components/responses/406-NotAcceptable'
        "408":
          $ref: '#/components/responses/408-Timeout'
        "409":
          $ref: '#/components/responses/409-Conflict'
        "412":
          $ref: '#/components/responses/412-PreconditionFailed'
        "422":
          $ref: '#/components/responses/422-UnprocessableEntity'
        "429":
          $ref: '#/components/responses/429-TooManyRequests'
        "500":
          $ref: '#/components/responses/500-InternalServerError'
        "501":
          $ref: '#/components/responses/501-Unimplemented'
        "503":
          $ref: '#/components/responses/503-ServiceUnavailable'
      tags:
      - Schedule
  /v1/projects/{projectName}/telemetry/loggroups:
    get:
      description: Gets all telemetry log groups.
      parameters:
      - description: Index of the first item to return. This allows skipping of items.
        in: query
        name: offset
        schema:
          default: 0
          maximum: 10000
          minimum: 0
          type: integer
      - description: Defines the amount of items to be contained in a single page,
          min of 1 and max of 100, default of 20.
        in: query
        name: pageSize
        schema:
          default: 20
          maximum: 100
          minimum: 1
          type: integer
      - description: Optional comma-separated list of fields to specify a sorting
          order. See https://google.aip.dev/132 for details.
        in: query
        name: orderBy
        schema:
          pattern: ^$|^[a-zA-Z-_0-9., ]+$
          type: string
      - description: unique projectName for the resource
        in: path
        name: projectName
        required: true
        schema:
          type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TelemetryLogsGroupList'
          description: Array of all telemetry log groups.
        "400":
          $ref: '#/components/responses/400-BadRequest'
        "401":
          $ref: '#/components/responses/401-Unauthorized'
        "403":
          $ref: '#/components/responses/403-Forbidden'
        "422":
          $ref: '#/components/responses/422-UnprocessableEntity'
        "429":
          $ref: '#/components/responses/429-TooManyRequests'
        "500":
          $ref: '#/components/responses/500-InternalServerError'
        "501":
          $ref: '#/components/responses/501-Unimplemented'
        "503":
          $ref: '#/components/responses/503-ServiceUnavailable'
      tags:
      - TelemetryLogsGroup
    post:
      description: Creates a telemetry log group.
      parameters:
      - description: unique projectName for the resource
        in: path
        name: projectName
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TelemetryLogsGroup'
        required: true
      responses:
        "201":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TelemetryLogsGroup'
          description: The telemetry log group was created.
          headers:
            Location:
              description: Contains the URI of the telemetry log group created.
              required: true
              schema:
                type: string
        "400":
          $ref: '#/components/responses/400-BadRequest'
        "401":
          $ref: '#/components/responses/401-Unauthorized'
        "403":
          $ref: '#/components/responses/403-Forbidden'
        "404":
          $ref: '#/components/responses/404-NotFound'
        "422":
          $ref: '#/components/responses/422-UnprocessableEntity'
        "500":
          $ref: '#/components/responses/500-InternalServerError'
        "501":
          $ref: '#/components/responses/501-Unimplemented'
      tags:
      - TelemetryLogsGroup
  /v1/projects/{projectName}/telemetry/loggroups/{telemetryLogsGroupId}:
    delete:
      description: Deletes a telemetry log group.
      responses:
        "204":
          description: The telemetry log group was deleted.
        "400":
          $ref: '#/components/responses/400-BadRequest'
        "401":
          $ref: '#/components/responses/401-Unauthorized'
        "403":
          $ref: '#/components/responses/403-Forbidden'
        "404":
          $ref: '#/components/responses/404-NotFound'
        "406":
          $ref: '#/components/responses/406-NotAcceptable'
        "408":
          $ref: '#/components/responses/408-Timeout'
        "409":
          $ref: '#/components/responses/409-Conflict'
        "412":
          $ref: '#/components/responses/412-PreconditionFailed'
        "422":
          $ref: '#/components/responses/422-UnprocessableEntity'
        "429":
          $ref: '#/components/responses/429-TooManyRequests'
        "500":
          $ref: '#/components/responses/500-InternalServerError'
        "501":
          $ref: '#/components/responses/501-Unimplemented'
        "503":
          $ref: '#/components/responses/503-ServiceUnavailable'
      tags:
      - TelemetryLogsGroup
    get:
      description: Gets a telemetry log group.
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TelemetryLogsGroup'
          description: The requested telemetry log group.
        "400":
          $ref: '#/components/responses/400-BadRequest'
        "401":
          $ref: '#/components/responses/401-Unauthorized'
        "403":
          $ref: '#/components/responses/403-Forbidden'
        "404":
          $ref: '#/components/responses/404-NotFound'
        "406":
          $ref: '#/components/responses/406-NotAcceptable'
        "408":
          $ref: '#/components/responses/408-Timeout'
        "409":
          $ref: '#/components/responses/409-Conflict'
        "412":
          $ref: '#/components/responses/412-PreconditionFailed'
        "422":
          $ref: '#/components/responses/422-UnprocessableEntity'
        "429":
          $ref: '#/components/responses/429-TooManyRequests'
        "500":
          $ref: '#/components/responses/500-InternalServerError'
        "501":
          $ref: '#/components/responses/501-Unimplemented'
        "503":
          $ref: '#/components/responses/503-ServiceUnavailable'
      tags:
      - TelemetryLogsGroup
    parameters:
    - description: The unique telemetry group resource identifier.
      in: path
      name: telemetryLogsGroupId
      required: true
      schema:
        pattern: ^telemetrygroup-[0-9a-f]{8}$
        type: string
    - description: unique projectName for the resource
      in: path
      name: projectName
      required: true
      schema:
        type: string
  /v1/projects/{projectName}/telemetry/loggroups/{telemetryLogsGroupId}/logprofiles:
    get:
      description: Gets all telemetry log profiles.
      parameters:
      - description: Index of the first item to return. This allows skipping of items.
        in: query
        name: offset
        schema:
          default: 0
          maximum: 10000
          minimum: 0
          type: integer
      - description: Defines the amount of items to be contained in a single page,
          min of 1 and max of 100, default of 20.
        in: query
        name: pageSize
        schema:
          default: 20
          maximum: 100
          minimum: 1
          type: integer
      - description: Returns only the telemetry profiles that are assigned with the
          given site ID.
        in: query
        name: siteId
        schema:
          pattern: ^site-[0-9a-f]{8}$
          type: string
      - description: Returns only the telemetry profiles that are assigned with the
          given region ID.
        in: query
        name: regionId
        schema:
          pattern: ^region-[0-9a-f]{8}$
          type: string
      - description: Returns only the telemetry profiles that are assigned with the
          given instance identifier.
        in: query
        name: instanceId
        schema:
          pattern: ^inst-[0-9a-f]{8}$
          type: string
      - description: Indicates if the listed telemetry profiles will be extended with
          telemetry profiles rendered from the hierarchy. This flag is used along
          with one of site ID, region ID or instance ID. If site ID, region ID, or
          instance ID are not set, this flag is ignored.
        in: query
        name: showInherited
        schema:
          type: boolean
      - description: Optional comma-separated list of fields to specify a sorting
          order. See https://google.aip.dev/132 for details.
        in: query
        name: orderBy
        schema:
          pattern: ^$|^[a-zA-Z-_0-9., ]+$
          type: string
      - description: unique projectName for the resource
        in: path
        name: projectName
        required: true
        schema:
          type: string
      - description: unique telemetryLogsGroupId for the resource
        in: path
        name: telemetryLogsGroupId
        required: true
        schema:
          type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TelemetryLogsProfileList'
          description: Array of all telemetry log profiles.
        "400":
          $ref: '#/components/responses/400-BadRequest'
        "401":
          $ref: '#/components/responses/401-Unauthorized'
        "403":
          $ref: '#/components/responses/403-Forbidden'
        "404":
          $ref: '#/components/responses/404-NotFound'
        "406":
          $ref: '#/components/responses/406-NotAcceptable'
        "408":
          $ref: '#/components/responses/408-Timeout'
        "409":
          $ref: '#/components/responses/409-Conflict'
        "412":
          $ref: '#/components/responses/412-PreconditionFailed'
        "422":
          $ref: '#/components/responses/422-UnprocessableEntity'
        "429":
          $ref: '#/components/responses/429-TooManyRequests'
        "500":
          $ref: '#/components/responses/500-InternalServerError'
        "501":
          $ref: '#/components/responses/501-Unimplemented'
        "503":
          $ref: '#/components/responses/503-ServiceUnavailable'
      tags:
      - TelemetryLogsProfile
    post:
      description: Creates a telemetry log profile.
      parameters:
      - description: unique projectName for the resource
        in: path
        name: projectName
        required: true
        schema:
          type: string
      - description: unique telemetryLogsGroupId for the resource
        in: path
        name: telemetryLogsGroupId
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TelemetryLogsProfile'
        required: true
      responses:
        "201":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TelemetryLogsProfile'
          description: The telemetry profile was created.
          headers:
            Location:
              description: Contains the URI of the telemetry log profile created.
              required: true
              schema:
                type: string
        "400":
          $ref: '#/components/responses/400-BadRequest'
        "401":
          $ref: '#/components/responses/401-Unauthorized'
        "403":
          $ref: '#/components/responses/403-Forbidden'
        "404":
          $ref: '#/components/responses/404-NotFound'
        "406":
          $ref: '#/components/responses/406-NotAcceptable'
        "408":
          $ref: '#/components/responses/408-Timeout'
        "409":
          $ref: '#/components/responses/409-Conflict'
        "412":
          $ref: '#/components/responses/412-PreconditionFailed'
        "422":
          $ref: '#/components/responses/422-UnprocessableEntity'
        "429":
          $ref: '#/components/responses/429-TooManyRequests'
        "500":
          $ref: '#/components/responses/500-InternalServerError'
        "501":
          $ref: '#/components/responses/501-Unimplemented'
        "503":
          $ref: '#/components/responses/503-ServiceUnavailable'
      tags:
      - TelemetryLogsProfile
  /v1/projects/{projectName}/telemetry/loggroups/{telemetryLogsGroupId}/logprofiles/{telemetryLogsProfileId}:
    delete:
      description: Deletes a telemetry log profile.
      responses:
        "204":
          description: The telemetry log profile was deleted.
        "400":
          $ref: '#/components/responses/400-BadRequest'
        "401":
          $ref: '#/components/responses/401-Unauthorized'
        "403":
          $ref: '#/components/responses/403-Forbidden'
        "404":
          $ref: '#/components/responses/404-NotFound'
        "406":
          $ref: '#/components/responses/406-NotAcceptable'
        "408":
          $ref: '#/components/responses/408-Timeout'
        "409":
          $ref: '#/components/responses/409-Conflict'
        "412":
          $ref: '#/components/responses/412-PreconditionFailed'
        "422":
          $ref: '#/components/responses/422-UnprocessableEntity'
        "429":
          $ref: '#/components/responses/429-TooManyRequests'
        "500":
          $ref: '#/components/responses/500-InternalServerError'
        "501":
          $ref: '#/components/responses/501-Unimplemented'
        "503":
          $ref: '#/components/responses/503-ServiceUnavailable'
      tags:
      - TelemetryLogsProfile
    get:
      description: Gets a telemetry log profile.
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TelemetryLogsProfile'
          description: The requested telemetry log profile.
        "400":
          $ref: '#/components/responses/400-BadRequest'
        "401":
          $ref: '#/components/responses/401-Unauthorized'
        "403":
          $ref: '#/components/responses/403-Forbidden'
        "404":
          $ref: '#/components/responses/404-NotFound'
        "406":
          $ref: '#/components/responses/406-NotAcceptable'
        "408":
          $ref: '#/components/responses/408-Timeout'
        "409":
          $ref: '#/components/responses/409-Conflict'
        "412":
          $ref: '#/components/responses/412-PreconditionFailed'
        "422":
          $ref: '#/components/responses/422-UnprocessableEntity'
        "429":
          $ref: '#/components/responses/429-TooManyRequests'
        "500":
          $ref: '#/components/responses/500-InternalServerError'
        "501":
          $ref: '#/components/responses/501-Unimplemented'
        "503":
          $ref: '#/components/responses/503-ServiceUnavailable'
      tags:
      - TelemetryLogsProfile
    parameters:
    - description: The unique telemetry profile identifier.
      in: path
      name: telemetryLogsProfileId
      required: true
      schema:
        pattern: ^telemetryprofile-[0-9a-f]{8}$
        type: string
    - description: unique projectName for the resource
      in: path
      name: projectName
      required: true
      schema:
        type: string
    - description: unique telemetryLogsGroupId for the resource
      in: path
      name: telemetryLogsGroupId
      required: true
      schema:
        type: string
    patch:
      description: Partially updates a telemetry log profile.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TelemetryLogsProfile'
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TelemetryLogsProfile'
          description: The telemetry log profile was patched.
        "400":
          $ref: '#/components/responses/400-BadRequest'
        "401":
          $ref: '#/components/responses/401-Unauthorized'
        "403":
          $ref: '#/components/responses/403-Forbidden'
        "404":
          $ref: '#/components/responses/404-NotFound'
        "406":
          $ref: '#/components/responses/406-NotAcceptable'
        "408":
          $ref: '#/components/responses/408-Timeout'
        "409":
          $ref: '#/components/responses/409-Conflict'
        "412":
          $ref: '#/components/responses/412-PreconditionFailed'
        "422":
          $ref: '#/components/responses/422-UnprocessableEntity'
        "429":
          $ref: '#/components/responses/429-TooManyRequests'
        "500":
          $ref: '#/components/responses/500-InternalServerError'
        "501":
          $ref: '#/components/responses/501-Unimplemented'
        "503":
          $ref: '#/components/responses/503-ServiceUnavailable'
      tags:
      - TelemetryLogsProfile
    put:
      description: Updates a telemetry log profile.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TelemetryLogsProfile'
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TelemetryLogsProfile'
          description: The telemetry log profile was updated.
        "400":
          $ref: '#/components/responses/400-BadRequest'
        "401":
          $ref: '#/components/responses/401-Unauthorized'
        "403":
          $ref: '#/components/responses/403-Forbidden'
        "404":
          $ref: '#/components/responses/404-NotFound'
        "406":
          $ref: '#/components/responses/406-NotAcceptable'
        "408":
          $ref: '#/components/responses/408-Timeout'
        "409":
          $ref: '#/components/responses/409-Conflict'
        "412":
          $ref: '#/components/responses/412-PreconditionFailed'
        "422":
          $ref: '#/components/responses/422-UnprocessableEntity'
        "429":
          $ref: '#/components/responses/429-TooManyRequests'
        "500":
          $ref: '#/components/responses/500-InternalServerError'
        "501":
          $ref: '#/components/responses/501-Unimplemented'
        "503":
          $ref: '#/components/responses/503-ServiceUnavailable'
      tags:
      - TelemetryLogsProfile
  /v1/projects/{projectName}/telemetry/metricgroups:
    get:
      description: Gets all telemetry metric groups.
      parameters:
      - description: Index of the first item to return. This allows skipping of items.
        in: query
        name: offset
        schema:
          default: 0
          maximum: 10000
          minimum: 0
          type: integer
      - description: Defines the amount of items to be contained in a single page,
          min of 1 and max of 100, default of 20.
        in: query
        name: pageSize
        schema:
          default: 20
          maximum: 100
          minimum: 1
          type: integer
      - description: Optional comma-separated list of fields to specify a sorting
          order. See https://google.aip.dev/132 for details.
        in: query
        name: orderBy
        schema:
          pattern: ^$|^[a-zA-Z-_0-9., ]+$
          type: string
      - description: unique projectName for the resource
        in: path
        name: projectName
        required: true
        schema:
          type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TelemetryMetricsGroupList'
          description: Array of all telemetry metric groups.
        "400":
          $ref: '#/components/responses/400-BadRequest'
        "401":
          $ref: '#/components/responses/401-Unauthorized'
        "403":
          $ref: '#/components/responses/403-Forbidden'
        "422":
          $ref: '#/components/responses/422-UnprocessableEntity'
        "429":
          $ref: '#/components/responses/429-TooManyRequests'
        "500":
          $ref: '#/components/responses/500-InternalServerError'
        "501":
          $ref: '#/components/responses/501-Unimplemented'
        "503":
          $ref: '#/components/responses/503-ServiceUnavailable'
      tags:
      - TelemetryMetricsGroup
    post:
      description: Creates a telemetry metric group.
      parameters:
      - description: unique projectName for the resource
        in: path
        name: projectName
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TelemetryMetricsGroup'
        required: true
      responses:
        "201":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TelemetryMetricsGroup'
          description: The telemetry metric group was created.
          headers:
            Location:
              description: Contains the URI of the telemetry metric group created.
              required: true
              schema:
                type: string
        "400":
          $ref: '#/components/responses/400-BadRequest'
        "401":
          $ref: '#/components/responses/401-Unauthorized'
        "403":
          $ref: '#/components/responses/403-Forbidden'
        "404":
          $ref: '#/components/responses/404-NotFound'
        "422":
          $ref: '#/components/responses/422-UnprocessableEntity'
        "500":
          $ref: '#/components/responses/500-InternalServerError'
        "501":
          $ref: '#/components/responses/501-Unimplemented'
      tags:
      - TelemetryMetricsGroup
  /v1/projects/{projectName}/telemetry/metricgroups/{telemetryMetricsGroupId}:
    delete:
      description: Deletes a telemetry metric group.
      responses:
        "204":
          description: The telemetry metric group was deleted.
        "400":
          $ref: '#/components/responses/400-BadRequest'
        "401":
          $ref: '#/components/responses/401-Unauthorized'
        "403":
          $ref: '#/components/responses/403-Forbidden'
        "404":
          $ref: '#/components/responses/404-NotFound'
        "406":
          $ref: '#/components/responses/406-NotAcceptable'
        "408":
          $ref: '#/components/responses/408-Timeout'
        "409":
          $ref: '#/components/responses/409-Conflict'
        "412":
          $ref: '#/components/responses/412-PreconditionFailed'
        "422":
          $ref: '#/components/responses/422-UnprocessableEntity'
        "429":
          $ref: '#/components/responses/429-TooManyRequests'
        "500":
          $ref: '#/components/responses/500-InternalServerError'
        "501":
          $ref: '#/components/responses/501-Unimplemented'
        "503":
          $ref: '#/components/responses/503-ServiceUnavailable'
      tags:
      - TelemetryMetricsGroup
    get:
      description: Gets a telemetry metric group.
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TelemetryMetricsGroup'
          description: The requested telemetry metric group.
        "400":
          $ref: '#/components/responses/400-BadRequest'
        "401":
          $ref: '#/components/responses/401-Unauthorized'
        "403":
          $ref: '#/components/responses/403-Forbidden'
        "404":
          $ref: '#/components/responses/404-NotFound'
        "406":
          $ref: '#/components/responses/406-NotAcceptable'
        "408":
          $ref: '#/components/responses/408-Timeout'
        "409":
          $ref: '#/components/responses/409-Conflict'
        "412":
          $ref: '#/components/responses/412-PreconditionFailed'
        "422":
          $ref: '#/components/responses/422-UnprocessableEntity'
        "429":
          $ref: '#/components/responses/429-TooManyRequests'
        "500":
          $ref: '#/components/responses/500-InternalServerError'
        "501":
          $ref: '#/components/responses/501-Unimplemented'
        "503":
          $ref: '#/components/responses/503-ServiceUnavailable'
      tags:
      - TelemetryMetricsGroup
    parameters:
    - description: The unique telemetry group resource identifier.
      in: path
      name: telemetryMetricsGroupId
      required: true
      schema:
        pattern: ^telemetrygroup-[0-9a-f]{8}$
        type: string
    - description: unique projectName for the resource
      in: path
      name: projectName
      required: true
      schema:
        type: string
  /v1/projects/{projectName}/telemetry/metricgroups/{telemetryMetricsGroupId}/metricprofiles:
    get:
      description: Gets all telemetry metric profiles.
      parameters:
      - description: Index of the first item to return. This allows skipping of items.
        in: query
        name: offset
        schema:
          default: 0
          maximum: 10000
          minimum: 0
          type: integer
      - description: Defines the amount of items to be contained in a single page,
          min of 1 and max of 100, default of 20.
        in: query
        name: pageSize
        schema:
          default: 20
          maximum: 100
          minimum: 1
          type: integer
      - description: Returns only the telemetry profiles that are assigned with the
          given site ID.
        in: query
        name: siteId
        schema:
          pattern: ^site-[0-9a-f]{8}$
          type: string
      - description: Returns only the telemetry profiles that are assigned with the
          given region ID.
        in: query
        name: regionId
        schema:
          pattern: ^region-[0-9a-f]{8}$
          type: string
      - description: Returns only the telemetry profiles that are assigned with the
          given instance identifier.
        in: query
        name: instanceId
        schema:
          pattern: ^inst-[0-9a-f]{8}$
          type: string
      - description: Indicates if the listed telemetry profiles will be extended with
          telemetry profiles rendered from the hierarchy. This flag is only used along
          with one of site ID, region ID or instance ID. If site ID, region ID, or
          instance ID are not set, this flag is ignored.
        in: query
        name: showInherited
        schema:
          type: boolean
      - description: Optional comma-separated list of fields to specify a sorting
          order. See https://google.aip.dev/132 for details.
        in: query
        name: orderBy
        schema:
          pattern: ^$|^[a-zA-Z-_0-9., ]+$
          type: string
      - description: unique projectName for the resource
        in: path
        name: projectName
        required: true
        schema:
          type: string
      - description: unique telemetryMetricsGroupId for the resource
        in: path
        name: telemetryMetricsGroupId
        required: true
        schema:
          type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TelemetryMetricsProfileList'
          description: Array of all telemetry metric profiles.
        "400":
          $ref: '#/components/responses/400-BadRequest'
        "401":
          $ref: '#/components/responses/401-Unauthorized'
        "403":
          $ref: '#/components/responses/403-Forbidden'
        "404":
          $ref: '#/components/responses/404-NotFound'
        "406":
          $ref: '#/components/responses/406-NotAcceptable'
        "408":
          $ref: '#/components/responses/408-Timeout'
        "409":
          $ref: '#/components/responses/409-Conflict'
        "412":
          $ref: '#/components/responses/412-PreconditionFailed'
        "422":
          $ref: '#/components/responses/422-UnprocessableEntity'
        "429":
          $ref: '#/components/responses/429-TooManyRequests'
        "500":
          $ref: '#/components/responses/500-InternalServerError'
        "501":
          $ref: '#/components/responses/501-Unimplemented'
        "503":
          $ref: '#/components/responses/503-ServiceUnavailable'
      tags:
      - TelemetryMetricsProfile
    post:
      description: Creates a telemetry metric profile.
      parameters:
      - description: unique projectName for the resource
        in: path
        name: projectName
        required: true
        schema:
          type: string
      - description: unique telemetryMetricsGroupId for the resource
        in: path
        name: telemetryMetricsGroupId
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TelemetryMetricsProfile'
        required: true
      responses:
        "201":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TelemetryMetricsProfile'
          description: The telemetry profile was created.
          headers:
            Location:
              description: Contains the URI of the telemetry profile created.
              required: true
              schema:
                type: string
        "400":
          $ref: '#/components/responses/400-BadRequest'
        "401":
          $ref: '#/components/responses/401-Unauthorized'
        "403":
          $ref: '#/components/responses/403-Forbidden'
        "404":
          $ref: '#/components/responses/404-NotFound'
        "406":
          $ref: '#/components/responses/406-NotAcceptable'
        "408":
          $ref: '#/components/responses/408-Timeout'
        "409":
          $ref: '#/components/responses/409-Conflict'
        "412":
          $ref: '#/components/responses/412-PreconditionFailed'
        "422":
          $ref: '#/components/responses/422-UnprocessableEntity'
        "429":
          $ref: '#/components/responses/429-TooManyRequests'
        "500":
          $ref: '#/components/responses/500-InternalServerError'
        "501":
          $ref: '#/components/responses/501-Unimplemented'
        "503":
          $ref: '#/components/responses/503-ServiceUnavailable'
      tags:
      - TelemetryMetricsProfile
  /v1/projects/{projectName}/telemetry/metricgroups/{telemetryMetricsGroupId}/metricprofiles/{telemetryMetricsProfileId}:
    delete:
      description: Deletes a telemetry metric profile.
      responses:
        "204":
          description: The telemetry metric profile was deleted.
        "400":
          $ref: '#/components/responses/400-BadRequest'
        "401":
          $ref: '#/components/responses/401-Unauthorized'
        "403":
          $ref: '#/components/responses/403-Forbidden'
        "404":
          $ref: '#/components/responses/404-NotFound'
        "406":
          $ref: '#/components/responses/406-NotAcceptable'
        "408":
          $ref: '#/components/responses/408-Timeout'
        "409":
          $ref: '#/components/responses/409-Conflict'
        "412":
          $ref: '#/components/responses/412-PreconditionFailed'
        "422":
          $ref: '#/components/responses/422-UnprocessableEntity'
        "429":
          $ref: '#/components/responses/429-TooManyRequests'
        "500":
          $ref: '#/components/responses/500-InternalServerError'
        "501":
          $ref: '#/components/responses/501-Unimplemented'
        "503":
          $ref: '#/components/responses/503-ServiceUnavailable'
      tags:
      - TelemetryMetricsProfile
    get:
      description: Gets a telemetry metric profile.
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TelemetryMetricsProfile'
          description: The requested telemetry metric profile.
        "400":
          $ref: '#/components/responses/400-BadRequest'
        "401":
          $ref: '#/components/responses/401-Unauthorized'
        "403":
          $ref: '#/components/responses/403-Forbidden'
        "404":
          $ref: '#/components/responses/404-NotFound'
        "406":
          $ref: '#/components/responses/406-NotAcceptable'
        "408":
          $ref: '#/components/responses/408-Timeout'
        "409":
          $ref: '#/components/responses/409-Conflict'
        "412":
          $ref: '#/components/responses/412-PreconditionFailed'
        "422":
          $ref: '#/components/responses/422-UnprocessableEntity'
        "429":
          $ref: '#/components/responses/429-TooManyRequests'
        "500":
          $ref: '#/components/responses/500-InternalServerError'
        "501":
          $ref: '#/components/responses/501-Unimplemented'
        "503":
          $ref: '#/components/responses/503-ServiceUnavailable'
      tags:
      - TelemetryMetricsProfile
    parameters:
    - description: The unique telemetry profile identifier.
      in: path
      name: telemetryMetricsProfileId
      required: true
      schema:
        pattern: ^telemetryprofile-[0-9a-f]{8}$
        type: string
    - description: unique projectName for the resource
      in: path
      name: projectName
      required: true
      schema:
        type: string
    - description: unique telemetryMetricsGroupId for the resource
      in: path
      name: telemetryMetricsGroupId
      required: true
      schema:
        type: string
    patch:
      description: Partially updates a telemetry metric profile.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TelemetryMetricsProfile'
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TelemetryMetricsProfile'
          description: The telemetry metric profile was patched.
        "400":
          $ref: '#/components/responses/400-BadRequest'
        "401":
          $ref: '#/components/responses/401-Unauthorized'
        "403":
          $ref: '#/components/responses/403-Forbidden'
        "409":
          $ref: '#/components/responses/409-Conflict'
        "422":
          $ref: '#/components/responses/422-UnprocessableEntity'
        "500":
          $ref: '#/components/responses/500-InternalServerError'
        "501":
          $ref: '#/components/responses/501-Unimplemented'
      tags:
      - TelemetryMetricsProfile
    put:
      description: Updates a telemetry metric profile.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TelemetryMetricsProfile'
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TelemetryMetricsProfile'
          description: The telemetry metric profile was updated.
        "400":
          $ref: '#/components/responses/400-BadRequest'
        "401":
          $ref: '#/components/responses/401-Unauthorized'
        "403":
          $ref: '#/components/responses/403-Forbidden'
        "404":
          $ref: '#/components/responses/404-NotFound'
        "406":
          $ref: '#/components/responses/406-NotAcceptable'
        "408":
          $ref: '#/components/responses/408-Timeout'
        "409":
          $ref: '#/components/responses/409-Conflict'
        "412":
          $ref: '#/components/responses/412-PreconditionFailed'
        "422":
          $ref: '#/components/responses/422-UnprocessableEntity'
        "429":
          $ref: '#/components/responses/429-TooManyRequests'
        "500":
          $ref: '#/components/responses/500-InternalServerError'
        "501":
          $ref: '#/components/responses/501-Unimplemented'
        "503":
          $ref: '#/components/responses/503-ServiceUnavailable'
      tags:
      - TelemetryMetricsProfile
components:
  responses:
    400-BadRequest:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ProblemDetails'
      description: Object in payload is not properly formulated or not related to
        the method.
    401-Unauthorized:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ProblemDetails'
      description: Request is not authenticated; it either does not contain a JSON
        Web Token (JWT) in its header, or the JWT is not valid.
    403-Forbidden:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ProblemDetails'
      description: Request is not authorized; it does not contain valid roles to perform
        a request.
    404-NotFound:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ProblemDetails'
      description: No resource is found at the URI.
    406-NotAcceptable:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ProblemDetails'
      description: Response content is not acceptable according to the request's accept
        headers.
    408-Timeout:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ProblemDetails'
      description: Request timeout.
    409-Conflict:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ProblemDetails'
      description: Request could not be processed in the current state of the resource.
    412-PreconditionFailed:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ProblemDetails'
      description: The server does not meet one of the preconditions that the requester
        put on the request header fields.
    422-UnprocessableEntity:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ProblemDetails'
      description: Unprocessable entity in parsing body request.
    429-TooManyRequests:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ProblemDetails'
      description: Too many requests have been sent in a given amount of time.
    500-InternalServerError:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ProblemDetails'
      description: The provider is currently unable to handle the request because
        of an internal error.
    501-Unimplemented:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ProblemDetails'
      description: The resource or method is not implemented.
    503-ServiceUnavailable:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ProblemDetails'
      description: The provider is currently unable to handle the request because
        of a temporary overload.
  schemas:
    Amount:
      description: Defines an amount of resources related to memory and disk by default,
        specified in bytes.
      maxLength: 20
      minLength: 1
      pattern: ^[0-9]+$
      type: string
    EventKind:
      description: The type of event.
      enum:
      - EVENT_KIND_UNSPECIFIED
      - EVENT_KIND_CREATED
      - EVENT_KIND_UPDATED
      - EVENT_KIND_DELETED
      format: enum
      type: string
    Host:
      description: A host resource.
      properties:
        biosReleaseDate:
          description: The release date of the host BIOS.
          readOnly: true
          type: string
        biosVendor:
          description: The vendor of the host BIOS.
          readOnly: true
          type: string
        biosVersion:
          description: The version of the host BIOS.
          readOnly: true
          type: string
        bmcIp:
          description: BMC IP address, such as "192.0.0.1".
          readOnly: true
          type: string
        bmcKind:
          description: The type of BMC.
          enum:
          - BAREMETAL_CONTROLLER_KIND_UNSPECIFIED
          - BAREMETAL_CONTROLLER_KIND_NONE
          - BAREMETAL_CONTROLLER_KIND_IPMI
          - BAREMETAL_CONTROLLER_KIND_VPRO
          - BAREMETAL_CONTROLLER_KIND_PDU
          format: enum
          readOnly: true
          type: string
        cpuArchitecture:
          description: Architecture of the CPU model, e.g. x86_64.
          readOnly: true
          type: string
        cpuCapabilities:
          description: String list of all CPU capabilities (possibly JSON).
          readOnly: true
          type: string
        cpuCores:
          description: Number of CPU cores.
          format: uint32
          readOnly: true
          type: integer
        cpuModel:
          description: CPU model of the host.
          readOnly: true
          type: string
        cpuSockets:
          description: Number of physical CPU sockets.
          format: uint32
          readOnly: true
          type: integer
        cpuThreads:
          description: Total number of threads supported by the CPU.
          format: uint32
          readOnly: true
          type: integer
        cpuTopology:
          description: A JSON field describing the CPU topology. The CPU topology
            may contain, among others, information about CPU core types, their layout,
            and mapping to CPU sockets.
          readOnly: true
          type: string
        currentPowerState:
          $ref: '#/components/schemas/HostPowerState'
        currentState:
          $ref: '#/components/schemas/HostState'
        desiredPowerState:
          $ref: '#/components/schemas/HostPowerState'
        desiredState:
          $ref: '#/components/schemas/HostState'
        hostGpus:
          description: The list of GPU capabilities.
          items:
            $ref: '#/components/schemas/HostResourcesGPU'
          readOnly: true
          type: array
        hostNics:
          description: The list of interface capabilities.
          items:
            $ref: '#/components/schemas/HostResourcesInterface'
          readOnly: true
          type: array
        hostStatus:
          description: The host's lifecycle status message.
          maxLength: 1024
          pattern: ^$|^[a-zA-Z-_0-9./:;=?@!#,<>*() ]+$
          readOnly: true
          type: string
        hostStatusIndicator:
          $ref: '#/components/schemas/StatusIndicator'
        hostStatusTimestamp:
          description: A Unix, UTC timestamp when the host's lifecycle status was
            last updated.
          format: uint64
          readOnly: true
          type: integer
        hostStorages:
          description: The list of storage capabilities.
          items:
            $ref: '#/components/schemas/HostResourcesStorage'
          readOnly: true
          type: array
        hostUsbs:
          description: The list of USB capabilities.
          items:
            $ref: '#/components/schemas/HostResourcesUSB'
          readOnly: true
          type: array
        hostname:
          description: The host name.
          readOnly: true
          type: string
        inheritedMetadata:
          $ref: '#/components/schemas/MetadataJoin'
        instance:
          $ref: '#/components/schemas/Instance'
        memoryBytes:
          description: Quantity of the RAM in the system, in bytes.
          readOnly: true
          type: string
        metadata:
          $ref: '#/components/schemas/Metadata'
        name:
          description: The host name.
          maxLength: 20
          pattern: '^$|^[a-zA-Z-_0-9./: ]+$'
          type: string
        note:
          description: The note associated with the host.
          readOnly: true
          type: string
        onboardingStatus:
          description: The host's onboarding status message.
          maxLength: 1024
          pattern: ^$|^[a-zA-Z-_0-9./:;=?@!#,<>*() ]+$
          readOnly: true
          type: string
        onboardingStatusIndicator:
          $ref: '#/components/schemas/StatusIndicator'
        onboardingStatusTimestamp:
          description: A Unix, UTC timestamp when the host's onboarding status was
            last updated.
          format: uint64
          readOnly: true
          type: integer
        productName:
          description: The host's product name.
          readOnly: true
          type: string
        provider:
          $ref: '#/components/schemas/Provider'
        registrationStatus:
          description: The host's registration status message.
          maxLength: 1024
          pattern: ^$|^[a-zA-Z-_0-9./:;=?@!#,<>*() ]+$
          readOnly: true
          type: string
        registrationStatusIndicator:
          $ref: '#/components/schemas/StatusIndicator'
        registrationStatusTimestamp:
          description: A Unix, UTC timestamp when the host's registration status was
            last updated.
          format: uint64
          readOnly: true
          type: integer
        resourceId:
          description: Resource ID, generated on Create.
          pattern: ^host-[0-9a-f]{8}$
          readOnly: true
          type: string
        serialNumber:
          description: SMBIOS device serial number.
          readOnly: true
          type: string
        site:
          $ref: '#/components/schemas/Site'
        siteId:
          description: The site where the host is located.
          pattern: ^$|^site-[0-9a-f]{8}$
          type: string
          writeOnly: true
        timestamps:
          $ref: '#/components/schemas/Timestamps'
        uuid:
          description: The host UUID identifier; UUID is unique and immutable.
          format: uuid
          maxLength: 36
          type: string
      required:
      - name
    HostEvent:
      description: Event for a host.
      properties:
        eventKind:
          $ref: '#/components/schemas/EventKind'
        host:
          $ref: '#/components/schemas/Host'
    HostOperationWithNote:
      description: A freeform field associated with the host invalidate or delete
        operations to store the reason for change.
      properties:
        note:
          pattern: ^$|^[a-zA-Z-_0-9./:;=@?!#,<>*()\"" ]+$
          type: string
      required:
      - note
      title: HostOperationWithNote
      type: object
    HostPowerState:
      description: The representation of a host power state.
      enum:
      - POWER_STATE_UNSPECIFIED
      - POWER_STATE_ERROR
      - POWER_STATE_ON
      - POWER_STATE_OFF
      format: enum
      type: string
    HostRegisterInfo:
      description: Host registration information.
      properties:
        autoOnboard:
          default: false
          description: Set to enforce auto-onboarding of the host, which means that
            no confirmation will be required when the host connects for the first
            time, to Edge Orchestrator.
          type: boolean
        name:
          description: The host name.
          maxLength: 20
          pattern: '^$|^[a-zA-Z-_0-9./: ]+$'
          type: string
        serialNumber:
          description: The host's SMBIOS serial number.
          pattern: ^([A-Za-z0-9]{5,20})?$
          type: string
        timestamps:
          $ref: '#/components/schemas/Timestamps'
        uuid:
          description: The host's UUID identifier.
          format: uuid
          maxLength: 36
          type: string
    HostResourcesGPU:
      description: The set of available host GPU cards.
      properties:
        capabilities:
          description: The specific GPU device capabilities [e.g., PCI Express*, MSI*,
            power management (PM)].
          items:
            type: string
          readOnly: true
          type: array
        description:
          description: The human-readable GPU device description.
          readOnly: true
          type: string
        deviceName:
          description: The GPU device name.
          readOnly: true
          type: string
        pciId:
          description: The GPU device's PCI identifier.
          readOnly: true
          type: string
        product:
          description: The GPU device model.
          readOnly: true
          type: string
        timestamps:
          $ref: '#/components/schemas/Timestamps'
        vendor:
          description: The GPU device vendor.
          readOnly: true
          type: string
      type: object
    HostResourcesInterface:
      description: The set of available host interfaces.
      properties:
        bmcInterface:
          description: Defines if the card is the Baseboard Management Controller
            (BMC) interface.
          readOnly: true
          type: boolean
        deviceName:
          description: The interface name.
          readOnly: true
          type: string
        ipaddresses:
          description: The interface's IP address list.
          items:
            $ref: '#/components/schemas/IPAddress'
          readOnly: true
          type: array
        linkState:
          $ref: '#/components/schemas/LinkState'
        macAddr:
          description: The interface's MAC address.
          readOnly: true
          type: string
        mtu:
          $ref: '#/components/schemas/Amount'
        pciIdentifier:
          description: The interface's PCI identifier.
          readOnly: true
          type: string
        sriovEnabled:
          description: Flag that represents if the interface has SR-IOV support.
          readOnly: true
          type: boolean
        sriovVfsNum:
          description: The number of virtual functions (VFs) currently provisioned
            on the interface, if SR-IOV is supported.
          readOnly: true
          type: integer
        sriovVfsTotal:
          description: The maximum number of VFs the interface supports, if SR-IOV
            is supported.
          readOnly: true
          type: integer
        timestamps:
          $ref: '#/components/schemas/Timestamps'
      type: object
    HostResourcesStorage:
      description: The set of available host storage capabilities.
      properties:
        capacityBytes:
          $ref: '#/components/schemas/Amount'
        deviceName:
          description: The storage device name.
          readOnly: true
          type: string
        model:
          description: The storage model.
          readOnly: true
          type: string
        serial:
          description: The storage device's unique serial number.
          readOnly: true
          type: string
        timestamps:
          $ref: '#/components/schemas/Timestamps'
        vendor:
          description: The storage vendor.
          readOnly: true
          type: string
        wwid:
          description: The storage device's unique identifier.
          readOnly: true
          type: string
      required:
      - capacity
      type: object
    HostResourcesUSB:
      description: The set of host USB resources.
      properties:
        addr:
          description: USB device number assigned by the OS.
          readOnly: true
          type: string
        bus:
          description: Bus number that the device connects to.
          readOnly: true
          type: string
        class:
          description: Class defined by USB Implementers Forum, Inc (USB-IF).
          readOnly: true
          type: string
        deviceName:
          description: The USB device name.
          readOnly: true
          type: string
        idProduct:
          description: Hexadecimal number representing the ID of the USB device product.
          readOnly: true
          type: string
        idVendor:
          description: Hexadecimal number representing the ID of the USB device vendor.
          readOnly: true
          type: string
        serial:
          description: Serial number of the USB device.
          readOnly: true
          type: string
        timestamps:
          $ref: '#/components/schemas/Timestamps'
      type: object
    HostState:
      description: State of the host.
      enum:
      - HOST_STATE_UNSPECIFIED
      - HOST_STATE_ERROR
      - HOST_STATE_DELETING
      - HOST_STATE_DELETED
      - HOST_STATE_ONBOARDED
      - HOST_STATE_UNTRUSTED
      - HOST_STATE_REGISTERED
      format: enum
      type: string
    HostsList:
      description: A list of host objects.
      properties:
        hasNext:
          description: Indicates if there are more hosts available to be retrieved.
          readOnly: true
          type: boolean
        hosts:
          items:
            $ref: '#/components/schemas/Host'
          readOnly: true
          type: array
        totalElements:
          description: Total number of items the request would return, if not limited
            by pagination.
          readOnly: true
          type: integer
      required:
      - hosts
      - hasNext
      - totalElements
      title: HostsList
      type: object
    HostsSummary:
      description: A summary of host object status.
      properties:
        error:
          minimum: 0
          readOnly: true
          type: integer
        running:
          minimum: 0
          readOnly: true
          type: integer
        total:
          minimum: 0
          readOnly: true
          type: integer
        unallocated:
          minimum: 0
          readOnly: true
          type: integer
      title: HostsSummary
      type: object
    IPAddress:
      description: An IP address represented using the CIDR notation, and additional
        information identifying the configuration mode of the address.
      properties:
        address:
          description: CIDR representation of the IP address.
          readOnly: true
          x-go-type: strfmt.CIDR
          x-go-type-import:
            path: github.com/go-openapi/strfmt
        configMethod:
          default: IP_ADDRESS_CONFIG_MODE_UNSPECIFIED
          description: Specifies how the IP address is configured.
          enum:
          - IP_ADDRESS_CONFIG_MODE_UNSPECIFIED
          - IP_ADDRESS_CONFIG_MODE_STATIC
          - IP_ADDRESS_CONFIG_MODE_DYNAMIC
          readOnly: true
          type: string
        status:
          default: IP_ADDRESS_STATUS_UNSPECIFIED
          description: The status of the IP address.
          enum:
          - IP_ADDRESS_STATUS_UNSPECIFIED
          - IP_ADDRESS_STATUS_ASSIGNMENT_ERROR
          - IP_ADDRESS_STATUS_ASSIGNED
          - IP_ADDRESS_STATUS_CONFIGURATION_ERROR
          - IP_ADDRESS_STATUS_CONFIGURED
          - IP_ADDRESS_STATUS_RELEASED
          - IP_ADDRESS_STATUS_ERROR
          readOnly: true
          type: string
        statusDetail:
          description: The details of the status of the IP address.
          readOnly: true
          type: string
        timestamps:
          $ref: '#/components/schemas/Timestamps'
      required:
      - address
      - configMethod
      type: object
    Instance:
      description: An instance resource.
      properties:
        currentOs:
          $ref: '#/components/schemas/OperatingSystemResource'
        currentState:
          $ref: '#/components/schemas/InstanceState'
        desiredOs:
          $ref: '#/components/schemas/OperatingSystemResource'
        desiredState:
          $ref: '#/components/schemas/InstanceState'
        host:
          $ref: '#/components/schemas/Host'
        hostID:
          description: The host's unique identifier associated with the instance.
          pattern: ^host-[0-9a-f]{8}$
          type: string
          writeOnly: true
        instanceID:
          description: The instance's unique identifier. Alias of resourceID.
          pattern: ^inst-[0-9a-f]{8}$
          readOnly: true
          title: instance_id
          type: string
        instanceStatus:
          description: The instance's lifecycle status message.
          maxLength: 1024
          pattern: ^$|^[a-zA-Z-_0-9./:;=?@!#,<>*() ]+$
          readOnly: true
          type: string
        instanceStatusDetail:
          description: The detailed status of the instance's software components.
          maxLength: 1024
          pattern: ^$|^[a-zA-Z-_0-9./:;=?@!#,<>*() ]+$
          readOnly: true
          type: string
        instanceStatusIndicator:
          $ref: '#/components/schemas/StatusIndicator'
        instanceStatusTimestamp:
          description: A Unix, UTC timestamp when the instance's lifecycle status
            was last updated.
          format: uint64
          readOnly: true
          type: integer
        kind:
          $ref: '#/components/schemas/InstanceKind'
        localAccount:
          $ref: '#/components/schemas/LocalAccount'
        localAccountID:
          description: The unique identifier of local account will be associated with
            the instance.
          pattern: ^localaccount-[0-9a-f]{8}$
          title: localAccountResourceID
          type: string
          writeOnly: true
        name:
          description: The instance's human-readable name.
          maxLength: 50
          pattern: '^$|^[a-zA-Z-_0-9./: ]+$'
          type: string
        os:
          $ref: '#/components/schemas/OperatingSystemResource'
        osID:
          deprecated: true
          description: The unique identifier of OS resource that must be installed
            on the instance.
          pattern: ^os-[0-9a-f]{8}$
          title: osResourceID
          type: string
          writeOnly: true
        provisioningStatus:
          description: The instance's provisioning status message.
          maxLength: 1024
          pattern: ^$|^[a-zA-Z-_0-9./:;=?@!#,<>*() ]+$
          readOnly: true
          type: string
        provisioningStatusIndicator:
          $ref: '#/components/schemas/StatusIndicator'
        provisioningStatusTimestamp:
          description: A Unix, UTC timestamp when the instance's provisioning status
            was last updated.
          format: uint64
          readOnly: true
          type: integer
        resourceId:
          description: Resource ID, generated by the inventory on Create.
          pattern: ^inst-[0-9a-f]{8}$
          readOnly: true
          type: string
        securityFeature:
          $ref: '#/components/schemas/SecurityFeature'
        timestamps:
          $ref: '#/components/schemas/Timestamps'
        trustedAttestationStatus:
          description: The instance's software trusted attestation status message.
          maxLength: 1024
          pattern: ^$|^[a-zA-Z-_0-9./:;=?@!#,<>*() ]+$
          readOnly: true
          type: string
        trustedAttestationStatusIndicator:
          $ref: '#/components/schemas/StatusIndicator'
        trustedAttestationStatusTimestamp:
          description: A Unix, UTC timestamp when the instance's software trusted
            attestation status was last updated.
          format: uint64
          readOnly: true
          type: integer
        updateStatus:
          description: The instance's software update status message.
          maxLength: 1024
          pattern: ^$|^[a-zA-Z-_0-9./:;=?@!#,<>*() ]+$
          readOnly: true
          type: string
        updateStatusDetail:
          description: 'Beta: The detailed description of the instance''s last software
            update.'
          maxLength: 100000
          readOnly: true
          type: string
        updateStatusIndicator:
          $ref: '#/components/schemas/StatusIndicator'
        updateStatusTimestamp:
          description: A Unix, UTC timestamp when the instance's software update status
            was last updated.
          format: uint64
          readOnly: true
          type: integer
        workloadMembers:
          description: The workload members associated with the instance.
          items:
            $ref: '#/components/schemas/WorkloadMember'
          readOnly: true
          type: array
    InstanceEvent:
      description: Event for an instance.
      properties:
        eventKind:
          $ref: '#/components/schemas/EventKind'
        instance:
          $ref: '#/components/schemas/Instance'
    InstanceKind:
      description: Type of the instance.
      enum:
      - INSTANCE_KIND_UNSPECIFIED
      - INSTANCE_KIND_METAL
      format: enum
      type: string
    InstanceList:
      description: A list of instance objects.
      properties:
        hasNext:
          description: Indicates if there are more instance objects available to be
            retrieved.
          readOnly: true
          type: boolean
        instances:
          items:
            $ref: '#/components/schemas/Instance'
          readOnly: true
          type: array
        totalElements:
          description: Total number of items the request would return, if not limited
            by pagination.
          readOnly: true
          type: integer
      required:
      - instances
      - hasNext
      - totalElements
      title: InstanceList
      type: object
    InstanceState:
      description: State of the instance.
      enum:
      - INSTANCE_STATE_UNSPECIFIED
      - INSTANCE_STATE_ERROR
      - INSTANCE_STATE_RUNNING
      - INSTANCE_STATE_UNTRUSTED
      - INSTANCE_STATE_DELETED
      format: enum
      type: string
    LinkState:
      description: A generic structure to define the state of a link.
      properties:
        timestamp:
          description: The timestamp when the link state was last updated.
          format: date-time
          readOnly: true
          type: string
        timestamps:
          $ref: '#/components/schemas/Timestamps'
        type:
          default: LINK_STATE_UNSPECIFIED
          description: the type of the state.
          enum:
          - LINK_STATE_UNSPECIFIED
          - LINK_STATE_UP
          - LINK_STATE_DOWN
          readOnly: true
          type: string
      required:
      - timestamp
      - type
      type: object
    LocalAccount:
      description: A local account resource.
      properties:
        localAccountID:
          description: The local account resource's unique identifier. Alias of resourceId.
          pattern: ^localaccount-[0-9a-f]{8}$
          readOnly: true
          title: localAccountID
          type: string
        resourceId:
          description: resource ID, generated by the inventory on Create.
          pattern: ^localaccount-[0-9a-f]{8}$
          readOnly: true
          type: string
        sshKey:
          description: The local account's sshkey.
          maxLength: 800
          pattern: ^(ssh-ed25519|ecdsa-sha2-nistp521) ([A-Za-z0-9+/=]+) ?(.*)?$
          type: string
        timestamps:
          $ref: '#/components/schemas/Timestamps'
        username:
          description: The local account's username.
          maxLength: 32
          pattern: ^[a-z][a-z0-9-]{0,31}$
          type: string
      required:
      - username
      - sshKey
      title: LocalAccount
      type: object
    LocalAccountList:
      description: A list of local account objects.
      properties:
        hasNext:
          description: Indicates if there are more objects available to be retrieved.
          readOnly: true
          type: boolean
        localAccounts:
          description: Array of local account objects.
          items:
            $ref: '#/components/schemas/LocalAccount'
          readOnly: true
          type: array
        totalElements:
          description: Total number of items that the request would return, if not
            limited by pagination.
          readOnly: true
          type: integer
      required:
      - localAccounts
      - hasNext
      - totalElements
      title: LocalAccountList
      type: object
    LocationNode:
      description: A location node's resource, region, or site.
      properties:
        name:
          description: The node's human-readable name.
          maxLength: 20
          pattern: '^$|^[a-zA-Z-_0-9./: ]+$'
          readOnly: true
          type: string
        parentId:
          description: The associated resource ID of the parent resource of this location
            node. For a region, it could be empty or a regionId. For a site, it could
            be empty or a regionId.
          readOnly: true
          type: string
        resourceId:
          description: The associated node's resource ID, generated by the inventory
            on Create.
          readOnly: true
          type: string
        type:
          $ref: '#/components/schemas/LocationType'
      required:
      - resourceId
      - parentId
      - name
      - type
      type: object
    LocationNodeList:
      description: A LocationNodeList object. Contains all the required information
        to build a tree of regions and sites, given their associations.
      properties:
        nodes:
          description: The ordered list of nodes (root to leaf) of the location's
            hierarchy tree of regions and sites. The relationship of the root to leaf
            is limited by the maximum depth of seven items.
          items:
            $ref: '#/components/schemas/LocationNode'
          readOnly: true
          type: array
        outputElements:
          description: The number of items returned in the nodes's array that match
            the query parameters of the request.
          readOnly: true
          type: integer
        totalElements:
          description: The total number of items that match the query parameters of
            the request.
          readOnly: true
          type: integer
      required:
      - nodes
    LocationType:
      description: The type of the location node.
      enum:
      - RESOURCE_KIND_REGION
      - RESOURCE_KIND_SITE
      format: enum
      readOnly: true
      type: string
    Metadata:
      description: A metadata list, represented by a list of key:value pairs.
      items:
        properties:
          key:
            maxLength: 316
            pattern: ^$|^[a-z.]+/$|^[a-z.]+/[a-z0-9][a-z0-9-_.]*[a-z0-9]$|^[a-z.]+/[a-z0-9]$|^[a-z]$|^[a-z0-9][a-z0-9-_.]*[a-z0-9]$
            type: string
          value:
            maxLength: 63
            pattern: ^$|^[a-z0-9]$|^[a-z0-9][a-z0-9._-]*[a-z0-9]$
            type: string
        required:
        - key
        - value
        type: object
      type: array
    MetadataJoin:
      description: The joint set of location's and host's logical metadata.
      properties:
        location:
          $ref: '#/components/schemas/Metadata'
        ou:
          $ref: '#/components/schemas/Metadata'
      type: object
    OU:
      description: An OU resource.
      properties:
        inheritedMetadata:
          $ref: '#/components/schemas/Metadata'
        metadata:
          $ref: '#/components/schemas/Metadata'
        name:
          description: The OU's name.
          maxLength: 20
          pattern: '^$|^[a-zA-Z-_0-9./: ]+$'
          title: ou-name
          type: string
        ouID:
          description: The OU resource's unique identifier. Alias of resourceId.
          pattern: ^ou-[0-9a-f]{8}$
          readOnly: true
          title: ouID
          type: string
        ouKind:
          description: The kind of OU resource, e.g. BU and client.
          maxLength: 20
          pattern: '^$|^[a-zA-Z-_0-9./: ]+$'
          type: string
        parentOu:
          description: The parent OU's unique identifier that the OU is associated
            to, when it exists.
          pattern: ^$|^ou-[0-9a-f]{8}$
          type: string
        resourceId:
          description: resource ID, generated by the inventory on Create.
          pattern: ^ou-[0-9a-f]{8}$
          readOnly: true
          type: string
        timestamps:
          $ref: '#/components/schemas/Timestamps'
      required:
      - name
      title: OU
      type: object
    OUsList:
      description: A list of OU objects.
      properties:
        OUs:
          items:
            $ref: '#/components/schemas/OU'
          readOnly: true
          type: array
        hasNext:
          description: Indicates if there are more OU objects available to be retrieved.
          readOnly: true
          type: boolean
        totalElements:
          description: Total number of items that the request would return, if not
            limited by pagination.
          readOnly: true
          type: integer
      required:
      - OUs
      - hasNext
      - totalElements
      title: OUsList
      type: object
    OperatingSystemProvider:
      description: Describes the OS owner that drives the OS provisioning.
      enum:
      - OPERATING_SYSTEM_PROVIDER_UNSPECIFIED
      - OPERATING_SYSTEM_PROVIDER_INFRA
      - OPERATING_SYSTEM_PROVIDER_LENOVO
      format: enum
      type: string
    OperatingSystemResource:
      description: An OS resource.
      properties:
        architecture:
          description: The OS resource's architecture.
          maxLength: 20
          pattern: ^$|^[a-zA-Z-_0-9./:;=@?!#,<>*()\"" ]+$
          title: architecture
          type: string
        imageId:
          description: A unique identifier of the OS image that can be retrieved from
            the running OS.
          pattern: ^$|^[a-zA-Z-_0-9./:;=@?!#,<>*()\"" ]+$
          title: imageId
          type: string
        imageUrl:
          description: The URL repository of the OS image. If set, overwrites repoUrl.
          maxLength: 500
          pattern: ^$|^[a-zA-Z-_0-9./:;=@?!#,<>*()\"" ]+$
          title: imageUrl
          type: string
        installedPackages:
          description: Freeform text, OS-dependent. A list of package names, one per
            line (newline separated). Must not contain version information.
          pattern: ^$|^[a-zA-Z-_0-9./:;=@?!#,<>*()\" \\\n]+$
          title: installedPackages
          type: string
        kernelCommand:
          description: The OS resource's kernel command.
          maxLength: 500
          pattern: ^$|^[a-zA-Z-_0-9./:;=@?!#,<>*()\"" ]+$
          title: kernelCommand
          type: string
        name:
          description: The OS resource's name.
          maxLength: 128
          pattern: ^[a-zA-Z-_0-9. ()]+$
          type: string
        osProvider:
          $ref: '#/components/schemas/OperatingSystemProvider'
        osResourceID:
          description: The OS resource's unique identifier. Alias of resourceId.
          pattern: ^os-[0-9a-f]{8}$
          readOnly: true
          title: osResourceID
          type: string
        osType:
          $ref: '#/components/schemas/OperatingSystemType'
        platformBundle:
          description: Opaque JSON field storing references to custom installation
            script(s) that supplements the base OS with additional OS-level dependencies/configurations.
            If empty, the default OS installation will be used.
          readOnly: true
          type: string
        profileName:
          description: Name of the OS profile that the OS resource belongs to.
          maxLength: 128
          pattern: ^$|^[a-zA-Z-_0-9./:;=@?!#,<>*()\"" ]+$
          type: string
        profileVersion:
          description: Version of OS profile that the OS resource belongs to.
          readOnly: true
          type: string
        repoUrl:
          deprecated: true
          description: The URL repository of the OS update sources. Deprecated. Use
            imageUrl to filter repoUrl.
          maxLength: 500
          pattern: ^$|^[a-zA-Z-_0-9./:;=@?!#,<>*()\"" ]+$
          title: repoUrl
          type: string
        resourceId:
          description: Resource ID, generated by inventory on Create
          pattern: ^os-[0-9a-f]{8}$
          readOnly: true
          type: string
        securityFeature:
          $ref: '#/components/schemas/SecurityFeature'
        sha256:
          description: SHA256 checksum of the OS resource in hexadecimal representation.
          maxLength: 64
          minLength: 64
          pattern: ^[a-f0-9]+$
          type: string
        timestamps:
          $ref: '#/components/schemas/Timestamps'
        updateSources:
          description: The list of OS resource update sources.
          items:
            maxLength: 10000
            pattern: ^$|^[a-zA-Z-_0-9./:;=@?!#,<>*+()\" \\\n]+$
            type: string
          title: updateSources
          type: array
      required:
      - updateSources
      - sha256
      title: OperatingSystemResource
      type: object
    OperatingSystemResourceList:
      description: A list of OS resource objects.
      properties:
        OperatingSystemResources:
          items:
            $ref: '#/components/schemas/OperatingSystemResource'
          readOnly: true
          type: array
        hasNext:
          description: Indicates if there are more OS objects available to be retrieved.
          readOnly: true
          type: boolean
        totalElements:
          description: Total number of items the request would return, if not limited
            by pagination.
          readOnly: true
          type: integer
      required:
      - OperatingSystemResources
      - hasNext
      - totalElements
      title: OperatingSystemResourceList
      type: object
    OperatingSystemType:
      description: OsType describes the immutability of the OS. This field is immutable
        after creation.
      enum:
      - OPERATING_SYSTEM_TYPE_UNSPECIFIED
      - OPERATING_SYSTEM_TYPE_MUTABLE
      - OPERATING_SYSTEM_TYPE_IMMUTABLE
      format: enum
      type: string
    ProblemDetails:
      description: Carries a message in an HTTP error response.
      properties:
        message:
          description: Contains detailed information about the problem, such as its
            source data that can be used for debugging purposes.
          readOnly: true
          type: string
      type: object
    Provider:
      description: A provider resource.
      properties:
        apiCredentials:
          description: The provider resource's list of credentials.
          items:
            maxLength: 500
            pattern: ^$|^[a-zA-Z-_0-9./:;=?@!#,<>*() ]+$
            type: string
          title: apiCredentials
          type: array
        apiEndpoint:
          description: The provider resource's API endpoint.
          maxLength: 500
          pattern: ^$|^[a-zA-Z-_0-9./:;=?@!#,<>*() ]+$
          title: apiEndpoint
          type: string
        config:
          description: Opaque provider configuration.
          maxLength: 2000
          type: string
        name:
          description: The provider resource's name.
          maxLength: 40
          pattern: ^[a-zA-Z-_0-9. ]+$
          type: string
        providerID:
          description: The provider resource's unique identifier. Alias of resourceId.
          pattern: ^provider-[0-9a-f]{8}$
          readOnly: true
          title: providerID
          type: string
        providerKind:
          $ref: '#/components/schemas/ProviderKind'
        providerVendor:
          $ref: '#/components/schemas/ProviderVendor'
        resourceId:
          description: resource ID, generated by the inventory on Create.
          pattern: ^provider-[0-9a-f]{8}$
          readOnly: true
          type: string
        timestamps:
          $ref: '#/components/schemas/Timestamps'
      required:
      - providerKind
      - name
      - apiEndpoint
      title: Provider
      type: object
    ProviderKind:
      description: Kind of provider.
      enum:
      - PROVIDER_KIND_UNSPECIFIED
      - PROVIDER_KIND_BAREMETAL
      format: enum
      type: string
    ProviderList:
      description: A list of provider objects.
      properties:
        hasNext:
          description: Indicates if there are more objects available to be retrieved.
          readOnly: true
          type: boolean
        providers:
          items:
            $ref: '#/components/schemas/Provider'
          readOnly: true
          type: array
        totalElements:
          description: Total number of items that the request would return, if not
            limited by pagination.
          readOnly: true
          type: integer
      required:
      - providers
      - hasNext
      - totalElements
      title: ProviderList
      type: object
    ProviderVendor:
      description: Vendor of the provider.
      enum:
      - PROVIDER_VENDOR_UNSPECIFIED
      - PROVIDER_VENDOR_LENOVO_LXCA
      - PROVIDER_VENDOR_LENOVO_LOCA
      format: enum
      type: string
    Proxy:
      description: The proxy information.
      properties:
        ftpProxy:
          description: The FTP proxy.
          type: string
        httpProxy:
          description: The HTTP proxy.
          type: string
        httpsProxy:
          description: The HTTPS proxy.
          type: string
        noProxy:
          description: The no-proxy info.
          type: string
      type: object
    Region:
      description: A region resource
      properties:
        inheritedMetadata:
          $ref: '#/components/schemas/Metadata'
        metadata:
          $ref: '#/components/schemas/Metadata'
        name:
          description: The region's name.
          maxLength: 20
          pattern: '^$|^[a-zA-Z-_0-9./: ]+$'
          title: region-name
          type: string
        parentId:
          description: The parent region's unique identifier that the region is associated
            to, if it exists. This field cannot be used in filter.
          pattern: ^$|^region-[0-9a-f]{8}$
          type: string
          writeOnly: true
        parentRegion:
          $ref: '#/components/schemas/Region'
        regionID:
          description: The region's unique identifier. Alias of resourceId.
          pattern: ^region-[0-9a-f]{8}$
          readOnly: true
          title: regionID
          type: string
        resourceId:
          description: resource ID, generated by the inventory on Create
          pattern: ^region-[0-9a-f]{8}$
          readOnly: true
          type: string
        timestamps:
          $ref: '#/components/schemas/Timestamps'
        totalSites:
          description: Total number of sites associated to this region, directly or
            by child regions.
          readOnly: true
          type: integer
      title: Region
      type: object
    RegionsList:
      description: A list of region objects.
      properties:
        hasNext:
          description: Indicates if there are more location objects available to be
            retrieved.
          readOnly: true
          type: boolean
        regions:
          items:
            $ref: '#/components/schemas/Region'
          readOnly: true
          type: array
        totalElements:
          description: Total number of items that the request would return, if not
            limited by pagination.
          readOnly: true
          type: integer
      required:
      - regions
      - hasNext
      - totalElements
      title: RegionsList
      type: object
    RepeatedSchedule:
      description: A repeated-schedule resource.
      properties:
        cronDayMonth:
          pattern: ^([*]|([1-9]|([12][0-9])|3[01])((,([1-9]|([12][0-9])|3[01]))*))$
          type: string
        cronDayWeek:
          pattern: ^([*]|([0-6])((,([0-6]))*))$
          type: string
        cronHours:
          pattern: ^([*]|([0-9]|1[0-9]|2[0-3])((,([0-9]|1[0-9]|2[0-3]))*))$
          type: string
        cronMinutes:
          pattern: ^([*]|([0-9]|([1-5][0-9]))((,([0-9]|([1-5][0-9])))*))$
          type: string
        cronMonth:
          pattern: ^([*]|([1-9]|1[012])((,([1-9]|1[012]))*))$
          type: string
        durationSeconds:
          description: The duration in seconds of the repeated schedule, per schedule.
          maximum: 86400
          minimum: 1
          title: durationSeconds
          type: integer
        name:
          description: The schedule's name.
          maxLength: 20
          pattern: ^[a-zA-Z-_0-9. ]+$
          type: string
        repeatedScheduleID:
          description: The repeated schedule's unique identifier. Alias of resourceId.
          pattern: ^repeatedsche-[0-9a-f]{8}$
          readOnly: true
          title: repeatedScheduleID
          type: string
        resourceId:
          description: resource ID, generated by the inventory on Create.
          pattern: ^repeatedsche-[0-9a-f]{8}$
          readOnly: true
          type: string
        scheduleStatus:
          $ref: '#/components/schemas/ScheduleStatus'
        targetHost:
          $ref: '#/components/schemas/Host'
        targetHostId:
          description: The target host ID of the schedule. Only one target can be
            provided per schedule. This field cannot be used as filter.
          pattern: ^$|^host-[0-9a-f]{8}$
          title: targetHostId
          type: string
          writeOnly: true
        targetRegion:
          $ref: '#/components/schemas/Region'
        targetRegionId:
          description: The target region ID of the schedule. Only one target can be
            provided per schedule. This field cannot be used as filter.
          pattern: ^$|^region-[0-9a-f]{8}$
          title: targetRegionId
          type: string
          writeOnly: true
        targetSite:
          $ref: '#/components/schemas/Site'
        targetSiteId:
          description: The target site ID of the schedule. Only one target can be
            provided per schedule. This field cannot be used as filter.
          pattern: ^$|^site-[0-9a-f]{8}$
          title: targetSiteId
          type: string
          writeOnly: true
        timestamps:
          $ref: '#/components/schemas/Timestamps'
      required:
      - durationSeconds
      - scheduleStatus
      - cronMinutes
      - cronHours
      - cronDayMonth
      - cronMonth
      - cronDayWeek
      title: SingleSchedule
      type: object
    RepeatedSchedulesList:
      description: A list of repeated schedule objects.
      properties:
        RepeatedSchedules:
          items:
            $ref: '#/components/schemas/RepeatedSchedule'
          readOnly: true
          type: array
        hasNext:
          description: Indicates if there are more repeated schedule objects available
            to be retrieved.
          readOnly: true
          type: boolean
        totalElements:
          description: Total number of items that the request would return, if not
            limited by pagination.
          readOnly: true
          type: integer
      required:
      - RepeatedSchedules
      - hasNext
      - totalElements
      title: RepeatedSchedulesList
      type: object
    ScheduleStatus:
      description: The representation of a schedule's status.
      enum:
      - SCHEDULE_STATUS_UNSPECIFIED
      - SCHEDULE_STATUS_MAINTENANCE
      - SCHEDULE_STATUS_OS_UPDATE
      format: enum
      type: string
    SchedulesListJoin:
      description: List of all schedule objects, repeated and single.
      properties:
        RepeatedSchedules:
          description: Contains a flat list of repeated schedules, possibly including
            all inherited ones.
          items:
            $ref: '#/components/schemas/RepeatedSchedule'
          readOnly: true
          type: array
        SingleSchedules:
          description: Contains a flat list of single schedules, possibly including
            all inherited ones.
          items:
            $ref: '#/components/schemas/SingleSchedule'
          readOnly: true
          type: array
        hasNext:
          description: Indicates if there are more schedule objects available to be
            retrieved.
          readOnly: true
          type: boolean
        totalElements:
          description: Total number of items that the request would return, if not
            limited by pagination.
          readOnly: true
          type: integer
      required:
      - SingleSchedules
      - RepeatedSchedules
      - hasNext
      - totalElements
      type: object
    SecurityFeature:
      description: Security capabilities of a resource.
      enum:
      - SECURITY_FEATURE_UNSPECIFIED
      - SECURITY_FEATURE_NONE
      - SECURITY_FEATURE_SECURE_BOOT_AND_FULL_DISK_ENCRYPTION
      format: enum
      type: string
    SingleSchedule:
      description: A single schedule resource.
      properties:
        endSeconds:
          description: The end time in seconds, of the single schedule. The value
            of endSeconds must be equal to or bigger than the value of startSeconds.
          maxLength: 19
          minLength: 1
          pattern: ^[0-9]+$
          title: endSeconds
          type: integer
        name:
          description: The schedule's name.
          maxLength: 20
          pattern: ^[a-zA-Z-_0-9. ]+$
          type: string
        resourceId:
          description: resource ID, generated by the inventory on Create.
          pattern: ^singlesche-[0-9a-f]{8}$
          readOnly: true
          type: string
        scheduleStatus:
          $ref: '#/components/schemas/ScheduleStatus'
        singleScheduleID:
          description: The single schedule resource's unique identifier. Alias of
            resourceId.
          pattern: ^singlesche-[0-9a-f]{8}$
          readOnly: true
          title: singleScheduleID
          type: string
        startSeconds:
          description: The start time in seconds, of the single schedule.
          maxLength: 19
          minLength: 1
          pattern: ^[0-9]+$
          title: startSeconds
          type: integer
        targetHost:
          $ref: '#/components/schemas/Host'
        targetHostId:
          description: The target host ID of the schedule. Only one target can be
            provided per schedule. This field cannot be used as filter.
          pattern: ^$|^host-[0-9a-f]{8}$
          title: targetHostId
          type: string
          writeOnly: true
        targetRegion:
          $ref: '#/components/schemas/Region'
        targetRegionId:
          description: The target region ID of the schedule. Only one target can be
            provided per schedule. This field cannot be used as filter.
          pattern: ^$|^region-[0-9a-f]{8}$
          title: targetRegionId
          type: string
          writeOnly: true
        targetSite:
          $ref: '#/components/schemas/Site'
        targetSiteId:
          description: The target site ID of the schedule. Only one target can be
            provided per schedule. This field cannot be used as filter.
          pattern: ^$|^site-[0-9a-f]{8}$
          title: targetSiteId
          type: string
          writeOnly: true
        timestamps:
          $ref: '#/components/schemas/Timestamps'
      required:
      - startSeconds
      - scheduleStatus
      title: SingleSchedule
      type: object
    SingleSchedulesList:
      description: A list of single schedule objects.
      properties:
        SingleSchedules:
          items:
            $ref: '#/components/schemas/SingleSchedule'
          readOnly: true
          type: array
        hasNext:
          description: Indicates if there are more objects available to be retrieved.
          readOnly: true
          type: boolean
        totalElements:
          description: Total number of items that the request would return, if not
            limited by pagination.
          readOnly: true
          type: integer
      required:
      - SingleSchedules
      - hasNext
      - totalElements
      title: SingleSchedulesList
      type: object
    Site:
      description: A site resource.
      properties:
        dnsServers:
          description: The list of DNS servers that the site has available.
          items:
            maxLength: 100
            pattern: '^$|^[a-zA-Z-_0-9./: ]+$'
            type: string
          title: site-dns-servers
          type: array
        dockerRegistries:
          description: The set of Docker* registries that the site has available.
          items:
            maxLength: 100
            pattern: '^$|^[a-zA-Z-_0-9./: ]+$'
            type: string
          title: site-docker-registries
          type: array
        inheritedMetadata:
          $ref: '#/components/schemas/MetadataJoin'
        metadata:
          $ref: '#/components/schemas/Metadata'
        metricsEndpoint:
          description: The set of site-available metrics, specified in a single JSON
            object.
          maxLength: 100
          pattern: '^$|^[a-zA-Z-_0-9./: ]+$'
          title: site-metrics
          type: string
        name:
          description: The site's human-readable name.
          maxLength: 20
          pattern: '^$|^[a-zA-Z-_0-9./: ]+$'
          title: site-name
          type: string
        ou:
          $ref: '#/components/schemas/OU'
        ouId:
          description: The OU unique identifier that the site is associated to, if
            it exists. This field cannot be used in filter.
          pattern: ^$|^ou-[0-9a-f]{8}$
          type: string
          writeOnly: true
        provider:
          $ref: '#/components/schemas/Provider'
        proxy:
          $ref: '#/components/schemas/Proxy'
        region:
          $ref: '#/components/schemas/Region'
        regionId:
          description: The region's unique identifier that the site is associated
            to. This field cannot be used in filter.
          pattern: ^$|^region-[0-9a-f]{8}$
          type: string
          writeOnly: true
        resourceId:
          description: resource ID, generated by the inventory on Create.
          pattern: ^site-[0-9a-f]{8}$
          readOnly: true
          type: string
        siteID:
          description: The site's unique identifier. Alias of resourceId.
          pattern: ^site-[0-9a-f]{8}$
          readOnly: true
          type: string
        siteLat:
          description: The geolocation latitude of the site. Points are represented
            as latitude-longitude pairs in the E7 representation (degrees are multiplied
            by 10**7 and rounded to the nearest integer). siteLat must be in the range
            of +/- 90 degrees.
          maximum: 9e+08
          minimum: -9e+08
          title: site-latitude
          type: integer
        siteLng:
          description: The geolocation longitude of the site. Points are represented
            as latitude-longitude pairs in the E7 representation (degrees are multiplied
            by 10**7 and rounded to the nearest integer). siteLng must be in the range
            of +/- 180 degrees (inclusive).
          maximum: 1.8e+09
          minimum: -1.8e+09
          title: site-longitude
          type: integer
        timestamps:
          $ref: '#/components/schemas/Timestamps'
      title: Site
      type: object
    SitesList:
      description: A list of site objects.
      properties:
        hasNext:
          description: Indicates if there are more objects available to be retrieved.
          readOnly: true
          type: boolean
        sites:
          items:
            $ref: '#/components/schemas/Site'
          readOnly: true
          type: array
        totalElements:
          description: Total number of items that the request would return, if not
            limited by pagination.
          readOnly: true
          type: integer
      required:
      - sites
      - hasNext
      - totalElements
      title: SitesList
      type: object
    StatusIndicator:
      description: The status indicator.
      enum:
      - STATUS_INDICATION_UNSPECIFIED
      - STATUS_INDICATION_ERROR
      - STATUS_INDICATION_IN_PROGRESS
      - STATUS_INDICATION_IDLE
      format: enum
      readOnly: true
      type: string
    TelemetryCollectorKind:
      description: Kind of telemetry collector.
      enum:
      - TELEMETRY_COLLECTOR_KIND_UNSPECIFIED
      - TELEMETRY_COLLECTOR_KIND_HOST
      - TELEMETRY_COLLECTOR_KIND_CLUSTER
      format: enum
      type: string
    TelemetryLogsGroup:
      description: Telemetry group that defines a set of log types to collect.
      properties:
        collectorKind:
          $ref: '#/components/schemas/TelemetryCollectorKind'
        groups:
          description: A list of log groups to collect.
          items:
            pattern: ^$|^[a-zA-Z-_0-9./:;=@?!#,<>*()\"" ]+$
            type: string
          type: array
        name:
          description: Human-readable name for the log group
          maxLength: 50
          minLength: 1
          pattern: '^$|^[a-zA-Z-_0-9./: ]+$'
          type: string
        telemetryLogsGroupId:
          description: Unique ID of the telemetry group.
          pattern: ^telemetrygroup-[0-9a-f]{8}$
          readOnly: true
          title: telemetryLogsGroupId
          type: string
        timestamps:
          $ref: '#/components/schemas/Timestamps'
      required:
      - name
      - collectorKind
      - groups
    TelemetryLogsGroupList:
      description: A list of log group objects.
      properties:
        TelemetryLogsGroups:
          items:
            $ref: '#/components/schemas/TelemetryLogsGroup'
          readOnly: true
          type: array
        hasNext:
          description: Indicates if there are more log group objects available to
            be retrieved.
          readOnly: true
          type: boolean
        timestamps:
          $ref: '#/components/schemas/Timestamps'
        totalElements:
          description: Total number of items that the request would return, if not
            limited by pagination.
          readOnly: true
          type: integer
      required:
      - TelemetryLogsGroups
      - hasNext
      - totalElements
      title: TelemetryLogsGroupList
      type: object
    TelemetryLogsProfile:
      description: A telemetry log profile for a hierarchy object.
      properties:
        logLevel:
          $ref: '#/components/schemas/TelemetrySeverityLevel'
        logsGroup:
          $ref: '#/components/schemas/TelemetryLogsGroup'
        logsGroupId:
          description: The unique identifier of the telemetry log group.
          pattern: ^telemetrygroup-[0-9a-f]{8}$
          title: logsGroupId
          type: string
        profileId:
          description: The ID of the telemetry profile.
          pattern: ^telemetryprofile-[0-9a-f]{8}$
          readOnly: true
          type: string
        targetInstance:
          description: The ID of the instance that the telemetry profile is assigned
            to. Can only be one of targetInstance, targetSite, or targetRegion.
          pattern: ^$|^inst-[0-9a-f]{8}$
          type: string
        targetRegion:
          description: The ID of the region where the telemetry profile is assigned
            to. Can only be one of targetInstance, targetSite, or targetRegion.
          pattern: ^$|^region-[0-9a-f]{8}$
          type: string
        targetSite:
          description: The ID of the site where the telemetry profile is assigned
            to. Can only be one of targetInstance, targetSite, or targetRegion.
          pattern: ^$|^site-[0-9a-f]{8}$
          type: string
        timestamps:
          $ref: '#/components/schemas/Timestamps'
      required:
      - logsGroupId
      - logLevel
      type: object
    TelemetryLogsProfileList:
      description: A list of telemetry log profiles.
      properties:
        TelemetryLogsProfiles:
          items:
            $ref: '#/components/schemas/TelemetryLogsProfile'
          readOnly: true
          type: array
        hasNext:
          description: Indicates if there are more telemetry log profile objects available
            to be retrieved.
          readOnly: true
          type: boolean
        timestamps:
          $ref: '#/components/schemas/Timestamps'
        totalElements:
          description: Total number of items that the request would return, if not
            limited by pagination.
          readOnly: true
          type: integer
      required:
      - TelemetryLogsProfiles
      - hasNext
      - totalElements
      title: TelemetryLogsProfileList
      type: object
    TelemetryMetricsGroup:
      description: A definition of metric groups to monitor.
      properties:
        collectorKind:
          $ref: '#/components/schemas/TelemetryCollectorKind'
        groups:
          description: A list of metric groups to collect.
          items:
            pattern: ^$|^[a-zA-Z-_0-9./:;=@?!#,<>*()\"" ]+$
            type: string
          type: array
        name:
          description: Human-readable name for the metric group.
          maxLength: 50
          minLength: 1
          pattern: '^$|^[a-zA-Z-_0-9./: ]+$'
          type: string
        telemetryMetricsGroupId:
          description: Unique ID of the telemetry group.
          pattern: ^telemetrygroup-[0-9a-f]{8}$
          readOnly: true
          title: telemetryMetricsGroupId
          type: string
        timestamps:
          $ref: '#/components/schemas/Timestamps'
      required:
      - name
      - collectorKind
      - groups
    TelemetryMetricsGroupList:
      description: A list of telemetry groups, which defines a set of metrics to collect.
      properties:
        TelemetryMetricsGroups:
          items:
            $ref: '#/components/schemas/TelemetryMetricsGroup'
          readOnly: true
          type: array
        hasNext:
          description: Indicates if there are more telemetry metric group objects
            available to be retrieved.
          readOnly: true
          type: boolean
        timestamps:
          $ref: '#/components/schemas/Timestamps'
        totalElements:
          description: Total number of items that the request would return, if not
            limited by pagination.
          readOnly: true
          type: integer
      required:
      - TelemetryMetricsGroups
      - hasNext
      - totalElements
      title: TelemetryMetricsGroupList
      type: object
    TelemetryMetricsProfile:
      description: A telemetry metric profile for a hierarchy object.
      properties:
        metricsGroup:
          $ref: '#/components/schemas/TelemetryMetricsGroup'
        metricsGroupId:
          description: The unique identifier of the telemetry metric group.
          pattern: ^telemetrygroup-[0-9a-f]{8}$
          title: metricsGroupId
          type: string
        metricsInterval:
          description: Metric interval (in seconds) for the telemetry profile. This
            field must only be defined if the type equals to TELEMETRY_CONFIG_KIND_METRICS.
          minimum: 1
          type: integer
        profileId:
          description: The ID of the telemetry profile.
          pattern: ^telemetryprofile-[0-9a-f]{8}$
          readOnly: true
          type: string
        targetInstance:
          description: The ID of the instance that the telemetry profile is assigned
            to. Can only be one of targetInstance, targetSite, or targetRegion.
          pattern: ^$|^inst-[0-9a-f]{8}$
          type: string
        targetRegion:
          description: The ID of the region where the telemetry profile is assigned
            to. Can only be one of targetInstance, targetSite, or targetRegion.
          pattern: ^$|^region-[0-9a-f]{8}$
          type: string
        targetSite:
          description: The ID of the site where the telemetry profile is assigned
            to. Can only be one of targetInstance, targetSite, or targetRegion.
          pattern: ^$|^site-[0-9a-f]{8}$
          type: string
        timestamps:
          $ref: '#/components/schemas/Timestamps'
      required:
      - metricsGroupId
      - metricsInterval
      type: object
    TelemetryMetricsProfileList:
      description: A list of telemetry metric profiles.
      properties:
        TelemetryMetricsProfiles:
          items:
            $ref: '#/components/schemas/TelemetryMetricsProfile'
          readOnly: true
          type: array
        hasNext:
          description: Indicates if there are more telemetry metric profile objects
            available to be retrieved.
          readOnly: true
          type: boolean
        timestamps:
          $ref: '#/components/schemas/Timestamps'
        totalElements:
          description: Total number of items that the request would return, if not
            limited by pagination.
          readOnly: true
          type: integer
      required:
      - TelemetryMetricsProfiles
      - hasNext
      - totalElements
      title: TelemetryLogsProfileList
      type: object
    TelemetrySeverityLevel:
      description: Log level used for the telemetry config. This field must only be
        defined if kind equals to TELEMETRY_CONFIG_KIND_LOGS.
      enum:
      - TELEMETRY_SEVERITY_LEVEL_UNSPECIFIED
      - TELEMETRY_SEVERITY_LEVEL_CRITICAL
      - TELEMETRY_SEVERITY_LEVEL_ERROR
      - TELEMETRY_SEVERITY_LEVEL_WARN
      - TELEMETRY_SEVERITY_LEVEL_INFO
      - TELEMETRY_SEVERITY_LEVEL_DEBUG
      format: enum
      type: string
    Timestamps:
      description: A structure to hold Update and Create timestamps.
      properties:
        createdAt:
          description: Timestamp for the creation of the resource.
          format: date-time
          readOnly: true
          type: string
        updatedAt:
          description: Timestamp for the last update of the resource.
          format: date-time
          readOnly: true
          type: string
      readOnly: true
      required:
      - createdAt
      - updateAt
      type: object
    Workload:
      description: A generic way to group compute resources to obtain a workload.
      properties:
        externalId:
          description: The ID of the external resource, used to link to resources
            outside the realm of Edge Infrastructure Manager.
          maxLength: 40
          pattern: '^$|^[a-zA-Z-_0-9./: ]+$'
          type: string
        kind:
          $ref: '#/components/schemas/WorkloadKind'
        members:
          items:
            $ref: '#/components/schemas/WorkloadMember'
          readOnly: true
          type: array
        name:
          description: Human-readable name for the workload.
          maxLength: 50
          pattern: '^$|^[a-zA-Z-_0-9./: ]+$'
          type: string
        resourceId:
          description: resource ID, generated by the inventory on Create
          pattern: ^workload-[0-9a-f]{8}$
          readOnly: true
          type: string
        status:
          description: Human-readable status of the workload.
          maxLength: 500
          pattern: ^$|^[a-zA-Z-_0-9./:;=?@!#,<>*() ]+$
          type: string
        timestamps:
          $ref: '#/components/schemas/Timestamps'
        workloadId:
          description: The workload's unique identifier. Alias of resourceId.
          pattern: ^workload-[0-9a-f]{8}$
          readOnly: true
          title: workloadId
          type: string
      required:
      - kind
      - members
    WorkloadKind:
      description: Type of workload.
      enum:
      - WORKLOAD_KIND_UNSPECIFIED
      - WORKLOAD_KIND_CLUSTER
      format: enum
      type: string
    WorkloadList:
      description: A list of workload objects.
      properties:
        Workloads:
          items:
            $ref: '#/components/schemas/Workload'
          readOnly: true
          type: array
        hasNext:
          description: Indicates if there are more workload objects available to be
            retrieved.
          readOnly: true
          type: boolean
        totalElements:
          description: Total number of items the request would return, if not limited
            by pagination.
          readOnly: true
          type: integer
      required:
      - Workloads
      - hasNext
      - totalElements
      title: WorkloadList
      type: object
    WorkloadMember:
      description: A member of a workload.
      properties:
        instance:
          $ref: '#/components/schemas/Instance'
        instanceId:
          description: The unique identifier of the instance.
          pattern: ^inst-[0-9a-f]{8}$
          title: instanceId
          type: string
          writeOnly: true
        kind:
          description: Type of workload member.
          enum:
          - WORKLOAD_MEMBER_KIND_UNSPECIFIED
          - WORKLOAD_MEMBER_KIND_CLUSTER_NODE
          format: enum
          type: string
        member:
          $ref: '#/components/schemas/Instance'
        resourceId:
          description: resource ID, generated by the inventory on Create
          pattern: ^workloadmember-[0-9a-f]{8}$
          readOnly: true
          type: string
        timestamps:
          $ref: '#/components/schemas/Timestamps'
        workload:
          $ref: '#/components/schemas/Workload'
        workloadId:
          description: The unique identifier of the workload.
          pattern: ^workload-[0-9a-f]{8}$
          title: workloadId
          type: string
          writeOnly: true
        workloadMemberId:
          description: The workload member's unique identifier. Alias of resourceId.
          pattern: ^workloadmember-[0-9a-f]{8}$
          readOnly: true
          title: workloadMemberId
          type: string
      required:
      - resourceId
      - workloadMemberId
      - workloadId
      - kind
      - instanceId
    WorkloadMemberList:
      description: A list of workload member objects.
      properties:
        WorkloadMembers:
          items:
            $ref: '#/components/schemas/WorkloadMember'
          readOnly: true
          type: array
        hasNext:
          description: Indicates if there are more workload members objects available
            to be retrieved.
          readOnly: true
          type: boolean
        totalElements:
          description: Total number of items the request would return, if not limited
            by pagination.
          readOnly: true
          type: integer
      required:
      - WorkloadMembers
      - hasNext
      - totalElements
      title: WorkloadMemberList
      type: object
  securitySchemes:
    BearerAuth:
      bearerFormat: JWT
      scheme: bearer
      type: http
