openapi: "3.0.0"

info:
  title: "OpenAPI specification for the Luna Crypto Command Center (CCC)"
  description: |
    The CCC REST API provides Web-based application with a lightweight mean to communicate with the CCC server.

    See also:

      **>** [REST API for Crypto Command Center (latest version)](latest/index.html)
  termsOfService: "https://www.thalesdocs.com/support/disclaimer/index.html"
  contact:
    name: Thales Customer Support
    url: "https://www.thalesdocs.com/support/support_contacts/index.html"
    email: "technical.support.dis@thalesgroup.com"
  license:
    name: Thales License
    url: "https://cpl.thalesgroup.com/legal"
  version: "1.0.0"

servers:
  - url: "https://{server}:{port}"
    description: |
      URL to access the REST API service of a CCC server.
    variables:
      server:
        default: "127.0.0.1"
        description: |
          The IP address of the CCC server.
      port:
        default: "8443"
        description: |
          The port number of the CCC server.

# ############################################################################
# This section refers to the paths that applies to the REST API version that
# is mentionned in the 'info' section only.
# ############################################################################
paths:
  # -------------------------------------------------------------------------
  # Authentication
  # -------------------------------------------------------------------------
  /auth/realms/CCC/protocol/openid-connect/token:
    post:
      tags:
        - Authentication
      operationId: post_auth_realms_ccc_protocol_opendid_connect_token
      summary: "Get an OpenID Connect bearer token"
      description: |
        Get an OpenID Connect bearer token using a password authentication.
      parameters:
        - $ref: "#/components/parameters/contentTypeHeader"
      requestBody:
        description: |
          Authentication data required to get an OpenID Connect bearer token.
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              required:
                - grant_type
                - client_id
                - username
                - password
              properties:
                grant_type:
                  description: |
                    The only supported value in this REST API version is 'password'.
                  type: string
                  enum:
                    - "password"
                  default: "password"
                client_id:
                  description: |
                    The only supported value in this REST API version is 'ccc-cli'.
                  type: string
                  enum:
                    - "ccc-cli"
                  default: "ccc-cli"
                username:
                  $ref: "#/components/schemas/cccUsername"
                password:
                  $ref: "#/components/schemas/cccUserPassword"
      responses:
        "200":
          description: |
            Authentication succeeded.
          content:
            application/json:
              schema:
                type: object
                properties:
                  access_token:
                    $ref: "#/components/schemas/bearerToken"
                  token_type:
                    description: |
                      The type of the token issued.
                    type: string
                    enum:
                      - "Bearer"
                  expires_in:
                    $ref: "#/components/schemas/expiryTime"
                  refresh_token:
                    $ref: "#/components/schemas/bearerToken"
        "400":
          $ref: "#/components/responses/unsupportedGrantType"
        "401":
          $ref: "#/components/responses/invalidUserCredentials"
        "403":
          $ref: "#/components/responses/forbidden"
        "500":
          $ref: "#/components/responses/internalError"
      security:
        - bearerAuthentication: []

  # -------------------------------------------------------------------------
  # Device management
  # -------------------------------------------------------------------------
  /api/admin/device:
    get:
      tags:
        - Devices
      operationId: get_api_admin_device
      summary: "Get the list of devices"
      description: |
        Get the list of devices (authorized and unauthorized).
      parameters:
        - $ref: "#/components/parameters/contentTypeHeader"
      responses:
        "200":
          description: |
            (200) The devices have been retrieved.
          content:
            application/vnd.safenetinc.lunacloud.v1+json/json:
              schema:
                $ref: "#/components/schemas/deviceReferencesObject"
        "400":
          $ref: "#/components/responses/badRequest"
        "401":
          $ref: "#/components/responses/unauthorized"
        "403":
          $ref: "#/components/responses/forbidden"
        "500":
          $ref: "#/components/responses/internalError"
      security:
        - bearerAuthentication: []

  /api/admin/device/deviceInfo/{deviceId}/{serviceType}:
    get:
      tags:
        - Devices
      operationId: get_api_admin_device_deviceinfo_deviceid_servicetype
      summary: "Get information on a service"
      description: |
        Get general information on a service running on a device.
      parameters:
        - $ref: "#/components/parameters/deviceId"
        - $ref: "#/components/parameters/serviceType"
        - $ref: "#/components/parameters/contentTypeHeader"
      responses:
        "200":
          description: |
            (200) The device information has been retrieved.
          content:
            application/json:
              schema:
                type: object
                required:
                  - "status"
                properties:
                  status:
                    $ref: "#/components/schemas/connectionStatus"
        "400":
          $ref: "#/components/responses/badRequest"
        "401":
          $ref: "#/components/responses/unauthorized"
        "403":
          $ref: "#/components/responses/forbidden"
        "500":
          $ref: "#/components/responses/internalError"
      security:
        - bearerAuthentication: []

  # -------------------------------------------------------------------------
  # Service management
  # -------------------------------------------------------------------------
  /api/admin/service:
    get:
      tags:
        - Services
      operationId: get_api_admin_service
      summary: "Get the list of services"
      description: |
        Get the list of services.
      parameters:
        - $ref: "#/components/parameters/contentTypeHeader"
      responses:
        "200":
          description: |
            (200) The services have been retrieved.
          content:
            application/vnd.safenetinc.lunacloud.v1+json:
              schema:
                description: |
                  An object containing a list of service references.
                type: object
                properties:
                  resource:
                    type: array
                    items:
                      description: |
                        A list of service references.
                      type: array
                      items:
                        $ref: "#/components/schemas/serviceReference"
        "400":
          $ref: "#/components/responses/badRequest"
        "401":
          $ref: "#/components/responses/unauthorized"
        "403":
          $ref: "#/components/responses/forbidden"
        "500":
          $ref: "#/components/responses/internalError"
      security:
        - bearerAuthentication: []

  /api/admin/service/storage/{serviceId}:
    get:
      tags:
        - Services
      operationId: get_api_admin_service_storage_serviceid
      summary: "Get storage information about a service"
      description: |
        Get the storage spaces allocated to a service.
      parameters:
        - $ref: "#/components/parameters/serviceId"
        - $ref: "#/components/parameters/contentTypeHeader"
      responses:
        "200":
          description: |
            (200) The storage spaces have been retrieved.
          content:
            application/json:
              schema:
                description: |
                  A list of storage spaces.
                type: array
                items:
                  $ref: "#/components/schemas/storageSpace"
        "400":
          $ref: "#/components/responses/badRequest"
        "401":
          $ref: "#/components/responses/unauthorized"
        "403":
          $ref: "#/components/responses/forbidden"
        "500":
          $ref: "#/components/responses/internalError"
      security:
        - bearerAuthentication: []

  # -------------------------------------------------------------------------
  # Device monitoring
  # -------------------------------------------------------------------------
  /api/admin/monitoring/devices:
    get:
      tags:
        - Monitoring/Devices
      operationId: get_api_admin_monitoring_devices
      summary: "Get the list of devices enabled for monitoring"
      description: |
        Get the list of devices (authorized and unauthorized) that are enabled for monitoring.
      parameters:
        - $ref: "#/components/parameters/contentTypeHeader"
      responses:
        "200":
          description: |
            (200) The devices list has been retrieved.
          content:
            application/vnd.safenetinc.lunacloud.v1+json/json:
              schema:
                $ref: "#/components/schemas/deviceReferencesObject"
        "400":
          $ref: "#/components/responses/badRequest"
        "401":
          $ref: "#/components/responses/unauthorized"
        "403":
          $ref: "#/components/responses/forbidden"
        "500":
          $ref: "#/components/responses/internalError"
      security:
        - bearerAuthentication: []

  /api/admin/monitoring/devices/connection:
    get:
      tags:
        - Monitoring/Devices
      operationId: get_api_admin_monitoring_devices_connection
      summary: "Get the connection status of all the monitored devices"
      description: |
        Get a list of connection statuses for the devices that are enabled for monitoring.
      parameters:
        - $ref: "#/components/parameters/contentTypeHeader"
      responses:
        "200":
          description: |
            (200) The connection statuses have been retrieved.
          content:
            application/vnd.safenetinc.lunacloud.v1+json:
              schema:
                description: |
                  A list of device connection statuses.
                type: array
                items:
                  $ref: "#/components/schemas/deviceReference"
        "400":
          $ref: "#/components/responses/badRequest"
        "401":
          $ref: "#/components/responses/unauthorized"
        "403":
          $ref: "#/components/responses/forbidden"
        "500":
          $ref: "#/components/responses/internalError"
      security:
        - bearerAuthentication: []

  /api/admin/monitoring/devices/{deviceId}:
    get:
      tags:
        - Monitoring/Devices
      operationId: get_api_admin_monitoring_devices_deviceid
      summary: "Get the monitoring attributes of a monitored device"
      description: |
        Get the monitoring attributes of a device that is enabled for monitoring.
      parameters:
        - $ref: "#/components/parameters/deviceId"
        - $ref: "#/components/parameters/contentTypeHeader"
      responses:
        "200":
          description: |
            (200) The monitoring attributes have been retrieved.
          content:
            application/json:
              schema:
                description: |
                  The monitoring attributes of a device.
                type: object
                required:
                  - "id"
                properties:
                  id:
                    $ref: "#/components/schemas/deviceId"
                  name:
                    $ref: "#/components/schemas/deviceName"
                  description:
                    $ref: "#/components/schemas/readableText"
                  type:
                    description: |
                      Meta information provided by the server about the MIME type of the current object.
                    type: string
                    enum:
                      - "application/vnd.safenetinc.lunacloud.v1.adminmonitoringdevice+json"
                  href:
                    $ref: "#/components/schemas/url"
                  counters:
                    description: |
                      An object containing a list of references to some counters for a monitored device.
                    type: object
                    properties:
                      resource:
                        type: array
                        items:
                          description: |
                            A list of references to some counters for a monitored device.
                          type: array
                          items:
                            $ref: "#/components/schemas/deviceMonitoringCounterReference"
                  sensors:
                    description: |
                      An object containing a list of references to a sensor for a monitored device.
                    type: object
                    properties:
                      resource:
                        type: array
                        items:
                          description: |
                            A list of references to a sensor for a monitored device.
                          type: array
                          items:
                            $ref: "#/components/schemas/deviceMonitoringSensorReference"
                  info:
                    description: |
                      An object containing a list of references to some information for a monitored device.
                    type: object
                    properties:
                      resource:
                        type: array
                        items:
                          description: |
                            A list of references to some information for a monitored device.
                          type: array
                          items:
                            $ref: "#/components/schemas/deviceMonitoringInformationReference"
                  performance:
                    description: |
                      An object containing a list of references to some performances for a monitored device.
                    type: object
                    properties:
                      resource:
                        type: array
                        items:
                          description: |
                            A list of references to some performances for a monitored device.
                          type: array
                          items:
                            $ref: "#/components/schemas/deviceMonitoringPerformanceReference"
                  nextRunTime:
                    $ref: "#/components/schemas/timestamp"
                  taskStartTime:
                    $ref: "#/components/schemas/timestamp"
                  taskEndTime:
                    $ref: "#/components/schemas/timestamp"
                example: |
                  {
                    'id': 1
                    'name': 'device-1'
                    'description': 'Device 1'
                    'type': 'application/vnd.safenetinc.lunacloud.v1.adminmonitoringdevice+json'
                    'href': /api/admin/monitoring/devices/1
                    'counters': {
                      'monitoringData': [
                        {
                          'type': 'application/vnd.safenetinc.lunacloud.v1.admincounters+json'
                          'href': /api/admin/monitoring/devices/1/counters
                          'rel': 'counters'
                        }
                      ]
                    },
                    'sensors': {
                      'monitoringData': [
                        {
                          'type': 'application/vnd.safenetinc.lunacloud.v1.adminsensors+json'
                          'href': /api/admin/monitoring/devices/1/sensors
                          'rel': 'sensors'
                        }
                      ]
                    },
                    'info': {
                      'monitoringData': [
                        {
                          'type': 'application/vnd.safenetinc.lunacloud.v1.admininfo+json'
                          'href': /api/admin/monitoring/devices/1/info
                          'rel': 'info'
                        }
                      ]
                  },
                    'performance': {
                      'monitoringData': [
                        {
                          'type': 'application/vnd.safenetinc.lunacloud.v1.adminperformance+json'
                          'href': /api/admin/monitoring/devices/1/performance
                          'rel': 'performance'
                        }
                      ]
                    },
                    'nextRunTime': 1726212060007
                    'taskStartTime': 1726212000007
                    'taskEndTime': 1726212046455
                  }
        "400":
          $ref: "#/components/responses/badRequest"
        "401":
          $ref: "#/components/responses/unauthorized"
        "403":
          $ref: "#/components/responses/forbidden"
        "404":
          $ref: "#/components/responses/notFound"
        "500":
          $ref: "#/components/responses/internalError"
      security:
        - bearerAuthentication: []

  /api/admin/monitoring/devices/{deviceId}/connection:
    get:
      tags:
        - Monitoring/Devices
      operationId: get_api_admin_monitoring_devices_deviceid_connection
      summary: "Get the connection status of a monitored device"
      description: |
        Get the connection status a device that is enabled for monitoring.
      parameters:
        - $ref: "#/components/parameters/deviceId"
        - $ref: "#/components/parameters/contentTypeHeader"
      responses:
        "200":
          description: |
            (200) The connection status has been retrieved.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/deviceConnectionStatus"
        "400":
          $ref: "#/components/responses/badRequest"
        "401":
          $ref: "#/components/responses/unauthorized"
        "403":
          $ref: "#/components/responses/forbidden"
        "404":
          $ref: "#/components/responses/notFound"
        "500":
          $ref: "#/components/responses/internalError"
      security:
        - bearerAuthentication: []

  /api/admin/monitoring/devices/{deviceId}/counters:
    get:
      tags:
        - Monitoring/Devices
      operationId: get_api_admin_monitoring_devices_deviceid_counters
      summary: "Get the counters of a monitored device"
      description: |
        Get a list of counters for a device that is enabled for monitoring.
      parameters:
        - $ref: "#/components/parameters/deviceId"
        - $ref: "#/components/parameters/contentTypeHeader"
      responses:
        "200":
          description: |
            (200) The counters have been retrieved.
          content:
            application/json:
              schema:
                description: |
                  An object containing a list of counter attributes of a monitored device.
                type: object
                properties:
                  lastUpdateTime:
                    description: |
                      The time in Epoch when the values last updated.
                    $ref: "#/components/schemas/timestamp"
                  data:
                    type: array
                    items:
                      description: |
                        A list of counter attributes of a monitored device.
                      type: array
                      items:
                        $ref: "#/components/schemas/deviceMonitoringCounterAttribute"
        "400":
          $ref: "#/components/responses/badRequest"
        "401":
          $ref: "#/components/responses/unauthorized"
        "403":
          $ref: "#/components/responses/forbidden"
        "404":
          $ref: "#/components/responses/notFound"
        "500":
          $ref: "#/components/responses/internalError"
      security:
        - bearerAuthentication: []

  /api/admin/monitoring/devices/{deviceId}/info:
    get:
      tags:
        - Monitoring/Devices
      operationId: get_api_admin_monitoring_devices_deviceid_info
      summary: "Get information on a monitored device"
      description: |
        Get information on a device that is enabled for monitoring.
      parameters:
        - $ref: "#/components/parameters/deviceId"
        - $ref: "#/components/parameters/contentTypeHeader"
      responses:
        "200":
          description: |
            (200) The information has been retrieved.
          content:
            application/json:
              schema:
                description: |
                  An object containing a list of information attributes of a monitored device.
                type: object
                properties:
                  lastUpdateTime:
                    $ref: "#/components/schemas/timestamp"
                  data:
                    type: array
                    items:
                      description: |
                        A list of information attributes of a monitored device.
                      type: array
                      items:
                        $ref: "#/components/schemas/deviceMonitoringInformationAttribute"
        "400":
          $ref: "#/components/responses/badRequest"
        "401":
          $ref: "#/components/responses/unauthorized"
        "403":
          $ref: "#/components/responses/forbidden"
        "404":
          $ref: "#/components/responses/notFound"
        "500":
          $ref: "#/components/responses/internalError"
      security:
        - bearerAuthentication: []

  /api/admin/monitoring/devices/{deviceId}/performance:
    get:
      tags:
        - Monitoring/Devices
      operationId: get_api_admin_monitoring_devices_deviceid_performance
      summary: "Get the performance values of a monitored device"
      description: |
        Get a list of performance values for a device that is enabled for monitoring.
      parameters:
        - $ref: "#/components/parameters/deviceId"
        - $ref: "#/components/parameters/contentTypeHeader"
      responses:
        "200":
          description: |
            (200) The performance values have been retrieved.
          content:
            application/json:
              schema:
                description: |
                  An object containing a list of performance attributes of a monitored device.
                type: object
                properties:
                  lastUpdateTime:
                    $ref: "#/components/schemas/timestamp"
                  data:
                    type: array
                    items:
                      description: |
                        A list of performance attributes of a monitored device.
                      type: array
                      items:
                        $ref: "#/components/schemas/deviceMonitoringPerformanceAttribute"
        "400":
          $ref: "#/components/responses/badRequest"
        "401":
          $ref: "#/components/responses/unauthorized"
        "403":
          $ref: "#/components/responses/forbidden"
        "404":
          $ref: "#/components/responses/notFound"
        "500":
          $ref: "#/components/responses/internalError"
      security:
        - bearerAuthentication: []

  /api/admin/monitoring/devices/{deviceId}/sensors:
    get:
      tags:
        - Monitoring/Devices
      operationId: get_api_admin_monitoring_devices_deviceid_sensors
      summary: "Get the sensors of a monitored device"
      description: |
        Get a list of sensors for a device that is enabled for monitoring.
      parameters:
        - $ref: "#/components/parameters/deviceId"
        - $ref: "#/components/parameters/contentTypeHeader"
      responses:
        "200":
          description: |
            (200) The sensors have been retrieved.
          content:
            application/json:
              schema:
                description: |
                  An object containing a list of sensor attributes of a monitored device.
                type: object
                properties:
                  lastUpdateTime:
                    description: |
                      The time in Epoch when the values last updated.
                    $ref: "#/components/schemas/timestamp"
                  data:
                    type: array
                    items:
                      description: |
                        A list of counter attributes of a monitored device.
                      type: array
                      items:
                        $ref: "#/components/schemas/deviceMonitoringSensorAttribute"
        "400":
          $ref: "#/components/responses/badRequest"
        "401":
          $ref: "#/components/responses/unauthorized"
        "403":
          $ref: "#/components/responses/forbidden"
        "404":
          $ref: "#/components/responses/notFound"
        "500":
          $ref: "#/components/responses/internalError"
      security:
        - bearerAuthentication: []

  # -------------------------------------------------------------------------
  # Service monitoring
  # -------------------------------------------------------------------------
  /api/admin/monitoring/service/avgops:
    get:
      tags:
        - Monitoring/Services
      operationId: get_api_admin_monitoring_service_avgops
      summary: "Get the average operation per seconds for a service"
      description: |
        Get the average operation per seconds for a service as a map.
      parameters:
        - $ref: "#/components/parameters/contentTypeHeader"
      responses:
        "200":
          description: |
            (200) The sensors have been retrieved.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/averageOperationsPerSecondValues"
        "400":
          $ref: "#/components/responses/badRequest"
        "401":
          $ref: "#/components/responses/unauthorized"
        "403":
          $ref: "#/components/responses/forbidden"
        "500":
          $ref: "#/components/responses/internalError"
      security:
        - bearerAuthentication: []

  /api/admin/monitoring/service/{serviceId}/clientConnectionInfo:
    get:
      tags:
        - Monitoring/Services
      operationId: get_api_admin_monitoring_service_serviceid_clientConnectionInfo
      summary: "Get client monitoring information for a service"
      description: |
        Get client monitoring information for a service.
      parameters:
        - $ref: "#/components/parameters/serviceId"
        - $ref: "#/components/parameters/contentTypeHeader"
      responses:
        "200":
          description: |
            (200) The sensors have been retrieved.
          content:
            application/json:
              schema:
                description: |
                  A list of client connection informations.
                type: array
                items:
                  $ref: "#/components/schemas/clientConnectionInformation"
        "400":
          $ref: "#/components/responses/badRequest"
        "401":
          $ref: "#/components/responses/unauthorized"
        "403":
          $ref: "#/components/responses/forbidden"
        "404":
          $ref: "#/components/responses/notFound"
        "500":
          $ref: "#/components/responses/internalError"
      security:
        - bearerAuthentication: []

  /api/admin/monitoring/service/{serviceId}/pum/doughnut:
    get:
      tags:
        - Monitoring/Services
      operationId: get_api_admin_monitoring_service_serviceid_pum_doughnut
      summary: "Get PUM for a service and a partition as a doughnut"
      description: |
        Get PUM (Performance Utilization Metrics) for a service and a partition as a doughnut.
      parameters:
        - $ref: "#/components/parameters/serviceId"
        - $ref: "#/components/parameters/contentTypeHeader"
      responses:
        "200":
          description: |
            (200) The sensors have been retrieved.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/doughnutDataForMonitoredService"
        "400":
          $ref: "#/components/responses/badRequest"
        "401":
          $ref: "#/components/responses/unauthorized"
        "403":
          $ref: "#/components/responses/forbidden"
        "404":
          $ref: "#/components/responses/notFound"
        "500":
          $ref: "#/components/responses/internalError"
      security:
        - bearerAuthentication: []

  /api/admin/monitoring/service/{serviceId}/pum/lineChart:
    get:
      tags:
        - Monitoring/Services
      operationId: get_api_admin_monitoring_service_serviceid_pum_linechart
      summary: "Get PUM for a service and a partition as a line chart"
      description: |
        Get PUM (Performance Utilization Metrics) for a service and a partition as a line chart.
      parameters:
        - $ref: "#/components/parameters/serviceId"
        - $ref: "#/components/parameters/contentTypeHeader"
        - name: elemId
          in: query
          required: false
          schema:
            $ref: "#/components/schemas/cccServiceId"
        - name: operationId
          in: query
          required: false
          schema:
            type: string
            enum:
              - "All_Operations"
            default: "All_Operations"
        - name: per
          in: query
          required: false
          schema:
            type: string
            enum:
              - "SECOND"
            default: "SECONDS"
        - name: startTime
          required: false
          in: query
          schema:
            $ref: "#/components/schemas/timestamp"
        - name: endTime
          in: query
          required: false
          schema:
            $ref: "#/components/schemas/timestamp"
        - name: timeLabel
          required: false
          in: query
          schema:
            type: string
            enum:
              - "lastHour"
            default: "lastHour"
      responses:
        "200":
          description: |
            (200) The sensors have been retrieved.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/linechartDataForMonitoredService"
        "400":
          $ref: "#/components/responses/badRequest"
        "401":
          $ref: "#/components/responses/unauthorized"
        "403":
          $ref: "#/components/responses/forbidden"
        "404":
          $ref: "#/components/responses/notFound"
        "500":
          $ref: "#/components/responses/internalError"
      security:
        - bearerAuthentication: []

  ? /api/admin/monitoring/service/{serviceId}/serviceElement/{serviceElementId}/partitionInfo
  : get:
      tags:
        - Monitoring/Services
      operationId: get_api_admin_monitoring_service_serviceid_serviceelement_serviceelementid_partitioninfo
      summary: "Get PUM policy status for a service element"
      description: |
        Get PUM (Performance Utilization Metrics) policy status for a service element.
      parameters:
        - $ref: "#/components/parameters/serviceId"
        - $ref: "#/components/parameters/serviceElementId"
        - $ref: "#/components/parameters/contentTypeHeader"
      responses:
        "200":
          description: |
            (200) The sensors have been retrieved.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/serviceMonitoringPartitionInformation"
        "400":
          $ref: "#/components/responses/badRequest"
        "401":
          $ref: "#/components/responses/unauthorized"
        "403":
          $ref: "#/components/responses/forbidden"
        "404":
          $ref: "#/components/responses/notFound"
        "500":
          $ref: "#/components/responses/internalError"
      security:
        - bearerAuthentication: []

