---
openapi: 3.0.3
components:
  securitySchemes:
    APIKEY:
      type: apiKey
      description: Backend apiKey security schema
      name: APIKEY
      in: header
      scheme: APIKEY
  schemas:
    ApplicationId:
      type: object
      properties:
        application_id:
          type: string
    CommandDataLora:
      type: object
      properties:
        commandMagicNum:
          type: string
        ledOptions:
          $ref: "#/components/schemas/LedOptions"
        type:
          format: int32
          type: integer
    ConfigurationLora:
      type: object
      properties:
        baseInterval:
          format: int32
          type: integer
        transmissionMultiplier:
          format: int32
          type: integer
        sensorConfiguration:
          type: array
          items:
            $ref: "#/components/schemas/SensorConfigurationLora"
    DataPointLora:
      type: object
      properties:
        index:
          format: int64
          type: integer
        temperature:
          format: float
          type: number
        voltage:
          format: float
          type: number
        humidity:
          format: float
          type: number
        voltageDrop:
          format: float
          type: number
        temperatures:
          type: array
          items:
            format: float
            type: number
        marker:
          $ref: "#/components/schemas/LoraMarker"
        markers:
          type: array
          items:
            $ref: "#/components/schemas/LoraMarker"
        lastMarker:
          $ref: "#/components/schemas/LoraMarker"
        timestamp:
          format: int64
          type: integer
        airCounterDownlink:
          format: int32
          type: integer
        airCounterUplink:
          format: int32
          type: integer
        event:
          $ref: "#/components/schemas/LoraEventType"
    DataRate:
      type: object
      properties:
        lora:
          $ref: "#/components/schemas/Lora"
    DataType:
      enum:
      - TEMPERATURE
      - RELATIVE_HUMIDITY
      - DOOR
      - POSITION
      - RSSI
      - SNR
      - MESSAGE_ID
      - TEMPERATURE_MEASUREMENT_TIMESTAMP
      - LOCATION_LATITUDE
      - LOCATION_LONGITUDE
      - IS_HISTORICAL
      - TEMPERATURE_PREDICTED
      - IS_RESET_DEVICE
      - IS_INVALID
      - GATEWAY_NUMBER
      - RSSI_2
      - GATEWAY_NUMBER_2
      - HISTORIC_READOUT_IN_PROGRESS
      - BATTERY_VOLTAGE
      - BATTERY_VOLTAGE_DROP
      - MARKER
      - INTERNAL_EVENT_TIMESTAMP
      - AIR_COUNTER_DOWNLINK
      - AIR_COUNTER_UPLINK
      - BATTERY_LEVEL
      - RSSI_3
      - GATEWAY_NUMBER_3
      - BUTTON_EVENT
      - ACCELERATION
      - LIGHT
      - LOGGER_ERROR
      - GATEWAY_TYPE
      - GATEWAY_TYPE_2
      - GATEWAY_TYPE_3
      type: string
    DecodedPayload:
      type: object
      properties:
        messageType:
          format: int32
          type: integer
        messageTypeText:
          type: string
        rawData:
          type: string
        configuration:
          $ref: "#/components/schemas/ConfigurationLora"
        range:
          $ref: "#/components/schemas/DownlinkEventMessageIndexRange"
        serverTime:
          format: int64
          type: integer
        ts:
          format: int64
          type: integer
        amount:
          format: int32
          type: integer
        commandData:
          $ref: "#/components/schemas/CommandDataLora"
        sensorData:
          type: array
          items:
            $ref: "#/components/schemas/SensorDataLora"
        eventData:
          type: array
          items:
            $ref: "#/components/schemas/EventDataLora"
        lastEvents:
          type: array
          items:
            $ref: "#/components/schemas/LastEventLora"
        fuotaChunkRequest:
          $ref: "#/components/schemas/LoraFuotaChunkRequestDto"
        fuotaStatusUpdate:
          $ref: "#/components/schemas/LoraFuotaStatusUpdateDto"
        fuotaChunkData:
          $ref: "#/components/schemas/LoraFuotaChunkPayloadDto"
        fuotaInitiationData:
          $ref: "#/components/schemas/LoraFuotaInitDto"
        requestData:
          $ref: "#/components/schemas/LoraInformationRequestData"
    DeviceSensorMeasurementsData:
      type: object
      properties:
        dataId:
          $ref: "#/components/schemas/UUID"
        deviceType:
          format: int32
          type: integer
        devicePosition:
          format: int32
          type: integer
        deviceNumber:
          format: int64
          type: integer
        messageId:
          format: int64
          type: integer
        gatewayNumber:
          type: string
        measuredTime:
          $ref: "#/components/schemas/LocalDateTime"
        measuredTimeStandardized:
          $ref: "#/components/schemas/LocalDateTime"
        measurements:
          type: object
          additionalProperties:
            format: double
            type: number
        insertTime:
          $ref: "#/components/schemas/LocalDateTime"
    DeviceType:
      enum:
      - SKYCELL
      - CARTASENSE_M
      - CARTASENSE
      - MR_810T
      - CL_BUTTERFLY
      - SKYCELL_SAVY_BLE
      - CL_TT_7100
      - MR_812P
      - MR_813
      - LIBERO_GL
      - MR_814
      - MR_815
      - CL_FRIGGA_V5_PLUS
      - MR_816
      - MR_811
      type: string
    DownlinkEventMessageIndexRange:
      type: object
      properties:
        sensorType:
          format: int16
          type: integer
        startIndex:
          format: int32
          type: integer
        endIndex:
          format: int32
          type: integer
    DownlinkHistory:
      type: object
      properties:
        downlinkHistory:
          type: array
          items:
            $ref: "#/components/schemas/DownlinkHistoryBody"
        commandHistory:
          type: array
          items:
            $ref: "#/components/schemas/LoggerCommand"
    DownlinkHistoryBody:
      type: object
      properties:
        fPort:
          format: int32
          type: integer
        time:
          $ref: "#/components/schemas/LocalDateTime"
        decodedPayload:
          $ref: "#/components/schemas/DecodedPayload"
        loggerNumber:
          type: string
    DuplicateMessagesResponseDto:
      type: object
      properties:
        duplicatedMessages:
          type: object
          additionalProperties:
            uniqueItems: true
            type: array
            items:
              $ref: "#/components/schemas/DeviceSensorMeasurementsData"
        toDelete:
          type: array
          items:
            $ref: "#/components/schemas/DeviceSensorMeasurementsData"
    ElproData:
      type: object
      properties:
        timeStamp:
          $ref: "#/components/schemas/OffsetDateTime"
        typeName:
          type: string
        previousState:
          type: string
        newState:
          type: string
        historyType:
          type: string
        deviationType:
          type: string
        reason:
          type: string
        value:
          format: double
          type: number
        latitude:
          format: double
          type: number
        longitude:
          format: double
          type: number
        accuracy:
          format: int32
          type: integer
        unit:
          type: string
        unitType:
          type: string
        deviceId:
          type: string
        sensorId:
          type: string
    ElproMessage:
      type: object
      properties:
        type:
          type: string
        data:
          $ref: "#/components/schemas/ElproData"
    EndDeviceId:
      type: object
      properties:
        device_id:
          type: string
        application_ids:
          $ref: "#/components/schemas/ApplicationId"
        dev_eui:
          type: string
        join_eui:
          type: string
        dev_addr:
          type: string
    ErrorDto:
      type: object
      properties:
        status:
          format: int32
          type: integer
        errors:
          type: array
          items:
            $ref: "#/components/schemas/ErrorInfo"
    ErrorInfo:
      type: object
      properties:
        message:
          type: string
        messageDetails:
          type: string
        field:
          type: string
        fields:
          type: array
          items:
            type: string
        code:
          $ref: "#/components/schemas/SkycellErrorCode"
        traceId:
          type: string
    EventDataLora:
      type: object
      properties:
        amount:
          format: int32
          type: integer
        isLogged:
          format: int32
          type: integer
        transmitTime:
          format: int64
          type: integer
        type:
          format: int32
          type: integer
        typeText:
          type: string
        eventPoints:
          type: array
          items:
            $ref: "#/components/schemas/DataPointLora"
    FriggaBLEMode:
      enum:
      - "OFF"
      - PREDEFINED_LOGGERS
      - PROXIMITY_LOGGERS
      type: string
    FriggaConfigurationDto:
      type: object
      properties:
        deviceIds:
          type: array
          items:
            type: string
        sys:
          $ref: "#/components/schemas/FriggaSys"
    FriggaDataDto:
      type: object
      properties:
        time:
          format: int64
          type: integer
        lbstime:
          format: int64
          type: integer
        t:
          format: int32
          type: integer
        h:
          format: int32
          type: integer
        vol:
          format: int32
          type: integer
        batteryVoltage:
          format: int32
          type: integer
        lnglat:
          type: string
        batteryState:
          format: int32
          type: integer
        temperature:
          format: int32
          type: integer
        humidity:
          format: int32
          type: integer
        light:
          format: int32
          type: integer
        shock:
          format: int32
          type: integer
        acceleration:
          $ref: "#/components/schemas/FriggaDirectionalDto"
        tilt:
          $ref: "#/components/schemas/FriggaDirectionalDto"
    FriggaDirectionalDto:
      type: object
      properties:
        x:
          format: int32
          type: integer
        "y":
          format: int32
          type: integer
        z:
          format: int32
          type: integer
    FriggaEventBodyDto:
      type: object
      properties:
        type:
          type: string
        details:
          $ref: "#/components/schemas/FriggaEventDetailsDto"
    FriggaEventConfigurationDto:
      type: object
      properties:
        configUpdatedAt:
          $ref: "#/components/schemas/LocalDateTime"
        bleUpdatedAt:
          $ref: "#/components/schemas/LocalDateTime"
        bleMode:
          format: int32
          type: integer
        reportingInterval:
          format: int32
          type: integer
    FriggaEventDetailsDto:
      type: object
      properties:
        time:
          $ref: "#/components/schemas/LocalDateTime"
    FriggaEventMessageDto:
      type: object
      properties:
        loggerNumber:
          type: string
        event:
          $ref: "#/components/schemas/FriggaEventBodyDto"
        configuration:
          $ref: "#/components/schemas/FriggaEventConfigurationDto"
    FriggaMessageDto:
      type: object
      properties:
        deviceId:
          type: string
        type:
          format: int16
          type: integer
        uid:
          type: string
        data:
          type: array
          items:
            $ref: "#/components/schemas/FriggaDataDto"
    FriggaResponseBaseDto:
      type: object
      properties:
        code:
          format: int32
          type: integer
        errorCode:
          format: int32
          type: integer
        message:
          type: string
    FriggaResponseEventDto:
      type: object
      properties:
        events:
          type: array
          items:
            $ref: "#/components/schemas/FriggaEventMessageDto"
    FriggaStatusDto:
      type: object
      properties:
        deviceId:
          type: string
        params:
          $ref: "#/components/schemas/FriggaStatusParams"
        shipmentId:
          type: string
        working:
          format: int32
          type: integer
        batteryPercent:
          format: int32
          type: integer
        flightMode:
          $ref: "#/components/schemas/FriggaStatusFlightMode"
        temperatureAlerted:
          format: int32
          type: integer
        humidityAlerted:
          format: int32
          type: integer
        lastHumiture:
          $ref: "#/components/schemas/FriggaStatusLastHumiture"
        lastLocation:
          $ref: "#/components/schemas/FriggaStatusLastLocation"
    FriggaStatusFlightMode:
      type: object
      properties:
        state:
          format: int32
          type: integer
        time:
          format: int64
          type: integer
    FriggaStatusLastHumiture:
      type: object
      properties:
        time:
          format: int64
          type: integer
        t0:
          format: int32
          type: integer
        t1:
          format: int32
          type: integer
        h0:
          format: int32
          type: integer
        h1:
          format: int32
          type: integer
    FriggaStatusLastLocation:
      type: object
      properties:
        lnglat:
          type: string
        desc:
          type: string
    FriggaStatusParams:
      type: object
      properties:
        recordingInterval:
          format: int32
          type: integer
        reportingInterval:
          format: int32
          type: integer
    FriggaSth:
      type: object
      properties:
        spl:
          format: int32
          type: integer
        t0u:
          format: int32
          type: integer
        t0l:
          format: int32
          type: integer
        h0u:
          format: int32
          type: integer
        h0l:
          format: int32
          type: integer
    FriggaSys:
      type: object
      properties:
        sth:
          $ref: "#/components/schemas/FriggaSth"
        spl:
          format: int32
          type: integer
        timeZone:
          format: int32
          type: integer
        pdfInvl:
          format: int32
          type: integer
    GatewayConnectionStatus:
      enum:
      - DISCONNECTED
      - CONNECTED
      type: string
    GatewayId:
      type: object
      properties:
        gateway_id:
          type: string
        eui:
          type: string
        gatewayType:
          $ref: "#/components/schemas/GatewayType"
    GatewayLogsDto:
      type: object
      properties:
        gatewayNumber:
          type: string
        logLevel:
          $ref: "#/components/schemas/Level"
        gatewayType:
          $ref: "#/components/schemas/GatewayType"
        logs:
          type: array
          items: {}
    GatewayMultipleStatisticsMessageDto:
      type: object
      properties:
        gateways:
          type: array
          items:
            $ref: "#/components/schemas/GatewayStatisticsMessageDto"
    GatewayStatisticsMessageDto:
      type: object
      properties:
        gatewayNumber:
          type: string
        gatewayType:
          $ref: "#/components/schemas/GatewayType"
        connectionStatus:
          $ref: "#/components/schemas/GatewayConnectionStatus"
        connectedAt:
          $ref: "#/components/schemas/LocalDateTime"
        disconnectedAt:
          $ref: "#/components/schemas/LocalDateTime"
        measuredAt:
          $ref: "#/components/schemas/LocalDateTime"
        protocol:
          type: string
        lastStatusReceivedAt:
          $ref: "#/components/schemas/LocalDateTime"
        lastStatusTime:
          $ref: "#/components/schemas/LocalDateTime"
        ips:
          type: array
          items:
            type: string
        metrics:
          type: object
          additionalProperties:
            format: float
            type: number
        lastUplinkReceivedAt:
          $ref: "#/components/schemas/LocalDateTime"
        uplinkCount:
          format: int32
          type: integer
        lastDownlinkReceivedAt:
          $ref: "#/components/schemas/LocalDateTime"
        downlinkCount:
          format: int32
          type: integer
        lastTxAcknowledgmentReceivedAt:
          $ref: "#/components/schemas/LocalDateTime"
        txAcknowledgmentCount:
          format: int32
          type: integer
        roundTripTimesMin:
          format: double
          type: number
        roundTripTimesMax:
          format: double
          type: number
        roundTripTimesMedian:
          format: double
          type: number
        roundTripTimesCount:
          format: int32
          type: integer
        channelPacketCounts:
          type: object
          additionalProperties:
            type: number
        channelAverageLoraRssi:
          type: object
          additionalProperties:
            type: number
        channelUtilization:
          type: object
          additionalProperties:
            type: number
        connectionEvents:
          type: object
          additionalProperties:
            type: array
            items:
              format: date-time
              type: string
              example: 2022-03-10T12:15:50
        rtt:
          type: object
          additionalProperties:
            type: number
        subBands:
          type: array
          items:
            $ref: "#/components/schemas/GatewaySubBandMessageOutDto"
        uptime:
          format: double
          type: number
    GatewaySubBandMessageOutDto:
      type: object
      properties:
        minFrequency:
          type: string
        maxFrequency:
          type: string
        downlinkUtilizationLimit:
          format: int32
          type: integer
        downlinkUtilization:
          format: double
          type: number
    GatewayType:
      enum:
      - LORA_MIROMICO
      - SKY_READER
      - FRIGGA
      type: string
    LastEventLora:
      type: object
      properties:
        lastIndex:
          format: int64
          type: integer
        transmitTime:
          format: int64
          type: integer
        isLogged:
          format: int32
          type: integer
        type:
          format: int32
          type: integer
        typeText:
          type: string
    LedOptions:
      type: object
      properties:
        blinkTimeOn:
          format: int32
          type: integer
        color:
          type: string
        duration:
          format: int32
          type: integer
        frequency:
          format: int32
          type: integer
    LedStatus:
      enum:
      - BLINK_RED
      - BLINK_GREEN
      - BLINK_WHITE
      type: string
    Level:
      enum:
      - ERROR
      - WARN
      - INFO
      - DEBUG
      - TRACE
      type: string
    LocalDateTime:
      format: date-time
      type: string
      example: 2022-03-10T12:15:50
    Location:
      type: object
      properties:
        user:
          $ref: "#/components/schemas/LocationUser"
    LocationUser:
      type: object
      properties:
        latitude:
          format: double
          type: number
        longitude:
          format: double
          type: number
        altitude:
          format: int64
          type: integer
        source:
          type: string
    LoggerCommand:
      type: object
      properties:
        deviceType:
          format: int32
          type: integer
        loggerNumber:
          type: string
        command:
          $ref: "#/components/schemas/LoggerCommandType"
        ledStatus:
          $ref: "#/components/schemas/LedStatus"
        type:
          format: int32
          type: integer
        confirmed:
          type: boolean
        createdOn:
          $ref: "#/components/schemas/LocalDateTime"
    LoggerCommandDto:
      type: object
      properties:
        loggerType:
          $ref: "#/components/schemas/DeviceType"
        loggerNumber:
          type: string
        command:
          $ref: "#/components/schemas/LoggerCommandType"
        ledStatus:
          $ref: "#/components/schemas/LedStatus"
        type:
          format: int32
          type: integer
    LoggerCommandResultDto:
      type: object
      properties:
        commands:
          type: array
          items:
            $ref: "#/components/schemas/LoggerCommandDto"
    LoggerCommandType:
      enum:
      - SET_LED_STATUS
      - UNKNOWN
      type: string
    LoggerStatus:
      enum:
      - ACTIVE
      - OFFLINE
      - STAND_BY
      - FIRMWARE_UPDATE_IN_PROGRESS
      type: string
    LoggerType:
      enum:
      - CARTASENSE
      - CARTASENSE_M
      - SKYCELL_SAVY_BLE
      - MR_810T
      - MR_811
      - MR_812P
      - MR_813
      - MR_814
      - MR_815
      - MR_816
      - CL_TT_7100
      - CL_BUTTERFLY
      - LIBERO_GL
      - CL_FRIGGA_V5_PLUS
      - SKYCELL
      type: string
    Lora:
      type: object
      properties:
        bandwidth:
          format: int64
          type: integer
        spreading_factor:
          format: int32
          type: integer
    LoraConfigurationDto:
      required:
      - loggerNumber
      type: object
      properties:
        loggerNumber:
          type: string
        loggerStatus:
          $ref: "#/components/schemas/LoggerStatus"
        loggerType:
          $ref: "#/components/schemas/DeviceType"
        firmwareVersion:
          type: string
        baseInterval:
          format: int32
          type: integer
        lastLoggerStatusChangedOn:
          $ref: "#/components/schemas/LocalDateTime"
        lastLoggerActivationOn:
          $ref: "#/components/schemas/LocalDateTime"
        configuration:
          $ref: "#/components/schemas/ConfigurationLora"
        historicReadoutDisabled:
          type: boolean
        lastMessageIdBySensorCode:
          type: object
          additionalProperties:
            format: int64
            type: integer
        lastMeasuredTimeBySensorCode:
          type: object
          additionalProperties:
            format: date-time
            type: string
            example: 2022-03-10T12:15:50
        lastValueBySensorCodeAndDataType:
          type: object
          additionalProperties:
            type: object
            additionalProperties:
              format: double
              type: number
        lastEventMessageIdBySensorCode:
          type: object
          additionalProperties:
            format: int64
            type: integer
        lastEventTransmitTimeIdBySensorCode:
          type: object
          additionalProperties:
            format: int64
            type: integer
        lastLoggerStatusChangedInDays:
          format: double
          type: number
        lastLoggerActivationInDays:
          format: double
          type: number
    LoraCreateOrUpdateNewFirmwareReleaseDto:
      required:
      - compatibleVersion
      - newVersion
      - loggerType
      - binaryUrl
      - crcPatch
      - crcApplication
      - size
      type: object
      properties:
        compatibleVersion:
          pattern: \S
          type: string
        newVersion:
          pattern: \S
          type: string
        loggerType:
          $ref: "#/components/schemas/LoggerType"
        name:
          type: string
        description:
          type: string
        identifier:
          type: string
        binaryUrl:
          pattern: ""
          type: string
        crcPatch:
          format: int64
          type: integer
        crcApplication:
          format: int64
          type: integer
        size:
          format: int64
          type: integer
    LoraEventType:
      enum:
      - OPEN
      - CLOSED
      - PRESSED
      - UNKNOWN
      type: string
    LoraFirmwareReleaseDto:
      type: object
      properties:
        id:
          type: string
        compatibleVersion:
          type: string
        newVersion:
          type: string
        loggerType:
          $ref: "#/components/schemas/LoggerType"
        name:
          type: string
        description:
          type: string
        identifier:
          type: string
        binaryUrl:
          type: string
        crcPatch:
          format: int64
          type: integer
        crcApplication:
          format: int64
          type: integer
        size:
          format: int64
          type: integer
    LoraFirmwareReleaseResultDto:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: "#/components/schemas/LoraFirmwareReleaseDto"
    LoraFuotaChunkPayloadDto:
      type: object
      properties:
        chunkId:
          format: int32
          type: integer
        chunkSizeInBytes:
          format: int32
          type: integer
        payload:
          type: string
    LoraFuotaChunkRequestDto:
      type: object
      properties:
        chunkStart:
          format: int32
          type: integer
        chunkEnd:
          format: int32
          type: integer
    LoraFuotaInitDto:
      type: object
      properties:
        newFirmwareVersion:
          type: string
        size:
          format: int64
          type: integer
        chunksAmount:
          format: int32
          type: integer
        chunkSize:
          format: int32
          type: integer
        crcPatch:
          format: int64
          type: integer
        crcApplication:
          format: int64
          type: integer
    LoraFuotaStatus:
      enum:
      - PENDING
      - IN_PROGRESS
      - FAILED
      - CANCELLED
      - COMPLETED
      type: string
    LoraFuotaStatusCode:
      enum:
      - DISTRIBUTION_COMPLETED
      - UPDATE_COMPLETED
      - DENIED_LOW_MEMORY
      - DISTRIBUTION_FAILED_INVALID_PATCH_CRC
      - DISTRIBUTION_FAILED_TIMEOUT
      - UPDATE_FAILED_APPLICATION_TOO_LARGE
      - UPDATE_FAILED_PATCH_FILE_ERROR
      - UPDATE_FAILED_INPLACE_PATCH_LIMIT
      - UPDATE_FAILED_INVALID_APPLICATION_CRC
      - CANCELLED
      - UNKNOWN
      type: string
    LoraFuotaStatusDto:
      type: object
      properties:
        id:
          type: string
        loggerNumber:
          type: string
        loggerType:
          $ref: "#/components/schemas/LoggerType"
        createdOn:
          $ref: "#/components/schemas/LocalDateTime"
        startedOn:
          $ref: "#/components/schemas/LocalDateTime"
        finishedOn:
          $ref: "#/components/schemas/LocalDateTime"
        status:
          $ref: "#/components/schemas/LoraFuotaStatus"
        code:
          $ref: "#/components/schemas/LoraFuotaStatusCode"
        firmwareReleaseId:
          type: string
    LoraFuotaStatusUpdateDto:
      type: object
      properties:
        newFirmwareVersion:
          type: string
        status:
          $ref: "#/components/schemas/LoraFuotaStatus"
        code:
          $ref: "#/components/schemas/LoraFuotaStatusCode"
    LoraFuotaStatusUpdateFieldsDto:
      type: object
      properties:
        startedOn:
          $ref: "#/components/schemas/LocalDateTime"
        createdOn:
          $ref: "#/components/schemas/LocalDateTime"
        status:
          $ref: "#/components/schemas/LoraFuotaStatus"
        unsetStatus:
          type: boolean
        code:
          $ref: "#/components/schemas/LoraFuotaStatusCode"
        unsetCode:
          type: boolean
    LoraInformationRequestData:
      type: object
      properties:
        type:
          format: int32
          type: integer
    LoraMarker:
      enum:
      - INVALID
      - START_UP
      - SHELF_MODE
      - FIRMWARE_UPDATE
      - INTERVAL_RECONFIGURED
      - SENSOR_DEFECTIVE
      - LOG_MEMORY_RE_INIT
      - UNKNOWN
      type: string
    LoraRawMessageResponseDataDto:
      type: object
      properties:
        loggerNumber:
          type: string
        measuredTime:
          $ref: "#/components/schemas/LocalDateTime"
        message:
          $ref: "#/components/schemas/LoraUplinkMessage"
    LoraRawMessageResponseDto:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: "#/components/schemas/LoraRawMessageResponseDataDto"
        error:
          $ref: "#/components/schemas/ErrorDto"
    LoraUplinkMessage:
      type: object
      properties:
        end_device_ids:
          $ref: "#/components/schemas/EndDeviceId"
        correlation_ids:
          type: array
          items:
            type: string
        received_at:
          $ref: "#/components/schemas/LocalDateTime"
        uplink_message:
          $ref: "#/components/schemas/UplinkMessageBody"
        simulated:
          type: boolean
    LoraUplinkRawMessage:
      type: object
      properties:
        origin:
          type: string
        originMetadata:
          $ref: "#/components/schemas/LoraUplinkRawMessageMetadata"
        data:
          type: array
          items:
            $ref: "#/components/schemas/LoraUplinkRawMessageData"
        gatewayNumber:
          type: string
        rssi:
          format: int32
          type: integer
        deviceName:
          type: string
        payload:
          type: string
        receivedAt:
          $ref: "#/components/schemas/LocalDateTime"
    LoraUplinkRawMessageData:
      type: object
      properties:
        gatewayNumber:
          type: string
        rssi:
          format: int32
          type: integer
        deviceName:
          type: string
        payload:
          type: string
        receivedAt:
          $ref: "#/components/schemas/LocalDateTime"
        originMetadata:
          $ref: "#/components/schemas/LoraUplinkRawMessageMetadata"
    LoraUplinkRawMessageMetadata:
      type: object
      properties:
        loggerNumber:
          type: string
        bindTime:
          format: int64
          type: integer
    OffsetDateTime:
      format: date-time
      type: string
      example: 2022-03-10T12:15:50-04:00
    RxMetadata:
      type: object
      properties:
        gateway_ids:
          $ref: "#/components/schemas/GatewayId"
        timestamp:
          format: int64
          type: integer
        ts:
          format: int64
          type: integer
        rssi:
          format: int32
          type: integer
        channel_rssi:
          format: int32
          type: integer
        snr:
          format: int32
          type: integer
        frequency_offset:
          type: string
        uplink_token:
          type: string
        channel_index:
          format: int32
          type: integer
        location: {}
    SensorCode:
      enum:
      - ON_BOARD_CONNECTOR
      - CONNECTOR_1
      - CONNECTOR_2
      - CONNECTOR_3
      - CONNECTOR_4
      - CONNECTOR_5
      - CONNECTOR_6
      - CONNECTOR_DOOR
      - INTEGRATED
      - BATTERY_VOLTAGE
      - ONE_WIRE_1
      - ONE_WIRE_2
      - ONE_WIRE_3
      - ONE_WIRE_4
      - ONE_WIRE_5
      - ONE_WIRE_6
      - AIR_TIME_COUNTER
      - BUTTON
      - HUMIDITY
      type: string
    SensorConfigurationLora:
      type: object
      properties:
        measurementMultiplier:
          format: int32
          type: integer
        type:
          format: int32
          type: integer
        typeText:
          type: string
    SensorDataLora:
      type: object
      properties:
        amount:
          format: int32
          type: integer
        isLogged:
          format: int32
          type: integer
        type:
          format: int32
          type: integer
        typeText:
          type: string
        dataPoints:
          type: array
          items:
            $ref: "#/components/schemas/DataPointLora"
    Setting:
      type: object
      properties:
        data_rate:
          $ref: "#/components/schemas/DataRate"
        coding_rate:
          type: string
        frequency:
          type: string
        timestamp:
          format: int64
          type: integer
        time:
          type: string
    SkycellErrorCode:
      enum:
      - DDA_0001
      - DDA_0002
      - DDA_0003
      - DDA_0004
      - DDA_0005
      - DDA_0006
      - DDA_0007
      - DDA_0008
      - DDA_0009
      - DDA_0010
      - DDA_0011
      - DDA_0012
      - DDA_0013
      - DDA_0015
      - DDA_0014
      - DDA_0016
      - DDI_0001
      - DDI_0002
      - DDI_0003
      - DDI_0004
      - DDI_0005
      - DDI_0006
      - DDI_0007
      - DDI_0008
      - DDI_0009
      - DDI_0010
      - DDI_0011
      - DDI_0012
      - DDI_0013
      - DDI_0014
      - DDD_0001
      type: string
    TiveLocation:
      type: object
      properties:
        latitude:
          format: double
          type: number
        longitude:
          format: double
          type: number
        formattedAddress:
          type: string
    TiveMessage:
      type: object
      properties:
        deviceId:
          type: string
        deviceName:
          type: string
        entryTimeEpoch:
          format: int64
          type: integer
        entryTimeUtc:
          $ref: "#/components/schemas/LocalDateTime"
        location:
          $ref: "#/components/schemas/TiveLocation"
        temperature:
          $ref: "#/components/schemas/TiveTemperature"
    TiveTemperature:
      type: object
      properties:
        celsius:
          format: double
          type: number
    UUID:
      format: uuid
      pattern: "[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}"
      type: string
    UplinkMessageBody:
      type: object
      properties:
        session_key_id:
          type: string
        f_cnt:
          format: int32
          type: integer
        f_port:
          format: int32
          type: integer
        frm_payload:
          type: string
        decoded_payload:
          $ref: "#/components/schemas/DecodedPayload"
        rx_metadata:
          type: array
          items:
            $ref: "#/components/schemas/RxMetadata"
        settings:
          $ref: "#/components/schemas/Setting"
        received_at:
          $ref: "#/components/schemas/LocalDateTime"
        confirmed:
          type: boolean
        consumed_airtime:
          type: string
        locations:
          $ref: "#/components/schemas/Location"
        network_ids: {}
        simulated:
          type: boolean
