openapi: 3.0.3
info:
  title: ThingPark LRC to AS Tunnel API for LoRaWAN®
  description: >
    REST interface implemented by ThingPark for LRC to AS communication. This
    interface applies to LoRaWAN® devices and multicast groups.
  version: '8.0'
paths:
  /:
    post:
      tags:
        - reports
      summary: Send a report for a LoRaWAN® device or multicast group
      description: Send a report for a LoRaWAN® device or multicast group
      parameters:
        - $ref: '#/components/parameters/AS_ID'
        - $ref: '#/components/parameters/LrnDevEUI'
        - $ref: '#/components/parameters/LrnFPort'
        - $ref: '#/components/parameters/LrnInfos'
        - $ref: '#/components/parameters/Time'
        - $ref: '#/components/parameters/Token'
      requestBody:
        $ref: '#/components/requestBodies/Report'
      responses:
        '200':
          description: Operation success
        default:
          description: Operation failed
components:
  schemas:
    ReportJson:
      type: object
      oneOf:
        - $ref: '#/components/schemas/UplinkFrameReportJson'
        - $ref: '#/components/schemas/DownlinkFrameSentReportJson'
        - $ref: '#/components/schemas/MulticastSummaryReportJson'
        - $ref: '#/components/schemas/LocationReportJson'
        - $ref: '#/components/schemas/NotificationReportJson'
    ReportXml:
      type: object
      oneOf:
        - $ref: '#/components/schemas/UplinkFrameReportXml'
        - $ref: '#/components/schemas/DownlinkFrameSentReportXml'
        - $ref: '#/components/schemas/MulticastSummaryReportXml'
        - $ref: '#/components/schemas/LocationReportXml'
        - $ref: '#/components/schemas/NotificationReportXml'
    UplinkFrameReportJson:
      title: Uplink frame report
      type: object
      required:
        - DevEUI_uplink
      properties:
        DevEUI_uplink:
          type: object
          allOf:
            - $ref: '#/components/schemas/UplinkFrameReport'
            - type: object
              properties:
                BaseStationData:
                  $ref: '#/components/schemas/BaseStationDataJson'
                CustomerData:
                  $ref: '#/components/schemas/CustomerDataJson'
                DriverCfg:
                  $ref: '#/components/schemas/DriverCfgJson'
    UplinkFrameReportXml:
      title: Uplink frame report
      type: object
      allOf:
        - $ref: '#/components/schemas/UplinkFrameReport'
        - type: object
          properties:
            BaseStationData:
              $ref: '#/components/schemas/BaseStationDataXml'
            CustomerData:
              $ref: '#/components/schemas/CustomerDataXml'
            DriverCfg:
              $ref: '#/components/schemas/DriverCfgXml'
    UplinkFrameReport:
      type: object
      required:
        - Channel
        - CustomerID
        - DevAddr
        - DevEUI
        - DevLrrCnt
        - DynamicClass
        - FCntUp
        - Late
        - LostUplinksAS
        - Lrcid
        - Lrrid
        - LrrESP
        - LrrRSSI
        - LrrSNR
        - mic_hex
        - MType
        - SpFact
        - SubBand
        - Time
      properties:
        ACKbit:
          type: integer
          description: ACKBit set by the device. ACKbit is not filled in the document if
            not set in the uplink frame.
          format: int32
          minimum: 0
          maximum: 1
          example: 1
        ADRbit:
          type: integer
          description: ADRBit set by the device. ADRbit is not filled in the document if
            not set in the uplink frame.
          format: int32
          minimum: 0
          maximum: 1
          example: 1
        AFCntDn:
          type: integer
          description: |
            The applicative downlink counter to be used for the next downlink frame.

            See FCntDn field for reporting rules.

            Only applicable to LoRaWAN® 1.1 when the FPort > 0.
          format: int64
          minimum: 0
          maximum: 4294967295
          example: 11
        AppSKey:
          type: string
          description: Encrypted AppSkey with the AS transport key. AppSKey is not filled
            in the document if end-to-end encryption is not used.
          pattern: ^[0-9A-F]{32}$|^[0-9A-F]{48}$
          example: A0A1A2A3A4A5A6A7A8A9AAABACADAEAF
        AppSKeyEKLabel:
          type: string
          description: Label of the AS transport key used to encrypt the AppSKey.
          example: TWA_199980176.12070.1
        BatteryLevel:
          type: integer
          description: Battery level reported by the ReportDevStatus. BatteryLevel is only
            filled if the Connectivity Plan ReportDevStatusBattery feature flag
            is activated. When activated, the battery level is only reported
            periodically, according to the Connectivity Plan DevStatusReqFreq
            setting.
          format: int32
          minimum: 0
          maximum: 255
          example: 216
        BatteryTime:
          type: string
          description: Battery level reporting timestamp (ISO 8601). BatteryTime is only
            filled if the Connectivity Plan ReportDevStatusBattery feature flag
            is activated. When activated, the battery level is only reported
            periodically, according to the Connectivity Plan DevStatusReqFreq
            setting.
          format: date-time
          example: '2020-07-09T16:06:38.49+02:00'
        Channel:
          $ref: '#/components/schemas/Channel'
        ClassBPeriodicity:
          type: integer
          description: |
            Class B periodicity in seconds requested by the device.

            Only applicable to Class B.
          format: int32
          enum: [ 1, 2, 4, 8, 16, 32, 64, 128 ]
          example: 128
        ConfAFCntDn:
          type: integer
          description: |
            The applicative downlink counter CONFIRMED by the device for this packet.

            Only applicable to LoRaWAN® 1.1 when the uplink frame acknowledges a previous downlink frame.
          format: int64
          minimum: 0
          maximum: 4294967295
          example: 10
        CustomerID:
          $ref: '#/components/schemas/CustomerID'
        DevAddr:
          $ref: '#/components/schemas/DevAddr'
        DevEUI:
          $ref: '#/components/schemas/DevEUI'
        DevLrrCnt:
          type: integer
          description: Number of gateways and/or relays which received this packet
          format: int32
          minimum: 1
          maximum: 10
          example: 2
        DevLocTime:
          type: string
          description: Last geolocation timestamp. Only filled if the Connectivity Plan
            NwGeolocation feature flag is activated and a geolocation has been
            resolved based on previous uplink frames.
          format: date-time
          example: '2020-01-27T10:00:43.336+01:00'
        DevLAT:
          type: number
          description: Last geolocation latitude (GPS coordinate system). Only filled if
            the Connectivity Plan NwGeolocation feature flag is activated and a
            geolocation has been resolved based on previous uplink frames.
          format: float
          example: 10.11212
        DevLON:
          type: number
          description: Last geolocation longitude (GPS coordinate system). Only filled if
            the Connectivity Plan NwGeolocation feature flag is activated and a
            geolocation has been resolved based on previous uplink frames.
          format: float
          example: 7.44464
        DevAlt:
          type: number
          description: Last geolocation altitude (meter). Only filled if the Connectivity
            Plan NwGeolocation feature flag is activated, a geolocation has been
            resolved based on previous uplink frames and this information is
            available in the geolocation resolution output.
          format: float
          example: 50
        DevLocRadius:
          type: number
          description: Last geolocation horizontal tolerance (meter). Only filled if the
            Connectivity Plan NwGeolocation feature flag is activated, a
            geolocation has been resolved based on previous uplink frames and
            this information is available in the geolocation resolution output.
          format: float
          example: 100
        DevAltRadius:
          type: number
          description: Last geolocation vertical tolerance (meter). Only filled if the
            Connectivity Plan NwGeolocation feature flag is activated, a
            geolocation has been resolved based on previous uplink frames and
            this information is available in the geolocation resolution output.
          format: float
          example: 50
        DevNorthVel:
          type: number
          description: Velocity (NORTH axis) expressed in m/s. Only filled if the
            Connectivity Plan NwGeolocation feature flag is activated, a
            geolocation has been resolved based on previous uplink frames and
            this information is available in the geolocation resolution output.
          format: float
          example: 1.0
        DevEastVel:
          type: number
          description: Velocity (EAST axis) expressed in m/s. Only filled if the
            Connectivity Plan NwGeolocation feature flag is activated, a
            geolocation has been resolved based on previous uplink frames and
            this information is available in the geolocation resolution output.
          format: float
          example: 1.0
        DevLocDilution:
          type: number
          description: Horizontal DOP (dilution of precision) calculated for given mutual
            position of gateways, used for solution calculation, and device.
            Only filled if the Connectivity Plan NwGeolocation feature flag is
            activated, a geolocation has been resolved based on previous uplink
            frames and this information is available in the geolocation
            resolution output.
          format: float
          example: 10
        DevAltDilution:
          type: number
          description: Vertical DOP (dilution of precision) calculated for given mutual
            position of gateways, used for solution calculation, and device.
            Only filled if the Connectivity Plan NwGeolocation feature flag is
            activated, a geolocation has been resolved based on previous uplink
            frames and this information is available in the geolocation
            resolution output.
          format: float
          example: 0
        DevUlFCntUpUsed:
          type: integer
          description: |
            The FCntUp used for this location resolution. Only filled if the Connectivity Plan NwGeolocation feature flag is activated, a geolocation has been resolved based on previous uplink frames and this information is available in the geolocation resolution output.

            The geolocation data reported for FCntUp=N is that which was resolved from previous uplink frames (At the time of transmitting the current report for FCntUp=N, the solver is still processing FCntUp=N information). Refer to DevEUI_location report for asynchronous reporting of the geolocation associated to the current uplink frame (current FCntUp) as soon as available from the location server.
          format: int64
          minimum: 0
          maximum: 4294967295
          example: 7010
        DynamicClass:
          type: string
          description: |
            LoRaWAN® class currently used by the Device: 'A', 'B' or 'C'
          enum: [ A, B, C ]
          example: B
        FCntDn:
          type: integer
          description: |
            The downlink counter to be used for the next downlink frame.

            If the downlink queue contains at least one payload encrypted by AS:
            - The reported counter is the highest downlink counter in the downlink queue + 1
            Else:
            - The reported counter is the last downlink counter used by the LRC to transmit a downlink + 1

            Only applicable to LoRaWAN® 1.0.
          format: int64
          minimum: 0
          maximum: 4294967295
          example: 11
        FCntUp:
          type: integer
          description: The uplink counter for this packet.
          format: int64
          minimum: 0
          maximum: 4294967295
          example: 7011
        ForwardingNetID:
          $ref: '#/components/schemas/ForwardingNetID'
        ForwardingNSID:
          $ref: '#/components/schemas/ForwardingNSID'
        FPort:
          type: integer
          description: LoRaWAN® FPort used by the device for this packet. Only set if
            present in the uplink packet.
          format: int32
          minimum: 0
          maximum: 225
          example: 2
        Frequency:
          $ref: '#/components/schemas/Frequency'
        InstantPER:
          type: number
          description: |
            Instantaneous PER (Packet Error Rate). InstantPER is only filled if the Connectivity Plan AddPERInfo feature flag is activated.

            The instantaneous PER is computed over the 2 last distinct uplink frames as follows:
            - InstantPER = 1 – [ 2 / (FCntUp(N)  - FCntUp(N-1)  + 1)], where:
              - FCntUp(N) is the FCntUp of the last uplink frame
              - FCntUp(N-1) is the FCntUp of the previous uplink frame (excluding repetitions)
            - Example: If the two last received uplink frames have FCntUp 33 and 36, then InstantPER = 1 - [2/(36-33+1)] = 0.5 = 50% (because frames 34 & 35 were missing, so 4 frames expected but only 2 frames received).
            - A device reset/rejoin resets the InstantPER to 0
          format: float
          minimum: 0
          exclusiveMaximum: true
          example: 0.02
          maximum: 1
        Late:
          type: integer
          description: Indicates if the packet was queued by the gateway. Late is always
            filled. 0 means that the packet was not queued by the gateway, 1
            means that the packet was queued (the gateway queues packets when
            the connection between the gateway and the LRC is temporarily out of
            service).
          format: int32
          minimum: 0
          maximum: 1
          example: 0
        LostUplinksAS:
          type: integer
          description: |
            Number of uplink frames lost since the reporting of the previous uplink frame for the same device:
            - When >0: some uplink frames have been lost and the field provides the number of those uplink frames
            - When 0: no uplink frames have been lost
            - When <0: some lost uplink frames have been received late and the field provides the negative number of those uplink frames
          format: int32
          example: 0
        Lrcid:
          $ref: '#/components/schemas/Lrcid'
        LrrESP:
          type: number
          description: ESP measured by the best gateway or relay
          format: float
          multipleOf: 0.000001
          example: -59
        Lrrid:
          type: string
          description: |
            LRR ID of the gateway that received the packet with the best SNR. This gateway is flagged as "best gateway".

            If the uplink frame is routed through a relay: virtual LRR ID allocated to the relay by the LRC.
          pattern: ^[0-9A-F]{8}$
          example: '08040059'
        LrrLAT:
          type: number
          description: |
            Latitude of the best gateway. LrrLAT is only filled if the Connectivity Plan AddLrrMetaInfo feature flag is activated.

            Not available if the uplink frame is routed through a relay.
          format: float
          multipleOf: 0.000001
          example: 48.874931
        LrrLON:
          type: number
          description: |
            Longitude of the best gateway. LrrLON is only filled if the Connectivity Plan AddLrrMetaInfo feature flag is activated.

            Not available if the uplink frame is routed through a relay.
          format: float
          multipleOf: 0.000001
          example: 2.333673
        LrrRSSI:
          type: number
          description: RSSI measured by the best gateway or relay
          format: float
          multipleOf: 0.000001
          example: -60
        LrrSNR:
          type: number
          description: SNR measured by the best gateway or relay
          format: float
          multipleOf: 0.000001
          example: 9.750000
        Lrrs:
          type: object
          description: The list of gateways and/or relays which reported the packet before
            the expiration of the 250 ms deduplication window. If the packet was
            reported by more than 10 gateways/relays before the expiration of
            the 250 ms deduplication window, only the 10 gateways/relays with
            the best SNR are reported. Only filled if the Connectivity Plan
            AddLrrMetaInfo feature flag is activated.
          required:
            - Lrr
          properties:
            Lrr:
              type: array
              minItems: 1
              maxItems: 10
              items:
                type: object
                description: Gateway or relay which reported the packet before the expiration of
                  the 250 ms deduplication window
                required:
                  - Lrrid
                  - LrrESP
                  - LrrRSSI
                  - LrrSNR
                properties:
                  Chain:
                    type: integer
                    description: |
                      The gateway antenna chain used to receive the packet.

                      Not available for a relay.
                    format: int32
                    example: 0
                  Lrrid:
                    type: string
                    description: LRR ID of the gateway or virtual LRR ID allocated to the relay by
                      the LRC
                    pattern: ^[0-9A-F]{8}$
                    example: '08040059'
                  Relayid:
                    $ref: '#/components/schemas/Relayid'
                  LrrESP:
                    type: number
                    description: ESP measured by the gateway or relay
                    format: float
                    multipleOf: 0.000001
                    example: -59
                  LrrRSSI:
                    type: number
                    description: RSSI measured by the gateway or relay
                    format: float
                    multipleOf: 0.000001
                    example: -60
                  LrrSNR:
                    type: number
                    description: SNR measured by the gateway or relay
                    format: float
                    multipleOf: 0.000001
                    example: 9.750000
                  ForwardingNetID:
                    $ref: '#/components/schemas/ForwardingNetID'
                  ForwardingNSID:
                    $ref: '#/components/schemas/ForwardingNSID'
              example:
                - Chain: 0
                  Lrrid: '08040059'
                  LrrESP: -59
                  LrrRSSI: -60
                  LrrSNR: 9.750000
                - Chain: 0
                  Lrrid: '33D13A41'
                  LrrESP: -72
                  LrrRSSI: -73
                  LrrSNR: 9.750000
                  ForwardingNetID: '600015'
                  ForwardingNSID: 'A53C640201020304'
        Margin:
          type: integer
          description: |
            Margin reported by the ReportDevStatus. Margin is only filled if the Connectivity Plan ReportDevStatusMargin feature flag is activated. When activated, the margin is only reported periodically, according to the Connectivity Plan DevStatusReqFreq setting.

            Margin is a signed integer of 6 bits with a minimum value of -32 and a maximum value of 31. It is reported as a 6 bits unsigned integer in Margin field. The following formula must be applied to get the actual Margin value:
            - If Margin < 32: the value is kept as is.
            - Else (Margin >= 32): the actual Margin value is Margin - 64.
          format: int32
          minimum: 0
          maximum: 63
          example: 33
        MaxWaitASResps:
          type: integer
          description: Maximum delay in milliseconds for the application server to send a
            downlink payload on RX1/RX2.
          format: int32
          example: 500
        MeanPER:
          type: number
          description: |
            Mean PER (Packet Error Rate). MeanPER is only filled if the Connectivity Plan AddPERInfo feature flag is activated.

            The mean PER is computed over the full history of last distinct uplink frames as follows:
            - MeanPER = 1 - [Distinct_Pkts / (FCntUP(N) - FCntUP(M)  + 1)], where:
              - Distinct_Pkts is the number of distinct uplink frames stored in the last uplink frames history (containing up to 50 uplink frames)
              - FCntUp(N) is the FCntUp of the newest uplink frame in the last uplink frames history
              - FCntUp(M) is the FCntUp of the oldest uplink frame in the last uplink frames history
            - A device reset/rejoin resets the MeanPER to 0
          format: float
          minimum: 0
          exclusiveMaximum: true
          example: 0.02
          maximum: 1
        mic_hex:
          type: string
          description: MIC in hexadecimal ASCII format
          pattern: ^[0-9a-f]{8}$
          example: '38e7a3b9'
        ModelCfg:
          $ref: '#/components/schemas/ModelCfg'
        MType:
          type: integer
          description: LoRaWAN® MType of the packet
          format: int32
          minimum: 0
          maximum: 7
          example: 4
        NbTrans:
          type: integer
          description: The number of transmissions for each uplink message requested by
            the LRC, according to ADR algorithm and validated by the device
            through a LinkADRAns MAC command. If no LinkADRAns have been yet
            validated by the device, NbTrans = 1.
          format: int32
          minimum: 1
          maximum: 15
          example: 1
        NwGeolocAlgo:
          type: integer
          description: |
            Network geolocation algorithm configured for the device:
            - 0 = Time Difference Of Arrival (TDOA): The algorithm is based on an uplink frame time of arrival and received signal characteristics at the receiving gateways.
            - 1 = Received Signal Strength Indicator (RSSI): The algorithm is based on an uplink frame received signal strength of at the receiving gateways.
            - 2 = Both: The calculation combines both TDOA and RSSI algorithms: RSSI algorithm is used if TDOA algorithm does not provide a valid geolocation.

            NwGeolocAlgo is only filled if a geolocation is reported.
          format: int32
          minimum: 0
          maximum: 2
          example: 2
        NwGeolocAlgoUsed:
          type: integer
          description: |
            Network geolocation algorithm used by the geolocation solver:
            - 0 = Time Difference Of Arrival (TDOA): The algorithm is based on an uplink frame time of arrival and received signal characteristics at the receiving gateways.
            - 1 = Received Signal Strength Indicator (RSSI): The algorithm is based on an uplink frame received signal strength of at the receiving gateways.

            NwGeolocAlgoUsed is only filled if a geolocation is reported.
          format: int32
          minimum: 0
          maximum: 1
          example: 0
        PayloadEncryption:
          type: integer
          description: |
            Encryption status of the reported LoRaWAN® payload:
            - 0 = the payload reported in `payload_hex` is in clear text.
            - 1 = the payload reported in `payload_hex` is encrypted with the device's AppSKey.
          format: int32
          minimum: 0
          maximum: 1
          default: 0
          example: 0
        payload_hex:
          type: string
          description: |
            LoRaWAN® payload in hexadecimal ASCII format.

            The payload is not reported if it is smaller than or equal to the `DummyPayloadMaxSize` value configured in the Device Profile.

            The payload is encrypted with the device's AppSKey if `PayloadEncryption` is set to 1. Otherwise the payload is in clear text.
          pattern: ^([0-9a-f][0-9a-f]){1,250}$
          example: '0027bd00'
        Relayid:
          $ref: '#/components/schemas/Relayid'
        Roaming:
          $ref: '#/components/schemas/Roaming'
        SpFact:
          type: integer
          description: SF used by the device
          format: int32
          minimum: 7
          maximum: 12
          example: 7
        SubBand:
          $ref: '#/components/schemas/SubBand'
        Time:
          type: string
          description: Timestamp of packet reception on the radio
          format: date-time
          example: '2020-07-09T16:06:38.49+02:00'
        TxPower:
          type: number
          description: The transmission power of the device (in dBm), computed by the LRC
            based on ADR algorithm and validated by the device through a
            LinkADRAns. If no LinkADRAns have been yet validated by the device,
            the device boot parameter is used instead.
          format: float
          example: 13
        deviceUplinkDC:
          type: number
          description: The aggregate occupancy rate of the RF logical channel associated
            to this uplink frame, as estimated at the time of reception.
            deviceUplinkDC is only filled if the Connectivity Plan
            AddUplinkDCInfo feature flag is activated.
          format: float
          example: 0.001
        deviceUplinkDCSubBand:
          type: number
          description: The aggregate occupancy rate of the RF sub-band associated to this
            uplink frame, as estimated at the time of reception.
            deviceUplinkDCSubBand is only filled if the Connectivity Plan
            AddUplinkDCInfo feature flag is activated.
          format: float
          example: 0.009
      xml:
        name: DevEUI_uplink
        namespace: 'http://uri.actility.com/lora'
    DownlinkFrameSentReportJson:
      title: Downlink frame sent report
      type: object
      required:
        - DevEUI_downlink_Sent
      properties:
        DevEUI_downlink_Sent:
          type: object
          allOf:
            - $ref: '#/components/schemas/DownlinkFrameSentReport'
            - type: object
              properties:
                BaseStationData:
                  $ref: '#/components/schemas/BaseStationDataJson'
                CustomerData:
                  $ref: '#/components/schemas/CustomerDataJson'
    DownlinkFrameSentReportXml:
      title: Downlink frame sent report
      type: object
      allOf:
        - $ref: '#/components/schemas/DownlinkFrameSentReport'
        - type: object
          properties:
            BaseStationData:
              $ref: '#/components/schemas/BaseStationDataXml'
            CustomerData:
              $ref: '#/components/schemas/CustomerDataXml'
    DownlinkFrameSentReport:
      type: object
      required:
        - Channel
        - CustomerID
        - DeliveryStatus
        - DeliveryFailedCause1
        - DeliveryFailedCause2
        - DeliveryFailedCause3
        - DeliveryFailedCause4
        - DevEUI
        - FCntUp
        - Lrcid
        - Lrrid
        - SpFact
        - SubBand
        - Time
      properties:
        AFCntDn:
          $ref: '#/components/schemas/AFCntDn'
        Channel:
          $ref: '#/components/schemas/Channel'
        CorrelationID:
          type: string
          description: |
            ID used to correlate the downlink frame sent report with the unicast downlink frame previously submitted.

            Only reported when CorrelationID has been provided in downlink frame.
          pattern: ^[0-9A-F]{16}$
          example: '4434704901C7450B'
        CustomerID:
          $ref: '#/components/schemas/CustomerID'
        DeliveryStatus:
          type: integer
          description: |
            RF transmission status:
            - 1: Downlink frame was sent over the air (either on RX1 or RX2). This means that the downlink frame was transmitted over the air by the gateway or relay. But the downlink frame may not have been received by the device.
            - 0: Downlink frame was not sent over the air (neither on RX1 nor RX2). The downlink frame is not retransmitted by the network server. Accordingly, the downlink frame will have to be reinitiated by the application server.
          format: int32
          minimum: 0
          maximum: 1
          example: 1
        DeliveryFailedCause1:
          type: string
          description: |
            The over the air delivery error cause for RX1 downlink slot.
            - Class A device: Transmission slot busy on RX1:
              - A0: "Radio stopped"
              - A1: "Downlink radio stopped"
              - A3: "Radio busy"
              - A4: "Listen before talk"
              - A5: "Radio board error"
              - A6: "Specific Semtech basic station failure cause"
            - Class A device: Received too late for RX1:
              - B0: "Too late for RX1" for Actility LRR, "Switched to RX2 by the gateway" for Semtech basic station
            - Class A device: LRC selects RX2:
              - C0: "LRC selected RX2"
            - Class A device: DC or Gateway constraint on RX1:
              - D0: "Duty cycle constraint detected by LRR"
              - DA: "Duty cycle constraint detected by LRC"
              - DB: "Max dwell time constraint detected by the LRC"
              - DE: "DC not allowed by the peering operator"
              - DF: "Wrong NetID"
            - Class A device: Frame discarded from the downlink queue:
              - E1: "Queue full"
              - E2: "Invalid FCntDn"
              - E3: "Validity time expired"
              - E4: "Queue reset following a rejoin"

            DeliveryFailedCause1 is set to 00 when no error occurs on RX1.
          enum:
            [
              '00',
              'A0',
              'A1',
              'A3',
              'A4',
              'A5',
              'B0',
              'C0',
              'D0',
              'DA',
              'DB',
              'DE',
              'DF',
              'E1',
              'E2',
              'E3',
              'E4'
            ]
          example: '00'
        DeliveryFailedCause2:
          type: string
          description: |
            The over the air delivery error cause for RX2 downlink slot.
            - Class A device: Transmission slot busy on RX2:
              - A0: "Radio stopped"
              - A1: "Downlink radio stopped"
              - A3: "Radio busy"
              - A4: "Listen before talk"
              - A5: "Radio board error"
              - A6: "Specific Semtech basic station failure cause"
            - Class A device: Received too late for RX2:
              - B0: "Too late for RX2"
            - Class A device:  DC or Gateway constraint on RX2:
              - D0: "Duty cycle constraint detected by LRR"
              - DA: "Duty cycle constraint detected by LRC"
              - DB: "Max dwell time constraint detected by the LRC"
              - DE: "DC not allowed by the peering operator"
              - DF: "Wrong NetID"
            - Class C device: Frame expired before transmission:
              - E0: "Max delay for Class C" (60 seconds)

            DeliveryFailedCause2 is set to 00 when no error occurs on RX2.
          enum:
            [
              '00',
              'A0',
              'A1',
              'A3',
              'A4',
              'A5',
              'B0',
              'D0',
              'DA',
              'DB',
              'DE',
              'DF',
              'E0'
            ]
          example: '00'
        DeliveryFailedCause3:
          type: string
          description: |
            The over the air delivery error cause for downlink ping slot.
            - Class B device: Transmission slot busy on ping slot:
              - A0: "Radio stopped"
              - A1: "Downlink radio stopped"
              - A2: "Ping slot not available"
              - A3: "Radio busy"
              - A4: "Listen before talk"
              - A5: "Radio board error"
            - Class B device: Received too late for ping slot:
              - B0: "Too late for ping slot" 
            - Class B device:  DC or Gateway constraint on ping slot:
              - D0: "Duty cycle constraint detected by LRR"
              - D9: "No eligible LRR found because all have been discarded by the LRC"
              - DA: "Duty cycle constraint detected by LRC"
              - DB: "Max dwell time constraint detected by the LRC"
              - DC: "No GPS-synchronized LRR detected by the LRC"
              - DD: "No LRR connected detected by the LRC"
              - DF: "Wrong NetID"

            DeliveryFailedCause3 is set to 00 when no error occurs on ping slot.
          enum:
            [
              '00',
              'A0',
              'A1',
              'A2',
              'A3',
              'A4',
              'A5',
              'B0',
              'D0',
              'D9',
              'DA',
              'DB',
              'DC',
              'DD',
              'DF'
            ]
          example: '00'
        DeliveryFailedCause4:
          type: string
          description: |
            The over the air delivery error cause for RXR downlink slot.
            - Relay transmission error:
              - 10: "Not sent to the relay"

            DeliveryFailedCause4 is set to 00 when no error occurs on RXR.
          enum: [ '00', '10' ]
          example: '00'
        DevEUI:
          $ref: '#/components/schemas/DevEUI'
        FCntDn:
          $ref: '#/components/schemas/FCntDn'
        FCntUp:
          type: integer
          description: The last uplink counter from the device.
          format: int64
          minimum: 0
          maximum: 4294967295
          example: 7022
        ForwardingNetID:
          $ref: '#/components/schemas/ForwardingNetID'
        ForwardingNSID:
          $ref: '#/components/schemas/ForwardingNSID'
        FPort:
          type: integer
          description: LoRaWAN® FPort used by the device for this packet.
          format: int32
          minimum: 1
          maximum: 225
          example: 2
        Frequency:
          $ref: '#/components/schemas/Frequency'
        Lrcid:
          $ref: '#/components/schemas/Lrcid'
        Lrrid:
          type: string
          description: |
            LRR ID of the gateway used to send the packet. The value `00000000`
            means that no gateway has been selected for downlink transmission.

            If the downlink frame is routed through a relay: virtual LRR ID allocated to the relay by the LRC.
          pattern: ^[0-9A-F]{8}$
          example: '08040059'
        ModelCfg:
          $ref: '#/components/schemas/ModelCfg'
        Relayid:
          $ref: '#/components/schemas/Relayid'
        Roaming:
          $ref: '#/components/schemas/Roaming'
        SpFact:
          type: integer
          description: RX1 SF selected by the LRC.
          format: int32
          minimum: 7
          maximum: 12
          example: 7
        SubBand:
          $ref: '#/components/schemas/SubBand'
        Time:
          type: string
          description: Timestamp of the packet transmission on the radio
          format: date-time
          example: '2020-01-27T10:00:46.336+01:00'
        TransmissionSlot:
          type: integer
          description: |
            Slot used for downlink frame transmission: 0 (Unknown), 1 (RX1), 2 (RX2), 3 (Ping Slot) or 4 (RXR)
          format: int32
          minimum: 0
          maximum: 4
          example: 1
      xml:
        name: DevEUI_downlink_Sent
        namespace: 'http://uri.actility.com/lora'
    MulticastSummaryReportJson:
      title: Multicast summary report
      type: object
      required:
        - DevEUI_multicast_summary
      properties:
        DevEUI_multicast_summary:
          type: object
          allOf:
            - $ref: '#/components/schemas/MulticastSummaryReport'
            - type: object
              properties:
                CustomerData:
                  $ref: '#/components/schemas/CustomerDataJson'
    MulticastSummaryReportXml:
      title: Multicast summary report
      type: object
      allOf:
        - $ref: '#/components/schemas/MulticastSummaryReport'
        - type: object
          properties:
            CustomerData:
              $ref: '#/components/schemas/CustomerDataXml'
    MulticastSummaryReport:
      type: object
      required:
        - CustomerID
        - DevAddr
        - DevEUI
        - FPort
        - Lrcid
        - LrrCnt
        - LrrSuccessCnt
        - Time
        - TransmissionStatus
      properties:
        AFCntDn:
          $ref: '#/components/schemas/AFCntDn'
        CorrelationID:
          type: string
          description: |
            ID used to correlate the multicast summary report with the multicast downlink frame previously submitted.

            Only reported when CorrelationID has been provided in downlink frame.
          pattern: ^[0-9A-F]{16}$
          example: '4434704901C7450B'
        CustomerID:
          $ref: '#/components/schemas/CustomerID'
        DevAddr:
          $ref: '#/components/schemas/DevAddr'
        DevEUI:
          $ref: '#/components/schemas/DevEUI'
        FCntDn:
          $ref: '#/components/schemas/FCntDn'
        FPort:
          type: integer
          description: LoRaWAN® FPort used by the device for this packet.
          format: int32
          minimum: 1
          maximum: 225
          example: 2
        Lrcid:
          $ref: '#/components/schemas/Lrcid'
        Time:
          type: string
          description: Timestamp of the multicast summary report
          format: date-time
          example: '2020-01-27T10:00:46.336+01:00'
        TransmissionStatus:
          type: string
          description: |
            Multicast downlink transmission status.
            - PARTIAL: some gateways failed to transmit the downlink packet. Another attempt will be made to transmit the packet to these gateways.
            - SUCCESS: all gateways successfully transmitted the downlink packet.
            - ABORTED: some gateways failed to transmit the downlink. No more attempt will be made to transmit the packet to these gateways.
          enum:
            - PARTIAL
            - SUCCESS
            - ABORTED
          example: ABORTED
        LrrCnt:
          type: integer
          description: Total number of gateways associated with the multicast group.
          minimum: 0
          format: int32
          example: 93
        LrrSuccessCnt:
          type: integer
          description: Number of gateways having successfully transmitted the downlink
            frame over the air.
          minimum: 0
          format: int32
          example: 86
        LrrFailedCnt:
          type: integer
          description: Number of gateways that failed in transmitting the downlink frame
            over the air.
          minimum: 0
          format: int32
          example: 7
        LrrFailedDistribution:
          type: string
          description: |
            Distribution of delivery failed causes. Comma-separated list of cause/number of occurrences: <cause>=<occurrences>[,<cause>=<occurrences>]*

            Failure causes reported in Downlink Frame Sent report apply. Additionally, the following causes may be reported:
            - Mulicast failure:
              - F0: "No matching channel for multicast frequency"
              - F1: "Multiple Ping Slot channels and no configured multicast frequency"
              - F2: "Multiple RX2 channels and no configured multicast frequency"
              - F3: "Too late for multicast class C synchronized transmission"

            Only reported in the final multicast summary report
          pattern: ^[A-F][0-9A-F]=\d+(,[A-F][0-9A-F]=\d+)*$
          example: A3=2,D0=7,DC=3
      xml:
        name: DevEUI_multicast_summary
        namespace: 'http://uri.actility.com/lora'
    LocationReportJson:
      title: Location report
      type: object
      required:
        - DevEUI_location
      properties:
        DevEUI_location:
          type: object
          allOf:
            - $ref: '#/components/schemas/LocationReport'
            - type: object
              properties:
                CustomerData:
                  $ref: '#/components/schemas/CustomerDataJson'
    LocationReportXml:
      title: Location report
      type: object
      allOf:
        - $ref: '#/components/schemas/LocationReport'
        - type: object
          properties:
            CustomerData:
              $ref: '#/components/schemas/CustomerDataXml'
    LocationReport:
      type: object
      required:
        - CustomerID
        - DevAddr
        - DevEUI
        - DevLocTime
        - DevLAT
        - DevLON
        - DevAlt
        - DevLocRadius
        - DevAltRadius
        - DevUlFCntUpUsed
        - DevLocDilution
        - DevAltDilution
        - DevNorthVel
        - DevEastVel
        - Lrcid
        - NwGeolocAlgo
        - NwGeolocAlgoUsed
        - Time
      properties:
        CustomerID:
          $ref: '#/components/schemas/CustomerID'
        DevAddr:
          $ref: '#/components/schemas/DevAddr'
        DevEUI:
          type: string
          description: Device DevEUI in lower case hexadecimal ASCII format
          pattern: ^[0-9a-f]{16}$
          example: '000000000f1d8693'
        DevLocTime:
          type: string
          description: Last geolocation timestamp
          format: date-time
          example: '2020-01-27T10:00:43.336+01:00'
        DevLAT:
          type: number
          description: Last geolocation latitude (GPS coordinate system)
          format: float
          example: 10.11212
        DevLON:
          type: number
          description: Last geolocation longitude (GPS coordinate system)
          format: float
          example: 7.44464
        DevAlt:
          type: number
          description: Last geolocation altitude (meter)
          format: float
          example: 50
        DevLocRadius:
          type: number
          description: Last geolocation horizontal tolerance (meter)
          format: float
          example: 100
        DevAltRadius:
          type: number
          description: Last geolocation vertical tolerance (meter)
          format: float
          example: 50
        DevNorthVel:
          type: number
          description: Velocity (NORTH axis) expressed in m/s
          format: float
          example: 1
        DevEastVel:
          type: number
          description: Velocity (EAST axis) expressed in m/s
          format: float
          example: 1
        DevLocDilution:
          type: number
          description: Horizontal DOP (dilution of precision) calculated for given mutual
            position of gateways, used for solution calculation, and device.
          format: float
          example: 10
        DevAltDilution:
          type: number
          description: Vertical DOP (dilution of precision) calculated for given mutual
            position of gateways, used for solution calculation, and device.
          format: float
          example: 0
        DevUlFCntUpUsed:
          type: integer
          description: The uplink counter used for this location resolution.
          format: int64
          minimum: 0
          maximum: 4294967295
          example: 7011
        Lrcid:
          $ref: '#/components/schemas/Lrcid'
        ModelCfg:
          $ref: '#/components/schemas/ModelCfg'
        NwGeolocAlgo:
          type: integer
          description: |
            Network geolocation algorithm configured for the device:
            - 0 = Time Difference Of Arrival (TDOA): The algorithm is based on an uplink frame time of arrival and received signal characteristics at the receiving gateways.
            - 1 = Received Signal Strength Indicator (RSSI): The algorithm is based on an uplink frame received signal strength of at the receiving gateways.
            - 2 = Both: The calculation combines both TDOA and RSSI algorithms: RSSI algorithm is used if TDOA algorithm does not provide a valid geolocation.
          format: int32
          minimum: 0
          maximum: 2
          example: 0
        NwGeolocAlgoUsed:
          type: integer
          description: |
            Network geolocation algorithm used by the geolocation solver:
            - 0 = Time Difference Of Arrival (TDOA): The algorithm is based on an uplink frame time of arrival and received signal characteristics at the receiving gateways.
            - 1 = Received Signal Strength Indicator (RSSI): The algorithm is based on an uplink frame received signal strength of at the receiving gateways.
          format: int32
          minimum: 0
          maximum: 1
          example: 0
        Time:
          type: string
          description: Timestamp of the geolocation
          format: date-time
          example: '2020-01-27T10:00:46.123+01:00'
      xml:
        name: DevEUI_location
        namespace: 'http://uri.actility.com/lora'
    NotificationReportJson:
      title: Notification report
      type: object
      required:
        - DevEUI_notification
      properties:
        DevEUI_notification:
          type: object
          allOf:
            - $ref: '#/components/schemas/NotificationReport'
            - type: object
              properties:
                CustomerData:
                  $ref: '#/components/schemas/CustomerDataJson'
    NotificationReportXml:
      title: Notification report
      type: object
      allOf:
        - $ref: '#/components/schemas/NotificationReport'
        - type: object
          properties:
            CustomerData:
              $ref: '#/components/schemas/CustomerDataXml'
    NotificationReport:
      type: object
      required:
        - CustomerID
        - DevEUI
        - Lrcid
        - Time
        - Type
        - Var1
      properties:
        AFCntDn:
          type: integer
          description: |
            The applicative downlink counter to be used for the next downlink frame.

            Only applicable to LoRaWAN® 1.1.
          format: int64
          minimum: 0
          maximum: 4294967295
          example: 11
        CustomerID:
          $ref: '#/components/schemas/CustomerID'
        DevAddr:
          $ref: '#/components/schemas/DevAddr'
        DevEUI:
          $ref: '#/components/schemas/DevEUI'
        FCntDn:
          type: integer
          description: |
            The downlink counter to be used for the next downlink frame.

            Only applicable to LoRaWAN® 1.0.
          format: int64
          minimum: 0
          maximum: 4294967295
          example: 11
        Lrcid:
          $ref: '#/components/schemas/Lrcid'
        ModelCfg:
          $ref: '#/components/schemas/ModelCfg'
        Time:
          type: string
          description: |
            If the notification is triggered by an uplink frame:
            -	Timestamp of the packet reception on the radio
            Else:
            -	Timestamp of the notification
          format: date-time
          example: '2020-01-15T11:31:19.588+02:00'
        Type:
          type: string
          description: |
            Type of notification:
            - reset: Device reset
            - join: Successful Join procedure
            - devstatusans: Battery and Margin
          enum:
            - reset
            - join
            - devstatusans
          example: devstatusans
        Var1:
          type: string
          description: |
            Notification variable 1
            The content depends on notification type:
            - reset: type of reset
              - automatic_reset: ABP automatic reset
              - admin_reset: OTAA/ABP administrative reset
            - join: AppSKey encrypted with AS transport key 
            - devstatusans: Battery (0..255)
          example: '216'
        Var2:
          type: string
          description: |
            Notification variable 2
            The content depends on notification type:
            - reset: n/a
            - join: n/a
            - devstatusans: Margin (-32..31)
          example: '-31'
      xml:
        name: DevEUI_notification
        namespace: 'http://uri.actility.com/lora'
    DevEUI:
      type: string
      description: Device DevEUI in upper case hexadecimal ASCII format
      pattern: ^[0-9A-F]{16}$
      example: '000000000F1D8693'
    DevAddr:
      type: string
      description: Device DevAddr
      pattern: ^[0-9A-F]{8}$
      example: '0405F519'
    FCntDn:
      type: integer
      description: |
        The downlink counter for this packet.

        Only applicable to LoRaWAN® 1.0.
      format: int64
      minimum: 0
      maximum: 4294967295
      example: 22
    AFCntDn:
      type: integer
      description: |
        The applicative downlink counter for this packet.

        Only applicable to LoRaWAN® 1.1 when the FPort > 0.
      format: int64
      minimum: 0
      maximum: 4294967295
      example: 22
    Channel:
      type: string
      description: |
        LC ID of the radio channel used to transmit the frame. This field is not
        relevant when `Lrrid` is set to `00000000`.
      pattern: ^LC([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])$
      example: LC2
    CustomerID:
      type: string
      description: Customer ID associated to the Device Manager account
      example: '100000507'
    Frequency:
      type: number
      description: |
        Frequency in MHz of the radio channel used to transmit the frame. This
        field is not relevant when `Lrrid` is set to `00000000`.
      format: float
      example: 868.3
    Lrcid:
      type: string
      description: ID of the LRC sending the report
      pattern: ^[0-9A-F]{8}$
      example: '00000065'
    ModelCfg:
      type: string
      description: |
        Comma-separated list of ThingPark X IoT Flow matcher tags: <port>:<tag>
      example: 1:TemperatureService, 2:SwissPostDevice
    SubBand:
      type: string
      description: |
        Sub-band of the radio channel used to transmit the frame. This field is
        not relevant when `Lrrid` is set to `00000000`.
      example: 'G1'
    Relayid:
      type: string
      description: DevEUI of the relay
      pattern: ^[0-9A-F]{16}$
      example: '9034813251641579'
    Roaming:
      type: number
      description: |
        Indicates the type of roaming, when a third-party roaming fNS was used to route the packet.
        - 1: Passive roaming
        - 2: Handover roaming (not yet implemented)
      format: int32
      minimum: 1
      maximum: 2
      example: 1
    ForwardingNetID:
      type: string
      description: The NetID of the forwarding NS, when a third-party roaming fNS was
        used to route the packet.
      pattern: ^[0-9A-F]{6}$
      example: '600015'
    ForwardingNSID:
      type: string
      description: The NSID of the forwarding NS, when a third-party roaming fNS was
        used to route the packet using LoRaWAN® BE 1.1.
      pattern: ^[0-9A-F]{16}$
      example: 'A53C640201020304'
    CustomerDataJson:
      type: object
      description: Customer data set by provisioning
      properties:
        loc:
          type: object
          description: Administrative device location
          required:
            - lat
            - lon
          properties:
            lat:
              type: string
              description: Device latitude
              example: '43.58081'
            lon:
              type: string
              description: Device longitude
              example: '1.4421667'
        alr:
          type: object
          description: Product metadata
          required:
            - pro
            - ver
          properties:
            pro:
              type: string
              description: Product name
              example: STL
            ver:
              type: string
              description: Product version
              example: '1'
        tags:
          type: array
          description: Tags associated with the device
          items:
            type: string
          example: [ tag1, tag2 ]
        doms:
          type: array
          items:
            type: object
            required:
              - n
              - g
            properties:
              n:
                type: string
                description: Domain name
              g:
                type: string
                description: Domain group name
          example:
            - n: France/Paris
              g: Site
            - n: Location
              g: Vertical
        name:
          type: string
          description: Device name
          example: My device name
    CustomerDataXml:
      type: string
      description: |
        Device properties set by provisioning:
        - "loc": administrative location (OPTIONAL)
          - "lat" (latitude) and "lon" (longitude) sub-attributes.
        - "alr": product metadata (OPTIONAL)
          - "pro" (product name) and "ver" (product version) sub-attributes.
        - "tags": array of tags associated with the device (OPTIONAL)
        - "doms": array of domains (OPTIONAL)
          - "n" (domain name) and "g" (domain group name) sub-attributes.
        - "name": device name (OPTIONAL)
      example: '{"loc":{"lat":"43.58081","lon":"1.4421667"},"alr":{"pro":"STL","ver":"1"},"tags":["tag1","tag2"],"doms":[{"n":"France/Paris","g":"Site"},{"n":"Location","g":"Vertical"}],"name":"My
        device name"}'
    BaseStationDataJson:
      type: object
      description: |
        Base Station properties set by provisioning. Only reported for the best gateway when it belongs to the device's owner.

        Not available if the packet is routed through a relay.
      properties:
        doms:
          type: array
          items:
            type: object
            required:
              - n
              - g
            properties:
              n:
                type: string
                description: Domain name
              g:
                type: string
                description: Domain group name
          example:
            - n: France/Paris
              g: Site
            - n: Network
              g: Vertical
        name:
          type: string
          description: Base station name
          example: My base station name
    BaseStationDataXml:
      type: string
      description: |
        Base Station properties set by provisioning:
        - "doms": array of domains (OPTIONAL)
          - "n" (domain name) and "g" (domain group name) sub-attributes.
        - "name": base station name (OPTIONAL)

        Only reported for the best LRR when it belongs to the device's owner.

        Not available if the packet is routed through a relay.
      example: '{"doms":[{"n":"France/Paris","g":"Site"},{"n":"Network","g":"Vertical"}],"name":"My
        base station name"}'
    DriverCfgJson:
      type: object
      description: ThingPark X metadata
      required:
        - mod
        - app
      properties:
        mod:
          type: object
          description: TPX Model Identifier
          properties:
            pId:
              type: string
              description: Producer identifier
              example: abeeway
            mId:
              type: string
              description: Module identifier
              example: micro-tracker
            ver:
              type: string
              description: Version
              example: '3'
        app:
          type: object
          description: TPX Protocol Identifier
          properties:
            pId:
              type: string
              description: Producer identifier
              example: abeeway
            mId:
              type: string
              description: Module identifier
              example: asset-tracker
            ver:
              type: string
              description: Version
              example: '1'
    DriverCfgXml:
      type: string
      description: ThingPark X metadata (JSON document)
      example: '{"mod":{"pId":"abeeway","mId":"micro-tracker","ver":"3"},"app":{"pId":"abeeway","mId":"asset-tracker","ver":"1"}}'
  parameters:
    AS_ID:
      name: AS_ID
      in: query
      description: Application Server ID (only reported when the authentication is
        activated). AS_ID is not reported when the Uplink/downlink
        authentication is not activated in the AS profile.
      schema:
        type: string
        pattern: ^[0-9A-Za-z\-._]+$
        example: app1.sample.com
    LrnDevEUI:
      name: LrnDevEUI
      in: query
      description: |
        Device DevEUI
        - Upper case hexadecimal ASCII format in uplink frame report and downlink frame sent report
        - Lower case hexadecimal ASCII format in other reports
      required: true
      schema:
        type: string
        pattern: ^[0-9A-Fa-f]{16}$
        example: '000000000F1D8693'
    LrnFPort:
      name: LrnFPort
      in: query
      description: LoRaWAN® port number. Not applicable to notification report.
      schema:
        type: integer
        format: int32
        minimum: 0
        maximum: 225
        example: 0
    LrnInfos:
      name: LrnInfos
      in: query
      description: Routing profile name used to route the packet
      required: true
      schema:
        type: string
        example: UPHTTP_LAB_LORA
    Time:
      name: Time
      in: query
      description: ISO 8601 timestamp associated to the generation of the HTTP request
        by the LRC (only reported when the authentication is activated). Time is
        not reported when the Uplink/downlink authentication is not activated in
        the AS profile.
      schema:
        type: string
        format: date-time
        example: '2020-01-11T14:28:00.333+02:00'
    Token:
      name: Token
      in: query
      description: Security token generated by the LRC (only reported when the
        authentication is activated). Token is not reported when the
        Uplink/downlink authentication is not activated in the AS profile.
      schema:
        type: string
        pattern: ^[0-9a-f]{64}$
        example: 'ea8f31d2299cbece8e180a3012766c4df15fe3cf2e142d9fdf4035b5894ec886'
  requestBodies:
    Report:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ReportJson'
          examples:
            DevEUI_uplink:
              summary: DevEUI_uplink
              value:
                DevEUI_uplink:
                  Time: '2020-07-09T16:06:38.49+02:00'
                  DevEUI: '000000000F1D8693'
                  FPort: 2
                  FCntUp: 7011
                  ACKbit: 1
                  #ConfAFCntDn: 10
                  ADRbit: 1
                  MType: 4
                  #AFCntDn: 11
                  FCntDn: 11
                  payload_hex: '0027bd00'
                  mic_hex: '38e7a3b9'
                  Lrcid: '00000065'
                  LrrRSSI: -60
                  LrrSNR: 9.750000
                  LrrESP: -59
                  SpFact: 7
                  SubBand: G1
                  Channel: LC2
                  DevLrrCnt: 2
                  Lrrid: '08040059'
                  Late: 0
                  LrrLAT: 48.874931
                  LrrLON: 2.333673
                  Lrrs:
                    Lrr:
                      - Lrrid: '08040059'
                        Chain: 0
                        LrrRSSI: -60
                        LrrSNR: 9.750000
                        LrrESP: -59
                      - Lrrid: '33D13A41'
                        Chain: 0
                        LrrRSSI: -73
                        LrrSNR: 9.750000
                        LrrESP: -72
                        ForwardingNetID: '600015'
                        ForwardingNSID: 'A53C640201020304'
                  DevLocTime: '2020-01-27T10:00:43.336+01:00'
                  DevLAT: 10.11212
                  DevLON: 7.44464
                  DevAlt: 50
                  DevLocRadius: 100
                  DevAltRadius: 50
                  DevUlFCntUpUsed: 7010
                  DevLocDilution: 10
                  DevAltDilution: 0
                  DevNorthVel: 1
                  DevEastVel: 1
                  NwGeolocAlgo: 2
                  NwGeolocAlgoUsed: 0
                  CustomerID: '100000507'
                  CustomerData:
                    loc:
                      lat: '43.58081'
                      lon: '1.4421667'
                    alr:
                      pro: STL
                      ver: '1'
                    tags:
                      - tag1
                      - tag2
                    doms:
                      - n: France/Paris
                        g: Site
                      - n: Location
                        g: Vertical
                    name: My device name
                  BaseStationData:
                    doms:
                      - n: France/Paris
                        g: Site
                      - n: Network
                        g: Vertical
                    name: My base station name
                  ModelCfg: 1:TemperatureService, 2:SwissPostDevice
                  DriverCfg:
                    mod:
                      pId: abeeway
                      mId: micro-tracker
                      ver: '3'
                    app:
                      pId: abeeway
                      mId: asset-tracker
                      ver: '1'
                  #AppSKey: A0A1A2A3A4A5A6A7A8A9AAABACADAEAF
                  BatteryLevel: 216
                  BatteryTime: '2020-07-09T16:06:38.49+02:00'
                  Margin: 33
                  InstantPER: 0.02
                  MeanPER: 0.02
                  DevAddr: '0405F519'
                  deviceUplinkDC: 0.001
                  deviceUplinkDCSubBand: 0.009
                  TxPower: 13
                  NbTrans: 1
                  Frequency: 868.3
                  DynamicClass: B
                  ClassBPeriodicity: 128
                  #Roaming: 1
                  #ForwardingNetID: '600015'
                  #ForwardingNSID: 'A53C640201020304'
                  LostUplinksAS: 0
                  MaxWaitASResps: 500
                  #PayloadEncryption: 0
            DevEUI_downlink_Sent:
              summary: DevEUI_downlink_Sent
              value:
                DevEUI_downlink_Sent:
                  Time: '2020-07-09T16:06:38.49+02:00'
                  DevEUI: '000000000F1D8693'
                  FPort: 2
                  #AFCntDn: 11
                  FCntDn: 11
                  FCntUp: 7011
                  Lrcid: '00000065'
                  SpFact: 7
                  SubBand: G1
                  Channel: LC2
                  Lrrid: '08040059'
                  DeliveryStatus: 1
                  DeliveryFailedCause1: '00'
                  DeliveryFailedCause2: '00'
                  DeliveryFailedCause3: '00'
                  DeliveryFailedCause4: '00'
                  CustomerID: '100000507'
                  CustomerData:
                    loc:
                      lat: '43.58081'
                      lon: '1.4421667'
                    alr:
                      pro: STL
                      ver: '1'
                    tags:
                      - tag1
                      - tag2
                    doms:
                      - n: France/Paris
                        g: Site
                      - n: Location
                        g: Vertical
                    name: My device name
                  BaseStationData:
                    doms:
                      - n: France/Paris
                        g: Site
                      - n: Network
                        g: Vertical
                    name: My base station name
                  ModelCfg: 1:TemperatureService, 2:SwissPostDevice
                  TransmissionSlot: 1
                  Frequency: 868.3
                  CorrelationID: '4434704901C7450B'
                  #Roaming: 1
                  #ForwardingNetID: '600015'
                  #ForwardingNSID: 'A53C640201020304'
            DevEUI_multicast_summary:
              summary: DevEUI_multicast_summary
              value:
                DevEUI_multicast_summary:
                  Time: '2020-07-09T16:06:38.49+02:00'
                  DevEUI: '000000000F1D8693'
                  DevAddr: '0405F519'
                  FPort: 2
                  #AFCntDn: 11
                  FCntDn: 11
                  Lrcid: '00000065'
                  TransmissionStatus: ABORTED
                  LrrCnt: 93
                  LrrSuccessCnt: 86
                  CustomerID: '100000507'
                  CustomerData:
                    loc:
                      lat: '43.58081'
                      lon: '1.4421667'
                    alr:
                      pro: STL
                      ver: '1'
                    tags:
                      - tag1
                      - tag2
                    doms:
                      - n: France/Paris
                        g: Site
                      - n: Location
                        g: Vertical
                    name: My device name
                  LrrFailedCnt: 7
                  LrrFailedDistribution: A3=2,D0=7,DC=3
                  CorrelationID: '4434704901C7450B'
            DevEUI_location:
              summary: DevEUI_location
              value:
                DevEUI_location:
                  DevEUI: '000000000f1d8693'
                  DevAddr: '0405F519'
                  Lrcid: '00000065'
                  NwGeolocAlgo: 2
                  NwGeolocAlgoUsed: 0
                  Time: '2020-07-09T16:06:38.49+02:00'
                  DevLocTime: '2020-01-27T10:00:43.336+01:00'
                  DevLAT: 10.11212
                  DevLON: 7.44464
                  DevAlt: 50
                  DevLocRadius: 100
                  DevAltRadius: 50
                  DevUlFCntUpUsed: 7010
                  DevLocDilution: 10
                  DevAltDilution: 0
                  DevNorthVel: 1
                  DevEastVel: 1
                  CustomerID: '100000507'
                  CustomerData:
                    loc:
                      lat: '43.58081'
                      lon: '1.4421667'
                    alr:
                      pro: STL
                      ver: '1'
                    tags:
                      - tag1
                      - tag2
                    doms:
                      - n: France/Paris
                        g: Site
                      - n: Location
                        g: Vertical
                    name: My device name
                  ModelCfg: 1:TemperatureService, 2:SwissPostDevice
            DevEUI_notification:
              summary: DevEUI_notification
              value:
                DevEUI_notification:
                  Time: '2020-07-09T16:06:38.49+02:00'
                  DevEUI: '000000000F1D8693'
                  Lrcid: '00000065'
                  DevAddr: '0405F519'
                  CustomerID: '100000507'
                  CustomerData:
                    loc:
                      lat: '43.58081'
                      lon: '1.4421667'
                    alr:
                      pro: STL
                      ver: '1'
                    tags:
                      - tag1
                      - tag2
                    doms:
                      - n: France/Paris
                        g: Site
                      - n: Location
                        g: Vertical
                    name: My device name
                  ModelCfg: 1:TemperatureService, 2:SwissPostDevice
                  #AFCntDn: 0
                  FCntDn: 0
                  Type: join
                  Var1: ''
        application/xml:
          schema:
            $ref: '#/components/schemas/ReportXml'
          examples:
            DevEUI_uplink:
              summary: DevEUI_uplink
              value:
                Time: '2020-07-09T16:06:38.49+02:00'
                DevEUI: '000000000F1D8693'
                FPort: 2
                FCntUp: 7011
                ACKbit: 1
                #ConfAFCntDn: 10
                ADRbit: 1
                MType: 4
                #AFCntDn: 11
                FCntDn: 11
                payload_hex: '0027bd00'
                mic_hex: '38e7a3b9'
                Lrcid: '00000065'
                LrrRSSI: -60
                LrrSNR: 9.750000
                LrrESP: -59
                SpFact: 7
                SubBand: G1
                Channel: LC2
                DevLrrCnt: 2
                Lrrid: '08040059'
                Late: 0
                LrrLAT: 48.874931
                LrrLON: 2.333673
                Lrrs:
                  Lrr:
                    - Lrrid: '08040059'
                      Chain: 0
                      LrrRSSI: -60
                      LrrSNR: 9.750000
                      LrrESP: -59
                    - Lrrid: '33D13A41'
                      Chain: 0
                      LrrRSSI: -73
                      LrrSNR: 9.750000
                      LrrESP: -72
                      ForwardingNetID: '600015'
                      ForwardingNSID: 'A53C640201020304'
                DevLocTime: '2020-01-27T10:00:43.336+01:00'
                DevLAT: 10.11212
                DevLON: 7.44464
                DevAlt: 50
                DevLocRadius: 100
                DevAltRadius: 50
                DevUlFCntUpUsed: 7010
                DevLocDilution: 10
                DevAltDilution: 0
                DevNorthVel: 1
                DevEastVel: 1
                NwGeolocAlgo: 2
                NwGeolocAlgoUsed: 0
                CustomerID: '100000507'
                CustomerData: '{"loc":{"lat":"43.58081","lon":"1.4421667"},"alr":{"pro":"STL","ver":"1"},"tags":["tag1","tag2"],"doms":[{"n":"France/Paris","g":"Site"},{"n":"Location","g":"Vertical"}],"name":"My
                  device name"}'
                BaseStationData: '{"doms":[{"n":"France/Paris","g":"Site"},{"n":"Network","g":"Vertical"}],"name":"My
                  base station name"}'
                ModelCfg: 1:TemperatureService, 2:SwissPostDevice
                DriverCfg: '{"mod":{"pId":"abeeway","mId":"micro-tracker","ver":"3"},"app":{"pId":"abeeway","mId":"asset-tracker","ver":"1"}}'
                #AppSKey: A0A1A2A3A4A5A6A7A8A9AAABACADAEAF
                BatteryLevel: 216
                BatteryTime: '2020-07-09T16:06:38.49+02:00'
                Margin: 33
                InstantPER: 0.02
                MeanPER: 0.02
                DevAddr: '0405F519'
                deviceUplinkDC: 0.001
                deviceUplinkDCSubBand: 0.009
                TxPower: 13
                NbTrans: 1
                Frequency: 868.3
                DynamicClass: B
                ClassBPeriodicity: 128
                #Roaming: 1
                #ForwardingNetID: '600015'
                #ForwardingNSID: 'A53C640201020304'
                LostUplinksAS: 0
                MaxWaitASResps: 500
                #PayloadEncryption: 0
            DevEUI_downlink_Sent:
              summary: DevEUI_downlink_Sent
              value:
                Time: '2020-07-09T16:06:38.49+02:00'
                DevEUI: '000000000F1D8693'
                FPort: 2
                #AFCntDn: 11
                FCntDn: 11
                FCntUp: 7011
                Lrcid: '00000065'
                SpFact: 7
                SubBand: G1
                Channel: LC2
                Lrrid: '08040059'
                DeliveryStatus: 1
                DeliveryFailedCause1: '00'
                DeliveryFailedCause2: '00'
                DeliveryFailedCause3: '00'
                DeliveryFailedCause4: '00'
                CustomerID: '100000507'
                CustomerData: '{"loc":{"lat":"43.58081","lon":"1.4421667"},"alr":{"pro":"STL","ver":"1"},"tags":["tag1","tag2"],"doms":[{"n":"France/Paris","g":"Site"},{"n":"Location","g":"Vertical"}],"name":"My
                  device name"}'
                BaseStationData: '{"doms":[{"n":"France/Paris","g":"Site"},{"n":"Network","g":"Vertical"}],"name":"My
                  base station name"}'
                ModelCfg: 1:TemperatureService, 2:SwissPostDevice
                TransmissionSlot: 1
                Frequency: 868.3
                CorrelationID: '4434704901C7450B'
                #Roaming: 1
                #ForwardingNetID: '600015'
                #ForwardingNSID: 'A53C640201020304'
            DevEUI_multicast_summary:
              summary: DevEUI_multicast_summary
              value:
                Time: '2020-07-09T16:06:38.49+02:00'
                DevEUI: '000000000F1D8693'
                DevAddr: '0405F519'
                FPort: 2
                #AFCntDn: 11
                FCntDn: 11
                Lrcid: '00000065'
                TransmissionStatus: ABORTED
                LrrCnt: 93
                LrrSuccessCnt: 86
                CustomerID: '100000507'
                CustomerData: '{"loc":{"lat":"43.58081","lon":"1.4421667"},"alr":{"pro":"STL","ver":"1"},"tags":["tag1","tag2"],"doms":[{"n":"France/Paris","g":"Site"},{"n":"Location","g":"Vertical"}],"name":"My
                  device name"}'
                LrrFailedCnt: 7
                LrrFailedDistribution: A3=2,D0=7,DC=3
                CorrelationID: '4434704901C7450B'
            DevEUI_location:
              summary: DevEUI_location
              value:
                DevEUI: '000000000f1d8693'
                DevAddr: '0405F519'
                Lrcid: '00000065'
                NwGeolocAlgo: 2
                NwGeolocAlgoUsed: 0
                Time: '2020-07-09T16:06:38.49+02:00'
                DevLocTime: '2020-01-27T10:00:43.336+01:00'
                DevLAT: 10.11212
                DevLON: 7.44464
                DevAlt: 50
                DevLocRadius: 100
                DevAltRadius: 50
                DevUlFCntUpUsed: 7010
                DevLocDilution: 10
                DevAltDilution: 0
                DevNorthVel: 1
                DevEastVel: 1
                CustomerID: '100000507'
                CustomerData: '{"loc":{"lat":"43.58081","lon":"1.4421667"},"alr":{"pro":"STL","ver":"1"},"tags":["tag1","tag2"],"doms":[{"n":"France/Paris","g":"Site"},{"n":"Location","g":"Vertical"}],"name":"My
                  device name"}'
                ModelCfg: 1:TemperatureService, 2:SwissPostDevice
            DevEUI_notification:
              summary: DevEUI_notification
              value:
                Time: '2020-07-09T16:06:38.49+02:00'
                DevEUI: '000000000F1D8693'
                Lrcid: '00000065'
                DevAddr: '0405F519'
                CustomerID: '100000507'
                CustomerData: '{"loc":{"lat":"43.58081","lon":"1.4421667"},"alr":{"pro":"STL","ver":"1"},"tags":["tag1","tag2"],"doms":[{"n":"France/Paris","g":"Site"},{"n":"Location","g":"Vertical"}],"name":"My
                  device name"}'
                ModelCfg: 1:TemperatureService, 2:SwissPostDevice
                #AFCntDn: 0
                FCntDn: 0
                Type: join
                Var1: ''
tags:
  - name: reports
    description: Device and Multicast Group reports
