openapi: "3.0.3"
info:
  title: IONOS Cloud - Monitoring REST API
  description: |
    The monitoring service offers a centralized platform to collect and store metrics.
  version: 0.0.1
servers:
- url: https://monitoring.de-fra.ionos.com
  description: service endpoint for location de-fra
- url: https://monitoring.de-txl.ionos.com
  description: service endpoint for location de-txl
- url: https://monitoring.es-vit.ionos.com
  description: service endpoint for location es-vit
- url: https://monitoring.gb-bhx.ionos.com
  description: service endpoint for location gb-bhx
- url: https://monitoring.gb-lhr.ionos.com
  description: service endpoint for location gb-lhr
- url: https://monitoring.fr-par.ionos.com
  description: service endpoint for location fr-par
- url: https://monitoring.us-mci.ionos.com
  description: service endpoint for location us-mci
- url: https://monitoring.us-ewr.ionos.com
  description: service endpoint for location us-ewr
- url: https://monitoring.us-las.ionos.com
  description: service endpoint for location us-las
tags:
- name: Pipelines
  description: |
    A pipeline consists of the generic rules and configurations of a monitoring pipeline instance.
    
    This tag groups all operations for pipelines.
- name: Key
  description: |
    Generates a new key for a pipeline invalidating the old one. The key is used for authentication when sending metrics.
    
    This tag groups all operations for key.
- name: Central
  description: |
    Central monitoring is a feature that allows you to use other products to send metrics to a central location. This is useful for analyzing metrics from multiple sources.
    
    This tag groups all operations for central.
