The Things Stack Join Server
OTAA join handling, root-key registry, JsEndDeviceRegistry, AsJs/AppJs/NsJs internal interfaces, NetworkCryptoService and ApplicationCryptoService for external HSM-backed crypto, and ApplicationActivationSettings.
OTAA join handling, root-key registry, JsEndDeviceRegistry, AsJs/AppJs/NsJs internal interfaces, NetworkCryptoService and ApplicationCryptoService for external HSM-backed crypto, and ApplicationActivationSettings.
swagger: '2.0'
info:
title: The Things Stack — Join Server
version: v3.36
description: The Things Stack is an open-source LoRaWAN Network Server implementation. This OpenAPI was derived from the
upstream gRPC-Gateway generated api.swagger.json published by TheThingsNetwork/lorawan-stack v3.36.
license:
name: Apache 2.0
url: https://www.apache.org/licenses/LICENSE-2.0
contact:
name: The Things Industries
url: https://www.thethingsindustries.com
host: eu1.cloud.thethings.industries
basePath: /api/v3
schemes:
- https
consumes:
- application/json
produces:
- application/json
securityDefinitions:
ApiKeyAuth:
type: apiKey
in: header
name: Authorization
description: 'Bearer API key. Set Authorization: Bearer NNSXS.xxxxxxxxxx.'
security:
- ApiKeyAuth: []
tags:
- name: Js
- name: JsEndDeviceRegistry
- name: JsEndDeviceBatchRegistry
paths:
/js/applications/{application_ids.application_id}/devices/batch:
delete:
summary: 'Delete a list of devices within the same application.
This operation is atomic; either all devices are deleted or none.
Devices not found are skipped and no error is returned.'
operationId: JsEndDeviceBatchRegistry_Delete
responses:
'200':
description: A successful response.
schema:
type: object
properties: {}
default:
description: An unexpected error response.
schema:
$ref: '#/definitions/googlerpcStatus'
parameters:
- name: application_ids.application_id
in: path
required: true
type: string
- name: device_ids
in: query
required: false
type: array
items:
type: string
collectionFormat: multi
tags:
- JsEndDeviceBatchRegistry
/js/applications/{application_ids.application_id}/devices/{device_id}:
delete:
summary: 'Delete deletes the device that matches the given identifiers.
If there are multiple matches, an error will be returned.'
operationId: JsEndDeviceRegistry_Delete
responses:
'200':
description: A successful response.
schema:
type: object
properties: {}
default:
description: An unexpected error response.
schema:
$ref: '#/definitions/googlerpcStatus'
parameters:
- name: application_ids.application_id
in: path
required: true
type: string
- name: device_id
in: path
required: true
type: string
- name: dev_eui
description: The LoRaWAN DevEUI.
in: query
required: false
type: string
format: string
- name: join_eui
description: The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices).
in: query
required: false
type: string
format: string
- name: dev_addr
description: The LoRaWAN DevAddr.
in: query
required: false
type: string
format: string
tags:
- JsEndDeviceRegistry
/js/applications/{application_ids.application_id}/provision-devices:
put:
summary: 'This rpc is deprecated; use EndDeviceTemplateConverter service instead.
TODO: Remove (https://github.com/TheThingsNetwork/lorawan-stack/issues/999)'
operationId: JsEndDeviceRegistry_Provision
responses:
'200':
description: A successful response.(streaming responses)
schema:
type: object
properties:
result:
$ref: '#/definitions/v3EndDevice'
error:
$ref: '#/definitions/googlerpcStatus'
title: Stream result of v3EndDevice
default:
description: An unexpected error response.
schema:
$ref: '#/definitions/googlerpcStatus'
parameters:
- name: application_ids.application_id
in: path
required: true
type: string
- name: body
in: body
required: true
schema:
$ref: '#/definitions/JsEndDeviceRegistryProvisionBody'
tags:
- JsEndDeviceRegistry
/js/applications/{end_device.ids.application_ids.application_id}/devices:
post:
summary: Set creates or updates the device.
operationId: JsEndDeviceRegistry_Set2
responses:
'200':
description: A successful response.
schema:
$ref: '#/definitions/v3EndDevice'
default:
description: An unexpected error response.
schema:
$ref: '#/definitions/googlerpcStatus'
parameters:
- name: end_device.ids.application_ids.application_id
in: path
required: true
type: string
- name: body
in: body
required: true
schema:
$ref: '#/definitions/v3JsEndDeviceRegistrySetBody'
tags:
- JsEndDeviceRegistry
/js/applications/{end_device.ids.application_ids.application_id}/devices/{end_device.ids.device_id}:
put:
summary: Set creates or updates the device.
operationId: JsEndDeviceRegistry_Set
responses:
'200':
description: A successful response.
schema:
$ref: '#/definitions/v3EndDevice'
default:
description: An unexpected error response.
schema:
$ref: '#/definitions/googlerpcStatus'
parameters:
- name: end_device.ids.application_ids.application_id
in: path
required: true
type: string
- name: end_device.ids.device_id
in: path
required: true
type: string
- name: body
in: body
required: true
schema:
$ref: '#/definitions/v3JsEndDeviceRegistrySetBody'
tags:
- JsEndDeviceRegistry
/js/applications/{end_device_ids.application_ids.application_id}/devices/{end_device_ids.device_id}:
get:
summary: 'Get returns the device that matches the given identifiers.
If there are multiple matches, an error will be returned.'
operationId: JsEndDeviceRegistry_Get
responses:
'200':
description: A successful response.
schema:
$ref: '#/definitions/v3EndDevice'
default:
description: An unexpected error response.
schema:
$ref: '#/definitions/googlerpcStatus'
parameters:
- name: end_device_ids.application_ids.application_id
in: path
required: true
type: string
- name: end_device_ids.device_id
in: path
required: true
type: string
- name: end_device_ids.dev_eui
description: The LoRaWAN DevEUI.
in: query
required: false
type: string
format: string
- name: end_device_ids.join_eui
description: The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices).
in: query
required: false
type: string
format: string
- name: end_device_ids.dev_addr
description: The LoRaWAN DevAddr.
in: query
required: false
type: string
format: string
- name: field_mask
description: 'The names of the end device fields that should be returned.
See the API reference for which fields can be returned by the different services.'
in: query
required: false
type: string
tags:
- JsEndDeviceRegistry
/js/default_join_eui:
get:
summary: Request the default JoinEUI that is configured for this Join Server.
operationId: Js_GetDefaultJoinEUI
responses:
'200':
description: A successful response.
schema:
$ref: '#/definitions/v3GetDefaultJoinEUIResponse'
default:
description: An unexpected error response.
schema:
$ref: '#/definitions/googlerpcStatus'
tags:
- Js
/js/join_eui_prefixes:
get:
summary: Request the JoinEUI prefixes that are configured for this Join Server.
operationId: Js_GetJoinEUIPrefixes
responses:
'200':
description: A successful response.
schema:
$ref: '#/definitions/v3JoinEUIPrefixes'
default:
description: An unexpected error response.
schema:
$ref: '#/definitions/googlerpcStatus'
tags:
- Js
definitions:
ADRSettingsDynamicMode:
type: object
properties:
margin:
type: number
format: float
description: 'The ADR margin (dB) tells the network server how much margin it should add in ADR requests.
A bigger margin is less efficient, but gives a better chance of successful reception.
If unset, the default value from Network Server configuration will be used.'
min_data_rate_index:
$ref: '#/definitions/v3DataRateIndexValue'
description: 'Minimum data rate index.
If unset, the default value from Network Server configuration will be used.'
max_data_rate_index:
$ref: '#/definitions/v3DataRateIndexValue'
description: 'Maximum data rate index.
If unset, the default value from Network Server configuration will be used.'
min_tx_power_index:
type: integer
format: int64
description: 'Minimum transmission power index.
If unset, the default value from Network Server configuration will be used.'
max_tx_power_index:
type: integer
format: int64
description: 'Maximum transmission power index.
If unset, the default value from Network Server configuration will be used.'
min_nb_trans:
type: integer
format: int64
description: 'Minimum number of retransmissions.
If unset, the default value from Network Server configuration will be used.'
max_nb_trans:
type: integer
format: int64
description: 'Maximum number of retransmissions.
If unset, the default value from Network Server configuration will be used.'
channel_steering:
$ref: '#/definitions/DynamicModeChannelSteeringSettings'
overrides:
$ref: '#/definitions/DynamicModeOverrides'
description: Configuration options for dynamic ADR.
ADRSettingsStaticMode:
type: object
properties:
data_rate_index:
$ref: '#/definitions/v3DataRateIndex'
description: Data rate index to use.
tx_power_index:
type: integer
format: int64
description: Transmission power index to use.
nb_trans:
type: integer
format: int64
description: Number of retransmissions.
description: Configuration options for static ADR.
ApplicationDownlinkClassBC:
type: object
properties:
gateways:
type: array
items:
type: object
$ref: '#/definitions/v3ClassBCGatewayIdentifiers'
description: 'Possible gateway identifiers, antenna index, and group index to use for this downlink message.
The Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization
and an available slot.
If none of the gateways can be selected, the downlink message fails.
If empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.
If group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.'
absolute_time:
type: string
format: date-time
description: 'Absolute time when the downlink message should be transmitted.
This requires the gateway to have GPS time synchronization.
If the time is in the past or if there is a scheduling conflict, the downlink message fails.
If null, the time is selected based on slot availability. This is recommended in class B mode.'
ApplicationDownlinkConfirmedRetry:
type: object
properties:
attempt:
type: integer
format: int64
description: The number of attempted confirmed downlink acknowledgements.
max_attempts:
type: integer
format: int64
description: 'The maximum number of confirmed downlink acknowledgement attempts.
If null, the Application Server configuration is used instead.'
ChannelSteeringSettingsLoRaNarrowMode:
type: object
description: 'Configuration options for LoRa narrow channels steering.
The narrow mode attempts to steer the end device towards
using the LoRa modulated, 125kHz bandwidth channels.'
DownlinkMessageMessageMACPayload:
type: object
properties:
f_port:
type: integer
format: int64
full_f_cnt:
type: integer
format: int64
DownlinkMessageMessageMHDR:
type: object
properties:
m_type:
$ref: '#/definitions/v3MType'
DynamicModeChannelSteeringSettings:
type: object
properties:
lora_narrow:
$ref: '#/definitions/ChannelSteeringSettingsLoRaNarrowMode'
disabled:
$ref: '#/definitions/DynamicModeChannelSteeringSettingsDisabledMode'
description: 'EXPERIMENTAL: Channel steering settings.'
DynamicModeChannelSteeringSettingsDisabledMode:
type: object
description: 'Configuration options for cases in which ADR is not supposed to steer the end device
to another set of channels.'
DynamicModeOverrides:
type: object
properties:
data_rate_0:
$ref: '#/definitions/DynamicModePerDataRateIndexOverride'
data_rate_1:
$ref: '#/definitions/DynamicModePerDataRateIndexOverride'
data_rate_2:
$ref: '#/definitions/DynamicModePerDataRateIndexOverride'
data_rate_3:
$ref: '#/definitions/DynamicModePerDataRateIndexOverride'
data_rate_4:
$ref: '#/definitions/DynamicModePerDataRateIndexOverride'
data_rate_5:
$ref: '#/definitions/DynamicModePerDataRateIndexOverride'
data_rate_6:
$ref: '#/definitions/DynamicModePerDataRateIndexOverride'
data_rate_7:
$ref: '#/definitions/DynamicModePerDataRateIndexOverride'
data_rate_8:
$ref: '#/definitions/DynamicModePerDataRateIndexOverride'
data_rate_9:
$ref: '#/definitions/DynamicModePerDataRateIndexOverride'
data_rate_10:
$ref: '#/definitions/DynamicModePerDataRateIndexOverride'
data_rate_11:
$ref: '#/definitions/DynamicModePerDataRateIndexOverride'
data_rate_12:
$ref: '#/definitions/DynamicModePerDataRateIndexOverride'
data_rate_13:
$ref: '#/definitions/DynamicModePerDataRateIndexOverride'
data_rate_14:
$ref: '#/definitions/DynamicModePerDataRateIndexOverride'
data_rate_15:
$ref: '#/definitions/DynamicModePerDataRateIndexOverride'
description: 'EXPERIMENTAL: Configuration overrides.'
DynamicModePerDataRateIndexOverride:
type: object
properties:
min_nb_trans:
type: integer
format: int64
description: 'Minimum number of retransmissions.
If unset, the default value from Network Server configuration will be used.'
max_nb_trans:
type: integer
format: int64
description: 'Maximum number of retransmissions.
If unset, the default value from Network Server configuration will be used.'
description: 'EXPERIMENTAL: Data rate index override settings.'
JsEndDeviceRegistryProvisionBody:
type: object
properties:
application_ids:
type: object
provisioner_id:
type: string
description: ID of the provisioner service as configured in the Join Server.
provisioning_data:
type: string
format: byte
description: Vendor-specific provisioning data.
list:
$ref: '#/definitions/ProvisionEndDevicesRequestIdentifiersList'
description: 'List of device identifiers that will be provisioned.
The device identifiers must contain device_id and dev_eui.
If set, the application_ids must equal the provision request''s application_ids.
The number of entries in data must match the number of given identifiers.'
range:
$ref: '#/definitions/ProvisionEndDevicesRequestIdentifiersRange'
description: 'Provision devices in a range.
The device_id will be generated by the provisioner from the vendor-specific data.
The dev_eui will be issued from the given start_dev_eui.'
from_data:
$ref: '#/definitions/ProvisionEndDevicesRequestIdentifiersFromData'
description: 'Provision devices with identifiers from the given data.
The device_id and dev_eui will be generated by the provisioner from the vendor-specific data.'
MACCommandADRParamSetupReq:
type: object
properties:
adr_ack_limit_exponent:
$ref: '#/definitions/v3ADRAckLimitExponent'
description: Exponent e that configures the ADR_ACK_LIMIT = 2^e messages.
adr_ack_delay_exponent:
$ref: '#/definitions/v3ADRAckDelayExponent'
description: Exponent e that configures the ADR_ACK_DELAY = 2^e messages.
MACCommandBeaconFreqAns:
type: object
properties:
frequency_ack:
type: boolean
MACCommandBeaconFreqReq:
type: object
properties:
frequency:
type: string
format: uint64
description: Frequency of the Class B beacons (Hz).
MACCommandBeaconTimingAns:
type: object
properties:
delay:
type: integer
format: int64
description: (uint16) See LoRaWAN specification.
channel_index:
type: integer
format: int64
MACCommandDLChannelAns:
type: object
properties:
channel_index_ack:
type: boolean
frequency_ack:
type: boolean
MACCommandDLChannelReq:
type: object
properties:
channel_index:
type: integer
format: int64
frequency:
type: string
format: uint64
description: Downlink channel frequency (Hz).
MACCommandDevStatusAns:
type: object
properties:
battery:
type: integer
format: int64
description: 'Device battery status.
0 indicates that the device is connected to an external power source.
1..254 indicates a battery level.
255 indicates that the device was not able to measure the battery level.'
margin:
type: integer
format: int32
description: SNR of the last downlink (dB; [-32, +31]).
MACCommandDeviceModeConf:
type: object
properties:
class:
$ref: '#/definitions/v3Class'
MACCommandDeviceModeInd:
type: object
properties:
class:
$ref: '#/definitions/v3Class'
MACCommandDeviceTimeAns:
type: object
properties:
time:
type: string
format: date-time
MACCommandDutyCycleReq:
type: object
properties:
max_duty_cycle:
$ref: '#/definitions/v3AggregatedDutyCycle'
MACCommandForceRejoinReq:
type: object
properties:
rejoin_type:
$ref: '#/definitions/v3RejoinRequestType'
data_rate_index:
$ref: '#/definitions/v3DataRateIndex'
max_retries:
type: integer
format: int64
period_exponent:
$ref: '#/definitions/v3RejoinPeriodExponent'
description: Exponent e that configures the rejoin period = 32 * 2^e + rand(0,32) seconds.
MACCommandLinkADRAns:
type: object
properties:
channel_mask_ack:
type: boolean
data_rate_index_ack:
type: boolean
tx_power_index_ack:
type: boolean
MACCommandLinkADRReq:
type: object
properties:
data_rate_index:
$ref: '#/definitions/v3DataRateIndex'
tx_power_index:
type: integer
format: int64
channel_mask:
type: array
items:
type: boolean
channel_mask_control:
type: integer
format: int64
nb_trans:
type: integer
format: int64
MACCommandLinkCheckAns:
type: object
properties:
margin:
type: integer
format: int64
description: Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.
gateway_count:
type: integer
format: int64
MACCommandNewChannelAns:
type: object
properties:
frequency_ack:
type: boolean
data_rate_ack:
type: boolean
MACCommandNewChannelReq:
type: object
properties:
channel_index:
type: integer
format: int64
frequency:
type: string
format: uint64
description: Channel frequency (Hz).
min_data_rate_index:
$ref: '#/definitions/v3DataRateIndex'
max_data_rate_index:
$ref: '#/definitions/v3DataRateIndex'
MACCommandPingSlotChannelAns:
type: object
properties:
frequency_ack:
type: boolean
data_rate_index_ack:
type: boolean
MACCommandPingSlotChannelReq:
type: object
properties:
frequency:
type: string
format: uint64
description: Ping slot channel frequency (Hz).
data_rate_index:
$ref: '#/definitions/v3DataRateIndex'
MACCommandPingSlotInfoReq:
type: object
properties:
period:
$ref: '#/definitions/v3PingSlotPeriod'
MACCommandRejoinParamSetupAns:
type: object
properties:
max_time_exponent_ack:
type: boolean
MACCommandRejoinParamSetupReq:
type: object
properties:
max_count_exponent:
$ref: '#/definitions/v3RejoinCountExponent'
description: Exponent e that configures the rejoin counter = 2^(e+4) messages.
max_time_exponent:
$ref: '#/definitions/v3RejoinTimeExponent'
description: Exponent e that configures the rejoin timer = 2^(e+10) seconds.
MACCommandRekeyConf:
type: object
properties:
minor_version:
$ref: '#/definitions/v3Minor'
MACCommandRekeyInd:
type: object
properties:
minor_version:
$ref: '#/definitions/v3Minor'
MACCommandRelayConfAns:
type: object
properties:
second_channel_frequency_ack:
type: boolean
second_channel_ack_offset_ack:
type: boolean
second_channel_data_rate_index_ack:
type: boolean
second_channel_index_ack:
type: boolean
default_channel_index_ack:
type: boolean
cad_periodicity_ack:
type: boolean
MACCommandRelayConfReq:
type: object
properties:
configuration:
$ref: '#/definitions/MACCommandRelayConfReqConfiguration'
MACCommandRelayConfReqConfiguration:
type: object
properties:
second_channel:
$ref: '#/definitions/v3RelaySecondChannel'
default_channel_index:
type: integer
format: int64
cad_periodicity:
$ref: '#/definitions/v3RelayCADPeriodicity'
MACCommandRelayConfigureFwdLimitAns:
type: object
MACCommandRelayConfigureFwdLimitReq:
type: object
properties:
reset_limit_counter:
$ref: '#/definitions/v3RelayResetLimitCounter'
join_request_limits:
$ref: '#/definitions/v3RelayForwardLimits'
notify_limits:
$ref: '#/definitions/v3RelayForwardLimits'
global_uplink_limits:
$ref: '#/definitions/v3RelayForwardLimits'
overall_limits:
$ref: '#/definitions/v3RelayForwardLimits'
MACCommandRelayCtrlUplinkListAns:
type: object
properties:
rule_index_ack:
type: boolean
w_f_cnt:
type: integer
format: int64
MACCommandRelayCtrlUplinkListReq:
type: object
properties:
rule_index:
type: integer
format: int64
action:
$ref: '#/definitions/v3RelayCtrlUplinkListAction'
MACCommandRelayEndDeviceConfAns:
type: object
properties:
second_channel_frequency_ack:
type: boolean
second_channel_data_rate_index_ack:
type: boolean
second_channel_index_ack:
type: boolean
backoff_ack:
type: boolean
MACCommandRelayEndDeviceConfReq:
type: object
properties:
configuration:
$ref: '#/definitions/MACCommandRelayEndDeviceConfReqConfiguration'
MACCommandRelayEndDeviceConfReqConfiguration:
type: object
properties:
always:
$ref: '#/definitions/v3RelayEndDeviceAlwaysMode'
dynamic:
$ref: '#/definitions/v3RelayEndDeviceDynamicMode'
end_device_controlled:
$ref: '#/definitions/v3RelayEndDeviceControlledMode'
backoff:
type: integer
format: int64
second_channel:
$ref: '#/definitions/v3RelaySecondChannel'
serving_device_id:
type: string
MACCommandRelayNotifyNewEndDeviceReq:
type: object
properties:
dev_addr:
type: string
format: string
example: 2600ABCD
snr:
type: integer
format: int32
rssi:
type: integer
format: int32
MACCommandRelayUpdateUplinkListAns:
type: object
MACCommandRelayUpdateUplinkListReq:
type: object
properties:
rule_index:
type: integer
format: int64
forward_limits:
$ref: '#/definitions/v3RelayUplinkForwardLimits'
dev_addr:
type: string
format: string
example: 2600ABCD
w_f_cnt:
type: integer
format: int64
root_wor_s_key:
type: string
format: string
example: 0123456789ABCDEF0123456789ABCDEF
device_id:
type: string
session_key_id:
type: string
format: byte
MACCommandResetConf:
type: object
properties:
minor_version:
$ref: '#/definitions/v3Minor'
MACCommandResetInd:
type: object
properties:
minor_version:
$ref: '#/definitions/v3Minor'
MACCommandRxParamSetupAns:
type: object
properties:
rx2_data_rate_index_ack:
type: boolean
rx1_data_rate_offset_ack:
type: boolean
rx2_frequency_ack:
type: boolean
MACCommandRxParamSetupReq:
type: object
properties:
rx2_data_rate_index:
$ref: '#/definitions/v3DataRateIndex'
rx1_data_rate_offset:
$ref: '#/definitions/v3DataRateOffset'
rx2_frequency:
type: string
format: uint64
description: Rx2 frequency (Hz).
MACCommandRxTimingSetupReq:
type: object
properties:
delay:
$ref: '#/definitions/v3RxDelay'
MACCommandTxParamSetupReq:
type: object
properties:
max_eirp_index:
$ref: '#/definitions/v3DeviceEIRP'
title: 'Indicates the maximum EIRP value in dBm, indexed by the following vector:
[ 8 10 12 13 14 16 18 20 21 24 26 27 29 30 33 36 ]'
uplink_dwell_time:
type: boolean
downlink_dwell_time:
type: boolean
MACStateDataRateRange:
type: object
properties:
min_data_rate_index:
$ref: '#/definitions/v3DataRateIndex'
max_data_rate_index:
$ref: '#/definitions/v3DataRateIndex'
MACStateDataRateRanges:
type: object
properties:
ranges:
type: array
items:
type: object
$ref: '#/definitions/MACStateDataRateRange'
MACStateDownlinkMessageMessage:
type: object
properties:
m_hdr:
$ref: '#/definitions/DownlinkMessageMessageMHDR'
mac_payload:
$ref: '#/definitions/DownlinkMessageMessageMACPayload'
MACStateJoinAccept:
type: object
properties:
payload:
type: string
format: byte
description: Payload of the join-accept received from Join Server.
request:
$ref: '#/definitions/v3MACStateJoinRequest'
keys:
$ref: '#/definitions/v3SessionKeys'
description: Network session keys associated with the join.
correlation_ids:
type: array
items:
type: string
dev_addr:
type: string
format: string
example: 2600ABCD
net_id:
type: string
format: string
example: '000013'
MACStateUplinkMessageRxMetadata:
type: object
properties:
gateway_ids:
$ref: '#/definitions/lorawanv3GatewayIdentifiers'
channel_rssi:
type: number
format: float
snr:
type: number
format: float
downlink_path_constraint:
$ref: '#/definitions/v3DownlinkPathConstraint'
uplink_token:
type: string
format: byte
packet_broker:
$ref: '#/definitions/UplinkMessageRxMetadataPacketBrokerMetadata'
relay:
$ref: '#/definitions/UplinkMessageRxMetadataRelayMetadata'
MACStateUplinkMessageTxSettings:
type: object
properties:
data_rate:
$ref: '#/definitions/v3DataRate'
PictureEmbedded:
type: object
properties:
mime_type:
type: string
description: MIME type of the picture.
data:
type: string
format: byte
description: 'Picture data. A data URI can be constructed as follows:
`data:<mime_type>;base64,<data>`.'
ProvisionEndDevicesRequestIdentifiersFromData:
type: object
properties:
join_eui:
type: string
format: string
example: 70B3D57ED000ABCD
ProvisionEndDevicesRequestIdentifiersList:
type: object
properties:
join_eui:
type: string
format: string
example: 70B3D57ED000ABCD
end_device_ids:
type: array
items:
type: object
$ref: '#/definitions/v3EndDeviceIdentifiers'
ProvisionEndDevicesRequestIdentifiersRange:
type: object
properties:
join_eui:
type: string
format: string
example: 70B3D57ED000ABCD
start_dev_eui:
type: string
format: string
example: 70B3D57ED000ABCD
description: DevEUI to start issuing from.
UplinkMessageRxMetadataPacketBrokerMetadata:
type: object
UplinkMessageRxMetadataRelayMetadata:
type: object
googlerpcStatus:
type: object
properties:
code:
type: integer
format: int32
message:
type: string
details:
type: array
items:
type: object
$ref: '#/definitions/protobufAny'
lorawanv3BoolValue:
type: object
properties:
value:
type: boolean
lorawanv3GatewayIdentifiers:
type: object
properties:
gateway_id:
type: string
eui:
type: string
format: string
example: 70B3D57ED000ABCD
description: Secondary identifier, which can only be used in specific requests.
lorawanv3Location:
type: object
properties:
latitude:
type: number
format: double
description: The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South
pole is negative.
longitude:
type: number
format: double
description: The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive
, West is negative.
altitude:
type: integer
format: int32
description: The altitude (meters), where 0 is the mean sea level.
accuracy:
type: integer
format: int32
description: The accuracy of the location (meters).
source:
$ref: '#/definitions/v3LocationSource'
description: Source of the location information.
lorawanv3MACPayload:
type: object
properties:
f_hdr:
$ref: '#/definitions/v3FHDR'
f_port:
type: integer
format: int64
frm_payload:
type: string
format: byte
decoded_payload:
type: object
full_f_cnt:
type: integer
format: int64
description: Full 32-bit FCnt value. Used internally by Network Server.
lorawanv3MHDR:
type: object
properties:
m_type:
$ref: '#/definitions/v3MType'
major:
$ref: '#/definitions/v3Major'
lorawanv3Message:
type: object
properties:
m_hdr:
$ref: '#/definitions/lorawanv3MHDR'
mic:
type: string
format: byte
mac_payload:
$ref: '#/definitions/lorawanv3MACPayload'
join_request_pay
# --- truncated at 32 KB (126 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/the-things-network/refs/heads/main/openapi/the-things-stack-join-server-openapi.yml