components:
  # -------------------------------------------------------------------------
  # Schemas
  # -------------------------------------------------------------------------
  schemas:
    #
    # Specific definitions.
    #
    averageOperationsPerSecondValues:
      description: |
        A map of operations-per-second values, per tick (in seconds).
      type: object
      additionalProperties:
        type: string
      example: |
        {
          '1': '0',
          '2': '0',
          '3': '0',
          '4': '0',
          '103': '1',
          '104': '0',
          '5': '------',
          '6': '------',
          '51': '------'
        }

    bearerToken:
      description: |
        An OpenID Connect bearer token.
      type: string
      format: string
      minLength: 0
      maxLength: 32
      pattern: '[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+'
      example: "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9"

    booleanAsString:
      description: |
        A boolean encoded as a string.
      type: string
      enum:
        - "true"
        - "false"
        - "TRUE"
        - "FALSE"
      default: "false"

    cccServiceId:
      description: |
        A CCC service identifier.
      type: integer
      format: int32
      minimum: 0
      maximum: 9999
      default: 0

    cccServiceName:
      description: |
        A CCC service name.
      type: string
      format: string
      minLength: 3
      maxLength: 132
      pattern: '[a-zA-Z0-9][!#$%@''()*+,\-.\/0-9:=@A-Z\[\]\^_a-z~]'
      example: "Service 1"

    cccUsername:
      description: |
        A CCC admin/application owner username.
      type: string
      format: string
      minLength: 3
      maxLength: 132
      pattern: '[a-zA-Z0-9][!#$%@\''()*+,\-.\/0-9:=@A-Z\[\]\^_a-z~]'
      example: "admin"

    cccUserPassword:
      description: |
        A CCC admin/application owner password.
      type: string
      format: string
      minLength: 8
      maxLength: 132
      pattern: '[a-zA-Z0-9!#$%&()*+,.\/:<=>?@[\]^_{|}~";-]+'
      example: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!#$%&()*+,-./:<=>?@[]^_{|}~";`'

    clientAddress:
      description: |
        A client address.

        Supported values are:
            - IP V4 addresses
            - IP V6 addresses
            - IP hostnames
      oneOf:
        - $ref: "#/components/schemas/ipV4Address"
        - $ref: "#/components/schemas/ipV6Address"
        - $ref: "#/components/schemas/ipHostname"

    clientConnectionInformation:
      description: |
        Some information about a client connection.
      type: object
      required:
        - "connectionType"
        - "deviceAddress"
        - "clientAddress"
        - "state"
        - "protocol"
        - "connectedPartition"
      properties:
        connectionType:
          $ref: "#/components/schemas/connectionType"
        deviceAddress:
          $ref: "#/components/schemas/deviceAddress"
        clientAddress:
          $ref: "#/components/schemas/clientAddress"
        state:
          $ref: "#/components/schemas/connectionState"
        protocol:
          $ref: "#/components/schemas/connectionProtocol"
        connectedPartition:
          $ref: "#/components/schemas/partitionId"
      example: |
        {
          'connectionType': 'NTLS',
          'deviceAddress': '192.168.168.100',
          'clientAddress': '192.168.168.200',
          'state': 'CLOSED',
          'protocol': '----',
          'connectedPartition': 'partition-1'
        }

    connectionProtocol:
      description: |
        A connection protocol.
      type: string
      enum:
        - "----"
        - "TCP"
      default: "----"

    connectionState:
      description: |
        A connection state.
      type: string
      enum:
        - "ESTABLISHED"
        - "CLOSED"
      default: "CLOSED"

    connectionStatus:
      description: |
        A connection status.
      type: string
      enum:
        - "offline"
        - "running"
      default: "offline"
      example: "running"

    connectionType:
      description: |
        A connection type.
      type: string
      enum:
        - "NTLS"
      default: "NTLS"

    deviceAddress:
      description: |
        A device address.

        Supported values are:
            - IP V4 addresses
            - IP V6 addresses
            - IP hostnames
      oneOf:
        - $ref: "#/components/schemas/ipV4Address"
        - $ref: "#/components/schemas/ipV6Address"
        - $ref: "#/components/schemas/ipHostname"

    deviceConnectionStatus:
      description: |
        A device connection status.
      type: object
      required:
        - "id"
      properties:
        id:
          $ref: "#/components/schemas/deviceId"
        name:
          $ref: "#/components/schemas/deviceName"
        hostAddr:
          $ref: "#/components/schemas/deviceAddress"
        message:
          $ref: "#/components/schemas/readableText"
        timestamp:
          $ref: "#/components/schemas/timestamp"
        hsmPerfMonitoringSupported:
          description: |
            A flag that tells if a device connection is monitored or not.
          type: boolean
          default: false
      example: |
        {
          'id': 1
          'name': 'device-1'
          'description': 'Device 1'
          'type': 'application/vnd.safenetinc.lunacloud.v1.adminmonitoringdevice+json'
          'href': '/api/admin/monitoring/devices/1'
          'rel': 'monitoring/devices'
        }

    deviceId:
      description: |
        A unique CCC device identifier.
      type: integer
      format: int32
      minimum: 0
      maximum: 9999

    deviceMonitoringCounterAttribute:
      description: |
        A counter attribute of a monitored device.
      type: object
      required:
        - "name"
        - "value"
      properties:
        name:
          $ref: "#/components/schemas/deviceMonitoringCounterAttributeName"
        value:
          $ref: "#/components/schemas/deviceMonitoringCounterAttributeValue"
      example: |
        {
          'name': 'commands',
          'value': '{'total':16871641,'ops_per_second':28.6,'webServerVersion':10}'
        }

    deviceMonitoringCounterAttributeName:
      description: |
        A name for a counter attribute of a monitored device.
      type: string
      enum:
        - "commands"
        - "criticalEvents"
        - "cryptoOperationRequests"
        - "cryptoOperationErrors"
        - "operationErrors"
        - "nonCriticalEvents"
        - "operationRequests"

    deviceMonitoringCounterAttributeValue:
      description: |
        A value for a counter attribute of a monitored device.
      type: integer
      format: int64

    deviceMonitoringCounterReference:
      description: |
        A reference to some counters for a monitored device.
      type: object
      required:
        - "id"
      properties:
        type:
          description: |
            Meta information provided by the server about the MIME type of the current object.
          type: string
          enum:
            - "application/vnd.safenetinc.lunacloud.v1.admincounters+json"
        href:
          $ref: "#/components/schemas/url"
        rel:
          description: |
            Meta information provided by the server about the class of the current object.
          type: string
          enum:
            - "counters"
      example: |
        {
          'type': 'application/vnd.safenetinc.lunacloud.v1.admincounters+json'
          'href': /api/admin/monitoring/devices/1/counters
          'rel': 'counters'
        }

    deviceMonitoringInformationAttribute:
      description: |
        An information attribute of a monitored device.
      type: object
      required:
        - "name"
        - "value"
      properties:
        name:
          $ref: "#/components/schemas/deviceMonitoringInformationAttributeName"
        value:
          $ref: "#/components/schemas/deviceMonitoringInformationAttributeValue"
      example: |
        {
          'name': 'connectionStatus',
          'value': 'offline'
        }

    deviceMonitoringInformationAttributeName:
      description: |
        A name for an information attribute of a monitored device.
      type: string
      enum:
        - "connectionStatus"
        - "isHsmPerfMonitoringSupported"

    deviceMonitoringInformationAttributeValue:
      description: |
        A value for an information attribute of a monitored device.
      type: string
      format: string
      minLength: 1
      maxLength: 64
      pattern: "[A-Za-z]+"
      example: "offline"

    deviceMonitoringInformationReference:
      description: |
        A reference to some information for a monitored device.
      type: object
      required:
        - "id"
      properties:
        type:
          description: |
            Meta information provided by the server about the MIME type of the current object.
          type: string
          enum:
            - "application/vnd.safenetinc.lunacloud.v1.info+json"
        href:
          $ref: "#/components/schemas/url"
        rel:
          description: |
            Meta information provided by the server about the class of the current object.
          type: string
          enum:
            - "sensors"
      example: |
        {
          'type': 'application/vnd.safenetinc.lunacloud.v1.info+json'
          'href': /api/admin/monitoring/devices/1/sensors
          'rel': 'sensors'
        }

    deviceMonitoringPerformanceAttribute:
      description: |
        A performance attribute of a monitored device.
      type: object
      required:
        - "name"
        - "value"
      properties:
        name:
          $ref: "#/components/schemas/deviceMonitoringPerformanceAttributeName"
        value:
          $ref: "#/components/schemas/deviceMonitoringPerformanceAttributeValue"
      example: |
        {
          'name': 'appliance',
          'value': '{'uptime':258321.0,'average1MinuteUsage':0.39,'average5MinuteUsage':0.65,'average15MinuteUsage':0.73,'webServerVersion':10}'
        }

    deviceMonitoringPerformanceAttributeName:
      description: |
        A name for a performance attribute of a monitored device.
      type: string
      enum:
        - "appliance"
        - "average1MinuteUsage"
        - "average5MinuteUsage"
        - "average15MinuteUsage"
        - "hsm"

    deviceMonitoringPerformanceAttributeValue:
      description: |
        A value for an information attribute of a monitored device.
      type: number
      format: double

    deviceMonitoringPerformanceReference:
      description: |
        A reference to some performances for a monitored device.
      type: object
      required:
        - "id"
      properties:
        type:
          description: |
            Meta information provided by the server about the MIME type of the current object.
          type: string
          enum:
            - "application/vnd.safenetinc.lunacloud.v1.performance+json"
        href:
          $ref: "#/components/schemas/url"
        rel:
          description: |
            Meta information provided by the server about the class of the current object.
          type: string
          enum:
            - "performance"
      example: |
        {
          'type': 'application/vnd.safenetinc.lunacloud.v1.performance+json'
          'href': /api/admin/monitoring/devices/1/performance
          'rel': 'performance'
        }

    deviceMonitoringSensorAttribute:
      description: |
        A sensor attribute of a monitored device.
      type: object
      required:
        - "name"
        - "value"
      properties:
        name:
          $ref: "#/components/schemas/deviceMonitoringSensorAttributeName"
        value:
          $ref: "#/components/schemas/deviceMonitoringSensorAttributeValue"
      example: |
        {
          'name': 'CPU',
          'value': '{'id':'CPU','lowerCritical':null,'lowerNonCritical':null,'lowerNonRecoverable':null,'type':'Temperature','unit':'degrees C','upperCritical':'95','upperNonCritical':null,'upperNonRecoverable':'100','value':'22','variance':'0','lowerBound':'0','upperBound':'120','displayName':'CPU Temp','webServerVersion':'13'}'
        }

    deviceMonitoringSensorAttributeName:
      description: |
        A name for a sensor attribute of a monitored device.
      type: string
      format: string
      enum:
        - "CPU"
        - "CPU_VCORE"
        - "Fan1A"
        - "Fan1B"
        - "Fan2A"
        - "Fan2B"
        - "Fan3A"
        - "Fan3B"
        - "PSU1_+12V_value"
        - "PSU1 Temp_value"
        - "PSU2_+12V_value"
        - "PSU2 Temp_value"
        - "VBAT"

    deviceMonitoringSensorAttributeValue:
      description: |
        A value for a sensor attribute of a monitored device.
      type: number
      format: double

    deviceMonitoringSensorReference:
      description: |
        A reference to a sensor for a monitored device.
      type: object
      required:
        - "id"
      properties:
        type:
          description: |
            Meta information provided by the server about the MIME type of the current object.
          type: string
          enum:
            - "application/vnd.safenetinc.lunacloud.v1.adminsensors+json"
        href:
          $ref: "#/components/schemas/url"
        rel:
          description: |
            Meta information provided by the server about the class of the current object.
          type: string
          enum:
            - "sensors"
      example: |
        {
          'type': 'application/vnd.safenetinc.lunacloud.v1.adminsensors+json'
          'href': /api/admin/monitoring/devices/1/sensors
          'rel': 'sensors'
        }

    deviceName:
      description: |
        A device name.
      type: string
      format: string
      minLength: 3
      maxLength: 132
      pattern: '[a-zA-Z0-9][!#$%@''()*+,\-.\/0-9:=@A-Z\[\]\^_a-z~]'
      example: "Device 1"

    deviceReference:
      description: |
        A device reference.
      type: object
      required:
        - "id"
      properties:
        id:
          $ref: "#/components/schemas/deviceId"
        name:
          $ref: "#/components/schemas/deviceName"
        description:
          $ref: "#/components/schemas/readableText"
        type:
          description: |
            Meta information provided by the server about the MIME type of the current object.
          type: string
          enum:
            - "application/vnd.safenetinc.lunacloud.v1.admindevice+json"
        href:
          $ref: "#/components/schemas/url"
        rel:
          description: |
            Meta information provided by the server about the class of the current object.
          type: string
          enum:
            - "device"
      example: |
        {
          'id': 1,
          'name': 'device-1'
          'description': 'Device 1'
          'type': 'application/vnd.safenetinc.lunacloud.v1.adminmonitoringdevice+json'
          'href': '/api/admin/monitoring/devices/1'
          'rel': 'monitoring/devices'
        }

    deviceReferencesObject:
      description: |
        An object containing a list of device references.
      type: object
      properties:
        resource:
          type: array
          items:
            description: |
              A list of device references.
            type: array
            items:
              $ref: "#/components/schemas/deviceReference"
      example: |
        {
          'resource':
            [
              {
                'id': 1
                'name': 'device-1'
                'description': 'Device 1'
                'type': 'application/vnd.safenetinc.lunacloud.v1.adminmonitoringdevice+json'
                'href': '/api/admin/monitoring/devices/1'
                'rel': 'monitoring/devices'
              }
            ]
        }

    doughnutDataForMonitoredService:
      description: |
        Some data to feed a doughnut about a monitored service.
      type: object
      properties:
        DECRYPT:
          $ref: "#/components/schemas/integerAsString"
        ALL_OPERATIONS:
          $ref: "#/components/schemas/integerAsString"
        KEY_DERIVATION:
          $ref: "#/components/schemas/integerAsString"
        PUM_POLICY_STATUS:
          $ref: "#/components/schemas/booleanAsString"
        KEY_GENERATION:
          $ref: "#/components/schemas/integerAsString"
        VERIFY:
          $ref: "#/components/schemas/integerAsString"
        ENCRYPT:
          $ref: "#/components/schemas/integerAsString"
        SIGN:
          $ref: "#/components/schemas/integerAsString"
      example: |
        {
          'DECRYPT': '0',
          'ALL_OPERATIONS': '4',
          'KEY_DERIVATION': '0',
          'PUM_POLICY_STATUS': 'true',
          'KEY_GENERATION': '4',
          'VERIFY': '0',
          'ENCRYPT': '0',
          'SIGN': '0'
        }

    expiryTime:
      description: |
        An expiry time (in seconds).
      type: integer
      format: int32
      minimum: 1
      maximum: 999999
      default: 1

    integerAsString:
      description: |
        An integer encoded as a string.
      type: string
      format: string
      minLength: 1
      maxLength: 9
      pattern: '[\d]+'
      default: "123456789"

    linechartDataForMonitoredService:
      description: |
        A list of linechart entries for a monitored service.
      type: object
      properties:
        resource:
          type: array
          items:
            description: |
              A linechart entry for a monitored service.
            type: object
            properties:
              idServElement:
                $ref: "#/components/schemas/cccServiceId"
              lastUpdateTime:
                $ref: "#/components/schemas/timestamp"
              data:
                type: array
                items:
                  type: object
                  properties:
                    name:
                      $ref: "#/components/schemas/monitoredServiceAttributeName"
                    value:
                      $ref: "#/components/schemas/monitoredServiceAttributeValue"
      example: |
        [
          {
            'idServElement': 0,
            'lastUpdateTime': 1726891199857,
            'data': 
              [
                {
                  'name': 'Operations/Sec',
                  'value': '0'
                }
                {
                  'name': 'Avg Operations/Sec',
                  'value': '0'
                },
                {
                  'name': 'operationId',
                  'value': 'ALL_OPERATIONS'
                }
              ]
          }
        ]

    monitoredServiceAttributeName:
      description: |
        A name for a monitored service attribute.
      type: string
      enum:
        - "Operations/Sec"
        - "Avg Operations/Sec"
        - "operationId"

    monitoredServiceAttributeValue:
      description: |
        A value for a monitored service attribute.
      type: string
      format: string
      minLength: 1
      maxLength: 64
      pattern: '(?:\d+|[a-zA-Z]+)'
      default: "ALL_OPERATIONS"

    partitionId:
      description: |
        A partition identifier.
      type: integer
      format: int32
      minimum: 0
      maximum: 99999
      default: 0

    serviceElementId:
      description: |
        A CCC service element identifier.
      type: integer
      format: int32
      minimum: 0
      maximum: 9999
      default: 0

    serviceMonitoringPartitionInformation:
      description: |
        Information about a partition for a monitored service.
      type: object
      properties:
        LAST_METRICS_RECORD_TIMESTAMP:
          description: |
            Timestamp in Epoch for the last record of metrics.
          $ref: "#/components/schemas/timestamp"
        PUM_POLICY_STATUS:
          description: |
            Status of the PUM (Performance Utilization Metrics) policy.
          type: boolean
        METRICS_COUNTER_RESET_TIME:
          description: |
            Timestamp in Epoch for the last reset of the counters.
          $ref: "#/components/schemas/timestamp"

    serviceReference:
      description: |
        A CCC service reference.
      type: object
      required:
        - "id"
      properties:
        id:
          $ref: "#/components/schemas/cccServiceId"
        name:
          $ref: "#/components/schemas/cccServiceName"
        description:
          $ref: "#/components/schemas/readableText"
        type:
          description: |
            Meta information provided by the server about the MIME type of the current object.
          type: string
          enum:
            - "application/vnd.safenetinc.lunacloud.v1.adminservice+json"
        href:
          $ref: "#/components/schemas/url"
        rel:
          description: |
            Meta information provided by the server about the class of the current object.
          type: string
          enum:
            - "service"
      example: |
        {
          'id': 1,
          'name': 'service-1'
          'description': 'Service 1'
          'type': 'application/vnd.safenetinc.lunacloud.v1.adminservice+json'
          'href': '/api/admin/monitoring/service/1'
          'rel': 'service'
        }

    serviceType:
      description: |
        A type of service.
      type: string
      enum:
        - "cbs"
        - "lsta"
        - "network"
        - "ntls"
        - "ntp"
        - "syslog"
        - "snmp"
        - "ssh"
        - "stc"
        - "sysstat"
        - "webserver"
      default: "ntls"

    storageSpace:
      description: A storage space.
      type: object
      properties:
        free:
          $ref: "#/components/schemas/integerAsString"
        total:
          $ref: "#/components/schemas/integerAsString"
        used:
          $ref: "#/components/schemas/integerAsString"
        label:
          $ref: "#/components/schemas/storageSpaceLabel"
        objectCount:
          $ref: "#/components/schemas/integerAsString"
        name:
          $ref: "#/components/schemas/storageSpaceName"
        state:
          $ref: "#/components/schemas/storageSpaceState"
        version:
          $ref: "#/components/schemas/integerAsString"
        soChangePasswordAttemptsLeft:
          $ref: "#/components/schemas/integerAsString"
      example: |
        {
          'free': '78148',
          'total': '80000',
          'used': '1852',
          'label': 'New_Ser',
          'objectCount': '2',
          'name': 'New_Ser',
          'state': 'initialized',
          'version': '1',
          'soChangePasswordAttemptsLeft': '10'
        }

    storageSpaceLabel:
      description: |
        A storage space label.
      type: string
      format: string
      minLength: 3
      maxLength: 132
      pattern: '[a-zA-Z0-9][!#$%@''()*+,\-.\/0-9:=@A-Z\[\]\^_a-z~]'
      default: ""
      example: "storage-space-1"

    storageSpaceName:
      description: |
        A storage space name.
      type: string
      format: string
      minLength: 3
      maxLength: 132
      pattern: '[a-zA-Z0-9][!#$%@''()*+,\-.\/0-9:=@A-Z\[\]\^_a-z~]'
      default: ""
      example: "Storage space 1"

    storageSpaceState:
      description: |
        A storage space state.
      type: string
      enum:
        - "initialized"

    timestamp:
      description: |
        A timestamp in Epoch.
      type: integer
      format: int64
      minimum: 0

    #
    # Shared definitions.
    #
    ipHostname:
      description: |
        An IP hostname.
      type: string
      format: string
      minLength: 1
      maxLength: 64
      pattern: "[a-zA-Z][a-z-A-Z0-9_.-]*"
      default: "localhost"
      example: "ccc-server"

    ipV4Address:
      description: |
        An IPv4 address.

        Match an IPv4 address in standard notation, which consists of four bytes using decimal notation, delimited by dots.
      type: string
      format: string
      minLength: 7
      maxLength: 15
      pattern: '(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)'
      default: "127.0.0.1"
      example: "192.168.0.1"

    ipV6Address:
      description: |
        An IPv6 address.

        Match an IPv6 address in standard notation, which consists of eight 16-bit words using hexadecimal notation, delimited by colons.

        Leading zeros are optional.
      type: string
      format: string
      minLength: 17
      maxLength: 39
      pattern: "(?:[A-F0-9]{1,4}:){7}[A-F0-9]{1,4}"
      default: "0:0:0:0:0:0:0:1"

    locationObject:
      description: |
        An object containing a location (in the form of a relative URL) to get additional information on a resource (typically on an ongoing action).
      type: object
      properties:
        Location:
          $ref: "#/components/schemas/relativeUrl"

    readableText:
      description: |
        A piece of readable text.
      type: string
      format: string
      minLength: 0
      maxLength: 512
      pattern: ".*"
      default: ""
      example: "Luna Network HSM is a Thales product."

    relativeUrl:
      description: |
        A relative URL (as defined by RFC-3986).
      type: string
      format: string
      minLength: 1
      maxLength: 255
      pattern: '\/?(([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?'
      default: "/"

    requestStatusCode:
      description: |
        A request status code.
      type: integer
      format: int32
      minimum: 100
      maximum: 599
      default: 200

    userId:
      description: |
        A user identifier.
      type: string
      format: string
      minLength: 1
      maxLength: 32
      pattern: "[a-z-A-Z_][a-z-A-Z0-9_.-]*"
      default: "admin"

    url:
      description: |
        A URL (as defined by RFC-3986).
      type: string
      format: string
      minLength: 1
      maxLength: 255
      pattern: '(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?'
      default: "https:/localhost:8443/"
      example: "https:/localhost:8443/api"

    urls:
      description: |
        A list of URLs.
      type: array
      items:
        $ref: "#/components/schemas/url"

    utcDateAndTime:
      description: |
        A UTC date and time.
      type: string
      format: string
      minLength: 18
      maxLength: 18
      pattern: '\d{4}-[01]{1}\d{1}-[0-3]{1}\d{1}T[0-2]{1}\d{1}:[0-6]{1}\d{1}:[0-6]{1}\d{1}Z'
      default: "changePassword"

  # -------------------------------------------------------------------------
  # Parameters
  # -------------------------------------------------------------------------
  parameters:
    #
    # Specific definitions.
    #
    contentTypeHeader:
      name: Content-Type
      in: header
      required: true
      schema:
        type: string
      example: application/vnd.safenetinc.lunacloud.v1+json

    deviceId:
      name: deviceId
      in: path
      required: true
      schema:
        $ref: "#/components/schemas/deviceId"

    serviceElementId:
      name: serviceElementId
      in: path
      required: true
      schema:
        $ref: "#/components/schemas/serviceElementId"

    serviceId:
      name: serviceId
      in: path
      required: true
      schema:
        $ref: "#/components/schemas/cccServiceId"

    serviceType:
      name: serviceType
      in: path
      required: true
      schema:
        $ref: "#/components/schemas/serviceType"

  # -------------------------------------------------------------------------
  # Responses
  # -------------------------------------------------------------------------
  responses:
    #
    # Specific definitions.
    #
    invalidUserCredentials:
      description: |
        (401) Invalid user credentials.

    unsupportedGrantType:
      description: |
        (400) Unsupported grant type.

    #
    # Shared definitions.
    #
    badRequest:
      description: |
        (400) Bad request (incorrect resource, parameters, headers or body).

    forbidden:
      description: |
        (403) Access to this resource is forbidden.

    internalError:
      description: |
        (500) Action aborted due to an internal error.

    methodNotAllowed:
      description: |
        (405) This operation is not allowed.

    notFound:
      description: |
        (404) The resource does not exist.

    notImplemented:
      description: |
        (501) This operation is not supported.

    resourceCreated:
      description: |
        (201) The resource has been created.
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/locationObject"

    resourceDeleted:
      description: |
        (204) The resource has been deleted.

    resourceModified:
      description: |
        (204) The resource has been modified.

    success:
      description: |
        (200) The operation succeeded.

    unauthorized:
      description: |
        (401) This operation is not authorized.

  # -------------------------------------------------------------------------
  # Security schemes
  # -------------------------------------------------------------------------
  securitySchemes:
    #
    # Specific definitions.
    #
    bearerAuthentication:
      type: http
      scheme: bearer
      bearerFormat: JWT