paths:
  /pipelines:
    get:
      operationId: pipelinesGet
      summary: Retrieve all Pipelines
      security:
      - tokenAuth: []
      description: |
        This endpoint enables retrieving all Pipelines using
        pagination and optional filters.
      parameters:
        - $ref: "#/components/parameters/paginationOffset"
        - $ref: "#/components/parameters/paginationLimit"
        - name: orderBy
          in: query
          description: The field to order the results by. If not provided, the results will be ordered by the default field.
          schema:
            type: string
            default: -createdDate
            enum:
              - -createdDate
              - -lastModifiedDate
              - -name
              - name
              - createdDate
              - lastModifiedDate
      tags:
        - Pipelines
      responses:
        "200":
          description: |
            Returned all requested Pipelines successfully.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PipelineReadList"
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/NotAllowed'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
        default:
          $ref: '#/components/responses/UnexpectedError'
    post:
      operationId: pipelinesPost
      summary: Create Pipeline
      security:
      - tokenAuth: []
      tags:
        - Pipelines
      description: |
        Creates a new Pipeline.
        
        The full Pipeline needs to be provided to create the object.
        Optional data will be filled with defaults or left empty.
      requestBody:
        description: Pipeline to create.
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/PipelineCreate"
      responses:
        "201":
          description: Pipeline successfully created.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PipelineRead"
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/NotAllowed'
        "415":
          $ref: '#/components/responses/UnsupportedMediaType'
        "422":
          $ref: '#/components/responses/UnprocessableEntity'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
        default:
          $ref: '#/components/responses/UnexpectedError'
  /pipelines/{pipelineId}:
    get:
      operationId: pipelinesFindById
      summary: Retrieve Pipeline
      security:
      - tokenAuth: []
      tags:
        - Pipelines
      description: Returns the Pipeline by ID.
      parameters:
        - name: pipelineId
          in: path
          schema:
            type: string
            format: uuid
          example: "f72521ba-1590-5998-bf96-6eb997a5887d"
          required: true
          description: The ID (UUID) of the Pipeline.
      responses:
        "200":
          description: Getting Pipeline was successful.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PipelineRead"
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/NotAllowed'
        "404":
          $ref: '#/components/responses/NotFound'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
        default:
          $ref: '#/components/responses/UnexpectedError'
    put:
      operationId: pipelinesPut
      summary: Ensure Pipeline
      security:
      - tokenAuth: []
      tags:
        - Pipelines
      description: |
        Ensures that the Pipeline with the provided ID is created or modified.
        The full Pipeline needs to be provided to ensure
        (either update or create) the Pipeline. Non present data will
        only be filled with defaults or left empty, but not take
        previous values into consideration.
      parameters:
        - name: pipelineId
          in: path
          schema:
            type: string
            format: uuid
          example: "f72521ba-1590-5998-bf96-6eb997a5887d"
          required: true
          description: The ID (UUID) of the Pipeline.
      requestBody:
        description: update Pipeline
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/PipelineEnsure"
      responses:
        "200":
          description: Pipeline successfully updated.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PipelineRead"
        "201":
          description: Pipeline successfully ensured.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PipelineRead"
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/NotAllowed'
        "409":
          $ref: '#/components/responses/Conflict'
        "404":
          $ref: '#/components/responses/NotFound'
        "415":
          $ref: '#/components/responses/UnsupportedMediaType'
        "422":
          $ref: '#/components/responses/UnprocessableEntity'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
        default:
          $ref: '#/components/responses/UnexpectedError'
    delete:
      operationId: pipelinesDelete
      summary: Delete Pipeline
      security:
      - tokenAuth: []
      tags:
        - Pipelines
      description: Deletes the specified Pipeline.
      parameters:
        - name: pipelineId
          in: path
          schema:
            type: string
            format: uuid
          example: "f72521ba-1590-5998-bf96-6eb997a5887d"
          required: true
          description: The ID (UUID) of the Pipeline.
      responses:
        "202":
          description: Deleting Pipeline was successful.
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/NotAllowed'
        "404":
          $ref: '#/components/responses/NotFound'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
        default:
          $ref: '#/components/responses/UnexpectedError'
  /pipelines/{pipelineId}/key:
    post:
      operationId: pipelinesKeyPost
      summary: Create Key
      security:
      - tokenAuth: []
      tags:
        - Key
      description: |
        Creates a new Key.
        
        The full Key needs to be provided to create the object.
        Optional data will be filled with defaults or left empty.
      parameters:
        - name: pipelineId
          in: path
          schema:
            type: string
            format: uuid
          example: "f72521ba-1590-5998-bf96-6eb997a5887d"
          required: true
          description: The ID (UUID) of the Pipeline.
      requestBody:
        description: Key to create.
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/KeyCreate"
      responses:
        "201":
          description: Key successfully created.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/KeyRead"
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/NotAllowed'
        "415":
          $ref: '#/components/responses/UnsupportedMediaType'
        "422":
          $ref: '#/components/responses/UnprocessableEntity'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
        default:
          $ref: '#/components/responses/UnexpectedError'
  /central:
    get:
      operationId: centralGet
      summary: Retrieve all CentralMonitoring
      security:
      - tokenAuth: []
      description: |
        This endpoint enables retrieving all CentralMonitoring using
        pagination and optional filters.
      parameters:
        []
      tags:
        - Central
      responses:
        "200":
          description: |
            Returned all requested CentralMonitoring successfully.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CentralMonitoringReadList"
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/NotAllowed'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
        default:
          $ref: '#/components/responses/UnexpectedError'
  /central/{centralId}:
    get:
      operationId: centralFindById
      summary: Retrieve CentralMonitoring
      security:
      - tokenAuth: []
      tags:
        - Central
      description: Returns the CentralMonitoring by ID.
      parameters:
        - name: centralId
          in: path
          schema:
            type: string
            format: uuid
          example: "23e6183d-6ab3-54de-b165-9b44c3589f4f"
          required: true
          description: The ID (UUID) of the CentralMonitoring.
      responses:
        "200":
          description: Getting CentralMonitoring was successful.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CentralMonitoringRead"
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/NotAllowed'
        "404":
          $ref: '#/components/responses/NotFound'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
        default:
          $ref: '#/components/responses/UnexpectedError'
    put:
      operationId: centralPut
      summary: Ensure CentralMonitoring
      security:
      - tokenAuth: []
      tags:
        - Central
      description: |
        Ensures that the CentralMonitoring with the provided ID is created or modified.
        The full CentralMonitoring needs to be provided to ensure
        (either update or create) the CentralMonitoring. Non present data will
        only be filled with defaults or left empty, but not take
        previous values into consideration.
      parameters:
        - name: centralId
          in: path
          schema:
            type: string
            format: uuid
          example: "23e6183d-6ab3-54de-b165-9b44c3589f4f"
          required: true
          description: The ID (UUID) of the CentralMonitoring.
      requestBody:
        description: update CentralMonitoring
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/CentralMonitoringEnsure"
      responses:
        "200":
          description: CentralMonitoring successfully updated.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CentralMonitoringRead"
        "201":
          description: CentralMonitoring successfully ensured.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CentralMonitoringRead"
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/NotAllowed'
        "409":
          $ref: '#/components/responses/Conflict'
        "404":
          $ref: '#/components/responses/NotFound'
        "415":
          $ref: '#/components/responses/UnsupportedMediaType'
        "422":
          $ref: '#/components/responses/UnprocessableEntity'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
        default:
          $ref: '#/components/responses/UnexpectedError'
