openapi: 3.0.1
info:
  title: HeartKey Rhythm
  version: v1
servers:
- url: http://{host}:{port}
  description: Generated server url
tags:
- name: HeartKey Rhythm - Signal Processing Engine
  description: Signal Processing APIs
- name: HeartKey Rhythm - Arrhythmia Analysis
  description: Arrhythmia Analysis APIs
paths:
  /api/signal-processing-engine:
    post:
      tags:
      - HeartKey Rhythm - Signal Processing Engine
      summary: Signal Processing of ECG data from Raw Data
      operationId: getSignalProcessingEngine
      parameters:
      - name: study-id
        in: header
        description: must be 1-9 digits long
        required: false
        schema:
          pattern: "^\\d{1,9}$"
          type: string
          example: "123456789"
      - name: study-type
        in: header
        description: The Study Type must be one of the specified values
        required: false
        schema:
          type: string
          example: holter-24h
          enum:
            - holter-24h
            - holter-48h
            - holter-72h
            - extended-holter-3-7d
            - extended-holter-8-14d
            - MCT
            - event-monitor
            - other
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RawSignal'
        required: true
      responses:
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                Constraint Violation:
                  description: Constraint Violation
                  value:
                    status: Bad Request
                    timestamp: 2024-06-11T10:00:00Z
                    message: Constraint Violations
                    errors:
                      "1": Raw Data Samples are Required
                      "2": Hardware Configuration is Required
                Illegal Argument Exception:
                  description: Illegal Argument Exception
                  value:
                    status: Bad Request
                    timestamp: 2024-06-11T10:00:00Z
                    message: A method has been passed an inappropriate argument
                    errors:
                      cause: exception message
        "500":
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                Processing Exception:
                  description: Processing Exception
                  value:
                    status: Internal Server Error
                    timestamp: 2024-06-11T10:00:00Z
                    message: An error occurred during processing of the raw signal
        "200":
          description: OK
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/SPEResponse'
        "403":
          description: Forbidden
        "401":
          description: Unauthorized
        "406":
          description: Not Acceptable
      security:
      - bearerAuth: []
  /api/signal-processing-engine/edf-file:
    post:
      tags:
      - HeartKey Rhythm - Signal Processing Engine
      summary: Signal Processing of ECG Data From EDF File
      operationId: getSignalProcessingEngineFromEdfFile
      parameters:
      - name: study-id
        in: header
        description: must be 1-9 digits long
        required: false
        schema:
          pattern: "^\\d{1,9}$"
          type: string
          example: "123456789"
      - name: study-type
        in: header
        description: The Study Type must be one of the specified values
        required: false
        schema:
          type: string
          example: holter-24h
          enum:
            - holter-24h
            - holter-48h
            - holter-72h
            - extended-holter-3-7d
            - extended-holter-8-14d
            - MCT
            - event-monitor
            - other
      requestBody:
        content:
          multipart/form-data:
            schema:
              required:
              - file
              type: object
              properties:
                file:
                  type: string
                  description: EDF file to upload
                  format: binary
                config:
                  type: object
                  description: Configuration Settings
                  properties:
                    returnFormat:
                      type: integer
                      description: "Whether the algorithm output should be returned in the response JSON format or in the same file format as the request input EKG file. 0 for JSON, 1 for same file format"
                      format: int32
                      example: 0
                    hardwareConfig:
                      $ref: '#/components/schemas/HardwareConfig'
                    dataFormat:
                      type: string
                      description: "Informs the library whether to treat provided EKG samples as millivolts, counts or unknowns."
                      enum:
                        - MILLIVOLTS
                        - COUNTS
                        - UNKNOWN
                    ecgChannelName:
                      maxLength: 16
                      minLength: 0
                      pattern: "[ -~]+"
                      type: string
                      description: "Location of EKG signal within the EDF(+) file. A default value of \"ECG\" will be assumed if not provided."
                    responseIndexFormat:
                      type: string
                      description: "The desired format of the timestamp/duration response outputs from the algorithm."
                      enum:
                        - TIME
                        - SAMPLES
                        - BOTH
                    responseTimeIndexUnit:
                      type: string
                      description: "The desired unit of the timestamp response outputs from the algorithm. Required when a time format is specified"
                      enum:
                        - MILLISECONDS
                        - UTC
            encoding:
              file:
                contentType: application/octet-stream
              config:
                contentType: application/json
      responses:
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                Constraint Violation:
                  description: Constraint Violation
                  value:
                    status: Bad Request
                    timestamp: 2024-06-11T10:00:00Z
                    message: Constraint Violations
                    errors:
                      "1": Raw Data Samples are Required
                      "2": Sampling Frequency is Required
                Missing Request Part:
                  description: Missing Request Part
                  value:
                    status: Bad Request
                    timestamp: 2024-06-11T10:00:00Z
                    message: Missing Servlet Request Part
                    errors:
                      cause: Required part 'file' is not present.
                Max File Size Exception:
                  description: Max File Size Exception
                  value:
                    status: Bad Request
                    timestamp: 2024-06-11T10:00:00Z
                    message: "Max Request Size Exceeded. Max size: 500MB"
                Illegal Argument Exception:
                  description: Illegal Argument Exception
                  value:
                    status: Bad Request
                    timestamp: 2024-06-11T10:00:00Z
                    message: A method has been passed an inappropriate argument
                    errors:
                      cause: Illegal Argument
        "500":
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                Processing Exception:
                  description: Processing Exception
                  value:
                    status: Internal Server Error
                    timestamp: 2024-06-11T10:00:00Z
                    message: An error occurred during processing of the raw signal
                IO Exception:
                  description: IO Exception
                  value:
                    status: internal Server Error
                    timestamp: 2024-06-11T10:00:00Z
                    message: An internal error occurred when reading the file
        "403":
          description: Forbidden
        "401":
          description: Unauthorized
        "415":
          description: Unsupported Media Type
          content:
            application/json:
              examples:
                Unsupported Media Type:
                  description: Unsupported Media Type
                  value:
                    timestamp: 2024-06-11T10:00:00Z
                    status: "415"
                    error: Unsupported Media Type
        "406":
          description: Not Acceptable
        "200":
          description: OK
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/SPEResponse'
      security:
      - bearerAuth: []
  /api/signal-processing-engine/edf-file/webhook:
    post:
      tags:
      - HeartKey Rhythm - Signal Processing Engine
      summary: Signal Processing of ECG Data From EDF File Webhook
      operationId: getProcessedSignalEdfFileWebhook
      parameters:
      - name: study-id
        in: header
        description: must be 1-9 digits long
        required: false
        schema:
          pattern: "^\\d{1,9}$"
          type: string
          example: "123456789"
      - name: study-type
        in: header
        description: The Study Type must be one of the specified values
        required: false
        schema:
          type: string
          example: holter-24h
          enum:
            - holter-24h
            - holter-48h
            - holter-72h
            - extended-holter-3-7d
            - extended-holter-8-14d
            - MCT
            - event-monitor
            - other
      requestBody:
        content:
          multipart/form-data:
            schema:
              required:
              - config
              - file
              type: object
              properties:
                file:
                  type: string
                  description: EDF file to upload
                  format: binary
                config:
                  type: object
                  description: Configuration Settings
                  required:
                  - responseUrl
                  properties:
                    responseUrl:
                      type: string
                      description: "URL of the return location of the response, must be a valid\
                        \ https URL. Required for webhook endpoints"
                      example: https://example.com/return
                    returnFormat:
                      type: integer
                      description: "Whether the algorithm output should be returned in the response JSON format or in the same file format as the request input EKG file. 0 for JSON, 1 for same file format"
                      format: int32
                      example: 0
                    hardwareConfig:
                      $ref: '#/components/schemas/HardwareConfig'
                    dataFormat:
                      type: string
                      description: "Informs the library whether to treat provided EKG samples as millivolts, counts or unknowns."
                      enum:
                        - MILLIVOLTS
                        - COUNTS
                        - UNKNOWN
                    ecgChannelName:
                      maxLength: 16
                      minLength: 0
                      pattern: "[ -~]+"
                      type: string
                      description: "Location of EKG signal within the EDF(+) file. A default value of \"ECG\" will be assumed if not provided."
                    responseIndexFormat:
                      type: string
                      description: "The desired format of the timestamp/duration response outputs from the algorithm."
                      enum:
                        - TIME
                        - SAMPLES
                        - BOTH
                    responseTimeIndexUnit:
                      type: string
                      description: "The desired unit of the timestamp response outputs from the algorithm. Required when a time format is specified"
                      enum:
                        - MILLISECONDS
                        - UTC
                    recordingStartTime:
                      type: string
                      description: "The starting time to which all response timestamp outputs from the algorithm will be calculated in relation to. Required when a Coordinated Universal Time format is specified"
                      format: date-time
            encoding:
              file:
                contentType: application/octet-stream
              config:
                contentType: application/json
      responses:
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                Constraint Violation:
                  description: Constraint Violation
                  value:
                    status: Bad Request
                    timestamp: 2024-06-11T10:00:00Z
                    message: Constraint Violations
                    errors:
                      "1": Raw Data Samples are Required
                      "2": Sampling Frequency is Required
                Missing Request Part:
                  description: Missing Request Part
                  value:
                    status: Bad Request
                    timestamp: 2024-06-11T10:00:00Z
                    message: Missing Servlet Request Part
                    errors:
                      cause: Required part 'file' is not present.
                Max File Size Exception:
                  description: Max File Size Exception
                  value:
                    status: Bad Request
                    timestamp: 2024-06-11T10:00:00Z
                    message: "Max Request Size Exceeded. Max size: 500MB"
                Illegal Argument Exception:
                  description: Illegal Argument Exception
                  value:
                    status: Bad Request
                    timestamp: 2024-06-11T10:00:00Z
                    message: A method has been passed an inappropriate argument
                    errors:
                      cause: Illegal Argument
        "500":
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                Processing Exception:
                  description: Processing Exception
                  value:
                    status: Internal Server Error
                    timestamp: 2024-06-11T10:00:00Z
                    message: An error occurred during processing of the raw signal
                IO Exception:
                  description: IO Exception
                  value:
                    status: internal Server Error
                    timestamp: 2024-06-11T10:00:00Z
                    message: An internal error occurred when reading the file
        "403":
          description: Forbidden
        "200":
          description: OK
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/AsyncAck'
        "401":
          description: Unauthorized
        "415":
          description: Unsupported Media Type
          content:
            application/json:
              examples:
                Unsupported Media Type:
                  description: Unsupported Media Type
                  value:
                    timestamp: 2024-06-11T10:00:00Z
                    status: "415"
                    error: Unsupported Media Type
        "406":
          description: Not Acceptable
      security:
      - bearerAuth: []
  /api/signal-processing-engine/edf-file/download:
    post:
      tags:
      - HeartKey Rhythm - Signal Processing Engine
      summary: Signal Processing of ECG Data From EDF File Download
      operationId: getSignalProcessingEngineFromEDFDownload
      parameters:
      - name: study-id
        in: header
        description: must be 1-9 digits long
        required: false
        schema:
          pattern: "^\\d{1,9}$"
          type: string
          example: "123456789"
      - name: study-type
        in: header
        description: The Study Type must be one of the specified values
        required: false
        schema:
          type: string
          example: holter-24h
          enum:
            - holter-24h
            - holter-48h
            - holter-72h
            - extended-holter-3-7d
            - extended-holter-8-14d
            - MCT
            - event-monitor
            - other
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RequestConfig'
        required: true
      responses:
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                Constraint Violation:
                  description: Constraint Violation
                  value:
                    status: Bad Request
                    timestamp: 2024-06-11T10:00:00Z
                    message: Constraint Violations
                    errors:
                      "1": Raw Data Samples are Required
                      "2": Sampling Frequency is Required
                Missing Request Part:
                  description: Missing Request Part
                  value:
                    status: Bad Request
                    timestamp: 2024-06-11T10:00:00Z
                    message: Missing Servlet Request Part
                    errors:
                      cause: Required part 'file' is not present.
                Max File Size Exception:
                  description: Max File Size Exception
                  value:
                    status: Bad Request
                    timestamp: 2024-06-11T10:00:00Z
                    message: "Max Request Size Exceeded. Max size: 500MB"
                Illegal Argument Exception:
                  description: Illegal Argument Exception
                  value:
                    status: Bad Request
                    timestamp: 2024-06-11T10:00:00Z
                    message: A method has been passed an inappropriate argument
                    errors:
                      cause: Illegal Argument
        "500":
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                Processing Exception:
                  description: Processing Exception
                  value:
                    status: Internal Server Error
                    timestamp: 2024-06-11T10:00:00Z
                    message: An error occurred during processing of the raw signal
                IO Exception:
                  description: IO Exception
                  value:
                    status: internal Server Error
                    timestamp: 2024-06-11T10:00:00Z
                    message: An internal error occurred when reading the file
        "403":
          description: Forbidden
        "401":
          description: Unauthorized
        "415":
          description: Unsupported Media Type
          content:
            application/json:
              examples:
                Unsupported Media Type:
                  description: Unsupported Media Type
                  value:
                    timestamp: 2024-06-11T10:00:00Z
                    status: "415"
                    error: Unsupported Media Type
        "406":
          description: Not Acceptable
        "200":
          description: OK
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/SPEResponse'
      security:
      - bearerAuth: []
  /api/signal-processing-engine/edf-file/download/webhook:
    post:
      tags:
      - HeartKey Rhythm - Signal Processing Engine
      summary: Signal Processing of ECG Data From EDF File Download Webhook
      operationId: getSignalProcessingEngineFromEdfFileWebhookDownload
      parameters:
      - name: study-id
        in: header
        description: must be 1-9 digits long
        required: false
        schema:
          pattern: "^\\d{1,9}$"
          type: string
          example: "123456789"
      - name: study-type
        in: header
        description: The Study Type must be one of the specified values
        required: false
        schema:
          type: string
          example: holter-24h
          enum:
            - holter-24h
            - holter-48h
            - holter-72h
            - extended-holter-3-7d
            - extended-holter-8-14d
            - MCT
            - event-monitor
            - other
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RequestConfig'
        required: true
      responses:
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                Constraint Violation:
                  description: Constraint Violation
                  value:
                    status: Bad Request
                    timestamp: 2024-06-11T10:00:00Z
                    message: Constraint Violations
                    errors:
                      "1": Raw Data Samples are Required
                      "2": Sampling Frequency is Required
                Missing Request Part:
                  description: Missing Request Part
                  value:
                    status: Bad Request
                    timestamp: 2024-06-11T10:00:00Z
                    message: Missing Servlet Request Part
                    errors:
                      cause: Required part 'file' is not present.
                Max File Size Exception:
                  description: Max File Size Exception
                  value:
                    status: Bad Request
                    timestamp: 2024-06-11T10:00:00Z
                    message: "Max Request Size Exceeded. Max size: 500MB"
                Illegal Argument Exception:
                  description: Illegal Argument Exception
                  value:
                    status: Bad Request
                    timestamp: 2024-06-11T10:00:00Z
                    message: A method has been passed an inappropriate argument
                    errors:
                      cause: Illegal Argument
        "500":
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                Processing Exception:
                  description: Processing Exception
                  value:
                    status: Internal Server Error
                    timestamp: 2024-06-11T10:00:00Z
                    message: An error occurred during processing of the raw signal
                IO Exception:
                  description: IO Exception
                  value:
                    status: internal Server Error
                    timestamp: 2024-06-11T10:00:00Z
                    message: An internal error occurred when reading the file
        "403":
          description: Forbidden
        "200":
          description: OK
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/AsyncAck'
        "401":
          description: Unauthorized
        "415":
          description: Unsupported Media Type
          content:
            application/json:
              examples:
                Unsupported Media Type:
                  description: Unsupported Media Type
                  value:
                    timestamp: 2024-06-11T10:00:00Z
                    status: "415"
                    error: Unsupported Media Type
        "406":
          description: Not Acceptable
      security:
      - bearerAuth: []
  /api/signal-processing-engine/ecg-file:
    post:
      tags:
      - HeartKey Rhythm - Signal Processing Engine
      summary: Signal Processing of ECG Data From ECG File
      operationId: getSignalProcessingEngineFromFile
      parameters:
      - name: study-id
        in: header
        description: must be 1-9 digits long
        required: false
        schema:
          pattern: "^\\d{1,9}$"
          type: string
          example: "123456789"
      - name: study-type
        in: header
        description: The Study Type must be one of the specified values
        required: false
        schema:
          type: string
          example: holter-24h
          enum:
            - holter-24h
            - holter-48h
            - holter-72h
            - extended-holter-3-7d
            - extended-holter-8-14d
            - MCT
            - event-monitor
            - other
      requestBody:
        content:
          multipart/form-data:
            schema:
              required:
              - file
              type: object
              properties:
                file:
                  type: string
                  description: ECG file to upload
                  format: binary
                config:
                  type: object
                  properties:
                    returnFormat:
                      type: integer
                      description: "Whether the algorithm output should be returned in the response JSON format or in the same file format as the request input EKG file. 0 for JSON, 1 for same file format"
                      format: int32
                      example: 0
                    hardwareConfig:
                      $ref: '#/components/schemas/HardwareConfig'
                    dataFormat:
                      type: string
                      description: "Informs the library whether to treat provided EKG samples as millivolts, counts or unknowns."
                      enum:
                        - MILLIVOLTS
                        - COUNTS
                        - UNKNOWN
                    responseIndexFormat:
                      type: string
                      description: "The desired format of the timestamp/duration response outputs from the algorithm."
                      enum:
                        - TIME
                        - SAMPLES
                        - BOTH
                    responseTimeIndexUnit:
                      type: string
                      description: "The desired unit of the timestamp response outputs from the algorithm. Required when a time format is specified"
                      enum:
                        - MILLISECONDS
                        - UTC
                    recordingStartTime:
                      type: string
                      description: "The starting time to which all response timestamp outputs from the algorithm will be calculated in relation to. Required when a Coordinated Universal Time format is specified"
                      format: date-time
                  description: Configuration Settings
            encoding:
              config:
                contentType: application/json
      responses:
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                Constraint Violation:
                  description: Constraint Violation
                  value:
                    status: Bad Request
                    timestamp: 2024-06-11T10:00:00Z
                    message: Constraint Violations
                    errors:
                      "1": Raw Data Samples are Required
                      "2": Sampling Frequency is Required
                Missing Request Part:
                  description: Missing Request Part
                  value:
                    status: Bad Request
                    timestamp: 2024-06-11T10:00:00Z
                    message: Missing Servlet Request Part
                    errors:
                      cause: Required part 'file' is not present.
                Max File Size Exception:
                  description: Max File Size Exception
                  value:
                    status: Bad Request
                    timestamp: 2024-06-11T10:00:00Z
                    message: "Max Request Size Exceeded. Max size: 500MB"
                Illegal Argument Exception:
                  description: Illegal Argument Exception
                  value:
                    status: Bad Request
                    timestamp: 2024-06-11T10:00:00Z
                    message: A method has been passed an inappropriate argument
                    errors:
                      cause: Illegal Argument
        "500":
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                Processing Exception:
                  description: Processing Exception
                  value:
                    status: Internal Server Error
                    timestamp: 2024-06-11T10:00:00Z
                    message: An error occurred during processing of the raw signal
                IO Exception:
                  description: IO Exception
                  value:
                    status: internal Server Error
                    timestamp: 2024-06-11T10:00:00Z
                    message: An internal error occurred when reading the file
        "403":
          description: Forbidden
        "401":
          description: Unauthorized
        "415":
          description: Unsupported Media Type
          content:
            application/json:
              examples:
                Unsupported Media Type:
                  description: Unsupported Media Type
                  value:
                    timestamp: 2024-06-11T10:00:00Z
                    status: "415"
                    error: Unsupported Media Type
        "406":
          description: Not Acceptable
        "200":
          description: OK
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/SPEResponse'
      security:
      - bearerAuth: []
  /api/signal-processing-engine/ecg-file/webhook:
    post:
      tags:
      - HeartKey Rhythm - Signal Processing Engine
      summary: Signal Processing of ECG Data From ECG File Webhook
      operationId: getProcessedSignalEcgFileWebhook
      parameters:
      - name: study-id
        in: header
        description: must be 1-9 digits long
        required: false
        schema:
          pattern: "^\\d{1,9}$"
          type: string
          example: "123456789"
      - name: study-type
        in: header
        description: The Study Type must be one of the specified values
        required: false
        schema:
          type: string
          example: holter-24h
          enum:
            - holter-24h
            - holter-48h
            - holter-72h
            - extended-holter-3-7d
            - extended-holter-8-14d
            - MCT
            - event-monitor
            - other
      requestBody:
        content:
          multipart/form-data:
            schema:
              required:
              - config
              - file
              type: object
              properties:
                file:
                  type: string
                  description: ECG file to upload
                  format: binary
                config:
                  type: object
                  required:
                  - responseUrl
                  properties:
                    responseUrl:
                      type: string
                      description: "URL of the return location of the response, must be a valid\
                        \ https URL. Required for webhook endpoints"
                      example: https://example.com/return
                    returnFormat:
                      type: integer
                      description: "Whether the algorithm output should be returned in the response JSON format or in the same file format as the request input EKG file. 0 for JSON, 1 for same file format"
                      format: int32
                      example: 0
                    hardwareConfig:
                      $ref: '#/components/schemas/HardwareConfig'
                    dataFormat:
                      type: string
                      description: "Informs the library whether to treat provided EKG samples as millivolts, counts or unknowns."
                      enum:
                        - MILLIVOLTS
                        - COUNTS
                        - UNKNOWN
                    responseIndexFormat:
                      type: string
                      description: "The desired format of the timestamp/duration response outputs from the algorithm."
                      enum:
                        - TIME
                        - SAMPLES
                        - BOTH
                    responseTimeIndexUnit:
                      type: string
                      description: "The desired unit of the timestamp response outputs from the algorithm. Required when a time format is specified"
                      enum:
                        - MILLISECONDS
                        - UTC
                    recordingStartTime:
                      type: string
                      description: "The starting time to which all response timestamp outputs from the algorithm will be calculated in relation to. Required when a Coordinated Universal Time format is specified"
                      format: date-time
                  description: Configuration Settings
            encoding:
              config:
                contentType: application/json
      responses:
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                Constraint Violation:
                  description: Constraint Violation
                  value:
                    status: Bad Request
                    timestamp: 2024-06-11T10:00:00Z
                    message: Constraint Violations
                    errors:
                      "1": Raw Data Samples are Required
                      "2": Sampling Frequency is Required
                Missing Request Part:
                  description: Missing Request Part
                  value:
                    status: Bad Request
                    timestamp: 2024-06-11T10:00:00Z
                    message: Missing Servlet Request Part
                    errors:
                      cause: Required part 'file' is not present.
                Max File Size Exception:
                  description: Max File Size Exception
                  value:
                    status: Bad Request
                    timestamp: 2024-06-11T10:00:00Z
                    message: "Max Request Size Exceeded. Max size: 500MB"
                Illegal Argument Exception:
                  description: Illegal Argument Exception
                  value:
                    status: Bad Request
                    timestamp: 2024-06-11T10:00:00Z
                    message: A method has been passed an inappropriate argument
                    errors:
                      cause: Illegal Argument
        "500":
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                Processing Exception:
                  description: Processing Exception
                  value:
                    status: Internal Server Error
                    timestamp: 2024-06-11T10:00:00Z
                    message: An error occurred during processing of the raw signal
                IO Exception:
                  description: IO Exception
                  value:
                    status: internal Server Error
                    timestamp: 2024-06-11T10:00:00Z
                    message: An internal error occurred when reading the file
        "403":
          description: Forbidden
        "200":
          description: OK
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/AsyncAck'
        "401":
          description: Unauthorized
        "415":
          description: Unsupported Media Type
          content:
            application/json:
              examples:
                Unsupported Media Type:
                  description: Unsupported Media Type
                  value:
                    timestamp: 2024-06-11T10:00:00Z
                    status: "415"
                    error: Unsupported Media Type
        "406":
          description: Not Acceptable
      security:
      - bearerAuth: []
  /api/signal-processing-engine/ecg-file/download:
    post:
      tags:
      - HeartKey Rhythm - Signal Processing Engine
      summary: Signal Processing of ECG Data From ECG File Download
      operationId: getSignalProcessingEngineFromURL
      parameters:
      - name: study-id
        in: header
        description: must be 1-9 digits long
        required: false
        schema:
          pattern: "^\\d{1,9}$"
          type: string
          example: "123456789"
      - name: study-type
        in: header
        description: The Study Type must be one of the specified values
        required: false
        schema:
          type: string
          example: holter-24h
          enum:
            - holter-24h
            - holter-48h
            - holter-72h
            - extended-holter-3-7d
            - extended-holter-8-14d
            - MCT
            - event-monitor
            - other
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RequestConfig'
        required: true
      responses:
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                Constraint Violation:
                  description: Constraint Violation
                  value:
                    status: Bad Request
                    timestamp: 2024-06-11T10:00:00Z
                    message: Constraint Violations
                    errors:
                      "1": Raw Data Samples are Required
                      "2": Sampling Frequency is Required
                Missing Request Part:
                  description: Missing Request Part
                  value:
                    status: Bad Request
                    timestamp: 2024-06-11T10:00:00Z
                    message: Missing Servlet Request Part
                    errors:
                      cause: Required part 'file' is not present.
                Max File Size Exception:
                  description: Max File Size Exception
                  value:
                    status: Bad Request
                    timestamp: 2024-06-11T10:00:00Z
                    message: "Max Request Size Exceeded. Max size: 500MB"
                Illegal Argument Exception:
                  description: Illegal Argument Exception
                  value:
                    status: Bad Request
                    timestamp: 2024-06-11T10:00:00Z
                    message: A method has been passed an inappropriate argument
                    errors:
                      cause: Illegal Argument
        "500":
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                Processing Exception:
                  description: Processing Exception
                  value:
                    status: Internal Server Error
                    timestamp: 2024-06-11T10:00:00Z
                    message: An error occurred during processing of the raw signal
                IO Exception:
                  description: IO Exception
                  value:
                    status: internal Server Error
                    timestamp: 2024-06-11T10:00:00Z
                    message: An internal error occurred when reading the file
        "403":
          description: Forbidden
        "401":
          description: Unauthorized
        "415":
          description: Unsupported Media Type
          content:
            application/json:
              examples:
                Unsupported Media Type:
                  description: Unsupported Media Type
                  value:
                    timestamp: 2024-06-11T10:00:00Z
                    status: "415"
                    error: Unsupported Media Type
        "406":
          description: Not Acceptable
        "200":
          description: OK
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/SPEResponse'
      security:
      - bearerAuth: []
  /api/signal-processing-engine/ecg-file/download/webhook:
    post:
      tags:
      - HeartKey Rhythm - Signal Processing Engine
      summary: Signal Processing of ECG Data From ECG File Download Webhook
      operationId: getSignalProcessingEngineFromFileDownloadAsync
      parameters:
      - name: study-id
        in: header
        description: must be 1-9 digits long
        required: false
        schema:
          pattern: "^\\d{1,9}$"
          type: string
          example: "123456789"
      - name: study-type
        in: header
        description: The Study Type must be one of the specified values
        required: false
        schema:
          type: string
          example: holter-24h
          enum:
            - holter-24h
            - holter-48h
            - holter-72h
            - extended-holter-3-7d
            - extended-holter-8-14d
            - MCT
            - event-monitor
            - other
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RequestConfig'
        required: true
      responses:
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                Constraint Violation:
                  description: Constraint Violation
                  value:
                    status: Bad Request
                    timestamp: 2024-06-11T10:00:00Z
                    message: Constraint Violations
                    errors:
                      "1": Raw Data Samples are Required
                      "2": Sampling Frequency is Required
                Missing Request Part:
                  description: Missing Request Part
                  value:
                    status: Bad Request
                    timestamp: 2024-06-11T10:00:00Z
                    message: Missing Servlet Request Part
                    errors:
                      cause: Required part 'file' is not present.
                Max File Size Exception:
                  description: Max File Size Exception
                  value:
                    status: Bad Request
                    timestamp: 2024-06-11T10:00:00Z
                    message: "Max Request Size Exceeded. Max size: 500MB"
                Illegal Argument Exception:
                  description: Illegal Argument Exception
                  value:
                    status: Bad Request
                    timestamp: 2024-06-11T10:00:00Z
                    message: A method has been passed an inappropriate argument
                    errors:
                      cause: Illegal Argument
        "500":
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                Processing Exception:
                  description: Processing Exception
                  value:
                    status: Internal Server Error
                    timestamp: 2024-06-11T10:00:00Z
                    message: An error occurred during processing of the raw signal
                IO Exception:
                  description: IO Exception
                  value:
                    status: internal Server Error
                    timestamp: 2024-06-11T10:00:00Z
                    message: An internal error occurred when reading the file
        "403":
          description: Forbidden
        "200":
          description: OK
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/AsyncAck'
        "401":
          description: Unauthorized
        "415":
          description: Unsupported Media Type
          content:
            application/json:
              examples:
                Unsupported Media Type:
                  description: Unsupported Media Type
                  value:
                    timestamp: 2024-06-11T10:00:00Z
                    status: "415"
                    error: Unsupported Media Type
        "406":
          description: Not Acceptable
      security:
      - bearerAuth: []
  /api/signal-processing-engine/csv-file:
    post:
      tags:
      - HeartKey Rhythm - Signal Processing Engine
      summary: Signal Processing of ECG Data From CSV File
      operationId: getSignalProcessingEngineFromCsvFile
      parameters:
      - name: study-id
        in: header
        description: must be 1-9 digits long
        required: false
        schema:
          pattern: "^\\d{1,9}$"
          type: string
          example: "123456789"
      - name: study-type
        in: header
        description: The Study Type must be one of the specified values
        required: false
        schema:
          type: string
          example: holter-24h
          enum:
            - holter-24h
            - holter-48h
            - holter-72h
            - extended-holter-3-7d
            - extended-holter-8-14d
            - MCT
            - event-monitor
            - other
      requestBody:
        content:
          multipart/form-data:
            schema:
              required:
              - config
              - file
              type: object
              properties:
                file:
                  type: string
                  description: CSV file to upload
                  format: binary
                config:
                  type: object
                  required:
                  - hardwareConfig
                  - hasHeaders
                  properties:
                    returnFormat:
                      type: integer
                      description: "Whether the algorithm output should be returned in the response JSON format or in the same file format as the request input EKG file. 0 for JSON, 1 for same file format"
                      format: int32
                      example: 0
                    hardwareConfig:
                      $ref: '#/components/schemas/HardwareConfig'
                    dataFormat:
                      type: string
                      description: "Informs the library whether to treat provided EKG samples as millivolts, counts or unknowns."
                      enum:
                        - MILLIVOLTS
                        - COUNTS
                        - UNKNOWN
                    ecgColumnIndex:
                      type: integer
                      description: "The index of the column in the CSV file that contains ECG data for processing. Column numbering begins at 0."
                      format: int32
                    leadsOnColumnIndex:
                      type: integer
                      description: "The index of the column in the CSV file that contains leads-on data for processing. Column numbering begins at 0."
                      format: int32
                    hasHeaders:
                      type: boolean
                      description: "Whether the CSV file for processing has a header row "
                    responseIndexFormat:
                      type: string
                      description: "The desired format of the timestamp/duration response outputs from the algorithm."
                      enum:
                        - TIME
                        - SAMPLES
                        - BOTH
                    responseTimeIndexUnit:
                      type: string
                      description: "The desired unit of the timestamp response outputs from the algorithm. Required when a time format is specified"
                      enum:
                        - MILLISECONDS
                        - UTC
                    recordingStartTime:
                      type: string
                      description: "The starting time to which all response timestamp outputs from the algorithm will be calculated in relation to. Required when a Coordinated Universal Time format is specified"
                      format: date-time
                  description: Configuration Settings
            encoding:
              config:
                contentType: application/json
      responses:
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                Constraint Violation:
                  description: Constraint Violation
                  value:
                    status: Bad Request
                    timestamp: 2024-06-11T10:00:00Z
                    message: Constraint Violations
                    errors:
                      "1": Raw Data Samples are Required
                      "2": Sampling Frequency is Required
                Missing Request Part:
                  description: Missing Request Part
                  value:
                    status: Bad Request
                    timestamp: 2024-06-11T10:00:00Z
                    message: Missing Servlet Request Part
                    errors:
                      cause: Required part 'file' is not present.
                Max File Size Exception:
                  description: Max File Size Exception
                  value:
                    status: Bad Request
                    timestamp: 2024-06-11T10:00:00Z
                    message: "Max Request Size Exceeded. Max size: 500MB"
                Illegal Argument Exception:
                  description: Illegal Argument Exception
                  value:
                    status: Bad Request
                    timestamp: 2024-06-11T10:00:00Z
                    message: A method has been passed an inappropriate argument
                    errors:
                      cause: Illegal Argument
        "500":
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                Processing Exception:
                  description: Processing Exception
                  value:
                    status: Internal Server Error
                    timestamp: 2024-06-11T10:00:00Z
                    message: An error occurred during processing of the raw signal
                IO Exception:
                  description: IO Exception
                  value:
                    status: internal Server Error
                    timestamp: 2024-06-11T10:00:00Z
                    message: An internal error occurred when reading the file
        "403":
          description: Forbidden
        "401":
          description: Unauthorized
        "415":
          description: Unsupported Media Type
          content:
            application/json:
              examples:
                Unsupported Media Type:
                  description: Unsupported Media Type
                  value:
                    timestamp: 2024-06-11T10:00:00Z
                    status: "415"
                    error: Unsupported Media Type
        "406":
          description: Not Acceptable
        "200":
          description: OK
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/SPEResponse'
      security:
      - bearerAuth: []
  /api/signal-processing-engine/csv-file/webhook:
    post:
      tags:
      - HeartKey Rhythm - Signal Processing Engine
      summary: Signal Processing of ECG Data From CSV File Webhook
      operationId: getSignalProcessingEngineFromCsvFileAsync
      parameters:
      - name: study-id
        in: header
        description: must be 1-9 digits long
        required: false
        schema:
          pattern: "^\\d{1,9}$"
          type: string
          example: "123456789"
      - name: study-type
        in: header
        description: The Study Type must be one of the specified values
        required: false
        schema:
          type: string
          example: holter-24h
          enum:
            - holter-24h
            - holter-48h
            - holter-72h
            - extended-holter-3-7d
            - extended-holter-8-14d
            - MCT
            - event-monitor
            - other
      requestBody:
        content:
          multipart/form-data:
            schema:
              required:
              - config
              - file
              type: object
              properties:
                file:
                  type: string
                  description: CSV file to upload
                  format: binary
                config:
                  type: object
                  required:
                  - hardwareConfig
                  - hasHeaders
                  - responseUrl
                  properties:
                    responseUrl:
                      type: string
                      description: "URL of the return location of the response, must be a valid\
                        \ https URL. Required for webhook endpoints"
                      example: https://example.com/return
                    returnFormat:
                      type: integer
                      description: "Whether the algorithm output should be returned in the response JSON format or in the same file format as the request input EKG file. 0 for JSON, 1 for same file format"
                      format: int32
                      example: 0
                    hardwareConfig:
                      $ref: '#/components/schemas/HardwareConfig'
                    dataFormat:
                      type: string
                      description: "Informs the library whether to treat provided EKG samples as millivolts, counts or unknowns."
                      enum:
                        - MILLIVOLTS
                        - COUNTS
                        - UNKNOWN
                    ecgColumnIndex:
                      type: integer
                      description: "The index of the column in the CSV file that contains ECG data for processing. Column numbering begins at 0."
                      format: int32
                    leadsOnColumnIndex:
                      type: integer
                      description: "The index of the column in the CSV file that contains leads-on data for processing. Column numbering begins at 0."
                      format: int32
                    hasHeaders:
                      type: boolean
                      description: "Whether the CSV file for processing has a header row "
                    responseIndexFormat:
                      type: string
                      description: "The desired format of the timestamp/duration response outputs from the algorithm."
                      enum:
                        - TIME
                        - SAMPLES
                        - BOTH
                    responseTimeIndexUnit:
                      type: string
                      description: "The desired unit of the timestamp response outputs from the algorithm. Required when a time format is specified"
                      enum:
                        - MILLISECONDS
                        - UTC
                    recordingStartTime:
                      type: string
                      description: "The starting time to which all response timestamp outputs from the algorithm will be calculated in relation to. Required when a Coordinated Universal Time format is specified"
                      format: date-time
                  description: Configuration Settings
            encoding:
              config:
                contentType: application/json
      responses:
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                Constraint Violation:
                  description: Constraint Violation
                  value:
                    status: Bad Request
                    timestamp: 2024-06-11T10:00:00Z
                    message: Constraint Violations
                    errors:
                      "1": Raw Data Samples are Required
                      "2": Sampling Frequency is Required
                Missing Request Part:
                  description: Missing Request Part
                  value:
                    status: Bad Request
                    timestamp: 2024-06-11T10:00:00Z
                    message: Missing Servlet Request Part
                    errors:
                      cause: Required part 'file' is not present.
                Max File Size Exception:
                  description: Max File Size Exception
                  value:
                    status: Bad Request
                    timestamp: 2024-06-11T10:00:00Z
                    message: "Max Request Size Exceeded. Max size: 500MB"
                Illegal Argument Exception:
                  description: Illegal Argument Exception
                  value:
                    status: Bad Request
                    timestamp: 2024-06-11T10:00:00Z
                    message: A method has been passed an inappropriate argument
                    errors:
                      cause: Illegal Argument
        "500":
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                Processing Exception:
                  description: Processing Exception
                  value:
                    status: Internal Server Error
                    timestamp: 2024-06-11T10:00:00Z
                    message: An error occurred during processing of the raw signal
                IO Exception:
                  description: IO Exception
                  value:
                    status: internal Server Error
                    timestamp: 2024-06-11T10:00:00Z
                    message: An internal error occurred when reading the file
        "403":
          description: Forbidden
        "200":
          description: OK
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/AsyncAck'
        "401":
          description: Unauthorized
        "415":
          description: Unsupported Media Type
          content:
            application/json:
              examples:
                Unsupported Media Type:
                  description: Unsupported Media Type
                  value:
                    timestamp: 2024-06-11T10:00:00Z
                    status: "415"
                    error: Unsupported Media Type
        "406":
          description: Not Acceptable
      security:
      - bearerAuth: []
  /api/signal-processing-engine/csv-file/download:
    post:
      tags:
      - HeartKey Rhythm - Signal Processing Engine
      summary: Signal Processing of ECG Data From CSV File Download
      operationId: getSignalProcessingEngineFromUrlCSVData
      parameters:
      - name: study-id
        in: header
        description: must be 1-9 digits long
        required: false
        schema:
          pattern: "^\\d{1,9}$"
          type: string
          example: "123456789"
      - name: study-type
        in: header
        description: The Study Type must be one of the specified values
        required: false
        schema:
          type: string
          example: holter-24h
          enum:
            - holter-24h
            - holter-48h
            - holter-72h
            - extended-holter-3-7d
            - extended-holter-8-14d
            - MCT
            - event-monitor
            - other
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RequestConfig'
        required: true
      responses:
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                Constraint Violation:
                  description: Constraint Violation
                  value:
                    status: Bad Request
                    timestamp: 2024-06-11T10:00:00Z
                    message: Constraint Violations
                    errors:
                      "1": Raw Data Samples are Required
                      "2": Sampling Frequency is Required
                Missing Request Part:
                  description: Missing Request Part
                  value:
                    status: Bad Request
                    timestamp: 2024-06-11T10:00:00Z
                    message: Missing Servlet Request Part
                    errors:
                      cause: Required part 'file' is not present.
                Max File Size Exception:
                  description: Max File Size Exception
                  value:
                    status: Bad Request
                    timestamp: 2024-06-11T10:00:00Z
                    message: "Max Request Size Exceeded. Max size: 500MB"
                Illegal Argument Exception:
                  description: Illegal Argument Exception
                  value:
                    status: Bad Request
                    timestamp: 2024-06-11T10:00:00Z
                    message: A method has been passed an inappropriate argument
                    errors:
                      cause: Illegal Argument
        "500":
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                Processing Exception:
                  description: Processing Exception
                  value:
                    status: Internal Server Error
                    timestamp: 2024-06-11T10:00:00Z
                    message: An error occurred during processing of the raw signal
                IO Exception:
                  description: IO Exception
                  value:
                    status: internal Server Error
                    timestamp: 2024-06-11T10:00:00Z
                    message: An internal error occurred when reading the file
        "403":
          description: Forbidden
        "401":
          description: Unauthorized
        "415":
          description: Unsupported Media Type
          content:
            application/json:
              examples:
                Unsupported Media Type:
                  description: Unsupported Media Type
                  value:
                    timestamp: 2024-06-11T10:00:00Z
                    status: "415"
                    error: Unsupported Media Type
        "406":
          description: Not Acceptable
        "200":
          description: OK
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/SPEResponse'
      security:
      - bearerAuth: []
  /api/signal-processing-engine/csv-file/download/webhook:
    post:
      tags:
      - HeartKey Rhythm - Signal Processing Engine
      summary: Signal Processing of ECG Data From CSV File Download Webhook
      operationId: getSignalProcessingEngineFromDownloadCsvFileAsync
      parameters:
      - name: study-id
        in: header
        description: must be 1-9 digits long
        required: false
        schema:
          pattern: "^\\d{1,9}$"
          type: string
          example: "123456789"
      - name: study-type
        in: header
        description: The Study Type must be one of the specified values
        required: false
        schema:
          type: string
          example: holter-24h
          enum:
            - holter-24h
            - holter-48h
            - holter-72h
            - extended-holter-3-7d
            - extended-holter-8-14d
            - MCT
            - event-monitor
            - other
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RequestConfig'
        required: true
      responses:
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                Constraint Violation:
                  description: Constraint Violation
                  value:
                    status: Bad Request
                    timestamp: 2024-06-11T10:00:00Z
                    message: Constraint Violations
                    errors:
                      "1": Raw Data Samples are Required
                      "2": Sampling Frequency is Required
                Missing Request Part:
                  description: Missing Request Part
                  value:
                    status: Bad Request
                    timestamp: 2024-06-11T10:00:00Z
                    message: Missing Servlet Request Part
                    errors:
                      cause: Required part 'file' is not present.
                Max File Size Exception:
                  description: Max File Size Exception
                  value:
                    status: Bad Request
                    timestamp: 2024-06-11T10:00:00Z
                    message: "Max Request Size Exceeded. Max size: 500MB"
                Illegal Argument Exception:
                  description: Illegal Argument Exception
                  value:
                    status: Bad Request
                    timestamp: 2024-06-11T10:00:00Z
                    message: A method has been passed an inappropriate argument
                    errors:
                      cause: Illegal Argument
        "500":
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                Processing Exception:
                  description: Processing Exception
                  value:
                    status: Internal Server Error
                    timestamp: 2024-06-11T10:00:00Z
                    message: An error occurred during processing of the raw signal
                IO Exception:
                  description: IO Exception
                  value:
                    status: internal Server Error
                    timestamp: 2024-06-11T10:00:00Z
                    message: An internal error occurred when reading the file
        "403":
          description: Forbidden
        "200":
          description: OK
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/AsyncAck'
        "401":
          description: Unauthorized
        "415":
          description: Unsupported Media Type
          content:
            application/json:
              examples:
                Unsupported Media Type:
                  description: Unsupported Media Type
                  value:
                    timestamp: 2024-06-11T10:00:00Z
                    status: "415"
                    error: Unsupported Media Type
        "406":
          description: Not Acceptable
      security:
      - bearerAuth: []
  /api/arrhythmia-analysis:
    post:
      tags:
      - HeartKey Rhythm - Arrhythmia Analysis
      summary: Arrhythmia analysis of ECG data from raw data object
      operationId: getContinuousArrhythmiaFromRawObject
      parameters:
      - name: study-id
        in: header
        description: must be 1-9 digits long
        required: false
        schema:
          pattern: "^\\d{1,9}$"
          type: string
          example: "123456789"
      - name: study-type
        in: header
        description: The Study Type must be one of the specified values
        required: false
        schema:
          type: string
          example: holter-24h
          enum:
            - holter-24h
            - holter-48h
            - holter-72h
            - extended-holter-3-7d
            - extended-holter-8-14d
            - MCT
            - event-monitor
            - other
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RawSignal'
        required: true
      responses:
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                Constraint Violation:
                  description: Constraint Violation
                  value:
                    status: Bad Request
                    timestamp: 2024-06-11T10:00:00Z
                    message: Constraint Violations
                    errors:
                      "1": Raw Data Samples are Required
                      "2": Hardware Configuration is Required
                Illegal Argument Exception:
                  description: Illegal Argument Exception
                  value:
                    status: Bad Request
                    timestamp: 2024-06-11T10:00:00Z
                    message: A method has been passed an inappropriate argument
                    errors:
                      cause: exception message
        "500":
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                Processing Exception:
                  description: Processing Exception
                  value:
                    status: Internal Server Error
                    timestamp: 2024-06-11T10:00:00Z
                    message: An error occurred during processing of the raw signal
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ArrhythmiaAnalysisInfo'
        "403":
          description: Forbidden
        "401":
          description: Unauthorized
        "406":
          description: Not Acceptable
      security:
      - bearerAuth: []
  /api/arrhythmia-analysis/edf-file:
    post:
      tags:
      - HeartKey Rhythm - Arrhythmia Analysis
      summary: Arrhythmia Analysis of ECG data from EDF file.
      operationId: getContinuousArrhythmiaFromEdfFile
      parameters:
      - name: study-id
        in: header
        description: must be 1-9 digits long
        required: false
        schema:
          pattern: "^\\d{1,9}$"
          type: string
          example: "123456789"
      - name: study-type
        in: header
        description: The Study Type must be one of the specified values
        required: false
        schema:
          type: string
          example: holter-24h
          enum:
            - holter-24h
            - holter-48h
            - holter-72h
            - extended-holter-3-7d
            - extended-holter-8-14d
            - MCT
            - event-monitor
            - other
      requestBody:
        content:
          multipart/form-data:
            schema:
              required:
              - file
              type: object
              properties:
                file:
                  type: string
                  description: The EDF file to upload
                  format: binary
                config:
                  type: object
                  properties:
                    hardwareConfig:
                      $ref: '#/components/schemas/HardwareConfig'
                    dataFormat:
                      type: string
                      description: "Informs the library whether to treat provided EKG samples as millivolts, counts or unknowns."
                      enum:
                        - MILLIVOLTS
                        - COUNTS
                        - UNKNOWN
                    ecgChannelName:
                      maxLength: 16
                      minLength: 0
                      pattern: "[ -~]+"
                      type: string
                      description: "Location of EKG signal within the EDF(+) file. A default value of \"ECG\" will be assumed if not provided."
                    responseIndexFormat:
                      type: string
                      description: "The desired format of the timestamp/duration response outputs from the algorithm."
                      enum:
                        - TIME
                        - SAMPLES
                        - BOTH
                    responseTimeIndexUnit:
                      type: string
                      description: "The desired unit of the timestamp response outputs from the algorithm. Required when a time format is specified"
                      enum:
                        - MILLISECONDS
                        - UTC
                    recordingStartTime:
                      type: string
                      description: "The starting time to which all response timestamp outputs from the algorithm will be calculated in relation to. Required when a Coordinated Universal Time format is specified"
                      format: date-time
                    bradycardiaThreshold:
                      type: integer
                      description: "Threshold for defining bradycardia. Limited to 30, 35, 40, 45, 50, 55, 60"
                      format: int32
                    tachycardiaThreshold:
                      type: integer
                      description: "Threshold for defining tachycardia. Limited to 100, 110, 120, 130, 140, 150"
                      format: int32
                    absolutePauseThreshold:
                      type: number
                      description: "Threshold for defining absolute pause. Limited to 1.5, 2, 2.5, 3, 3.5, 4, 4.5"
                      format: double
                    relativePauseThreshold:
                      type: integer
                      description: "Threshold for defining relative pause. Limited to 150, 175, 200"
                      format: int32
                  description: Configuration Settings
            encoding:
              config:
                contentType: application/json
      responses:
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                Constraint Violation:
                  description: Constraint Violation
                  value:
                    status: Bad Request
                    timestamp: 2024-06-11T10:00:00Z
                    message: Constraint Violations
                    errors:
                      "1": Raw Data Samples are Required
                      "2": Sampling Frequency is Required
                Missing Request Part:
                  description: Missing Request Part
                  value:
                    status: Bad Request
                    timestamp: 2024-06-11T10:00:00Z
                    message: Missing Servlet Request Part
                    errors:
                      cause: Required part 'file' is not present.
                Max File Size Exception:
                  description: Max File Size Exception
                  value:
                    status: Bad Request
                    timestamp: 2024-06-11T10:00:00Z
                    message: "Max Request Size Exceeded. Max size: 500MB"
                Illegal Argument Exception:
                  description: Illegal Argument Exception
                  value:
                    status: Bad Request
                    timestamp: 2024-06-11T10:00:00Z
                    message: A method has been passed an inappropriate argument
                    errors:
                      cause: Illegal Argument
        "500":
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                Processing Exception:
                  description: Processing Exception
                  value:
                    status: Internal Server Error
                    timestamp: 2024-06-11T10:00:00Z
                    message: An error occurred during processing of the raw signal
                IO Exception:
                  description: IO Exception
                  value:
                    status: internal Server Error
                    timestamp: 2024-06-11T10:00:00Z
                    message: An internal error occurred when reading the file
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ArrhythmiaAnalysisInfo'
        "403":
          description: Forbidden
        "401":
          description: Unauthorized
        "415":
          description: Unsupported Media Type
          content:
            application/json:
              examples:
                Unsupported Media Type:
                  description: Unsupported Media Type
                  value:
                    timestamp: 2024-06-11T10:00:00Z
                    status: "415"
                    error: Unsupported Media Type
        "406":
          description: Not Acceptable
      security:
      - bearerAuth: []
  /api/arrhythmia-analysis/edf-file/webhook:
    post:
      tags:
      - HeartKey Rhythm - Arrhythmia Analysis
      summary: Arrhythmia Analysis of ECG data from EDF file and sent to webhook url.
      operationId: getContinuousArrhythmiaFromEdfFileWebhook
      parameters:
      - name: study-id
        in: header
        description: must be 1-9 digits long
        required: false
        schema:
          pattern: "^\\d{1,9}$"
          type: string
          example: "123456789"
      - name: study-type
        in: header
        description: The Study Type must be one of the specified values
        required: false
        schema:
          type: string
          example: holter-24h
          enum:
            - holter-24h
            - holter-48h
            - holter-72h
            - extended-holter-3-7d
            - extended-holter-8-14d
            - MCT
            - event-monitor
            - other
      requestBody:
        content:
          multipart/form-data:
            schema:
              required:
              - config
              - file
              type: object
              properties:
                file:
                  type: string
                  description: The EDF file to upload
                  format: binary
                config:
                  type: object
                  required:
                  - responseUrl
                  properties:
                    responseUrl:
                      type: string
                      description: "URL of the return location of the response, must be a valid\
                       \ https URL. Required for webhook endpoints"
                      example: https://example.com/return
                    hardwareConfig:
                      $ref: '#/components/schemas/HardwareConfig'
                    dataFormat:
                      type: string
                      description: "Informs the library whether to treat provided EKG samples as millivolts, counts or unknowns."
                      enum:
                        - MILLIVOLTS
                        - COUNTS
                        - UNKNOWN
                    ecgChannelName:
                      maxLength: 16
                      minLength: 0
                      pattern: "[ -~]+"
                      type: string
                      description: "Location of EKG signal within the EDF(+) file. A default value of \"ECG\" will be assumed if not provided."
                    responseIndexFormat:
                      type: string
                      description: "The desired format of the timestamp/duration response outputs from the algorithm."
                      enum:
                        - TIME
                        - SAMPLES
                        - BOTH
                    responseTimeIndexUnit:
                      type: string
                      description: "The desired unit of the timestamp response outputs from the algorithm. Required when a time format is specified"
                      enum:
                        - MILLISECONDS
                        - UTC
                    recordingStartTime:
                      type: string
                      description: "The starting time to which all response timestamp outputs from the algorithm will be calculated in relation to. Required when a Coordinated Universal Time format is specified"
                      format: date-time
                    bradycardiaThreshold:
                      type: integer
                      description: "Threshold for defining bradycardia. Limited to 30, 35, 40, 45, 50, 55, 60"
                      format: int32
                    tachycardiaThreshold:
                      type: integer
                      description: "Threshold for defining tachycardia. Limited to 100, 110, 120, 130, 140, 150"
                      format: int32
                    absolutePauseThreshold:
                      type: number
                      description: "Threshold for defining absolute pause. Limited to 1.5, 2, 2.5, 3, 3.5, 4, 4.5"
                      format: double
                    relativePauseThreshold:
                      type: integer
                      description: "Threshold for defining relative pause. Limited to 150, 175, 200"
                      format: int32
                  description: Configuration Settings
            encoding:
              config:
                contentType: application/json
      responses:
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                Constraint Violation:
                  description: Constraint Violation
                  value:
                    status: Bad Request
                    timestamp: 2024-06-11T10:00:00Z
                    message: Constraint Violations
                    errors:
                      "1": Raw Data Samples are Required
                      "2": Sampling Frequency is Required
                Missing Request Part:
                  description: Missing Request Part
                  value:
                    status: Bad Request
                    timestamp: 2024-06-11T10:00:00Z
                    message: Missing Servlet Request Part
                    errors:
                      cause: Required part 'file' is not present.
                Max File Size Exception:
                  description: Max File Size Exception
                  value:
                    status: Bad Request
                    timestamp: 2024-06-11T10:00:00Z
                    message: "Max Request Size Exceeded. Max size: 500MB"
                Illegal Argument Exception:
                  description: Illegal Argument Exception
                  value:
                    status: Bad Request
                    timestamp: 2024-06-11T10:00:00Z
                    message: A method has been passed an inappropriate argument
                    errors:
                      cause: Illegal Argument
        "500":
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                Processing Exception:
                  description: Processing Exception
                  value:
                    status: Internal Server Error
                    timestamp: 2024-06-11T10:00:00Z
                    message: An error occurred during processing of the raw signal
                IO Exception:
                  description: IO Exception
                  value:
                    status: internal Server Error
                    timestamp: 2024-06-11T10:00:00Z
                    message: An internal error occurred when reading the file
        "403":
          description: Forbidden
        "200":
          description: OK
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/AsyncAck'
        "401":
          description: Unauthorized
        "415":
          description: Unsupported Media Type
          content:
            application/json:
              examples:
                Unsupported Media Type:
                  description: Unsupported Media Type
                  value:
                    timestamp: 2024-06-11T10:00:00Z
                    status: "415"
                    error: Unsupported Media Type
        "406":
          description: Not Acceptable
      security:
      - bearerAuth: []
  /api/arrhythmia-analysis/edf-file/download:
    post:
      tags:
      - HeartKey Rhythm - Arrhythmia Analysis
      summary: Arrhythmia Analysis of ECG data from EDF file downloaded from file
        storage.
      operationId: getContinuousArrhythmiaFromEdfFileDownload
      parameters:
      - name: study-id
        in: header
        description: must be 1-9 digits long
        required: false
        schema:
          pattern: "^\\d{1,9}$"
          type: string
          example: "123456789"
      - name: study-type
        in: header
        description: The Study Type must be one of the specified values
        required: false
        schema:
          type: string
          example: holter-24h
          enum:
            - holter-24h
            - holter-48h
            - holter-72h
            - extended-holter-3-7d
            - extended-holter-8-14d
            - MCT
            - event-monitor
            - other
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RequestConfig'
        required: true
      responses:
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                Constraint Violation:
                  description: Constraint Violation
                  value:
                    status: Bad Request
                    timestamp: 2024-06-11T10:00:00Z
                    message: Constraint Violations
                    errors:
                      "1": Raw Data Samples are Required
                      "2": Sampling Frequency is Required
                Missing Request Part:
                  description: Missing Request Part
                  value:
                    status: Bad Request
                    timestamp: 2024-06-11T10:00:00Z
                    message: Missing Servlet Request Part
                    errors:
                      cause: Required part 'file' is not present.
                Max File Size Exception:
                  description: Max File Size Exception
                  value:
                    status: Bad Request
                    timestamp: 2024-06-11T10:00:00Z
                    message: "Max Request Size Exceeded. Max size: 500MB"
                Illegal Argument Exception:
                  description: Illegal Argument Exception
                  value:
                    status: Bad Request
                    timestamp: 2024-06-11T10:00:00Z
                    message: A method has been passed an inappropriate argument
                    errors:
                      cause: Illegal Argument
        "500":
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                Processing Exception:
                  description: Processing Exception
                  value:
                    status: Internal Server Error
                    timestamp: 2024-06-11T10:00:00Z
                    message: An error occurred during processing of the raw signal
                IO Exception:
                  description: IO Exception
                  value:
                    status: internal Server Error
                    timestamp: 2024-06-11T10:00:00Z
                    message: An internal error occurred when reading the file
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ArrhythmiaAnalysisInfo'
        "403":
          description: Forbidden
        "401":
          description: Unauthorized
        "415":
          description: Unsupported Media Type
          content:
            application/json:
              examples:
                Unsupported Media Type:
                  description: Unsupported Media Type
                  value:
                    timestamp: 2024-06-11T10:00:00Z
                    status: "415"
                    error: Unsupported Media Type
        "406":
          description: Not Acceptable
      security:
      - bearerAuth: []
  /api/arrhythmia-analysis/edf-file/download/webhook:
    post:
      tags:
      - HeartKey Rhythm - Arrhythmia Analysis
      summary: Arrhythmia Analysis of ECG data from EDF file downloaded from file
        storage and sent to webhook url.
      operationId: getContinuousArrhythmiaFromEdfFileWebhookDownload
      parameters:
      - name: study-id
        in: header
        description: must be 1-9 digits long
        required: false
        schema:
          pattern: "^\\d{1,9}$"
          type: string
          example: "123456789"
      - name: study-type
        in: header
        description: The Study Type must be one of the specified values
        required: false
        schema:
          type: string
          example: holter-24h
          enum:
            - holter-24h
            - holter-48h
            - holter-72h
            - extended-holter-3-7d
            - extended-holter-8-14d
            - MCT
            - event-monitor
            - other
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RequestConfig'
        required: true
      responses:
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                Constraint Violation:
                  description: Constraint Violation
                  value:
                    status: Bad Request
                    timestamp: 2024-06-11T10:00:00Z
                    message: Constraint Violations
                    errors:
                      "1": Raw Data Samples are Required
                      "2": Sampling Frequency is Required
                Missing Request Part:
                  description: Missing Request Part
                  value:
                    status: Bad Request
                    timestamp: 2024-06-11T10:00:00Z
                    message: Missing Servlet Request Part
                    errors:
                      cause: Required part 'file' is not present.
                Max File Size Exception:
                  description: Max File Size Exception
                  value:
                    status: Bad Request
                    timestamp: 2024-06-11T10:00:00Z
                    message: "Max Request Size Exceeded. Max size: 500MB"
                Illegal Argument Exception:
                  description: Illegal Argument Exception
                  value:
                    status: Bad Request
                    timestamp: 2024-06-11T10:00:00Z
                    message: A method has been passed an inappropriate argument
                    errors:
                      cause: Illegal Argument
        "500":
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                Processing Exception:
                  description: Processing Exception
                  value:
                    status: Internal Server Error
                    timestamp: 2024-06-11T10:00:00Z
                    message: An error occurred during processing of the raw signal
                IO Exception:
                  description: IO Exception
                  value:
                    status: internal Server Error
                    timestamp: 2024-06-11T10:00:00Z
                    message: An internal error occurred when reading the file
        "403":
          description: Forbidden
        "200":
          description: OK
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/AsyncAck'
        "401":
          description: Unauthorized
        "415":
          description: Unsupported Media Type
          content:
            application/json:
              examples:
                Unsupported Media Type:
                  description: Unsupported Media Type
                  value:
                    timestamp: 2024-06-11T10:00:00Z
                    status: "415"
                    error: Unsupported Media Type
        "406":
          description: Not Acceptable
      security:
      - bearerAuth: []
  /api/arrhythmia-analysis/ecg-file:
    post:
      tags:
      - HeartKey Rhythm - Arrhythmia Analysis
      summary: Arrhythmia Analysis of ECG data from ECG file.
      operationId: getContinuousArrhythmiaFromEcgFile
      parameters:
      - name: study-id
        in: header
        description: must be 1-9 digits long
        required: false
        schema:
          pattern: "^\\d{1,9}$"
          type: string
          example: "123456789"
      - name: study-type
        in: header
        description: The Study Type must be one of the specified values
        required: false
        schema:
          type: string
          example: holter-24h
          enum:
            - holter-24h
            - holter-48h
            - holter-72h
            - extended-holter-3-7d
            - extended-holter-8-14d
            - MCT
            - event-monitor
            - other
      requestBody:
        content:
          multipart/form-data:
            schema:
              required:
              - file
              type: object
              properties:
                file:
                  type: string
                  description: The ECG file to upload
                  format: binary
                config:
                  type: object
                  properties:
                    hardwareConfig:
                      $ref: '#/components/schemas/HardwareConfig'
                    dataFormat:
                      type: string
                      description: "Informs the library whether to treat provided EKG samples as millivolts, counts or unknowns."
                      enum:
                        - MILLIVOLTS
                        - COUNTS
                        - UNKNOWN
                    responseIndexFormat:
                      type: string
                      description: "The desired format of the timestamp/duration response outputs from the algorithm."
                      enum:
                        - TIME
                        - SAMPLES
                        - BOTH
                    responseTimeIndexUnit:
                      type: string
                      description: "The desired unit of the timestamp response outputs from the algorithm. Required when a time format is specified"
                      enum:
                        - MILLISECONDS
                        - UTC
                    recordingStartTime:
                      type: string
                      description: "The starting time to which all response timestamp outputs from the algorithm will be calculated in relation to. Required when a Coordinated Universal Time format is specified"
                      format: date-time
                    bradycardiaThreshold:
                      type: integer
                      description: "Threshold for defining bradycardia. Limited to 30, 35, 40, 45, 50, 55, 60"
                      format: int32
                    tachycardiaThreshold:
                      type: integer
                      description: "Threshold for defining tachycardia. Limited to 100, 110, 120, 130, 140, 150"
                      format: int32
                    absolutePauseThreshold:
                      type: number
                      description: "Threshold for defining absolute pause. Limited to 1.5, 2, 2.5, 3, 3.5, 4, 4.5"
                      format: double
                    relativePauseThreshold:
                      type: integer
                      description: "Threshold for defining relative pause. Limited to 150, 175, 200"
                      format: int32
                  description: Configuration Settings
            encoding:
              config:
                contentType: application/json
      responses:
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                Constraint Violation:
                  description: Constraint Violation
                  value:
                    status: Bad Request
                    timestamp: 2024-06-11T10:00:00Z
                    message: Constraint Violations
                    errors:
                      "1": Raw Data Samples are Required
                      "2": Sampling Frequency is Required
                Missing Request Part:
                  description: Missing Request Part
                  value:
                    status: Bad Request
                    timestamp: 2024-06-11T10:00:00Z
                    message: Missing Servlet Request Part
                    errors:
                      cause: Required part 'file' is not present.
                Max File Size Exception:
                  description: Max File Size Exception
                  value:
                    status: Bad Request
                    timestamp: 2024-06-11T10:00:00Z
                    message: "Max Request Size Exceeded. Max size: 500MB"
                Illegal Argument Exception:
                  description: Illegal Argument Exception
                  value:
                    status: Bad Request
                    timestamp: 2024-06-11T10:00:00Z
                    message: A method has been passed an inappropriate argument
                    errors:
                      cause: Illegal Argument
        "500":
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                Processing Exception:
                  description: Processing Exception
                  value:
                    status: Internal Server Error
                    timestamp: 2024-06-11T10:00:00Z
                    message: An error occurred during processing of the raw signal
                IO Exception:
                  description: IO Exception
                  value:
                    status: internal Server Error
                    timestamp: 2024-06-11T10:00:00Z
                    message: An internal error occurred when reading the file
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ArrhythmiaAnalysisInfo'
        "403":
          description: Forbidden
        "401":
          description: Unauthorized
        "415":
          description: Unsupported Media Type
          content:
            application/json:
              examples:
                Unsupported Media Type:
                  description: Unsupported Media Type
                  value:
                    timestamp: 2024-06-11T10:00:00Z
                    status: "415"
                    error: Unsupported Media Type
        "406":
          description: Not Acceptable
      security:
      - bearerAuth: []
  /api/arrhythmia-analysis/ecg-file/webhook:
    post:
      tags:
      - HeartKey Rhythm - Arrhythmia Analysis
      summary: Arrhythmia Analysis of ECG data from ECG file and sent to webhook url.
      operationId: getContinuousArrhythmiaFromEcgFileWebhook
      parameters:
      - name: study-id
        in: header
        description: must be 1-9 digits long
        required: false
        schema:
          pattern: "^\\d{1,9}$"
          type: string
          example: "123456789"
      - name: study-type
        in: header
        description: The Study Type must be one of the specified values
        required: false
        schema:
          type: string
          example: holter-24h
          enum:
            - holter-24h
            - holter-48h
            - holter-72h
            - extended-holter-3-7d
            - extended-holter-8-14d
            - MCT
            - event-monitor
            - other
      requestBody:
        content:
          multipart/form-data:
            schema:
              required:
              - config
              - file
              type: object
              properties:
                file:
                  type: string
                  description: The ECG file to upload
                  format: binary
                config:
                  type: object
                  required:
                  - responseUrl
                  properties:
                    responseUrl:
                      type: string
                      description: "URL of the return location of the response, must be a valid\
                        \ https URL. Required for webhook endpoints"
                      example: https://example.com/return
                    hardwareConfig:
                      $ref: '#/components/schemas/HardwareConfig'
                    dataFormat:
                      type: string
                      description: "Informs the library whether to treat provided EKG samples as millivolts, counts or unknowns."
                      enum:
                        - MILLIVOLTS
                        - COUNTS
                        - UNKNOWN
                    responseIndexFormat:
                      type: string
                      description: "The desired format of the timestamp/duration response outputs from the algorithm."
                      enum:
                        - TIME
                        - SAMPLES
                        - BOTH
                    responseTimeIndexUnit:
                      type: string
                      description: "The desired unit of the timestamp response outputs from the algorithm. Required when a time format is specified"
                      enum:
                        - MILLISECONDS
                        - UTC
                    recordingStartTime:
                      type: string
                      description: "The starting time to which all response timestamp outputs from the algorithm will be calculated in relation to. Required when a Coordinated Universal Time format is specified"
                      format: date-time
                    bradycardiaThreshold:
                      type: integer
                      description: "Threshold for defining bradycardia. Limited to 30, 35, 40, 45, 50, 55, 60"
                      format: int32
                    tachycardiaThreshold:
                      type: integer
                      description: "Threshold for defining tachycardia. Limited to 100, 110, 120, 130, 140, 150"
                      format: int32
                    absolutePauseThreshold:
                      type: number
                      description: "Threshold for defining absolute pause. Limited to 1.5, 2, 2.5, 3, 3.5, 4, 4.5"
                      format: double
                    relativePauseThreshold:
                      type: integer
                      description: "Threshold for defining relative pause. Limited to 150, 175, 200"
                      format: int32
                  description: Configuration Settings
            encoding:
              config:
                contentType: application/json
      responses:
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                Constraint Violation:
                  description: Constraint Violation
                  value:
                    status: Bad Request
                    timestamp: 2024-06-11T10:00:00Z
                    message: Constraint Violations
                    errors:
                      "1": Raw Data Samples are Required
                      "2": Sampling Frequency is Required
                Missing Request Part:
                  description: Missing Request Part
                  value:
                    status: Bad Request
                    timestamp: 2024-06-11T10:00:00Z
                    message: Missing Servlet Request Part
                    errors:
                      cause: Required part 'file' is not present.
                Max File Size Exception:
                  description: Max File Size Exception
                  value:
                    status: Bad Request
                    timestamp: 2024-06-11T10:00:00Z
                    message: "Max Request Size Exceeded. Max size: 500MB"
                Illegal Argument Exception:
                  description: Illegal Argument Exception
                  value:
                    status: Bad Request
                    timestamp: 2024-06-11T10:00:00Z
                    message: A method has been passed an inappropriate argument
                    errors:
                      cause: Illegal Argument
        "500":
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                Processing Exception:
                  description: Processing Exception
                  value:
                    status: Internal Server Error
                    timestamp: 2024-06-11T10:00:00Z
                    message: An error occurred during processing of the raw signal
                IO Exception:
                  description: IO Exception
                  value:
                    status: internal Server Error
                    timestamp: 2024-06-11T10:00:00Z
                    message: An internal error occurred when reading the file
        "403":
          description: Forbidden
        "200":
          description: OK
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/AsyncAck'
        "401":
          description: Unauthorized
        "415":
          description: Unsupported Media Type
          content:
            application/json:
              examples:
                Unsupported Media Type:
                  description: Unsupported Media Type
                  value:
                    timestamp: 2024-06-11T10:00:00Z
                    status: "415"
                    error: Unsupported Media Type
        "406":
          description: Not Acceptable
      security:
      - bearerAuth: []
  /api/arrhythmia-analysis/ecg-file/download:
    post:
      tags:
      - HeartKey Rhythm - Arrhythmia Analysis
      summary: Arrhythmia Analysis of ECG data from ECG file downloaded from file
        storage.
      operationId: getContinuousArrhythmiaFromEcgFileDownload
      parameters:
      - name: study-id
        in: header
        description: must be 1-9 digits long
        required: false
        schema:
          pattern: "^\\d{1,9}$"
          type: string
          example: "123456789"
      - name: study-type
        in: header
        description: The Study Type must be one of the specified values
        required: false
        schema:
          type: string
          example: holter-24h
          enum:
            - holter-24h
            - holter-48h
            - holter-72h
            - extended-holter-3-7d
            - extended-holter-8-14d
            - MCT
            - event-monitor
            - other
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RequestConfig'
        required: true
      responses:
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                Constraint Violation:
                  description: Constraint Violation
                  value:
                    status: Bad Request
                    timestamp: 2024-06-11T10:00:00Z
                    message: Constraint Violations
                    errors:
                      "1": Raw Data Samples are Required
                      "2": Sampling Frequency is Required
                Missing Request Part:
                  description: Missing Request Part
                  value:
                    status: Bad Request
                    timestamp: 2024-06-11T10:00:00Z
                    message: Missing Servlet Request Part
                    errors:
                      cause: Required part 'file' is not present.
                Max File Size Exception:
                  description: Max File Size Exception
                  value:
                    status: Bad Request
                    timestamp: 2024-06-11T10:00:00Z
                    message: "Max Request Size Exceeded. Max size: 500MB"
                Illegal Argument Exception:
                  description: Illegal Argument Exception
                  value:
                    status: Bad Request
                    timestamp: 2024-06-11T10:00:00Z
                    message: A method has been passed an inappropriate argument
                    errors:
                      cause: Illegal Argument
        "500":
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                Processing Exception:
                  description: Processing Exception
                  value:
                    status: Internal Server Error
                    timestamp: 2024-06-11T10:00:00Z
                    message: An error occurred during processing of the raw signal
                IO Exception:
                  description: IO Exception
                  value:
                    status: internal Server Error
                    timestamp: 2024-06-11T10:00:00Z
                    message: An internal error occurred when reading the file
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ArrhythmiaAnalysisInfo'
        "403":
          description: Forbidden
        "401":
          description: Unauthorized
        "415":
          description: Unsupported Media Type
          content:
            application/json:
              examples:
                Unsupported Media Type:
                  description: Unsupported Media Type
                  value:
                    timestamp: 2024-06-11T10:00:00Z
                    status: "415"
                    error: Unsupported Media Type
        "406":
          description: Not Acceptable
      security:
      - bearerAuth: []
  /api/arrhythmia-analysis/ecg-file/download/webhook:
    post:
      tags:
      - HeartKey Rhythm - Arrhythmia Analysis
      summary: Arrhythmia Analysis of ECG data from ECG file downloaded from file
        storage and sent to webhook url.
      operationId: getContinuousArrhythmiaFromEcgFileWebhookDownload
      parameters:
      - name: study-id
        in: header
        description: must be 1-9 digits long
        required: false
        schema:
          pattern: "^\\d{1,9}$"
          type: string
          example: "123456789"
      - name: study-type
        in: header
        description: The Study Type must be one of the specified values
        required: false
        schema:
          type: string
          example: holter-24h
          enum:
            - holter-24h
            - holter-48h
            - holter-72h
            - extended-holter-3-7d
            - extended-holter-8-14d
            - MCT
            - event-monitor
            - other
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RequestConfig'
        required: true
      responses:
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                Constraint Violation:
                  description: Constraint Violation
                  value:
                    status: Bad Request
                    timestamp: 2024-06-11T10:00:00Z
                    message: Constraint Violations
                    errors:
                      "1": Raw Data Samples are Required
                      "2": Sampling Frequency is Required
                Missing Request Part:
                  description: Missing Request Part
                  value:
                    status: Bad Request
                    timestamp: 2024-06-11T10:00:00Z
                    message: Missing Servlet Request Part
                    errors:
                      cause: Required part 'file' is not present.
                Max File Size Exception:
                  description: Max File Size Exception
                  value:
                    status: Bad Request
                    timestamp: 2024-06-11T10:00:00Z
                    message: "Max Request Size Exceeded. Max size: 500MB"
                Illegal Argument Exception:
                  description: Illegal Argument Exception
                  value:
                    status: Bad Request
                    timestamp: 2024-06-11T10:00:00Z
                    message: A method has been passed an inappropriate argument
                    errors:
                      cause: Illegal Argument
        "500":
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                Processing Exception:
                  description: Processing Exception
                  value:
                    status: Internal Server Error
                    timestamp: 2024-06-11T10:00:00Z
                    message: An error occurred during processing of the raw signal
                IO Exception:
                  description: IO Exception
                  value:
                    status: internal Server Error
                    timestamp: 2024-06-11T10:00:00Z
                    message: An internal error occurred when reading the file
        "403":
          description: Forbidden
        "200":
          description: OK
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/AsyncAck'
        "401":
          description: Unauthorized
        "415":
          description: Unsupported Media Type
          content:
            application/json:
              examples:
                Unsupported Media Type:
                  description: Unsupported Media Type
                  value:
                    timestamp: 2024-06-11T10:00:00Z
                    status: "415"
                    error: Unsupported Media Type
        "406":
          description: Not Acceptable
      security:
      - bearerAuth: []
  /api/arrhythmia-analysis/csv-file:
    post:
      tags:
      - HeartKey Rhythm - Arrhythmia Analysis
      summary: Arrhythmia Analysis of ECG data from CSV file.
      operationId: getContinuousArrhythmiaFromCsvFile
      parameters:
      - name: study-id
        in: header
        description: must be 1-9 digits long
        required: false
        schema:
          pattern: "^\\d{1,9}$"
          type: string
          example: "123456789"
      - name: study-type
        in: header
        description: The Study Type must be one of the specified values
        required: false
        schema:
          type: string
          example: holter-24h
          enum:
            - holter-24h
            - holter-48h
            - holter-72h
            - extended-holter-3-7d
            - extended-holter-8-14d
            - MCT
            - event-monitor
            - other
      requestBody:
        content:
          multipart/form-data:
            schema:
              required:
              - config
              - file
              type: object
              properties:
                file:
                  type: string
                  description: The CSV file to upload
                  format: binary
                config:
                  type: object
                  required:
                    - hardwareConfig
                    - hasHeaders
                  properties:
                    returnFormat:
                      type: integer
                      description: "Whether the algorithm output should be returned in the response JSON format or in the same file format as the request input EKG file. 0 for JSON, 1 for same file format"
                      format: int32
                      example: 0
                    hardwareConfig:
                      $ref: '#/components/schemas/HardwareConfig'
                    dataFormat:
                      type: string
                      description: "Informs the library whether to treat provided EKG samples as millivolts, counts or unknowns."
                      enum:
                        - MILLIVOLTS
                        - COUNTS
                        - UNKNOWN
                    ecgColumnIndex:
                      type: integer
                      description: "The index of the column in the CSV file that contains ECG data for processing. Column numbering begins at 0."
                      format: int32
                    leadsOnColumnIndex:
                      type: integer
                      description: "The index of the column in the CSV file that contains leads-on data for processing. Column numbering begins at 0."
                      format: int32
                    hasHeaders:
                      type: boolean
                      description: "Whether the CSV file for processing has a header row "
                    responseIndexFormat:
                      type: string
                      description: "The desired format of the timestamp/duration response outputs from the algorithm."
                      enum:
                        - TIME
                        - SAMPLES
                        - BOTH
                    responseTimeIndexUnit:
                      type: string
                      description: "The desired unit of the timestamp response outputs from the algorithm. Required when a time format is specified"
                      enum:
                        - MILLISECONDS
                        - UTC
                    recordingStartTime:
                      type: string
                      description: "The starting time to which all response timestamp outputs from the algorithm will be calculated in relation to. Required when a Coordinated Universal Time format is specified"
                      format: date-time
                    bradycardiaThreshold:
                      type: integer
                      description: "Threshold for defining bradycardia. Limited to 30, 35, 40, 45, 50, 55, 60"
                      format: int32
                    tachycardiaThreshold:
                      type: integer
                      description: "Threshold for defining tachycardia. Limited to 100, 110, 120, 130, 140, 150"
                      format: int32
                    absolutePauseThreshold:
                      type: number
                      description: "Threshold for defining absolute pause. Limited to 1.5, 2, 2.5, 3, 3.5, 4, 4.5"
                      format: double
                    relativePauseThreshold:
                      type: integer
                      description: "Threshold for defining relative pause. Limited to 150, 175, 200"
                      format: int32
                  description: Configuration Settings
            encoding:
              config:
                contentType: application/json
      responses:
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                Constraint Violation:
                  description: Constraint Violation
                  value:
                    status: Bad Request
                    timestamp: 2024-06-11T10:00:00Z
                    message: Constraint Violations
                    errors:
                      "1": Raw Data Samples are Required
                      "2": Sampling Frequency is Required
                Missing Request Part:
                  description: Missing Request Part
                  value:
                    status: Bad Request
                    timestamp: 2024-06-11T10:00:00Z
                    message: Missing Servlet Request Part
                    errors:
                      cause: Required part 'file' is not present.
                Max File Size Exception:
                  description: Max File Size Exception
                  value:
                    status: Bad Request
                    timestamp: 2024-06-11T10:00:00Z
                    message: "Max Request Size Exceeded. Max size: 500MB"
                Illegal Argument Exception:
                  description: Illegal Argument Exception
                  value:
                    status: Bad Request
                    timestamp: 2024-06-11T10:00:00Z
                    message: A method has been passed an inappropriate argument
                    errors:
                      cause: Illegal Argument
        "500":
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                Processing Exception:
                  description: Processing Exception
                  value:
                    status: Internal Server Error
                    timestamp: 2024-06-11T10:00:00Z
                    message: An error occurred during processing of the raw signal
                IO Exception:
                  description: IO Exception
                  value:
                    status: internal Server Error
                    timestamp: 2024-06-11T10:00:00Z
                    message: An internal error occurred when reading the file
        "403":
          description: Forbidden
        "200":
          description: OK
          content:
            '*/*':
              schema:
                oneOf:
                - $ref: '#/components/schemas/ArrhythmiaAnalysisInfo'
                - $ref: '#/components/schemas/FileResponse'
        "401":
          description: Unauthorized
        "415":
          description: Unsupported Media Type
          content:
            application/json:
              examples:
                Unsupported Media Type:
                  description: Unsupported Media Type
                  value:
                    timestamp: 2024-06-11T10:00:00Z
                    status: "415"
                    error: Unsupported Media Type
        "406":
          description: Not Acceptable
      security:
      - bearerAuth: []
  /api/arrhythmia-analysis/csv-file/webhook:
    post:
      tags:
      - HeartKey Rhythm - Arrhythmia Analysis
      summary: Arrhythmia Analysis of ECG data from CSV file and sent to webhook url.
      operationId: getContinuousArrhythmiaFromCsvFileWebhook
      parameters:
      - name: study-id
        in: header
        description: must be 1-9 digits long
        required: false
        schema:
          pattern: "^\\d{1,9}$"
          type: string
          example: "123456789"
      - name: study-type
        in: header
        description: The Study Type must be one of the specified values
        required: false
        schema:
          type: string
          example: holter-24h
          enum:
            - holter-24h
            - holter-48h
            - holter-72h
            - extended-holter-3-7d
            - extended-holter-8-14d
            - MCT
            - event-monitor
            - other
      requestBody:
        content:
          multipart/form-data:
            schema:
              required:
              - config
              - file
              type: object
              properties:
                file:
                  type: string
                  description: The CSV file to upload
                  format: binary
                config:
                  type: object
                  required:
                  - responseUrl
                  - hasHeaders
                  - hardwareConfig
                  properties:
                    responseUrl:
                      type: string
                      description: "URL of the return location of the response, must be a valid\
                       \ https URL. Required for webhook endpoints"
                      example: https://example.com/return
                    returnFormat:
                      type: integer
                      description: "Whether the algorithm output should be returned in the response JSON format or in the same file format as the request input EKG file. 0 for JSON, 1 for same file format"
                      format: int32
                      example: 0
                    hardwareConfig:
                      $ref: '#/components/schemas/HardwareConfig'
                    dataFormat:
                      type: string
                      description: "Informs the library whether to treat provided EKG samples as millivolts, counts or unknowns."
                      enum:
                        - MILLIVOLTS
                        - COUNTS
                        - UNKNOWN
                    ecgColumnIndex:
                      type: integer
                      description: "The index of the column in the CSV file that contains ECG data for processing. Column numbering begins at 0."
                      format: int32
                    leadsOnColumnIndex:
                      type: integer
                      description: "The index of the column in the CSV file that contains leads-on data for processing. Column numbering begins at 0."
                      format: int32
                    hasHeaders:
                      type: boolean
                      description: "Whether the CSV file for processing has a header row "
                    responseIndexFormat:
                      type: string
                      description: "The desired format of the timestamp/duration response outputs from the algorithm."
                      enum:
                        - TIME
                        - SAMPLES
                        - BOTH
                    responseTimeIndexUnit:
                      type: string
                      description: "The desired unit of the timestamp response outputs from the algorithm. Required when a time format is specified"
                      enum:
                        - MILLISECONDS
                        - UTC
                    recordingStartTime:
                      type: string
                      description: "The starting time to which all response timestamp outputs from the algorithm will be calculated in relation to. Required when a Coordinated Universal Time format is specified"
                      format: date-time
                    bradycardiaThreshold:
                      type: integer
                      description: "Threshold for defining bradycardia. Limited to 30, 35, 40, 45, 50, 55, 60"
                      format: int32
                    tachycardiaThreshold:
                      type: integer
                      description: "Threshold for defining tachycardia. Limited to 100, 110, 120, 130, 140, 150"
                      format: int32
                    absolutePauseThreshold:
                      type: number
                      description: "Threshold for defining absolute pause. Limited to 1.5, 2, 2.5, 3, 3.5, 4, 4.5"
                      format: double
                    relativePauseThreshold:
                      type: integer
                      description: "Threshold for defining relative pause. Limited to 150, 175, 200"
                      format: int32
                  description: Configuration Settings
            encoding:
              config:
                contentType: application/json
      responses:
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                Constraint Violation:
                  description: Constraint Violation
                  value:
                    status: Bad Request
                    timestamp: 2024-06-11T10:00:00Z
                    message: Constraint Violations
                    errors:
                      "1": Raw Data Samples are Required
                      "2": Sampling Frequency is Required
                Missing Request Part:
                  description: Missing Request Part
                  value:
                    status: Bad Request
                    timestamp: 2024-06-11T10:00:00Z
                    message: Missing Servlet Request Part
                    errors:
                      cause: Required part 'file' is not present.
                Max File Size Exception:
                  description: Max File Size Exception
                  value:
                    status: Bad Request
                    timestamp: 2024-06-11T10:00:00Z
                    message: "Max Request Size Exceeded. Max size: 500MB"
                Illegal Argument Exception:
                  description: Illegal Argument Exception
                  value:
                    status: Bad Request
                    timestamp: 2024-06-11T10:00:00Z
                    message: A method has been passed an inappropriate argument
                    errors:
                      cause: Illegal Argument
        "500":
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                Processing Exception:
                  description: Processing Exception
                  value:
                    status: Internal Server Error
                    timestamp: 2024-06-11T10:00:00Z
                    message: An error occurred during processing of the raw signal
                IO Exception:
                  description: IO Exception
                  value:
                    status: internal Server Error
                    timestamp: 2024-06-11T10:00:00Z
                    message: An internal error occurred when reading the file
        "403":
          description: Forbidden
        "200":
          description: OK
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/AsyncAck'
        "401":
          description: Unauthorized
        "415":
          description: Unsupported Media Type
          content:
            application/json:
              examples:
                Unsupported Media Type:
                  description: Unsupported Media Type
                  value:
                    timestamp: 2024-06-11T10:00:00Z
                    status: "415"
                    error: Unsupported Media Type
        "406":
          description: Not Acceptable
      security:
      - bearerAuth: []
  /api/arrhythmia-analysis/csv-file/download:
    post:
      tags:
      - HeartKey Rhythm - Arrhythmia Analysis
      summary: Arrhythmia Analysis of ECG data from CSV file downloaded from file
        storage.
      operationId: getContinuousArrhythmiaFromCsvFileDownload
      parameters:
      - name: study-id
        in: header
        description: must be 1-9 digits long
        required: false
        schema:
          pattern: "^\\d{1,9}$"
          type: string
          example: "123456789"
      - name: study-type
        in: header
        description: The Study Type must be one of the specified values
        required: false
        schema:
          type: string
          example: holter-24h
          enum:
            - holter-24h
            - holter-48h
            - holter-72h
            - extended-holter-3-7d
            - extended-holter-8-14d
            - MCT
            - event-monitor
            - other
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RequestConfig'
        required: true
      responses:
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                Constraint Violation:
                  description: Constraint Violation
                  value:
                    status: Bad Request
                    timestamp: 2024-06-11T10:00:00Z
                    message: Constraint Violations
                    errors:
                      "1": Raw Data Samples are Required
                      "2": Sampling Frequency is Required
                Missing Request Part:
                  description: Missing Request Part
                  value:
                    status: Bad Request
                    timestamp: 2024-06-11T10:00:00Z
                    message: Missing Servlet Request Part
                    errors:
                      cause: Required part 'file' is not present.
                Max File Size Exception:
                  description: Max File Size Exception
                  value:
                    status: Bad Request
                    timestamp: 2024-06-11T10:00:00Z
                    message: "Max Request Size Exceeded. Max size: 500MB"
                Illegal Argument Exception:
                  description: Illegal Argument Exception
                  value:
                    status: Bad Request
                    timestamp: 2024-06-11T10:00:00Z
                    message: A method has been passed an inappropriate argument
                    errors:
                      cause: Illegal Argument
        "500":
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                Processing Exception:
                  description: Processing Exception
                  value:
                    status: Internal Server Error
                    timestamp: 2024-06-11T10:00:00Z
                    message: An error occurred during processing of the raw signal
                IO Exception:
                  description: IO Exception
                  value:
                    status: internal Server Error
                    timestamp: 2024-06-11T10:00:00Z
                    message: An internal error occurred when reading the file
        "403":
          description: Forbidden
        "200":
          description: OK
          content:
            '*/*':
              schema:
                oneOf:
                - $ref: '#/components/schemas/ArrhythmiaAnalysisInfo'
                - $ref: '#/components/schemas/FileResponse'
        "401":
          description: Unauthorized
        "415":
          description: Unsupported Media Type
          content:
            application/json:
              examples:
                Unsupported Media Type:
                  description: Unsupported Media Type
                  value:
                    timestamp: 2024-06-11T10:00:00Z
                    status: "415"
                    error: Unsupported Media Type
        "406":
          description: Not Acceptable
      security:
      - bearerAuth: []
  /api/arrhythmia-analysis/csv-file/download/webhook:
    post:
      tags:
      - HeartKey Rhythm - Arrhythmia Analysis
      summary: Arrhythmia Analysis of ECG data from CSV file downloaded from file
        storage and sent to webhook url.
      operationId: getContinuousArrhythmiaFromCsvFileWebhookDownload
      parameters:
      - name: study-id
        in: header
        description: must be 1-9 digits long
        required: false
        schema:
          pattern: "^\\d{1,9}$"
          type: string
          example: "123456789"
      - name: study-type
        in: header
        description: The Study Type must be one of the specified values
        required: false
        schema:
          type: string
          example: holter-24h
          enum:
            - holter-24h
            - holter-48h
            - holter-72h
            - extended-holter-3-7d
            - extended-holter-8-14d
            - MCT
            - event-monitor
            - other
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RequestConfig'
        required: true
      responses:
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                Constraint Violation:
                  description: Constraint Violation
                  value:
                    status: Bad Request
                    timestamp: 2024-06-11T10:00:00Z
                    message: Constraint Violations
                    errors:
                      "1": Raw Data Samples are Required
                      "2": Sampling Frequency is Required
                Missing Request Part:
                  description: Missing Request Part
                  value:
                    status: Bad Request
                    timestamp: 2024-06-11T10:00:00Z
                    message: Missing Servlet Request Part
                    errors:
                      cause: Required part 'file' is not present.
                Max File Size Exception:
                  description: Max File Size Exception
                  value:
                    status: Bad Request
                    timestamp: 2024-06-11T10:00:00Z
                    message: "Max Request Size Exceeded. Max size: 500MB"
                Illegal Argument Exception:
                  description: Illegal Argument Exception
                  value:
                    status: Bad Request
                    timestamp: 2024-06-11T10:00:00Z
                    message: A method has been passed an inappropriate argument
                    errors:
                      cause: Illegal Argument
        "500":
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                Processing Exception:
                  description: Processing Exception
                  value:
                    status: Internal Server Error
                    timestamp: 2024-06-11T10:00:00Z
                    message: An error occurred during processing of the raw signal
                IO Exception:
                  description: IO Exception
                  value:
                    status: internal Server Error
                    timestamp: 2024-06-11T10:00:00Z
                    message: An internal error occurred when reading the file
        "403":
          description: Forbidden
        "200":
          description: OK
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/AsyncAck'
        "401":
          description: Unauthorized
        "415":
          description: Unsupported Media Type
          content:
            application/json:
              examples:
                Unsupported Media Type:
                  description: Unsupported Media Type
                  value:
                    timestamp: 2024-06-11T10:00:00Z
                    status: "415"
                    error: Unsupported Media Type
        "406":
          description: Not Acceptable
      security:
      - bearerAuth: []
  /api/version:
    get:
      tags:
      - version-controller
      operationId: getVersion
      parameters:
      - name: study-id
        in: header
        description: must be 1-9 digits long
        required: false
        schema:
          pattern: "^\\d{1,9}$"
          type: string
          example: "123456789"
      - name: study-type
        in: header
        description: The Study Type must be one of the specified values
        required: false
        schema:
          type: string
          example: holter-24h
          enum:
            - holter-24h
            - holter-48h
            - holter-72h
            - extended-holter-3-7d
            - extended-holter-8-14d
            - MCT
            - event-monitor
            - other
      responses:
        "400":
          description: Bad Request
          content:
            '*/*':
              schema:
                oneOf:
                - type: object
                - $ref: '#/components/schemas/ErrorResponse'
        "200":
          description: OK
          content:
            '*/*':
              schema:
                type: string
        "401":
          description: Unauthorized
      security:
        - bearerAuth: [ ]
  /:
    get:
      tags:
      - health-controller
      security: []
      operationId: getHealthCheck
      parameters:
      - name: study-id
        in: header
        description: must be 1-9 digits long
        required: false
        schema:
          pattern: "^\\d{1,9}$"
          type: string
          example: "123456789"
      - name: study-type
        in: header
        description: The Study Type must be one of the specified values
        required: false
        schema:
          type: string
          example: holter-24h
          enum:
            - holter-24h
            - holter-48h
            - holter-72h
            - extended-holter-3-7d
            - extended-holter-8-14d
            - MCT
            - event-monitor
            - other
      responses:
        "400":
          description: Bad Request
          content:
            '*/*':
              schema:
                oneOf:
                - type: object
                - $ref: '#/components/schemas/ErrorResponse'
        "200":
          description: OK
          content:
            '*/*':
              schema:
                type: string