tags:
- name: Blob Storage Config
- name: Check if lora endpoint is alive
- name: Database API
- name: Database Checks
- name: Database Config
- name: Elpro SensorData
- name: Frigga
- name: Gateway Logs
- name: Gateway Statistics
- name: Itraq SensorData
- name: Logger Command
- name: Lora Configuration
- name: Lora Exceptions
- name: Lora OTA
- name: Lora SensorData
- name: Tive SensorData
paths:
  /v1/admin/lora/add-invalid:
    get:
      parameters:
      - name: deviceType
        in: query
        schema:
          allOf:
          - default: MR_810T
          - $ref: "#/components/schemas/DeviceType"
        required: true
      - name: from
        in: query
        schema:
          type: string
        required: true
      - name: loggerNumber
        in: query
        schema:
          pattern: \S
          type: string
        required: true
      - name: sensorCodes
        in: query
        schema:
          type: array
          items:
            $ref: "#/components/schemas/SensorCode"
      - name: to
        in: query
        schema:
          type: string
        required: true
      responses:
        "200":
          description: OK
      security:
      - APIKEY: []
      summary: Add Invalid Marker
      tags:
      - Lora Admin Ws
  /v1/admin/lora/recalculate-time:
    get:
      parameters:
      - name: deviceType
        in: query
        schema:
          allOf:
          - default: MR_810T
          - $ref: "#/components/schemas/DeviceType"
        required: true
      - name: from
        in: query
        schema:
          type: string
        required: true
      - name: loggerNumber
        in: query
        schema:
          pattern: \S
          type: string
        required: true
      - name: sensorCodes
        in: query
        schema:
          type: array
          items:
            $ref: "#/components/schemas/SensorCode"
      - name: storeData
        in: query
        schema:
          default: false
          type: boolean
      - name: to
        in: query
        schema:
          type: string
        required: true
      responses:
        "200":
          description: OK
      security:
      - APIKEY: []
      summary: Recalculate
      tags:
      - Lora Admin Ws
  /v1/admin/lora/remove-data-types:
    get:
      parameters:
      - name: dataTypes
        in: query
        schema:
          minItems: 1
          type: array
          items:
            $ref: "#/components/schemas/DataType"
        required: true
      - name: deviceType
        in: query
        schema:
          allOf:
          - default: MR_810T
          - $ref: "#/components/schemas/DeviceType"
        required: true
      - name: from
        in: query
        schema:
          type: string
        required: true
      - name: loggerNumber
        in: query
        schema:
          pattern: \S
          type: string
        required: true
      - name: sensorCodes
        in: query
        schema:
          type: array
          items:
            $ref: "#/components/schemas/SensorCode"
      - name: to
        in: query
        schema:
          type: string
        required: true
      responses:
        "200":
          description: OK
      security:
      - APIKEY: []
      summary: Remove Invalid Marker
      tags:
      - Lora Admin Ws
  /v1/admin/lora/remove-invalid:
    get:
      parameters:
      - name: deviceType
        in: query
        schema:
          allOf:
          - default: MR_810T
          - $ref: "#/components/schemas/DeviceType"
        required: true
      - name: from
        in: query
        schema:
          type: string
        required: true
      - name: loggerNumber
        in: query
        schema:
          pattern: \S
          type: string
        required: true
      - name: sensorCodes
        in: query
        schema:
          type: array
          items:
            $ref: "#/components/schemas/SensorCode"
      - name: to
        in: query
        schema:
          type: string
        required: true
      responses:
        "200":
          description: OK
      security:
      - APIKEY: []
      summary: Remove Invalid Marker
      tags:
      - Lora Admin Ws
  /v1/command:
    get:
      summary: Logger Read Commands By Logger
      tags:
      - Logger Command
      parameters:
      - name: loggerNumber
        in: query
        schema:
          type: string
      - name: loggerType
        in: query
        schema:
          $ref: "#/components/schemas/DeviceType"
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LoggerCommandResultDto"
      security:
      - APIKEY: []
  /v1/command/send:
    post:
      summary: Logger Command Send
      tags:
      - Logger Command
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/LoggerCommandDto"
        required: true
      responses:
        "200":
          description: OK
        "400":
          description: Bad Request
      security:
      - APIKEY: []
  /v1/database/blob-storage-disabled:
    patch:
      summary: Set blob storage disabled flag
      tags:
      - Blob Storage Config
      parameters:
      - description: "If true, blob storage will be disabled"
        required: true
        name: isDisabled
        in: query
        schema:
          default: false
          type: boolean
      responses:
        "200":
          description: OK
      security:
      - APIKEY: []
    get:
      summary: Check if blob storage is disabled
      tags:
      - Blob Storage Config
      responses:
        "200":
          description: OK
      security:
      - APIKEY: []
  /v1/database/check-duplicated:
    get:
      summary: Check for duplicated messages in the database
      tags:
      - Database Checks
      parameters:
      - description: "If true, delete the duplicated messages"
        required: false
        name: delete
        in: query
        schema:
          default: false
          type: boolean
      - name: deviceType
        in: query
        schema:
          $ref: "#/components/schemas/DeviceType"
        required: true
      - name: from
        in: query
        schema:
          pattern: \S
          type: string
        required: true
      - name: loggerNumber
        in: query
        schema:
          pattern: \S
          type: string
        required: true
      - name: sensorCode
        in: query
        schema:
          $ref: "#/components/schemas/SensorCode"
        required: true
      - name: to
        in: query
        schema:
          pattern: \S
          type: string
        required: true
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/DuplicateMessagesResponseDto"
      security:
      - APIKEY: []
  /v1/database/status:
    get:
      summary: Read status
      tags:
      - Database Config
      responses:
        "200":
          description: OK
      security:
      - APIKEY: []
  /v1/database/use-async:
    get:
      summary: Database set asynchronous method
      tags:
      - Database Config
      parameters:
      - description: "If true, the database will use asynchronous calls for data ingestion"
        name: useAsync
        in: query
        schema:
          default: false
          type: boolean
      responses:
        "200":
          description: OK
      security:
      - APIKEY: []
  /v1/elpro/push:
    post:
      summary: Elpro Sensor Data
      tags:
      - Elpro SensorData
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ElproMessage"
        required: true
      responses:
        "200":
          description: OK
        "400":
          description: Bad Request
      security:
      - APIKEY: []
  /v1/frigga/bind:
    post:
      summary: Frigga Bind
      tags:
      - Frigga
      requestBody:
        content:
          application/json:
            schema:
              type: string
        required: true
      responses:
        "200":
          description: OK
      security:
      - Authorization: []
  /v1/frigga/configuration:
    post:
      summary: Frigga Configuration Setting
      deprecated: true
      tags:
      - Frigga
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/FriggaConfigurationDto"
        required: true
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/FriggaResponseBaseDto"
        "400":
          description: Bad Request
      security:
      - Authorization: []
  /v1/frigga/event:
    post:
      summary: Frigga Event Message Creation
      tags:
      - Frigga
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/FriggaEventMessageDto"
        required: true
      responses:
        "200":
          description: OK
        "400":
          description: Bad Request
      security:
      - Authorization: []
  /v1/frigga/event/{loggerNumber}:
    get:
      summary: Frigga Event Message Read
      deprecated: true
      tags:
      - Frigga
      parameters:
      - name: loggerNumber
        in: path
        required: true
        schema:
          type: string
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/FriggaResponseEventDto"
      security:
      - Authorization: []
  /v1/frigga/push:
    post:
      summary: Frigga Event Message Creation
      tags:
      - Frigga
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/FriggaMessageDto"
        required: true
      responses:
        "200":
          description: OK
        "400":
          description: Bad Request
      security:
      - Authorization: []
  /v1/frigga/{loggerNumber}/ble-mode/{bleMode}:
    post:
      summary: Frigga Set BLE Mode
      deprecated: true
      tags:
      - Frigga
      parameters:
      - name: bleMode
        in: path
        required: true
        schema:
          $ref: "#/components/schemas/FriggaBLEMode"
      - name: loggerNumber
        in: path
        required: true
        schema:
          type: string
      - name: duration
        in: query
        schema:
          format: int32
          default: "90"
          type: integer
      - name: interval
        in: query
        schema:
          format: int32
          default: "420"
          type: integer
      - name: pairedLoggerNumbers
        in: query
        schema:
          type: array
          items:
            type: string
      - name: timeout
        in: query
        schema:
          format: int32
          default: "8400"
          type: integer
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/FriggaResponseBaseDto"
      security:
      - Authorization: []
  /v1/frigga/{loggerNumber}/event:
    get:
      summary: Frigga Event Message Read
      deprecated: true
      tags:
      - Frigga
      parameters:
      - name: loggerNumber
        in: path
        required: true
        schema:
          type: string
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/FriggaResponseEventDto"
      security:
      - Authorization: []
  /v1/frigga/{loggerNumber}/start:
    post:
      summary: Frigga Start
      deprecated: true
      tags:
      - Frigga
      parameters:
      - name: loggerNumber
        in: path
        required: true
        schema:
          type: string
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/FriggaResponseBaseDto"
      security:
      - Authorization: []
  /v1/frigga/{loggerNumber}/status:
    get:
      summary: Frigga get status
      deprecated: true
      tags:
      - Frigga
      parameters:
      - name: loggerNumber
        in: path
        required: true
        schema:
          type: string
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/FriggaStatusDto"
      security:
      - Authorization: []
  /v1/gateway/logs:
    post:
      summary: Gateway Ingestion Logs
      tags:
      - Gateway Logs
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/GatewayLogsDto"
        required: true
      responses:
        "200":
          description: OK
        "400":
          description: Bad Request
      security:
      - APIKEY: []
      - APIKEY: []
  /v1/gateway/statistics:
    post:
      summary: Gateway Statistics Creation
      tags:
      - Gateway Statistics
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/GatewayMultipleStatisticsMessageDto"
        required: true
      responses:
        "200":
          description: OK
        "400":
          description: Bad Request
      security:
      - APIKEY: []
      - APIKEY: []
  /v1/itraq/push:
    post:
      summary: Itraq Sensor Data
      tags:
      - Itraq SensorData
      requestBody:
        content:
          application/json:
            schema:
              type: string
        required: true
      responses:
        "200":
          description: OK
      security:
      - APIKEY: []
  /v1/lora/alive:
    get:
      summary: Lora Uplink Recover Missing
      tags:
      - Check if lora endpoint is alive
      responses:
        "200":
          description: OK
      security:
      - APIKEY: []
      - APIKEY: []
  /v1/lora/configuration:
    post:
      summary: Lora Create Configuration
      tags:
      - Lora Configuration
      parameters:
      - name: cleanGap
        in: query
        schema:
          default: true
          type: boolean
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/LoraConfigurationDto"
        required: true
      responses:
        "200":
          description: OK
        "400":
          description: Bad Request
      security:
      - APIKEY: []
      - APIKEY: []
  /v1/lora/configuration/{loggerNumber}:
    get:
      summary: Lora Find Configuration
      tags:
      - Lora Configuration
      parameters:
      - name: loggerNumber
        in: path
        required: true
        schema:
          type: string
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LoraConfigurationDto"
      security:
      - APIKEY: []
      - APIKEY: []
    patch:
      summary: Lora update logger type
      tags:
      - Lora Configuration
      parameters:
      - name: loggerNumber
        in: path
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/LoraConfigurationDto"
        required: true
      responses:
        "200":
          description: OK
      security:
      - APIKEY: []
      - APIKEY: []
  /v1/lora/configuration/{loggerNumber}/historic-readout/disabled:
    patch:
      summary: Lora disable historic readout
      tags:
      - Lora Configuration
      parameters:
      - name: loggerNumber
        in: path
        required: true
        schema:
          type: string
      - name: isDisabled
        in: query
        schema:
          default: false
          type: boolean
      responses:
        "200":
          description: OK
      security:
      - APIKEY: []
      - APIKEY: []
  /v1/lora/configuration/{loggerNumber}/reset:
    patch:
      summary: Lora Configuration Creation
      tags:
      - Lora SensorData
      parameters:
      - name: loggerNumber
        in: path
        required: true
        schema:
          type: string
      responses:
        "200":
          description: OK
      security:
      - APIKEY: []
  /v1/lora/configuration/{loggerType}/{loggerNumber}:
    delete:
      summary: Lora Configuration Creation
      tags:
      - Lora SensorData
      parameters:
      - name: loggerNumber
        in: path
        required: true
        schema:
          type: string
      - name: loggerType
        in: path
        required: true
        schema:
          $ref: "#/components/schemas/DeviceType"
      responses:
        "200":
          description: OK
      security:
      - APIKEY: []
  /v1/lora/exceptions:
    get:
      summary: Lora Exceptions
      tags:
      - Lora Exceptions
      responses:
        "200":
          description: OK
      security:
      - APIKEY: []
      - APIKEY: []
  /v1/lora/gaps/enable:
    get:
      parameters:
      - name: isEnable
        in: query
        schema:
          type: boolean
      responses:
        "200":
          description: OK
      security:
      - APIKEY: []
      - APIKEY: []
      summary: Enabled Find Gaps
      tags:
      - Lora Gaps Ws
  /v1/lora/gaps/historic-readout/enable:
    get:
      parameters:
      - name: isEnable
        in: query
        schema:
          type: boolean
      responses:
        "200":
          description: OK
      security:
      - APIKEY: []
      - APIKEY: []
      summary: Enabled Historic Readout
      tags:
      - Lora Gaps Ws
  /v1/lora/gaps/{loggerNumber}:
    delete:
      parameters:
      - name: loggerNumber
        in: path
        required: true
        schema:
          type: string
      - name: deviceType
        in: query
        schema:
          allOf:
          - default: MR_810T
          - $ref: "#/components/schemas/DeviceType"
      responses:
        "200":
          description: OK
      security:
      - APIKEY: []
      - APIKEY: []
      summary: Delete Ty Logger Type And Logger Number
      tags:
      - Lora Gaps Ws
  /v1/lora/gaps/{loggerNumber}/check-complete:
    get:
      parameters:
      - name: loggerNumber
        in: path
        required: true
        schema:
          type: string
      - name: deviceType
        in: query
        schema:
          allOf:
          - default: MR_810T
          - $ref: "#/components/schemas/DeviceType"
      - name: sensorCode
        in: query
        schema:
          allOf:
          - default: INTEGRATED
          - $ref: "#/components/schemas/SensorCode"
      responses:
        "200":
          description: OK
      security:
      - APIKEY: []
      - APIKEY: []
      summary: Trigger Check Complete
      tags:
      - Lora Gaps Ws
  /v1/lora/gaps/{loggerNumber}/filter:
    get:
      parameters:
      - name: loggerNumber
        in: path
        required: true
        schema:
          type: string
      - name: deviceType
        in: query
        schema:
          allOf:
          - default: MR_810T
          - $ref: "#/components/schemas/DeviceType"
      - name: from
        in: query
        schema:
          type: string
      - name: recover
        in: query
        schema:
          default: false
          type: boolean
      - name: sensorCode
        in: query
        schema:
          allOf:
          - default: INTEGRATED
          - $ref: "#/components/schemas/SensorCode"
      - name: skipCache
        in: query
        schema:
          default: "true"
          type: boolean
      - name: to
        in: query
        schema:
          type: string
      responses:
        "200":
          description: OK
      security:
      - APIKEY: []
      - APIKEY: []
      summary: Find Gaps Fiter
      tags:
      - Lora Gaps Ws
  /v1/lora/gaps/{loggerNumber}/recalculate:
    get:
      parameters:
      - name: loggerNumber
        in: path
        required: true
        schema:
          type: string
      - name: deviceType
        in: query
        schema:
          allOf:
          - default: MR_810T
          - $ref: "#/components/schemas/DeviceType"
      - name: from
        in: query
        schema:
          type: string
      - name: recover
        in: query
        schema:
          default: false
          type: boolean
      - name: sensorCode
        in: query
        schema:
          allOf:
          - default: INTEGRATED
          - $ref: "#/components/schemas/SensorCode"
      - name: skipCache
        in: query
        schema:
          default: "true"
          type: boolean
      - name: to
        in: query
        schema:
          type: string
      responses:
        "200":
          description: OK
      security:
      - APIKEY: []
      - APIKEY: []
      summary: Recalculate Gap
      tags:
      - Lora Gaps Ws
  /v1/lora/ota/firmware-release:
    post:
      summary: Lora Create New Firmware Release
      tags:
      - Lora OTA
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/LoraCreateOrUpdateNewFirmwareReleaseDto"
        required: true
      responses:
        "200":
          description: OK
        "400":
          description: Bad Request
      security:
      - APIKEY: []
      - APIKEY: []
  /v1/lora/ota/firmware-release/filter:
    get:
      summary: Lora Get Firmware Release By Filter
      tags:
      - Lora OTA
      parameters:
      - name: compatibleVersion
        in: query
        schema:
          type: string
      - name: identifier
        in: query
        schema:
          type: string
      - name: loggerType
        in: query
        schema:
          $ref: "#/components/schemas/DeviceType"
      - name: name
        in: query
        schema:
          type: string
      - name: newVersion
        in: query
        schema:
          type: string
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LoraFirmwareReleaseResultDto"
      security:
      - APIKEY: []
      - APIKEY: []
  /v1/lora/ota/firmware-release/loggers/{loggerNumber}/active:
    get:
      summary: Lora Active Firmware Update for logger
      tags:
      - Lora OTA
      parameters:
      - name: loggerNumber
        in: path
        required: true
        schema:
          type: string
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LoraFuotaStatusDto"
      security:
      - APIKEY: []
      - APIKEY: []
  /v1/lora/ota/firmware-release/loggers/{loggerNumber}/available:
    get:
      summary: Lora Get Available Updates for logger
      tags:
      - Lora OTA
      parameters:
      - name: loggerNumber
        in: path
        required: true
        schema:
          type: string
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LoraFirmwareReleaseResultDto"
      security:
      - APIKEY: []
      - APIKEY: []
  /v1/lora/ota/firmware-release/{firmwareId}/loggers/{loggerNumber}/cancel:
    delete:
      summary: Lora Cancel Firmware Update for logger
      tags:
      - Lora OTA
      parameters:
      - name: firmwareId
        in: path
        required: true
        schema:
          type: string
      - name: loggerNumber
        in: path
        required: true
        schema:
          type: string
      responses:
        "200":
          description: OK
      security:
      - APIKEY: []
      - APIKEY: []
  /v1/lora/ota/firmware-release/{firmwareId}/loggers/{loggerNumber}/check-timeout:
    get:
      summary: Lora Check Firmware Update Timeout
      tags:
      - Lora OTA
      parameters:
      - name: firmwareId
        in: path
        required: true
        schema:
          type: string
      - name: loggerNumber
        in: path
        required: true
        schema:
          type: string
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LoraFuotaStatusDto"
      security:
      - APIKEY: []
      - APIKEY: []
  /v1/lora/ota/firmware-release/{firmwareId}/loggers/{loggerNumber}/status:
    patch:
      summary: Lora Update Firmware Update Status for logger
      tags:
      - Lora OTA
      parameters:
      - name: firmwareId
        in: path
        required: true
        schema:
          type: string
      - name: loggerNumber
        in: path
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/LoraFuotaStatusUpdateFieldsDto"
        required: true
      responses:
        "200":
          description: OK
      security:
      - APIKEY: []
      - APIKEY: []
    get:
      summary: Lora Get Firmware Update Status for logger
      tags:
      - Lora OTA
      parameters:
      - name: firmwareId
        in: path
        required: true
        schema:
          type: string
      - name: loggerNumber
        in: path
        required: true
        schema:
          type: string
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LoraFuotaStatusDto"
      security:
      - APIKEY: []
      - APIKEY: []
  /v1/lora/ota/firmware-release/{id}:
    put:
      summary: Lora Update Firmware Release
      tags:
      - Lora OTA
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/LoraCreateOrUpdateNewFirmwareReleaseDto"
        required: true
      responses:
        "200":
          description: OK
        "400":
          description: Bad Request
      security:
      - APIKEY: []
      - APIKEY: []
    get:
      summary: Lora Get Firmware Release
      tags:
      - Lora OTA
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LoraFirmwareReleaseDto"
      security:
      - APIKEY: []
      - APIKEY: []
    delete:
      summary: Lora Delete Firmware Release
      tags:
      - Lora OTA
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      responses:
        "200":
          description: OK
      security:
      - APIKEY: []
      - APIKEY: []
  /v1/lora/ota/firmware-release/{id}/loggers/{loggerNumber}/start:
    get:
      summary: Lora Start Firmware Update for logger
      tags:
      - Lora OTA
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      - name: loggerNumber
        in: path
        required: true
        schema:
          type: string
      - name: skipGapsCheck
        in: query
        schema:
          default: "false"
          type: boolean
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LoraFuotaStatusDto"
      security:
      - APIKEY: []
      - APIKEY: []
  /v1/lora/uplink:
    post:
      summary: Lora Uplink Message Creation
      tags:
      - Lora SensorData
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/LoraUplinkMessage"
        required: true
      responses:
        "200":
          description: OK
        "400":
          description: Bad Request
      security:
      - APIKEY: []
      - APIKEY: []
  /v1/lora/uplink/raw:
    post:
      summary: Lora Raw Uplink Message Creation
      tags:
      - Lora SensorData
      parameters:
      - name: returnConverted
        in: query
        schema:
          default: false
          type: boolean
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/LoraUplinkRawMessage"
        required: true
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LoraRawMessageResponseDto"
        "400":
          description: Bad Request
      security:
      - APIKEY: []
      - APIKEY: []
  /v1/lora/uplink/raw/bind:
    post:
      summary: Lora Raw Uplink Message Bind
      tags:
      - Lora SensorData
      requestBody:
        content:
          application/json:
            schema:
              type: string
        required: true
      responses:
        "200":
          description: OK
      security:
      - APIKEY: []
      - APIKEY: []
  /v1/network-server/lora/downlinks/{loggerNumber}:
    get:
      summary: Get Downlinks
      tags:
      - Lora SensorData
      parameters:
      - name: loggerNumber
        in: path
        required: true
        schema:
          type: string
      - name: length
        in: query
        schema:
          format: int32
          type: integer
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/DownlinkHistory"
      security:
      - APIKEY: []
  /v1/tive/push:
    post:
      summary: Tive Message Creation
      tags:
      - Tive SensorData
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/TiveMessage"
        required: true
      responses:
        "200":
          description: OK
        "400":
          description: Bad Request
      security:
      - APIKEY: []
info:
  title: device-data-ingestion API
  version: 1.0.0-SNAPSHOT