components:
  parameters:
    paginationOffset:
      name: offset
      in: query
      description: The first element (of the total list of elements) to include in the response. Use this parameter together with the limit for pagination.
      required: false
      schema:
        type: integer
        format: int32
        default: 0
        minimum: 0
      example: 0
    paginationLimit:
      name: limit
      in: query
      description: The maximum number of elements to return. Use this parameter together with the offset for pagination.
      required: false
      schema:
        type: integer
        format: int32
        default: 100
        minimum: 1
        maximum: 1000
      example: 100
  schemas:
    PipelineReadList:
      allOf:
      - type: object
        required:
        - id
        - type
        - href
        properties:
          id:
            description: ID of the list of Pipeline resources.
            type: string
            format: uuid
            example: 930b1f07-e846-54fa-b447-9b78905ff2ef
          type:
            description: The type of the resource.
            type: string
            enum:
            - collection
          href:
            description: The URL of the list of Pipeline resources.
            type: string
            example: /pipelines
          items:
            description: The list of Pipeline resources.
            type: array
            items:
              $ref: '#/components/schemas/PipelineRead'
      - $ref: '#/components/schemas/Pagination'
    PipelineRead:
      type: object
      required:
      - id
      - type
      - href
      - metadata
      - properties
      properties:
        id:
          type: string
          description: The ID (UUID) of the Pipeline.
          format: uuid
          example: "f72521ba-1590-5998-bf96-6eb997a5887d"
        type:
          description: The type of the resource.
          type: string
          enum:
          - pipeline
        href:
          description: The URL of the Pipeline.
          type: string
          example: /pipelines/f72521ba-1590-5998-bf96-6eb997a5887d
        metadata:
          $ref: '#/components/schemas/MetadataWithEndpoint'
        properties:
          $ref: '#/components/schemas/Pipeline'
    PipelineEnsure:
      type: object
      required:
      - id
      - properties
      properties:
        id:
          type: string
          description: The ID (UUID) of the Pipeline.
          format: uuid
          example: "f72521ba-1590-5998-bf96-6eb997a5887d"
        metadata:
          description: Metadata
          additionalProperties: true
          example: {}
        properties:
          $ref: '#/components/schemas/Pipeline'
    PipelineCreate:
      type: object
      required:
      - properties
      properties:
        metadata:
          description: Metadata
          additionalProperties: true
          example: {}
        properties:
          $ref: '#/components/schemas/Pipeline'
    Pipeline:
      type: object
      description: |
        A pipeline consists of the generic rules and configurations of a monitoring pipeline instance.
      required:
        - name
      properties:
        name:
          type: string
          description: |
            The name of the pipeline. Must be not more that 20 characters long.
          example: "Pipeline1"
    KeyRead:
      type: object
      description: |
        Generates a new key for a pipeline invalidating the old one. The key is used for authentication when sending metrics.
      required:
        - key
      properties:
        key:
          type: string
          description: |
            The key is shared once and is used to authenticate the metrics sent to the pipeline.
          example: "momSrlgAAEmaYEvBsMr^HsYn"
    KeyCreate:
      type: object
      description: |
        Generates a new key for a pipeline invalidating the old one. The key is used for authentication when sending metrics.
    CentralMonitoringReadList:
      allOf:
      - type: object
        required:
        - id
        - type
        - href
        properties:
          id:
            description: ID of the list of CentralMonitoring resources.
            type: string
            format: uuid
            example: d9a741e7-1132-5b47-94d3-aabefa619c91
          type:
            description: The type of the resource.
            type: string
            enum:
            - collection
          href:
            description: The URL of the list of CentralMonitoring resources.
            type: string
            example: /central
          items:
            description: The list of CentralMonitoring resources.
            type: array
            items:
              $ref: '#/components/schemas/CentralMonitoringRead'
    CentralMonitoringRead:
      type: object
      required:
      - id
      - type
      - href
      - metadata
      - properties
      properties:
        id:
          type: string
          description: The ID (UUID) of the CentralMonitoring.
          format: uuid
          example: "23e6183d-6ab3-54de-b165-9b44c3589f4f"
        type:
          description: The type of the resource.
          type: string
          enum:
          - centralmonitoring
        href:
          description: The URL of the CentralMonitoring.
          type: string
          example: /central/23e6183d-6ab3-54de-b165-9b44c3589f4f
        metadata:
          $ref: '#/components/schemas/MetadataForCentralMonitoring'
        properties:
          $ref: '#/components/schemas/CentralMonitoring'
    CentralMonitoringEnsure:
      type: object
      required:
      - properties
      properties:
        metadata:
          description: Metadata
          additionalProperties: true
          example: {}
        properties:
          $ref: '#/components/schemas/CentralMonitoring'
    CentralMonitoringCreate:
      type: object
      required:
      - properties
      properties:
        metadata:
          description: Metadata
          additionalProperties: true
          example: {}
        properties:
          $ref: '#/components/schemas/CentralMonitoring'
    CentralMonitoring:
      type: object
      description: |
        Central monitoring is a feature that allows you to use other products to send metrics to a central location. This is useful for analyzing metrics from multiple sources.
      required:
        - enabled
      properties:
        enabled:
          type: boolean
          default: false
          example: false
    MetadataWithStatus:
      allOf:
        - $ref: '#/components/schemas/Metadata'
        - type: object
          required:
            - status
          properties:
            status:
              type: string
              description: |
                The status of the object. The status can be:
                * `AVAILABLE` - resource exists and is healthy.
                * `PROVISIONING` - resource is being created or updated.
                * `DESTROYING` - delete command was issued, the resource is being deleted.
                * `FAILED` - resource failed, details in `failureMessage`.
              enum:
                - PROVISIONING
                - DESTROYING
                - AVAILABLE
                - FAILED
              example: "AVAILABLE"
              readOnly: true
            statusMessage:
              type: string
              description: |
                The message of the failure if the status is `FAILED`.
              example: null
              readOnly: true
    MetadataForCentralMonitoring:
      allOf:
        - $ref: '#/components/schemas/Metadata'
        - type: object
          properties:
            grafanaEndpoint:
              type: string
              description: |
                The endpoint of the Grafana instance.
              example: "https://grafana.logging.de-txl.ionos.com"
              readOnly: true
            products:
              type: array
              items:
                type: string
              description: |
                Products with central monitoring enabled. This is a comma-separated list of product names.
              example: ["api-gateway", "alb"]
              readOnly: true
    MetadataWithEndpoint:
      allOf:
        - $ref: '#/components/schemas/MetadataWithStatus'
        - type: object
          properties:
            key:
              type: string
              description: |
                The authentication key of the monitoring instance.
              example: "momSrlgAAEmaYEvBsMr^HsYn"
              readOnly: true
            grafanaEndpoint:
              type: string
              description: |
                The endpoint of the Grafana instance.
              example: "https://grafana.logging.de-txl.ionos.com"
              readOnly: true
            httpEndpoint:
              type: string
              description: |
                The HTTP endpoint of the monitoring instance.
              example: "https://f8ss7fgr7s-metrics.jf9ejf8t6hrt.monitoring.de-txl.ionos.com"
              readOnly: true
    Error:
      description: |
        The Error object is used to represent an error response from the API.
      type: object
      properties:
        httpStatus:
          type: integer
          description: The HTTP status code of the operation.
          example: 400
        messages:
          type: array
          description: |
            A list of error messages.
          items:
            type: object
            properties:
              errorCode:
                type: string
                description: |
                  Application internal error code
                example: "err-1234"
              message:
                type: string
                description: |
                  A human readable explanation specific to this occurrence of the
                  problem.
                example: "Error message example"
    Metadata:
      type: object
      description: Metadata of the resource.
      properties:
        createdDate:
          type: string
          format: date-time
          description: The ISO 8601 creation timestamp.
          example: "2020-12-10T13:37:50+01:00"
          readOnly: true
        createdBy:
          type: string
          description: Unique name of the identity that created the resource.
          example: "ionos:identity:::users/87f9a82e-b28d-49ed-9d04-fba2c0459cd3"
          readOnly: true
        createdByUserId:
          type: string
          description: Unique id of the identity that created the resource.
          example: 87f9a82e-b28d-49ed-9d04-fba2c0459cd3
          readOnly: true
        lastModifiedDate:
          type: string
          format: date-time
          description: The ISO 8601 modified timestamp.
          example: "2020-12-11T13:37:50+01:00"
          readOnly: true
        lastModifiedBy:
          type: string
          description: Unique name of the identity that last modified the resource.
          example: "ionos:identity:::users/87f9a82e-b28d-49ed-9d04-fba2c0459cd3"
          readOnly: true
        lastModifiedByUserId:
          type: string
          description: Unique id of the identity that last modified the resource.
          example: 87f9a82e-b28d-49ed-9d04-fba2c0459cd3
          readOnly: true
        resourceURN:
          type: string
          description: Unique name of the resource.
          example: "ionos:<product>:<location>:<contract>:<resource-path>"
          readOnly: true
    Pagination:
      required:
      - offset
      - limit
      - _links
      description: |
        Pagination information. The offset and limit parameters are used to
        navigate the list of elements. The _links object contains URLs to
        navigate the different pages.
      type: object
      properties:
        offset:
          $ref: '#/components/schemas/Offset'
        limit:
          $ref: '#/components/schemas/Limit'
        _links:
          $ref: '#/components/schemas/Links'
    Offset:
      description: |
        The offset specified in the request (if none was specified, the default
        offset is 0).
      type: integer
      example: 0
      minimum: 0
      readOnly: true
    Limit:
      description: |
        The limit specified in the request (if none was specified, use the
        endpoint's default pagination limit).
      type: integer
      example: 42
      minimum: 0
      readOnly: true
    Links:
      description: |
        URLs to navigate the different pages. As of now we always only return a
        single page.
      type: object
      properties:
        prev:
          description: |
            URL (with offset and limit parameters) of the previous page; only
            present if offset is greater than 0.
          type: string
          format: uri
          example: http://PREVIOUS-PAGE-URI
          readOnly: true
        self:
          description: |
            URL (with offset and limit parameters) of the current page.
          type: string
          format: uri
          example: http://THIS-PAGE-URI
          readOnly: true
        next:
          description: |
            URL (with offset and limit parameters) of the next page; only
            present if offset + limit is less than the total number of elements.
          type: string
          format: uri
          example: http://NEXT-PAGE-URI
          readOnly: true
  securitySchemes:
    tokenAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: |
        The token can be generated using the 
        [Authentication API](https://api.ionos.com/docs/authentication/v1/#tag/tokens/operation/tokensGenerate).
  responses:
    BadRequest:
      description: |
        ### Bad Request
        The request send to the API was malformed.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Unauthorized:
      description: |
        ### Unauthorized
        The request is missing authorization information or the authorization information provided are expired.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    NotAllowed:
      description: |
        ### Not Allowed
        The user issuing the request does not have the needed permissions.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Conflict:
      description: |
        ### Conflict
        The UUID is already taken by another party, follow the guides to generate UUIDs uniquely.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    ConflictDependencies:
      description: |
        ### ConflictDependencies
        The resource has dependencies and cannot be deleted. Follow the guidelines to delete the dependencies first.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    NotFound:
      description: |
        ### Not Found
        The resource that was requested could not be found.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    UnexpectedError:
      description: |
        ### Unexpected Internal Server Error
        An unexpected internal error occurred. We apologize for the inconvenience!
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    UnprocessableEntity:
      description: |
        ### Unprocessable Entity
        The request was well-formed but was unable to be followed due to semantic errors.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    TooManyRequests:
      description: |
        ### Too Many Requests
        The user has sent too many requests in a given amount of time.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    UnsupportedMediaType:
      description: |
        ### Unsupported Media Type
        The request has an unsupported media type.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    InternalError:
      description: |
        ### Internal Server Error
        An internal error occurred. We apologize for the inconvenience!
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    ServiceUnavailable:
      description: |
        ### Service Unavailable
        The server is currently unable to handle the request due to a temporary overloading or maintenance of the server.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