components:
  schemas:
    ErrorResponse:
      type: object
      description: Error Response data
      properties:
        status:
          type: string
          description: Error response status code
        timestamp:
          type: string
          description: Error occurred time
        message:
          type: string
          description: Error message describing the issue
        errors:
          type: object
          description: error description
          additionalProperties:
            type: string
    HardwareConfig:
      type: object
      description: "Hardware Configuration settings"
      properties:
        ecgRangeMinUv:
          description: "The lower limit of the dynamic range relating to the input voltage at the EKG electrodes at a resolution of 1uV per bit. Required when processing data in counts, but should always be included to guarantee optimal algorithm performance"
          type: integer
          format: int32
        ecgRangeMaxUv:
          description: "The higher limit of the dynamic range relating to the input voltage at the EKG electrodes at a resolution of 1uV per bit. Required when processing data in counts, but should always be included to guarantee optimal algorithm performance"
          type: integer
          format: int32
        samplingFrequency:
          type: integer
          description: "The number of samples recorded per second at a resolution of 1Hz. Must be between 125 and 500"
          format: int32
        adcRange:
          description: "The range of signal amplitudes which the ADC can resolve at a resolution of 1 count. Required when processing data in counts"
          type: integer
          format: int64
        ecgLeadConfig:
          type: string
          description: "must be one of LEAD_II, ML_II, UNKNOWN for ArrhythmiaAnalysis. ML_I and MCL are deprecated and subject to removal in a future release."
          enum:
          - UNKNOWN
          - LEAD_I
          - LEAD_II
          - LEAD_III
          - MCL
          - ML_I
          - ML_II
          - ML_III
          - LEAD_STERNUM
    RawDataSamples:
      type: object
      description: Raw data samples for processing
      properties:
        data:
          type: array
          items:
            type: number
            format: double
          description: "Raw EKG sample data for analysis. When processing counts data, if any ECG counts samples are negative, the library will assume that all samples are signed. Otherwise, all samples will be assumed to be unsigned"
        leadsOn:
          type: array
          items:
            type: boolean
          description: "The electrode-contact status of sample readings. Recommended for optimal algorithm performance"
        dataFormat:
          type: string
          description: "Informs the library whether to treat provided EKG samples as millivolts, counts or unknowns."
          enum:
          - MILLIVOLTS
          - COUNTS
          - UNKNOWN
    RawSignal:
      required:
      - hardwareConfig
      - rawEcgSamples
      type: object
      description: "Raw Signal data containing hardware configuration data and raw ecg samples"
      properties:
        rawEcgSamples:
          $ref: '#/components/schemas/RawDataSamples'
        hardwareConfig:
          $ref: '#/components/schemas/HardwareConfig'
        responseIndexFormat:
          type: string
          description: "The desired format of the timestamp/duration response outputs from the algorithm."
          enum:
          - TIME
          - SAMPLES
          - BOTH
        responseTimeIndexUnit:
          type: string
          description: "The desired unit of the timestamp response outputs from the algorithm. Required when a time format is specified"
          enum:
          - MILLISECONDS
          - UTC
        recordingStartTime:
          type: string
          description: "The starting time to which all response timestamp outputs from the algorithm will be calculated in relation to. Required when a Coordinated Universal Time format is specified"
          format: date-time
        bradycardiaThreshold:
          type: integer
          description: "Threshold for defining bradycardia. Limited to 30, 35, 40, 45, 50, 55, 60"
          format: int32
        tachycardiaThreshold:
          type: integer
          description: "Threshold for defining tachycardia. Limited to 100, 110, 120, 130, 140, 150"
          format: int32
        absolutePauseThreshold:
          type: number
          description: "Threshold for defining absolute pause. Limited to 1.5, 2, 2.5, 3, 3.5, 4, 4.5"
          format: double
        relativePauseThreshold:
          type: integer
          description: "Threshold for defining relative pause. Limited to 150, 175, 200"
          format: int32
    ArrhythmiaAnalysisConfig:
      type: object
      description: Arrhythmia Analysis configuration settings
      properties:
        bradycardiaThreshold:
          type: integer
          description: "Threshold for defining bradycardia. Limited to 30, 35, 40, 45, 50, 55, 60"
          format: int32
        tachycardiaThreshold:
          type: integer
          description: "Threshold for defining tachycardia. Limited to 100, 110, 120, 130, 140, 150"
          format: int32
        absolutePauseThreshold:
          type: number
          description: "Threshold for defining absolute pause. Limited to 1.5, 2, 2.5, 3, 3.5, 4, 4.5"
          format: double
        relativePauseThreshold:
          type: integer
          description: "Threshold for defining relative pause. Limited to 150, 175, 200"
          format: int32
    ArrhythmiaAnalysisInfo:
      type: object
      properties:
        arrhythmiaClassifications:
          type: array
          description: "Response outputs related to the arrhythmia classifications"
          items:
            $ref: '#/components/schemas/RhythmClassifications'
        beatClusters:
          type: array
          description: "Response outputs related to beat clustering based on rhythm similarity"
          items:
            $ref: '#/components/schemas/RhythmClusters'
        heartRates:
          type: array
          description: "Heart Rate data"
          items:
            $ref: '#/components/schemas/HeartRates'
        rhythmBurdens:
          type: object
          description: "Rhythm burdens mapped by classification type"
          properties:
            INCONCLUSIVE:
              type: number
              format: double
              description: "Rhythm Burdens for INCONCLUSIVE Type"
              example: 0.05
            NORMAL:
              type: number
              format: double
              description: "Rhythm Burdens for NORMAL Type"
              example: 0.5
            ATRIAL_FIBRILLATION:
              type: number
              format: double
              description: "Rhythm Burdens for ATRIAL_FIBRILLATION Type"
              example: 0.1
            BRADYCARDIA:
              type: number
              format: double
              description: "Rhythm Burdens for BRADYCARDIA Type"
              example: 0.05
            TACHYCARDIA:
              type: number
              format: double
              description: "Rhythm Burdens for TACHYCARDIA Type"
              example: 0.1
            PAUSE:
              type: number
              format: double
              description: "Rhythm Burdens for PAUSE Type"
              example: 0.01
            UNREADABLE:
              type: number
              format: double
              description: "Rhythm Burdens for UNREADABLE Type"
              example: 0.01
          additionalProperties: false
          example:
            INCONCLUSIVE: 0.05
            NORMAL: 0.5
            ATRIAL_FIBRILLATION: 0.1
            BRADYCARDIA: 0.05
            TACHYCARDIA: 0.1
            PAUSE: 0.01
            UNREADABLE: 0.01
        beatBurdens:
          type: object
          description: Beat burdens mapped by beat classification type
          properties:
            Q:
              type: number
              format: double
              description: Burden for Q type
              example: 0.4
            N:
              type: number
              format: double
              description: Burden for N type
              example: 0.2
            V:
              type: number
              format: double
              description: Burden for V type
              example: 0.1
            S:
              type: number
              format: double
              description: Burden for S type
              example: 0.05
            F:
              type: number
              format: double
              description: Burden for F type
              example: 0.05
          additionalProperties: false
          example:
            Q: 0.4
            N: 0.2
            V: 0.1
            S: 0.05
            F: 0.05
        ectopicBeatBurdens:
          type: object
          description: "Ectopic beat burdens mapped by beat type"
          properties:
            ISOLATED_PVC:
              $ref: '#/components/schemas/EctopicBeatStatistics'
          additionalProperties: false
          example:
            ISOLATED_PVC:
              total: 10
              burden: 0.5
        arrhythmiaAnalysisConfig:
          $ref: '#/components/schemas/ArrhythmiaAnalysisConfig'
        heartRateTrend:
          $ref: '#/components/schemas/HeartRateTrend'
      description: Arrhythmia Analysis Information
    ArrhythmiaHeartRateMetrics:
      type: object
      description: Min , Max and Average Heart Rate Metrics
      properties:
        min:
          type: number
          description: Minimum heart rate in this arrhythmia classification window
          format: double
        max:
          type: number
          description: Maximum heart rate in this arrhythmia classification window
          format: double
        avg:
          type: number
          description: Average heart rate in this arrhythmia classification window
          format: double
    BeatClusterLevel:
      type: object
      description: Beat Cluster level outputs containing number of beats and cluster data
      properties:
        template:
          type: array
          description: Averaged heart beat template of the beat cluster level
          items:
            type: number
            format: double
        numberOfBeats:
          type: integer
          description: Number of beats within the beat cluster level
          format: int32
        numberOfClusters:
          type: integer
          description: Number of clusters within the beat cluster level
          format: int32
    BeatLevel:
      type: object
      description: Response outputs related to the beat level generated from clustering
      properties:
        beatClassification:
          type: string
          description: Beat Level Classification
          enum:
          - Q
          - N
          - V
          - S
          - F
        beatClusterIndex:
          type: integer
          description: Beat cluster index position
          format: int32
        rpeakLocationSampleIndices:
          type: array
          description: Position of R peak locations expressed as a sample number
          items:
            type: integer
            format: int32
        rpeakLocationTimestampsUTC:
          type: array
          description: Position of R peak locations expressed in Coordinate Universal Time (UTC)
          items:
            type: string
            format: date-time
        rpeakLocationTimestampsMs:
          type: array
          description: Position of R peak location expressed as a time value since library initialisation
          items:
            type: integer
            format: int32
    EctopicBeatStatistics:
      type: object
      properties:
        total:
          type: number
          description: The total number of ectopic beats relating to a specific beat annotation
          format: double
        burden:
          type: number
          description: The burden of ectopic beats relating to a specific beat annotation
          format: double
      description: Ectopic Beat Statistics
      example:
        ISOLATED_PVC:
          total: 10
          burden: 0.5
    HeartRateTrend:
      type: object
      description: Metrics containing min, max and average heart rate data
      properties:
        min:
          type: integer
          description: Overall minimum heart rate
          format: int32
        max:
          type: integer
          description: Overall maximum heart rate
          format: int32
        average:
          type: number
          description: Overall average heart rate
          format: double
    HeartRates:
      type: object
      description: Heart rate Metrics
      properties:
        heartRate:
          type: integer
          description: Heart rate
          format: int32
        sampleIndex:
          type: integer
          description: Sample position index of heart rate output
          format: int32
        timestampMs:
          type: integer
          description: Time of heart rate output since library initialisation
          format: int32
        timestampUTC:
          type: string
          description: Time of heart rate output expressed in Coordinate Universal Time (UTC)
          format: date-time
        displayStatus:
          type: string
          description: Heart Rate Display Status
          enum:
          - DO_NOT_DISPLAY
          - ESTIMATED
          - ACCURATE
    RhythmClassifications:
      type: object
      description: Response outputs related to the arrhythmia classifications
      properties:
        arrClassification:
          type: string
          description: Arrhythmia Classification
          enum:
          - INCONCLUSIVE
          - NORMAL
          - ATRIAL_FIBRILLATION
          - BRADYCARDIA
          - TACHYCARDIA
          - PAUSE
          - UNREADABLE
        durationSamples:
          type: integer
          description: Duration of the analysed ECG segment expressed as a sample number
          format: int32
        durationTime:
          type: integer
          description: Duration of the analysed ECG segment expressed as a time value
          format: int32
        startSample:
          type: integer
          description: The start position index of the analysed ECG segment
          format: int32
        endSample:
          type: integer
          description: The end position index of the analysed ECG segment
          format: int32
        startTimestampMs:
          type: integer
          description: The start position of the analysed ECG segment expressed as a time value since library initialisation
          format: int32
        endTimestampMs:
          type: integer
          description: The end position of the analysed ECG segment expressed as a time value since library initialisation
          format: int32
        startTimestampUTC:
          type: string
          description: The start position of the analysed segment denoted in Coordinate Universal Time (UTC)
          format: date-time
        endTimestampUTC:
          type: string
          description: The end position of the analysed segment denoted in Coordinate Universal Time (UTC)
          format: date-time
        heartRateMetrics:
          $ref: '#/components/schemas/ArrhythmiaHeartRateMetrics'
        beatCount:
          type: integer
          description: Number of beats captured in the analysed ECG segment
          format: int32
    RhythmClusters:
      type: object
      description: Response outputs related to beat clustering based on rhythm similarity
      properties:
        beatLevel:
          $ref: '#/components/schemas/BeatLevel'
        beatClusterLevel:
          $ref: '#/components/schemas/BeatClusterLevel'
    ProcessedDataSamples:
      type: object
      description: "Response outputs containing processed values and leads on data"
      properties:
        processedValues:
          type: array
          description: "Filtered ECG sample values"
          items:
            type: number
            format: double
        leadsOn:
          type: array
          description: "The electrode-contact status of sample readings"
          items:
            type: boolean
    ProcessedSignal:
      type: object
      description: "Response outputs containing processed samples, valid R peak location and sampling frequency"
      properties:
        processedDataSamples:
          $ref: '#/components/schemas/ProcessedDataSamples'
        validRPeakLocs:
          type: array
          description: "The position index of R peaks within the ECG input samples"
          items:
            type: integer
            format: int32
        samplingFrequency:
          type: integer
          description: "The sampling frequency of the processed data"
          format: int32
    SPEResponse:
      type: object
      description: "Signal processing engine response outputs"
      properties:
        processedSignal:
          $ref: '#/components/schemas/ProcessedSignal'
        sigQualityInfo:
          $ref: '#/components/schemas/SigQualityInfo'
        processedFile:
          type: string
          description: "The response represented as a Base64 encoded string. Only populated when the \"returnFormat\" request parameter evaluates to true"
          format: byte
    SigQualityInfo:
      type: object
      description: "Signal Quality response containing signal quality ratings"
      properties:
        sigQualityRatings:
          type: array
          description: "Contains data relating to signal quality"
          items:
            $ref: '#/components/schemas/SigQualityRatingSummary'
        burdens:
          type: object
          description:  "burdens mapped by signal quality"
          example:
            LOW: 30
            HIGH: 70
          properties:
            LOW:
              type: number
              description: Burden for signal quality LOW
              format: double
              example: 30.0
            HIGH:
              type: number
              description: Burden for signal quality HIGH
              format: double
              example: 70.0
    SigQualityRatingSummary:
      type: object
      description: Signal Quality Rating summary
      properties:
        startSample:
          type: integer
          description: "The start position index of the analysed ECG window"
          format: int32
        endSample:
          type: integer
          description: "The end position index of the analysed ECG window"
          format: int32
        durationSamples:
          type: integer
          description: "Duration of the analysed ECG window expressed as a sample number"
          format: int32
        startTimestampMs:
          type: integer
          description: "The start position of the analysed ECG window expressed as a time value since library initialisation"
          format: int32
        endTimestampMs:
          type: integer
          description: "The end position of the analysed ECG window expressed as a time value since library initialisation"
          format: int32
        durationTime:
          type: integer
          description: "Duration of the analysed ECG window expressed as a time value"
          format: int32
        startTimestampUTC:
          type: string
          description: "The start position of the analysed ECG segment denoted in Coordinate Universal Time (UTC)"
          format: date-time
        endTimestampUTC:
          type: string
          description: "The end position of the analysed ECG segment denoted in Coordinate Universal Time (UTC)"
          format: date-time
        sigQualityRating:
          type: string
          description: "Signal Quality Rating"
          enum:
          - LOW
          - HIGH
    RequestConfig:
      required:
      - fileUrl
      - hardwareConfig
      - hasHeaders
      - responseUrl
      type: object
      properties:
        fileUrl:
          type: string
          description: "URL pointing to an ECG, CSV or EDF(+) file for downloading and processing, must be a valid https URL. Required for download endpoints"
          example: https://example.com/ecg.edf
        responseUrl:
          type: string
          description: "URL of the return location of the response, must be a valid\
            \ https URL. Required for webhook endpoints"
          example: https://example.com/return
        returnFormat:
          type: integer
          description: "Whether the algorithm output should be returned in the response JSON format or in the same file format as the request input EKG file. 0 for JSON, 1 for same file format"
          format: int32
          example: 0
        hardwareConfig:
          $ref: '#/components/schemas/HardwareConfig'
        dataFormat:
          type: string
          description: "Informs the library whether to treat provided EKG samples as millivolts, counts or unknowns."
          enum:
          - MILLIVOLTS
          - COUNTS
          - UNKNOWN
        ecgColumnIndex:
          type: integer
          description: "The index of the column in the CSV file that contains ECG data for processing. Column numbering begins at 0."
          format: int32
        leadsOnColumnIndex:
          type: integer
          description: "The index of the column in the CSV file that contains leads-on data for processing. Column numbering begins at 0."
          format: int32
        hasHeaders:
          type: boolean
          description: "Whether the CSV file for processing has a header row "
        ecgChannelName:
          maxLength: 16
          minLength: 0
          pattern: "[ -~]+"
          type: string
          description: "Location of EKG signal within the EDF(+) file. A default value of \"ECG\" will be assumed if not provided."
        responseIndexFormat:
          type: string
          description: "The desired format of the timestamp/duration response outputs from the algorithm."
          enum:
          - TIME
          - SAMPLES
          - BOTH
        responseTimeIndexUnit:
          type: string
          description: "The desired unit of the timestamp response outputs from the algorithm. Required when a time format is specified"
          enum:
          - MILLISECONDS
          - UTC
        recordingStartTime:
          type: string
          description: "The starting time to which all response timestamp outputs from the algorithm will be calculated in relation to. Required when a Coordinated Universal Time format is specified"
          format: date-time
        bradycardiaThreshold:
          type: integer
          description: "Threshold for defining bradycardia. Limited to 30, 35, 40, 45, 50, 55, 60"
          format: int32
        tachycardiaThreshold:
          type: integer
          description: "Threshold for defining tachycardia. Limited to 100, 110, 120, 130, 140, 150"
          format: int32
        absolutePauseThreshold:
          type: number
          description: "Threshold for defining absolute pause. Limited to 1.5, 2, 2.5, 3, 3.5, 4, 4.5"
          format: double
        relativePauseThreshold:
          type: integer
          description: "Threshold for defining relative pause. Limited to 150, 175, 200"
          format: int32
      description: Configuration Settings
    AsyncAck:
      type: object
      description: Asynchronous Request Id for webhook API
      properties:
        requestId:
          type: string
          description: "Request Id"
    FileResponse:
      type: object
      description: File Response output data
      properties:
        fileType:
          type: string
          description: "The file type"
          enum:
          - ECG
          - EDF
          - CSV
        returnedFile:
          type: string
          description: "Returned processed File"
          format: byte
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
